Author Topic: The Dark Knight  (Read 2192 times)

Offline Pud9y

  • Level 0 Beginner
  • Posts: 2
The Dark Knight
« on: April 09, 2009, 04:44:01 PM »
hey all, im a long time reader, first time poster lol

I had made this race a few months ago for a server that i was hoping would put it up, but there was a problem with it not appearing on the changerace list or something, so i guess ill just leave it here for anyone else to use.

Made for evenscripts wcs, using some of Oddity's Spiderman code (http://warcraft-source.com/board/index.php/topic,4877.0.html) to get ability to work.


Heres a full race description:

The Dark Knight aka Batman
Skills (5 levels):
Grappling Hook: Bound to ability
  - limit 5 grapples when maxed level
  - Pull yourself to higher places
  - Pull enemies towards you
  - Pull teammates out of danger
BatSuit: Gives 200 Armor on spawn when maxed level
  - Armor includes helmet
  - Level 1 gives you extra ammo(300) to both primary and secondary weapons and 40armor
  - Level 2 gives smoke grenade and 80armor
  - Level 3 gives hegrenade and 120armor
  - Level 4 gives flash grenade and 160armor
  - Level 5 gives second flash grenade and 200armor
Robin to the Rescue - Chance to push enemies back when they're shooting at you
  - L1 3%, L2 6%, L3 9%, L4 12%, L5 15%
Into Darkness - Chance to disapear (go invisible) for 1 second when being shot at
  - L1 5%, L2 10%, L3 15%, L4 20%, L5 25%
Detective - Chance to produce team coloured beacons on shot enemies
  - Reveals correct team and location (regardless of invis or disguiser) to help your teammates
  - T beacon is RED, CT beacon is BLUE
  - Last for round or until death
  - L1 4%, L2 8%, L3 12%, L4 16%, L5 20%
Ultimate:
Kapow! - Enemies in range get knocked out and become disoriented (Frozen and Blind)
           - Freeze lasts 3 seconds when maxed
           - Blindness fades victoms screen to black, lasts 1 second with 2 seconds of fade
           - Cooldown 30 seconds


To install 'The Dark Knight' copy into following locations (should only copy code inside boxes):

1. cstrike\addons\eventscripts\wcs\WCSraces\es_WCSraces_db.txt
Code: (eventscripts) [Select]
   "NUMBER"
  {
    "name"              "The Dark Knight"
    "author"            "Pud9y"
    "shortdescription"  "Master of gadgets and hiding"
    "required_level"    "150"
    "maximum_level"     "0"
    "allow_only"        "0"
    "teamlimit"         "2"
    "restrict_shop" "0"
    "preloadcmd"        "0"
    "player_spawn_cmd"  "es_delayed 0.5 es est_SetPlayerColor event_var(userid) 10 10 10 255 1"
    "round_start_cmd"   "0"
    "round_end_cmd"     "0"
    "numberofskills"    "6"
    "numberoflevels"    "5"
    "skillnames"        "Grappling Hook(ability)|Batsuit|Robin to the Rescue|Into Darkness|Detective|Kapow!"
    "skilldescr"        "Grapple to high places, Pull enemies/teammates|Extra Armor, Extra Ammo, Grenades|Enemies shooting you get knocked back. 3-15%chance|When being shot you disappear for a second. 5-25%chance|Team coloured beacons on hit. 4-20%chance|Knock out & stun enemies close by"
    "skillcfg"          "player_spawn|player_spawn|player_victim|player_victim|player_attacker|player_ultimate"

    "skill1_setting"    "es_xset wcs_count 1|es_xset wcs_count 2|es_xset wcs_count 3|es_xset wcs_count 4|es_xset wcs_count 5"
    "skill1_cmd"        "es_xset wcs_range 1200;es_xset wcs_grapple 1.75;es_xset wcs_attackgrapple 2;es_keysetvalue WCSuserdata event_var(userid) ability grapplehook;es_keysetvalue WCSuserdata event_var(userid) ability_count server_var(wcs_count);es_keysetvalue WCSuserdata event_var(userid) ability_cooldown 1"
    "skill1_sfx"        "0"

    "skill2_setting"    "es_xset wcs_armor 40;es_xset wcs_batsuit 1|es_xset wcs_armor 80;es_xset wcs_batsuit 2|es_xset wcs_armor 120;es_xset wcs_batsuit 3|es_xset wcs_armor 160;es_xset wcs_batsuit 4|es_xset wcs_armor 200;es_xset wcs_batsuit 5"
    "skill2_cmd"        "es es_setplayerprop event_var(userid) CCSPlayer.m_bHasHelmet 1;es est_SetArmor event_var(userid) server_var(wcs_armor);es_set wcs_buyfreeze server_var(mp_freezetime);es es_delayed server_var(wcs_buyfreeze) est_SetAmmo event_var(userid) 2 300;es_xmath wcs_buyfreeze + 2;es es_delayed server_var(wcs_buyfreeze) est_SetAmmo event_var(userid) 1 300;es_tell event_var(userid) #multi #green: Batsuit Kevlar #lightgreenhas been upgraded to#green server_var(wcs_armor) armor;if (server_var(wcs_batsuit) > 1) then es_give event_var(userid) weapon_smokegrenade;if (server_var(wcs_batsuit) > 2) then es_give event_var(userid) weapon_hegrenade;if (server_var(wcs_batsuit) > 3) then es_give event_var(userid) weapon_flashbang;if (server_var(wcs_batsuit) > 4) then es_give event_var(userid) weapon_flashbang"
    "skill2_sfx"        "0"

    "skill3_setting"    "es_xset wcs_chance 3|es_xset wcs_chance 6|es_xset wcs_chance 9|es_xset wcs_chance 12|es_xset wcs_chance 15"
    "skill3_cmd"        "if (server_var(wcs_dice) <= server_var(wcs_chance)) then es playerset push event_var(attacker) -1000 200 1;if (server_var(wcs_dice) <= server_var(wcs_chance)) then es_tell event_var(attacker) #multi #lightgreenYou've been swooped by#green Batman's#lightgreen sidekick;if (server_var(wcs_dice) <= server_var(wcs_chance)) then es_tell event_var(userid) #multi #greenRobin #lightgreenhas swooped#green event_var(es_attackername)"
    "skill3_sfx"        "if (server_var(wcs_dice) <= server_var(wcs_chance)) then es est_playplayer event_var(attacker) physics\body\body_medium_impact_hard6.wav;if (server_var(wcs_dice) <= server_var(wcs_chance)) then es es_delayed 0.2 est_playplayer event_var(attacker) hostage\hpain\hpain4.wav"

"skill4_setting"    "es_xset wcs_chance 5|es_xset wcs_chance 10|es_xset wcs_chance 15|es_xset wcs_chance 20|es_xset wcs_chance 25"
    "racealias_bid" "es_keygetvalue wcs_tmp WCSuserdata event_var(userid) invisp;es est_SetPlayerColor event_var(userid) 10 10 10 1 1;if (server_var(wcs_tmp) = 0) then es es_delayed 1 est_SetPlayerColor event_var(userid) 10 10 10 255 1;if (server_var(wcs_tmp) != 0) then es es_delayed 1 est_setplayercolor event_var(userid) 255 255 255 75 1"
  "skill4_cmd"        "if (server_var(wcs_dice) <= server_var(wcs_chance)) then racealias_bid"
"skill4_sfx"        "if (server_var(wcs_dice) <= server_var(wcs_chance)) then es_xset v1 0;if (server_var(wcs_dice) <= server_var(wcs_chance)) then es es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 event_var(userid);if (server_var(wcs_dice) <= server_var(wcs_chance)) then es es_createvectorstring v1 server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1);if (server_var(wcs_dice) <= server_var(wcs_chance)) then es es_effect smoke server_var(v1) smoke 75 7;if (server_var(wcs_dice) <= server_var(wcs_chance)) then es est_playplayer event_var(userid) ambient\fire\gascan_ignite1.wav"

"skill5_setting"    "es_xset wcs_chance 4|es_xset wcs_chance 8|es_xset wcs_chance 12|es_xset wcs_chance 16|es_xset wcs_chance 20"
  "skill5_cmd" "if (server_var(wcs_dice) <= server_var(wcs_chance)) then es_keysetvalue WCSUserdata event_var(userid) aura_round server_var(wcs_roundcounter);if (server_var(wcs_dice) <= server_var(wcs_chance)) then wcs_team_beacon event_var(userid)"
"skill5_sfx"        "0"

    "skill6_setting"    "es_xset wcs_freezetime 1.5;es_xset wcs_radius 150|es_xset wcs_freezetime 1.875;es_xset wcs_radius 187.5|es_xset wcs_freezetime 2.25;es_xset wcs_radius 225|es_xset wcs_freezetime 2.625;es_xset wcs_radius 262.5|es_xset wcs_freezetime 3;es_xset wcs_radius 300"
    "skill6_cmd"        "es_xdoblock wcs/WCSultimates/wcs_ulti_kapow"
    "skill6_sfx"        "0"
    "ultimate_cooldown" "30"
  }

