// =============================================================================== // DESCRIPTION: Abstract class for player // CALLED BY: playerjoin // PARAMS: id: clientid, idx: index // TYPE: Server-Side // =============================================================================== // Init ========================================================================== @INIT if [__debug == 1] goto DEBUG goto SCRIPT // =============================================================================== // Debug ========================================================================= @DEBUG Echo #__debug_prefix#"Calling script _SVR_PLAYER" goto SCRIPT // =============================================================================== // Script ======================================================================== @SCRIPT if [__debug == 1] Echo #__debug_prefix#"Calling method _SVR_PLAYER::"#GetScriptParam(::)# goto #GetScriptParam(::)# goto EOF /** / * "Registers a client so we can keep track of him" / * @args clientid / ** / @REGISTER Set __clients [__clients + 1] Set __clients_max_idx [__clients_max_idx + 1] ClientExecScript #GetScriptParam(clientid)# _CL_PLAYER :: CONSTRUCTOR SendMessage #GetScriptParam(clientid)# "^r[DUAL ARENA] ^yWelcome to TEAM DEATHMATCH the rules:" SendMessage #GetScriptParam(clientid)# "^r[DUAL ARENA] ^y- When get killed you join the otherside" SendMessage #GetScriptParam(clientid)# "^r[DUAL ARENA] ^y- If one team gets emptied it loses. NEXT GAME!" goto EOF /** / * "Destroy the tracking of an client" / * @args clientid / ** / @UNREGISTER Set __clients [__clients - 1] echo #__debug_prefix#"UNREGISTER: clientid: "#GetScriptParam(clientid)# goto EOF /** / * "Handles the spawning of a client" / * @args index, clientid / ** / @JOIN Set _tmp_team_one #GetNumClients(1)# Set _tmp_team_two #GetNumClients(2)# if [_tmp_team_one > _tmp_team_two] "ExecScript _SVR_PLAYER :: TEAM clientid #GetScriptParam(clientid)# team 2; goto EOF" ExecScript _SVR_PLAYER :: TEAM clientid #GetScriptParam(clientid)# team 1 goto EOF @PART ExecScript _SVR_PLAYER :: TEAM clientid #GetScriptParam(clientid)# team 0; goto EOF /** / * "Handles the death of a client" / * @args index attackingindex damage method blockable / ** / @DEATH Echo "index: "#GetScriptParam(index)#" attackingindex: "#GetScriptParam(attackingindex)#" damage: "#GetScriptParam(damage)#" method: "#GetScriptParam(method)#" blockable: "#GetScriptParam(blockable)# Set _tmp_index #GetScriptParam(index)# Set _tmp_clientid #GetClientNumFromIndex(|#GetScriptParam(index)|#)# Set _tmp_team #GetTeam(|#_tmp_index|#)# Sleep 200 RemoveEntity #_tmp_index# if [_tmp_team == 1] "ExecScript _SVR_PLAYER :: TEAM clientid #_tmp_clientid# team 2;Sleep 200;ExecScript _SVR_PLAYER :: RENEW index #_tmp_index#;goto EOF" if [_tmp_team == 2] "ExecScript _SVR_PLAYER :: TEAM clientid #_tmp_clientid# team 1;Sleep 200;ExecScript _SVR_PLAYER :: RENEW index #_tmp_index#;goto EOF" goto EOF @RENEW RefreshCooldowns #GetScriptParam(index)# RefillAmmo #GetScriptParam(index)# ClearStates #GetScriptParam(index)# RefillHealth #GetScriptParam(index)# RefillMana #GetScriptParam(index)# RefillStamina #GetScriptParam(index)# goto EOF /** / * "Forces player to go OBSERVER" / * @args clientid / ** / @OBSERVER SetTeam #GetIndexFromClientNum(|#GetScriptParam(clientid)|#)# 0 ForceSpawn #GetIndexFromClientNum(|#GetScriptParam(clientid)|#)# ClientExecScript #GetScriptParam(clientid)# _CL_PLAYER :: OBSERVER goto EOF @TELEPORT Set _idx #GetScriptParam(idx)# Set _idx_clientnum #GetClientNumFromIndex(|#_idx|#)# set _idx_real #GetIndexFromClientNum(|#_idx_clientnum|#)# set _idx_team #GetTeam(|#_idx_real|#)# Set _targetidx #GetScriptParam(targetidx)# Set _targetidx_clientnum #GetClientNumFromIndex(|#_targetidx|#)# set _targetidx_real #GetIndexFromClientNum(|#_targetidx_clientnum|#)# set _targetidx_team #GetTeam(|#_targetidx_real|#)# if [_idx == _targetidx] "goto EOF" if [_idx_team != _targetidx_team] "goto EOF" Set _x #GetPosX(|#_targetidx|#)# Set _y #GetPosY(|#_targetidx|#)# set _x [_x + 100] SetPosition #_idx# #_x# #_y# 0 SetToValidPosition #_idx# StartEffectOnObject #_idx_real# /shared/effects/relocated.effect goto EOF @SPAWN Set _idx #GetIndexFromClientNum(|#GetScriptParam(clientid)|#)# Set _tmp_team #GetTeam(|#_idx|#)# if [_tmp_team < 1] goto EOF Set _tmp_spawn #GetNumClients(|#_tmp_team|#)# Set _tmp_spawn #Floor(|#_tmp_spawn|#)# if [_tmp_team < 2] Set _tmp_spawn "Spawn_Human_"#_tmp_spawn# if [_tmp_team > 1] Set _tmp_spawn "Spawn_Beast_"#_tmp_spawn# SetPosition #_idx# #GetPosX(|#_tmp_spawn|#)# #GetPosY(|#_tmp_spawn|#)# 0 SetToValidPosition #_idx# goto EOF /** / * "Forces player to go to the playfield" / * @args clientid team / ** / @TEAM Set _tmp_team #GetScriptParam(team)# SetTeam #GetIndexFromClientNum(|#GetScriptParam(clientid)|#)# #_tmp_team# if [_tmp_team == 1] "Echo changeunit 1; ChangeUnit #GetIndexFromClientNum(|#GetScriptParam(clientid)|#)# Player_Savage true" if [_tmp_team == 2] "Echo changeunit 2; ChangeUnit #GetIndexFromClientNum(|#GetScriptParam(clientid)|#)# Player_ShapeShifter true" ClientExecScript #GetScriptParam(clientid)# _CL_PLAYER :: JOIN_SQUAD RegisterEntityScript #GetIndexFromClientNum(|#GetScriptParam(clientid)|#)# death "ExecScript _SVR_PLAYER :: DEATH index \#GetScriptParam(index)\# attackingindex \#GetScriptParam(attackingindex)\# \#GetScriptParam(damage)\# method \#GetScriptParam(method)\# blockable \#GetScriptParam(blockable)\#" SendMessage #GetScriptParam(clientid)# "^r[DUAL ARENA] ^yYou are now on TEAM"#_tmp_team# ExecScript #GetScriptParam(clientid)# _SVR_PLAYER :: SPAWN clientid #GetScriptParam(clientid) goto EOF @EOF // ===============================================================================