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 BatmanSkills (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 "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.txtpaste inside 'load' block
block load
{ 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
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.txtpaste 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 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