2a. cstrike/addons/eventscripts/WCS/WCSultimates/es_WCSultimates.txt

paste inside 'load' block

block load
{

Code: (eventscripts) [Select]
es_xexists ex command wcs_grapplehook
es es_xif (server_var(ex) = 0) then es_xregcmd wcs_grapplehook wcs/WCSultimates/wcs_grapplehook "Grappling Hook, pulls users in"
es_xexists ex command wcs_team_beacon
es es_xif (server_var(ex) = 0) then es_xregcmd wcs_team_beacon wcs/WCSultimates/wcs_team_beacon "Team coloured beacon"
}



2b. cstrike/addons/eventscripts/WCS/WCSultimates/es_WCSultimates.txt (same as above)

paste with other ultimates

Code: (eventscripts) [Select]
block wcs_grapplehook
{
  es_xset wcs_grappleactive 0
  es es_xgetplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
  es est_GetViewCoord server_var(wcs_userid) wcs_x2 wcs_y2 wcs_z2
  es_math wcs_x1 - server_var(wcs_x2)
  es_math wcs_y1 - server_var(wcs_y2)
  es_math wcs_z1 - server_var(wcs_z2)
  if (server_var(wcs_x1) < 0) then es_xmath wcs_x1 * -1
  if (server_var(wcs_y1) < 0) then es_xmath wcs_y1 * -1
  if (server_var(wcs_z1) < 0) then es_xmath wcs_z1 * -1
 
  ifx parse("(wcs_range < wcs_x1) or (wcs_range < wcs_y1) or (wcs_range < wcs_z1)") do
  {
es_tell server_var(wcs_userid) Nothing close enough to grapple onto
  }
  else do
  {
es_xset team 0
    es_xset target 0
es_xmath wcs_ability_count - 1
es es_xgetplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
es est_GetViewCoord server_var(wcs_userid) wcs_x2 wcs_y2 wcs_z2
es est_getviewplayer server_var(wcs_userid) target
es_xmath wcs_z1 + 60

ifx true(target) do
        {
            es es_xgetplayername wcs_name server_var(target)
            es es_xgetplayername wcs_tmp2 server_var(wcs_userid)
es est_pushto server_var(target) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_attackgrapple)
es_tell server_Var(wcs_userid) #multi #lightgreen You pulled#green server_var(wcs_name)#lightgreen with your #greenGrappling Hook
es_tell server_var(target) #multi #green server_var(wcs_tmp2)#lightgreen grabbed you with his #greenGrappling Hook
        }
        else do
{
es est_SetGravity server_var(wcs_userid) 0.4
es est_pushto server_var(wcs_userid) server_var(wcs_x2) server_var(wcs_y2) server_var(wcs_z2) server_var(wcs_grapple)
es es_delayed 2 est_SetGravity server_var(wcs_userid) 1
}
//sfx
es est_effect 3 #a 0 cable/rope.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_x2) server_var(wcs_y2) server_var(wcs_z2) 1 0.1 0.1 50 50 50 255
es est_playplayer server_var(wcs_userid) buttons\weapon_confirm.wav
  }
}

block wcs_team_beacon
{
es_xset wcs_b_targetid 0
es_xset wcs_round 0
es_xset wcs_team 0
es_xset wcs_dead 0
es_xset wcs_x1 0
es_xset wcs_y1 0
es_xset wcs_z1 0
es_xgetargv wcs_b_targetid 1

es_getplayerteam wcs_team server_var(wcs_b_targetid)
if (server_var(wcs_team) = 1) do
{
es_xset wcs_targetteam "!a"
es_xset wcs_red 0
es_xset wcs_green 0
es_xset wcs_blue 0
}
if (server_var(wcs_team) = 3) do
{
es_xset wcs_targetteam "#a"
es_xset wcs_red 20
es_xset wcs_green 100
es_xset wcs_blue 255
}
if (server_var(wcs_team) = 2) do
{
es_xset wcs_targetteam "#a"
es_xset wcs_red 255
es_xset wcs_green 10
es_xset wcs_blue 10
}

if(server_var(wcs_team) != 0) do
{
es_keygetvalue wcs_round WCSuserdata server_var(wcs_b_targetid) aura_round
if (server_var(wcs_roundcounter) = server_var(wcs_round)) do
{
es playerget isdead wcs_dead server_var(wcs_b_targetid)
if (server_var(wcs_dead) = 0) do
{
es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_b_targetid)
es_xmath wcs_z1 + 40
es est_Effect 10 server_var(wcs_targetteam) 0 sprites/lgtning.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 50 700 0.3 20 10 1 server_var(wcs_red) server_var(wcs_green) server_var(wcs_blue) 255 2
es est_playplayer server_var(wcs_b_targetid) buttons\blip1.wav
es es_xdelayed 0.7 wcs_team_beacon server_var(wcs_b_targetid)
}
}
}
}

block wcs_ulti_kapow
{
es_xset wcs_team_target 0
es_getplayerteam wcs_team server_var(wcs_userid)
if (server_var(wcs_team) = 2) do
{
es_xset wcs_team_target 3
es_xset wcs_team_targetn "#c!d"
}
if (server_var(wcs_team) = 3) do
{
es_xset wcs_team_target 2
es_xset wcs_team_targetn "#t!d"
}
if (server_var(wcs_team_target) != "0") do
{
es_xset wcs_pcount 0
es_getlivingplayercount wcs_pcount server_var(wcs_team_target)
if (server_var(wcs_pcount) > 0) do
{
es est_fade server_var(wcs_userid) 0 1 1 255 50 50 150
es_xset wcs_counter 0
es_xset wcs_wall 1
es est_near wcs_targetid server_var(wcs_team_targetn) server_var(wcs_radius) server_var(wcs_userid) "es_exists ex userid server_var(wcs_targetid);if (server_var(ex) = 1) then wcs_run_ulti_kapow1"
alias wcs_run_ulti_kapow1 "es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid);es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 server_var(wcs_targetid);es_xmath wcs_z1 + 50;es_xmath wcs_z2 + 50;es est_getwallbetween wcs_wall server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_x2) server_var(wcs_y2) server_var(wcs_z2);if (server_var(wcs_wall) = 0) then wcs_run_ulti_kapow2"
alias wcs_run_ulti_kapow2 "es_xset wcs_immunity 0;es_keygetvalue wcs_immunity WCSuserdata server_var(wcs_targetid) ulti_immunity;if (server_var(wcs_immunity) = 0) then wcs_run_ulti_kapow3;if (server_var(wcs_immunity) != 0) then es_xtell server_var(wcs_userid) #multi server_var(wcs_lng_ulti_immunity_a);if (server_var(wcs_immunity) != 0) then es_xtell server_var(wcs_targetid) #multi server_var(wcs_lng_ulti_immunity_v)"
alias wcs_run_ulti_kapow3 "es_xmath wcs_counter + 1;es est_freeze server_var(wcs_targetid) 1;es_delayed server_var(wcs_freezetime) wcs_removefx freeze server_var(wcs_targetid);es est_fade server_var(wcs_targetid) 0 3 1 10 10 10 255;es est_csay server_var(wcs_targetid) KAPOW!;if (server_var(wcs_graphicfx) = 1) then es est_effect 11 #a 0.25 sprites/lgtning.vmt server_var(wcs_x2) server_var(wcs_y2) server_var(wcs_z2) 1 3.5 200"
if (server_var(wcs_counter) > 0) do
{
esnq est_csay server_var(wcs_userid) KAPOW! You knocked out server_var(wcs_counter)
es est_Effect 10 #a 0 sprites/lgtning.vmt server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) 50 server_var(wcs_radius) 0.25 20 10 1 255 255 200 255 2
es est_playplayer server_var(wcs_userid) ambient\voices\citizen_punches1.wav
es es_delayed 0.3 est_playplayer server_var(wcs_userid) ambient\voices\citizen_beaten2.wav
es es_delayed 0.6 est_playplayer server_var(wcs_userid) physics\body\body_medium_impact_hard5.wav
}
es_xelse do
{
es_xset wcs_ultinotexec 1
}
}
es_xelse do
{
es_xset wcs_ultinotexec 1
}
}
if (server_var(wcs_ultinotexec) = 1) then es_xtell server_var(wcs_userid) #multi #greenKapow! #lightgreenfailed, not close enough
}

3. cstrike/addons/eventscripts/WCS/WCSfunctions/WCSskills/es_WCSskills.txt

paste batmans ability(grapplehook) code with serpent wards inside 'wcs_ability' block (example ability code below and where you should put the grapplehook code)

block wcs_ability
{
if (server_var(wcs_debug) = 1) then profile begin ability
  // first, is it a custom command ?
  es_xgetargv wcs_userid 1
  es_exists ex userid server_var(wcs_userid)
  ifx false(ex) do
  {
    // or a say command
    es_xgetcmduserid wcs_userid
    es_exists ex userid server_var(wcs_userid)
  }
  es_getplayerprop wcs_dead server_var(wcs_userid) "CCSPlayer.baseclass.pl.deadflag"
  if (server_var(wcs_dead) = 1) then es_xset ex 0
  es_xcopy wcs_ulti_allow wcs_gamestarted
  if (server_var(wcs_ulti_allow) != 1) then es_xset ex 0
  if (server_var(ex) = 1) do
  {
    es_exists ex key WCSuserdata server_var(wcs_userid)
    if (server_var(ex) = 1) do
    {
      es_keygetvalue wcs_tmp WCSuserdata server_var(wcs_userid) "ability"
    
     //START OF BATMANS ABILITY CODE

Code: (eventscripts) [Select]
  es es_xif (server_var(wcs_tmp) in "grapplehook") do
      {
        es_xsetinfo wcs_ability_count 0
        es es_xkeygetvalue wcs_ability_count WCSuserdata server_var(wcs_userid) ability_count
        es es_xif (server_var(wcs_ability_count) > 0) do
        {
          es es_xif (server_var(wcs_tmp) = "grapplehook") do
          {           
          es wcs_grapplehook server_var(wcs_userid)
          }
          //es_xmath wcs_ability_count - 1
          es es_xtell server_var(wcs_userid) #multi #lightgreen: You Have#green server_var(wcs_ability_count)#lightgreen Grapples Remaining
          es es_xkeysetvalue WCSuserdata server_var(wcs_userid) ability_count server_var(wcs_ability_count)
        }
        es_xelse do
        {
             es es_xtell server_var(wcs_userid) #multi #lightgreenNo More Grapples Remaining
        }
      }
     //END OF BATMANS ABILITY CODE
    
      if (server_var(wcs_tmp) in "warden") do
      {
        es_xset wcs_ability_count 0
        es_keygetvalue wcs_ability_count WCSuserdata server_var(wcs_userid) ability_count
        ifx parse("(wcs_ability_count > 0) or (wcs_ability_count == -1)") do
        {
          es_xevent initi....


I've tested it with a few people on my own server and tried to get rid of most of the bugs. Hope you all enjoy it ;)

-Pud9y

Offline Narb

  • Level 7 Expert
  • *****
  • Posts: 182
  • Naruto&Hinata FTW!~~Anime~~
Re: The Dark Knight
« Reply #1 on: April 12, 2009, 02:20:31 PM »
This looks REALLY good, i'm gona try this ;)

Offline Xazek

  • Level 2 Apprentice
  • **
  • Posts: 55
  • ZoT.swe | Xazek > [CL]
    • Welcome To ZoT Website
Re: The Dark Knight
« Reply #2 on: April 12, 2009, 02:27:59 PM »
looks cool :) but is it not to much skills -_- ? // i gone try it  ;)

Offline James

  • Level 0 Beginner
  • Posts: 3
Re: The Dark Knight
« Reply #3 on: April 17, 2009, 02:43:48 PM »
Looks good, I will try this and see how it is.

Offline CA.Berettonawak

  • Le renommé méconnu...
  • Watchdogs
  • Level 7 Expert
  • *****
  • Posts: 3143
  • Big Berettonawak is watching you...
    • Coding-Alliance.Com : A bunch of coders? Why not a bunch of players? :P
Re: The Dark Knight
« Reply #4 on: April 17, 2009, 03:10:31 PM »
Yes, it seems good.
Congratulations, it's been a while since we saw a really nice custom race made by a new guy.
Quote from: N0life
Beret, keep yourself focusing on 1 project. Be sure to memorize that down since it sounds good.
Quote from: myself
i love tuna juice :D
Quote from: Pietro
=CA= Pietro: back
=CA= Pietro: sorry, was downstair sharing my chocolate with my cat
=CA= Pietro: you should see his face when he ate it xD
Quote from: myself
=CA= Berettonawak: just because you don't have hope doesn't mean we're doomed

Offline Pr3dator8

  • Level 0 Beginner
  • Posts: 8
Re: The Dark Knight
« Reply #5 on: April 26, 2009, 09:43:19 AM »
Anyone tried this looks pretty nice! any feedback?

Offline Pud9y

  • Level 0 Beginner
  • Posts: 2
Re: The Dark Knight
« Reply #6 on: April 26, 2009, 10:04:49 AM »
Hey cool, thanks for the positive feedback guys.

Id really like to know if you anyone got it working or not, because like i said briefly, a server tried to put it up but they couldnt for some reason (dont know how hard they were actually trying though :p lol) but i know it works fine on my own local server.

Yeah i had heaps of fun making this, hope you all like it too.

Offline [RankBr] AvasT

  • Level 7 Expert
  • *****
  • Posts: 824
Re: The Dark Knight
« Reply #7 on: April 27, 2009, 01:46:48 AM »
Pwnz
« Last Edit: January 26, 2010, 07:45:54 PM by AvasT »


Eventscripts Brazil Eventscripts Brazilian Coding Team

If you are having problems with acessing the Eventscripts Brazil forum?
Forum Forum ._.

Offline IceGuru

  • Level 0 Beginner
  • Posts: 11
Re: The Dark Knight
« Reply #8 on: January 26, 2010, 04:55:53 AM »
What I did wrong :(

Code: [Select]
////////////////////////////////////////
// WCS - Warcraft:Source              //
// ---------------------------------- //
//  by kRypT0n!Te                     //
//      http://wc3source.de           //
// ---------------------------------- //
// Content of this subscript          //
// - ultimate, ability                //
// - death handling and skill exec    //
////////////////////////////////////////
// say commands:
// ability
//
// admin commands:
// wcs_checkskills <userid> <skilltype>
// wcs_skillcheck <userid>
//
////////////////////////////////////////

block load
{
  es_xexists ex clientcommand ultimate
  if (server_var(ex) = 0) then es_xregclientcmd ultimate wcs/WCSfunctions/WCSskills/wcs_ultimate "Executes an ultimate skill"
  es_xexists ex clientcommand ability
  if (server_var(ex) = 0) then es_xregclientcmd ability wcs/WCSfunctions/WCSskills/wcs_ability "Command for special abilities"
  es_xexists ex saycommand ability
  if (server_var(ex) = 0) then es_xregsaycmd ability wcs/WCSfunctions/WCSskills/wcs_ability "Command for special abilities"
  es_xexists ex command wcs_checkskills
  if (server_var(ex) = 0) then es_xregcmd wcs_checkskills wcs/WCSfunctions/WCSskills/wcs_checkskills "wcs_checkskills - usage: wcs_checkskills <userid> <type>"
  es_xexists ex command wcs_skillcheck
  if (server_var(ex) = 0) then es_xregcmd wcs_skillcheck wcs/WCSfunctions/WCSskills/wcs_skillcheck "wcs_skillcheck - usage: wcs_skillcheck <userid>"
}

block unload
{
  es_xunregclientcmd ultimate
  es_xunregclientcmd ability
  es_xunregsaycmd ability
}

// event wcs_ultimate

block wcs_ultimate
{
if (server_var(wcs_debug) = 1) then profile begin ultimate
  // its a command
  es_xgetcmduserid wcs_userid
  es_exists ex userid server_var(wcs_userid)
  es_xset wcs_time 0
  es_xset wcs_curtime 0
  // prevent spectator running ultimate
  es_xset wcs_dead 1
  es_getplayerprop wcs_dead server_var(wcs_userid) "CCSPlayer.baseclass.pl.deadflag"
  if (server_var(wcs_dead) = 1) then es_xset ex 0
  es_xcopy wcs_ulti_allow wcs_gamestarted
  // check if its valid
  ifx true(ex) do
  {
    // check teams (T=2, CT=3), and ultimate protection in 30feet range
    es_getplayerteam wcs_team server_var(wcs_userid)
    if (server_var(wcs_team) = 2) then es_xset wcs_team_targetn "#c!d"
    if (server_var(wcs_team) = 3) then es_xset wcs_team_targetn "#t!d"
    es est_PlayerCount wcs_tmp server_var(wcs_team_targetn)
    if (server_var(wcs_tmp) > 0) then est_Near wcs_uid server_var(wcs_team_targetn) 300 server_var(wcs_userid) "es_xset wcs_tmp 0;es_keygetvalue wcs_tmp WCSuserdata server_var(wcs_uid) ulti_immunity;if (server_var(wcs_tmp) = 1) then es_xset wcs_ulti_allow 0"
    ifx true(wcs_ulti_allow) do
    {
      // get a time
      es est_uptime wcs_curtime
      es_xset wcs_ulti 0
      es_keygetvalue wcs_ulti WCSuserdata server_var(wcs_userid) "ultimate"
      if (server_var(wcs_ulti) = 0) do
      {
        es_keysetvalue "WCSuserdata" server_var(wcs_userid) "ultimate" server_var(wcs_curtime)
        es_set wcs_ulti server_var(wcs_time)
      }
      es_math wcs_time + server_var(wcs_curtime)
      es_math wcs_time - server_var(wcs_ulti)
      es_xset wcs_ultidelay 0
      es_xset wcs_race 0
      es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_userid) "race"
      es_keygetvalue wcs_ultidelay "WCSraces" server_var(wcs_race) "ultimate_cooldown"
      es est_IsNumeric wcs_numeric server_var(wcs_ultidelay)
      if (server_var(wcs_numeric) = "0") do
      {
        es_keygetvalue wcs_level "WCSuserdata" server_var(wcs_userid) "ultilevel"
        es_token wcs_ultidelay server_var(wcs_ultidelay) server_var(wcs_level) "|"
      }
      if (server_var(wcs_time) >= server_var(wcs_ultidelay)) do
      {
      es_xevent initialize wcs_ultimate
        es_event setint wcs_ultimate userid server_var(wcs_uid)
        es_event setint wcs_ultimate es_userteam server_var(wcs_team)
        es_event setint wcs_ultimate cooldown server_var(wcs_ultidelay)
        es_xevent fire wcs_ultimate
        es_xset wcs_ultinotexec 0
        // exec the skill
        es wcs_checkskills server_var(wcs_userid) "player_ultimate"
        // check if ultimate fails
        if (server_var(wcs_ultinotexec) = 0) then es_xkeysetvalue "WCSuserdata" server_var(wcs_userid) "ultimate" server_var(wcs_curtime)
      }
      es_xelse do
      {
        es_set wcs_diff server_var(wcs_ultidelay)
        es_math wcs_diff - server_var(wcs_time)
        wcs_getlanguage "wcs_lng" "wcs_lng_cooldown"
        es_format wcs_text server_var(wcs_lng) server_var(wcs_ultidelay) server_var(wcs_diff)
        es_tell server_var(wcs_userid) #multi server_var(wcs_text)
      }
    }
    es_xelse do
    {
      wcs_getlanguage "wcs_lng" "wcs_lng_ultinotnow"
      es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
    }
  }
if (server_var(wcs_debug) = 1) then profile end ultimate
}

event wcs_ultimate
{

}

block wcs_ability
{
if (server_var(wcs_debug) = 1) then profile begin ability
  // first, is it a custom command ?
  es_xgetargv wcs_userid 1
  es_exists ex userid server_var(wcs_userid)
  ifx false(ex) do
  {
    // or a say command
    es_xgetcmduserid wcs_userid
    es_exists ex userid server_var(wcs_userid)
  }
  es_getplayerprop wcs_dead server_var(wcs_userid) "CCSPlayer.baseclass.pl.deadflag"
  if (server_var(wcs_dead) = 1) then es_xset ex 0
  es_xcopy wcs_ulti_allow wcs_gamestarted
  if (server_var(wcs_ulti_allow) != 1) then es_xset ex 0
  if (server_var(ex) = 1) do
  {
    es_exists ex key WCSuserdata server_var(wcs_userid)
    if (server_var(ex) = 1) do
    {
      es_keygetvalue wcs_tmp WCSuserdata server_var(wcs_userid) "ability"
      //START OF BATMANS ABILITY CODE
       es es_xif (server_var(wcs_tmp) in "grapplehook") do
      {
        es_xsetinfo wcs_ability_count 0
        es es_xkeygetvalue wcs_ability_count WCSuserdata server_var(wcs_userid) ability_count
        es es_xif (server_var(wcs_ability_count) > 0) do
        {
          es es_xif (server_var(wcs_tmp) = "grapplehook") do
          {           
          es wcs_grapplehook server_var(wcs_userid)
          }
          //es_xmath wcs_ability_count - 1
          es es_xtell server_var(wcs_userid) #multi #lightgreen: You Have#green server_var(wcs_ability_count)#lightgreen Grapples Remaining
          es es_xkeysetvalue WCSuserdata server_var(wcs_userid) ability_count server_var(wcs_ability_count)
        }
        es_xelse do
        {
             es es_xtell server_var(wcs_userid) #multi #lightgreenNo More Grapples Remaining
        }
      }
  //END OF BATMANS ABILITY CODE

 if (server_var(wcs_tmp) in "warden") do
      {
        es_xset wcs_ability_count 0
        es_keygetvalue wcs_ability_count WCSuserdata server_var(wcs_userid) ability_count
        ifx parse("(wcs_ability_count > 0) or (wcs_ability_count == -1)") do
        {
          es_xevent initialize wcs_ability
          es_event setint wcs_ability userid server_var(wcs_userid)
          //es_event setint wcs_ability es_userteam server_var(wcs_team)
          es_xevent fire wcs_ability

          if (server_var(wcs_tmp) = "warden") do
          {
            es_xset wcs_params 0
            es_keygetvalue wcs_params WCSuserdata server_var(wcs_userid) "ability_parameter"
            if (server_var(wcs_params) != "0") do
            {
              es_getplayerteam wcs_team server_var(wcs_userid)
              // colored wards, thanks to Sol | Pikachu
              es_xset wcs_color "10 0 255 70"
              ifx parse("wcs_team == 2") do
              {
                es_xset wcs_team_target 3
                es_xset wcs_team_targetn "#ct"
                es_xset wcs_color "255 0 10 150"
              }
              ifx parse("wcs_team == 3") do
              {
                es_xset wcs_team_target 2
                es_xset wcs_team_targetn "#t"
                es_xset wcs_color "10 0 255 150"
              }
              es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
              es_xset wcs_duration 0
              es_token wcs_duration server_var(wcs_params) 1 "_"
              ifx true(wcs_graphicfx) do
              {
                es_xcopy wcs_x2 wcs_x1
                es_xcopy wcs_y2 wcs_y1
                es_xcopy wcs_z2 wcs_z1
                es_xmath wcs_z1 + 120
                esnq est_Effect 11 #a 0 "sprites/purpleglow1.vmt" server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_duration) 2 50
                esnq est_Effect 3 #a 0 "sprites/lgtning.vmt" server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_x2) server_var(wcs_y2) server_var(wcs_z2) server_var(wcs_duration) 20 20 server_var(wcs_color)
                es_xmath wcs_z1 - 120
              }
              es_token wcs_dmg server_var(wcs_params) 2 "_"
              es_token wcs_radius server_var(wcs_params) 3 "_"
              es wcs_warden server_var(wcs_userid) server_var(wcs_duration) server_var(wcs_dmg) server_var(wcs_radius) server_var(wcs_team_target) server_var(wcs_team_targetn) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_wardencounter)
              wcs_getlanguage "wcs_lng" "wcs_lng_wardencreated"
              es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
            }
          }
          es_xmath wcs_ability_count - 1
          es_keysetvalue WCSuserdata server_var(wcs_userid) ability_count server_var(wcs_ability_count)
        }
        es_xelse do
        {
          wcs_getlanguage "wcs_lng" "wcs_lng_noability"
          es_tell server_var(wcs_userid) #multi server_var(wcs_lng)
        }
      }
    }
  }
if (server_var(wcs_debug) = 1) then profile end ability
}

event wcs_ability
{

}

block wcs_skillcheck
{
if (server_var(wcs_debug) = 1) then profile begin skillcheck
  // usage:    wcs_skillcheck <userid>
  // userid:   give a VALID userid
  es_xset wcs_scuserid 0
  es_xgetargv wcs_scuserid 1
  es_exists ex userid server_var(wcs_scuserid)
  ifx true(ex) do
  {
    // reset all to 0
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) player_attacker 0
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) player_victim 0
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) player_death 0
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) player_kill 0
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) player_spawn 0
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) player_say 0
    //ulti_immunity
    es_xset wcs_counter 1
    es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_scuserid) "race"
    es_keygetvalue wcs_numberofskills "WCSraces" server_var(wcs_race) "numberofskills"
    if (server_var(wcs_debug) = 1) then profile begin skillcheck_a
    if (server_var(wcs_numberofskills) != 0) then while "server_var(wcs_counter) <= server_var(wcs_numberofskills)" "es_format wcs_skillnumber skill_%1 server_var(wcs_counter);es_keygetvalue wcs_skill WCSuserdata server_var(wcs_scuserid) server_var(wcs_skillnumber);es_keygetvalue wcs_skilltype WCSraces server_var(wcs_race) skillcfg;es_token wcs_skilltype server_var(wcs_skilltype) server_var(wcs_counter) |;es_keygetvalue wcs_tmp WCSuserdata server_var(wcs_scuserid) server_var(wcs_skilltype);if (server_var(wcs_skill) > 0) then es_xkeysetvalue WCSuserdata server_var(wcs_scuserid) server_var(wcs_skilltype) 1;if (server_var(wcs_skill) = 0) then es_xif (server_var(wcs_tmp) = 0) then es_xkeysetvalue WCSuserdata server_var(wcs_scuserid) server_var(wcs_skilltype) 0;es_xmath wcs_counter + 1"
    if (server_var(wcs_debug) = 1) then profile end skillcheck_a
    es_keycreate WCSpha event_var(userid)
    es_keycreate WCSphv event_var(userid)
    es_keycreate WCSpd event_var(userid)
    es_keycreate WCSpk event_var(userid)
    es_keycreate WCSps event_var(userid)
    es_keycreate WCSpsay event_var(userid)
    es_xset wcs_counter 1
    es_xset wcs_itemactivate 0
    if (server_var(wcs_debug) = 1) then profile begin skillcheck_items
    // Important!! If you add an item trigger like eg. Grenade_bounce, you have to increase this counter value and add it to wcs_eventarray1 and wcs_eventarray2
    while "server_var(wcs_counter) <= 6" "es_xdoblock wcs/WCSfunctions/WCSskills/wcs_skillcheck_b;es_xmath wcs_counter + 1;if (server_var(wcs_activate) = 1) then es_xset wcs_itemactivate 1"
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) "itemactivate" server_var(wcs_itemactivate)
    if (server_var(wcs_debug) = 1) then profile end skillcheck_items
    es_keysetvalue WCSuserdata server_var(wcs_scuserid) skillcheck 0
  }
if (server_var(wcs_debug) = 1) then profile end skillcheck
}

block wcs_skillcheck_a
{
  es_format wcs_skillnumber "skill_%1" server_var(wcs_counter)
  es_keygetvalue wcs_skill "WCSuserdata" server_var(wcs_scuserid) server_var(wcs_skillnumber)
  es_keygetvalue wcs_skilltype "WCSraces" server_var(wcs_race) "skillcfg"
  es_token wcs_skilltype server_var(wcs_skilltype) server_var(wcs_counter) "|"
  es_keygetvalue wcs_tmp "WCSuserdata" server_var(wcs_scuserid) server_var(wcs_skilltype)
  if (server_var(wcs_skill) > 0) then es_xkeysetvalue "WCSuserdata" server_var(wcs_scuserid) server_var(wcs_skilltype) "1"
  if (server_var(wcs_skill) = 0) then es_xif (server_var(wcs_tmp) = "0") then es_xkeysetvalue "WCSuserdata" server_var(wcs_scuserid) server_var(wcs_skilltype) "0"
}

block wcs_skillcheck_b
{
  es_xset wcs_activate 0
  es_token wcs_shopcat server_var(wcs_eventarray1) server_var(wcs_counter) |
  es_token wcs_eventcat server_var(wcs_eventarray2) server_var(wcs_counter) |
  es_foreachval wcs_val in server_var(wcs_shopcat) server_var(wcs_scuserid) "if (icmd_ in server_var(wcs_val)) then es_xkeygetvalue wcs_tmp server_var(wcs_shopcat) server_var(wcs_scuserid) server_var(wcs_val);if (icmd_ in server_var(wcs_val)) then es_xstrlen wcs_strlen server_var(wcs_tmp);if (icmd_ in server_var(wcs_val)) then es_xif (server_var(wcs_strlen) > 1) then es_xset wcs_activate 1"
  es_keygetvalue wcs_tmp WCSuserdata server_var(wcs_scuserid) server_var(wcs_eventcat)
  if (server_var(wcs_activate) = "1") then es_xkeysetvalue "WCSuserdata" server_var(wcs_scuserid) server_var(wcs_eventcat) "1"
  if (server_var(wcs_activate) = "0") then es_xif (server_var(wcs_tmp) = "0") then es_xkeysetvalue "WCSuserdata" server_var(wcs_scuserid) server_var(wcs_eventcat) "0"
}

block wcs_checkskills
{
if (server_var(wcs_debug) = 1) then profile begin checkskill
  // custom command
  es_xset wcs_userid 0
  es_xset wcs_checkskill 0
  es_xgetargv wcs_userid 1
  es_xgetargv wcs_checkskill 2
  es_exists ex userid server_var(wcs_userid)
  if (server_var(ex) = 1) do
  {
    if (server_var(wcs_checkskill) in "player_death player_kill player_attacker player_victim player_spawn player_say player_ultimate player_ability") do
    {
      es_exists ex key "WCSuserdata" server_var(wcs_userid)
      if (server_var(ex) = 1) do
      {
        es_xset wcs_race 0
        es_keygetvalue wcs_race "WCSuserdata" server_var(wcs_userid) "race"
        es_xset wcs_level 0
        es_xset wcs_skill 0
        es_xset wcs_skillcfg 0
        es_xset wcs_skill_setting 0
        es_xset wcs_skill_cmd 0
        es_xset wcs_skill_sfx 0
        // new try
        es_xset wcs_numberofskills 0
        es_xset wcs_val 0
        es_xset wcs_skilltype 0
        es_xset wcs_scounter 1
        es_keygetvalue wcs_numberofskills WCSraces server_var(wcs_race) "numberofskills"
        if (server_var(wcs_numberofskills) != "0") then while "server_var(wcs_scounter) <= server_var(wcs_numberofskills)" "es_format wcs_val skill_%1 server_var(wcs_scounter);es_keygetvalue wcs_skilltype WCSraces server_var(wcs_race) skillcfg;es_token wcs_skilltype server_var(wcs_skilltype) server_var(wcs_scounter) |;if (server_var(wcs_skilltype) = server_var(wcs_checkskill)) then es_xdoblock wcs/WCSfunctions/WCSskills/wcs_execskills;es_xmath wcs_scounter + 1"
      }
    }
  }
if (server_var(wcs_debug) = 1) then profile end checkskill
}

block wcs_execskills
{
if (server_var(wcs_debug) = 1) then profile begin execskill
  es_exists ex userid server_var(wcs_userid)
  // no skills while spectator/invalid team
  es_xset wcs_team 0
  es_getplayerteam wcs_team server_var(wcs_userid)
  if (server_var(wcs_team) <= 1) then es_xset ex "0"
  if (server_var(ex) = 1) do
  {
    if (server_var(wcs_val) != "0") do
    {
      // get skill level
      es_xset wcs_level 0
      es_keygetvalue wcs_level "WCSuserdata" server_var(wcs_userid) server_var(wcs_val)
      // if level > 0 get the config type
      if (server_var(wcs_level) > 0) do
      {
        // raceX_skillY -> get Y (skill number)
        //es_token wcs_skill server_var(wcs_val) 2 "skill"
        es_set wcs_skill server_var(wcs_scounter)
        // check if the config is equal
        es_keygetvalue wcs_skillcfg "WCSraces" server_var(wcs_race) "skillcfg"
        es_token wcs_skillcfg server_var(wcs_skillcfg) server_var(wcs_skill) "|"
        if (server_var(wcs_skillcfg) = server_var(wcs_checkskill)) do
        {
          es wcs_debuglog running race server_var(wcs_race) -> skill server_var(wcs_skill)
          // get the settings
          es_format wcs_skill_setting "skill%1_setting" server_var(wcs_skill)
          es_format wcs_skill_cmd "skill%1_cmd" server_var(wcs_skill)
          es_format wcs_skill_sfx "skill%1_sfx" server_var(wcs_skill)
          es_keygetvalue wcs_skill_setting WCSraces server_var(wcs_race) server_var(wcs_skill_setting)
          es_token wcs_skill_setting server_var(wcs_skill_setting) server_var(wcs_level) "|"
          es_keygetvalue wcs_skill_cmd WCSraces server_var(wcs_race) server_var(wcs_skill_cmd)
          es_keygetvalue wcs_skill_sfx WCSraces server_var(wcs_race) server_var(wcs_skill_sfx)
          // roll the dice
          es_xrand wcs_dice 1 100
          es wcs_debuglog notice: Dice rolled server_var(wcs_dice)
          es_strlen wcs_strlen server_var(wcs_skill_setting)
          // execute the skill
          if (server_var(wcs_strlen) > 1) do
          {
            es alias wcs_cmd server_var(wcs_skill_setting)
            wcs_cmd
          }
          es_strlen wcs_strlen server_var(wcs_skill_sfx)
          if (server_var(wcs_strlen) > 1) do
          {
            if (server_var(wcs_graphicfx) = "1") do
            {
              es_xset wcs_dead "1"
              es_getplayerprop wcs_dead server_var(wcs_userid) "CCSPlayer.baseclass.pl.deadflag"
              if (server_var(wcs_dead) = "0") do
              {
                es alias wcs_cmd server_var(wcs_skill_sfx)
                wcs_cmd
              }
            }
          }
          es_strlen wcs_strlen server_var(wcs_skill_cmd)
          if (server_var(wcs_strlen) > 1) do
          {
            es alias wcs_cmd server_var(wcs_skill_cmd)
            if (server_var(wcs_graphicfx) = "1") then es_xif (server_var(wcs_cfg_skillflash) = "1") then est_fade server_var(wcs_userid) 0 0.3 0 255 255 255 100
            wcs_cmd
          }
        }
      }
    }
  }
if (server_var(wcs_debug) = 1) then profile end execskill
}

Offline Unleashed³ | Termi

  • Level 7 Expert
  • *****
  • Posts: 184
    • Unleashed Energy
Re: The Dark Knight
« Reply #9 on: January 26, 2010, 07:33:39 AM »
Hey, nice race.. i got it on my server a few month ago and it's very nice... used grapple hook for other races too :) congrats

Offline Hybrid_Theory

  • Level 7 Expert
  • *****
  • Posts: 239
  • Ditto.
Re: The Dark Knight
« Reply #10 on: January 27, 2010, 12:45:10 AM »
Such a good race :D I love admire the grapple hook skill, very creative. Keep em coming man!

Want to see my works such us the ones above? Visit: http://warcraft-source.com/board/index.php/topic,9718.0.html and give me feedback

[SDD] Server

Offline IceGuru

  • Level 0 Beginner
  • Posts: 11
Re: The Dark Knight
« Reply #11 on: January 28, 2010, 06:42:13 AM »
I still need a bit of help I press c (my ability) and It say over and over I have 5 Grapples left but none come out?

Offline michalgo

  • Level 0 Beginner
  • Posts: 8
Re: The Dark Knight
« Reply #12 on: January 28, 2010, 08:08:51 PM »
Yea nice race man:)


BTW i love your ability;)
I <3 WCS !!!!