Page 1 of 1
Easy Way to port an existing Eventscripts Addon
Posted: Tue Aug 28, 2012 11:04 am
by simonus
Hey,
i got an old plugin that i would like to use on my csgo server. Is there an easy way to port the Eventscripts addon?
Thanks in advance
Simon
Posted: Tue Aug 28, 2012 11:44 am
by Kami
There is nothing like an ultra easy way (like a ES->SP translator or something).
Best you can do is post the script here or post its ES link so people here can give it a try (if its possible yet)
Posted: Tue Aug 28, 2012 3:12 pm
by Monday
Old eventscripts addons are not compatible with Source.Python at all, the addon would have to be modified to work and there is no automation for that.
Posted: Tue Aug 28, 2012 7:06 pm
by simonus
Kami wrote:Best you can do is post the script here or post its ES link so people here can give it a try (if its possible yet)
I would love if you could port it... I really do love this addon...
Code: Select all
/////////////////////////////////////////////////////
//Ichthys Elimination Mod for Mattie's Eventscripts//
//------------http://eventscripts.com--------------//
/////////////////////////////////////////////////////
// \\
//About\\
// \\
//Elimination works like this. A player is killed, the victims of that player will be respawned.
//Simple as that. This means that anytime you kill an opponent you will be reviving all the players that he killed.
//If a player suicides he will be respawned after a delay. All players he killed will respawn
//If a player is team killed, he will be respawned after a delay. All players he killed will respawn
//There are still other gameplay modes that I would like to add.
//Right now it works well along side normal CSS game play.
//A FFA version would be great aswell as a Team DM version without objectives.
block config
{
//Elimination Mod Settings
//Selfkill settings
elim_suicide_respawn 1 //If set to 1, players that suicide will be automatically respawned
elim_suicide_respawn_delay 5 //Delay to automatically respawn player
//Teamkill settings
elim_teamkill_respawn 1 //If a player is TK'd respawn victim
elim_teamkill_respawn_delay 5 //Delay to automatically respawn TK victim
}
block respawn
{
es est_spawn server_var(elim_userid) // Other spawn command
}
event player_spawn
{
es_keysetvalue elimination event_var(userid) killedby 0
es_keysetvalue elimination event_var(userid) killidstring _
es_format elim_replace _%1_ event_var(userid)
if (event_var(es_userteam) equalto 2) do
{
es_string elim_alive_ct replace server_var(elim_replace) _
es_string elim_alive_t replace server_var(elim_replace) _
es_format elim_alive_t %1%2_ server_var(elim_alive_t) event_var(userid)
}
if (event_var(es_userteam) equalto 3) do
{
es_string elim_alive_t replace server_var(elim_replace) _
es_string elim_alive_ct replace server_var(elim_replace) _
es_format elim_alive_ct %1%2_ server_var(elim_alive_ct) event_var(userid)
}
}
event player_connect
{
es_keycreate elimination event_var(userid)
es_keysetvalue elimination event_var(userid) killedby 0
es_keysetvalue elimination event_var(userid) killidstring _
}
event player_disconnect
{
//Remove from killers string
es_keygetvalue elim_userid elimination event_var(userid) killedby
es_keygetvalue elim_killidstring elimination server_var(elim_userid) killidstring
es_format elim_replace _%1_ server_var(elim_userid)
es_string elim_killidstring replace server_var(elim_replace) _
es_keysetvalue elimination server_var(elim_userid) killidstring server_var(elim_killidstring)
//Spawn players killed by victim
es_setinfo elim_userid event_var(userid)
es_xdoblock ich_elimination/respawnplayers
es_keydelete elimination event_var(userid)
}
event player_death
{
//Alive strings and roundend check
es_format elim_replace _%1_ event_var(userid)
//Remove from both just incase
es_string elim_alive_t replace server_var(elim_replace) _
es_string elim_alive_ct replace server_var(elim_replace) _
es_token elim_token server_var(elim_alive_ct) 0 _
if (server_var(elim_token) equalto 0) then es_xsetinfo elim_roundended 1
es_token elim_token server_var(elim_alive_t) 0 _
if (server_var(elim_token) equalto 0) then es_xsetinfo elim_roundended 1
if (server_var(elim_roundended) = 0) do
{
//tk
//suicide
//worldspawn
//normal
//Worldspawn - fall to death
if (event_var(attacker) = 0) do
{
if (server_var(elim_suicide_respawn) = 1) do
{
//elim_respawn delayed <userid> <round>
es_delayed server_var(elim_suicide_respawn_delay) elim_respawn delayed event_var(userid) server_var(elim_roundcount)
es_tell event_var(userid) #multi #green[Ich Elimination] #lightgreenSuicide auto-respawn enabled: server_var(elim_suicide_respawn_delay) seconds
}
}
else do
{
//Suicide
if (event_var(userid) = event_var(attacker)) do
{
if (server_var(elim_suicide_respawn) = 1) do
{
//elim_respawn delayed <userid> <round>
es_delayed server_var(elim_suicide_respawn_delay) elim_respawn delayed event_var(userid) server_var(elim_roundcount)
es_tell event_var(userid) #multi #green[Ich Elimination] #lightgreenSuicide auto-respawn enabled: server_var(elim_suicide_respawn_delay) seconds
}
}
else do
{
if (event_var(es_userteam) = event_var(es_attackerteam)) do
{
if (server_var(elim_teamkill_respawn) = 1) do
{
//elim_respawn delayed <userid> <round>
es_delayed server_var(elim_teamkill_respawn_delay) elim_respawn delayed event_var(userid) server_var(elim_roundcount)
es_tell event_var(userid) #multi #green[Ich Elimination] #lightgreenTeam kill auto-respawn enabled: server_var(elim_suicide_respawn_delay) seconds
}
}
else do
{
//Set killer's ID
es_keysetvalue elimination event_var(userid) killedby event_var(attacker)
//Add to attackers list
es_keygetvalue elim_killidstring elimination event_var(attacker) killidstring
es_format elim_replace _%1_ event_var(userid)
es_string elim_killidstring replace server_var(elim_replace) _
es_format elim_killidstring %1%2_ server_var(elim_killidstring) event_var(userid)
es_keysetvalue elimination event_var(attacker) killidstring server_var(elim_killidstring)
es_tell event_var(userid) #multi #greenYou will spawn when #default event_var(es_attackername) #green dies
}
}
}
//Spawn players killed by victim
es_setinfo elim_userid event_var(userid)
es_xdoblock ich_elimination/respawnplayers
}
}
block respawnplayers
{
es_keygetvalue elim_killidstring elimination server_var(elim_userid) killidstring
if (server_var(elim_killidstring) notequalto _) do
{
es_xsetinfo elim_message spawned
es_xdoblock ich_elimination/respawnplayers_loop
es_format elim_message "%1" server_var(elim_message)
es_msg server_var(elim_message)
}
es_keysetvalue elimination server_var(elim_userid) killidstring _
}
block respawnplayers_loop
{
es_xsetinfo elim_token 0
es_token elim_token server_var(elim_killidstring) 1 _
if (server_var(elim_roundended) = 0) do
{
es est_spawn server_var(elim_token)
es_getplayername elim_name server_var(elim_token)
es_format elim_message "%1, %2" server_var(elim_name) server_var(elim_message)
}
es_format elim_replace _%1_ server_var(elim_token)
es_string elim_killidstring replace server_var(elim_replace) _
if (server_var(elim_killidstring) notequalto _) then es_xdoblock ich_elimination/respawnplayers_loop
}
block elim_respawn
{
//elim_respawn delayed <userid> <round>
es_xsetinfo elim_arg1 0
es_xgetargv elim_arg1 1
if (server_var(elim_arg1) = delayed) do
{
es_xsetinfo elim_userid 0
es_xgetargv elim_userid 2
es_xsetinfo elim_arg3 0
es_xgetargv elim_arg3 3
es_getuserid elim_userid server_var(elim_userid)
if (server_var(elim_userid) != 0) do
{
if (server_var(elim_arg3) = server_var(elim_roundcount)) then es_xdoblock ich_elimination/respawn
}
}
}
block init
{
es_xkeygroupcreate elimination
es_xsetinfo elim_version 0.4
es_makepublic elim_version
es_xsetinfo elim_userid 0
es_xsetinfo elim_killidstring 0
es_xsetinfo elim_token 0
es_xsetinfo elim_replace 0
es_xsetinfo elim_userid 0
es_xsetinfo elim_index 0
es_xsetinfo elim_name 0
es_xsetinfo elim_exists 0
es_xsetinfo elim_disable_c4 0
es_xsetinfo elim_disable_hostages 0
es_exists elim_exists variable elim_alive_ct
if (server_var(elim_exists) = 0) do
{
es_xsetinfo elim_alive_ct _
es_xsetinfo elim_alive_t _
}
es_xexists elim_exists command elim_respawn
if (server_var(elim_exists) = 0) then es_xregcmd elim_respawn "ich_elimination/elim_respawn" "Elimination Mod Delay Respawn Command"
es_xsetinfo elim_suicide_respawn 0
es_xsetinfo elim_suicide_respawn_delay 0
es_xsetinfo elim_teamkill_respawn 0
es_xsetinfo elim_teamkill_respawn_delay 0
es_xdoblock ich_elimination/config
es_xcreateplayerlist elim
es_xforeachkey key in elim "es_keycreate elimination server_var(key); es_keysetvalue elimination server_var(key) killedby 0; es_keysetvalue elimination server_var(key) killidstring _"
es_xkeygroupdelete elim
es_xlog Ichthys Elimination Mod Init Executed
}
block load
{
es_xdoblock ich_elimination/init
}
block unload
{
es_keygroupdelete elimination
}
event round_end
{
es_xsetinfo elim_roundended 1
}
event round_start
{
es_xmath elim_roundcount + 1
es_xsetinfo elim_roundended 0
}
event es_map_start
{
es_xsetinfo elim_roundcount 0
es_xsetinfo elim_roundended 1
}
event bomb_exploded
{
es_xsetinfo elim_roundended 1
}
event bomb_defused
{
es_xsetinfo elim_roundended 1
}
event hostage_rescued_all
{
es_xsetinfo elim_roundended 1
}
Posted: Tue Aug 28, 2012 9:34 pm
by BackRaw
simonus wrote:I would love if you could port it... I really do love this addon...
Code: Select all
/////////////////////////////////////////////////////
//Ichthys Elimination Mod for Mattie's Eventscripts//
//------------http://eventscripts.com--------------//
/////////////////////////////////////////////////////
// \\
//About\\
// \\
//Elimination works like this. A player is killed, the victims of that player will be respawned.
//Simple as that. This means that anytime you kill an opponent you will be reviving all the players that he killed.
//If a player suicides he will be respawned after a delay. All players he killed will respawn
//If a player is team killed, he will be respawned after a delay. All players he killed will respawn
//There are still other gameplay modes that I would like to add.
//Right now it works well along side normal CSS game play.
//A FFA version would be great aswell as a Team DM version without objectives.
block config
{
//Elimination Mod Settings
//Selfkill settings
elim_suicide_respawn 1 //If set to 1, players that suicide will be automatically respawned
elim_suicide_respawn_delay 5 //Delay to automatically respawn player
//Teamkill settings
elim_teamkill_respawn 1 //If a player is TK'd respawn victim
elim_teamkill_respawn_delay 5 //Delay to automatically respawn TK victim
}
block respawn
{
es est_spawn server_var(elim_userid) // Other spawn command
}
event player_spawn
{
es_keysetvalue elimination event_var(userid) killedby 0
es_keysetvalue elimination event_var(userid) killidstring _
es_format elim_replace _%1_ event_var(userid)
if (event_var(es_userteam) equalto 2) do
{
es_string elim_alive_ct replace server_var(elim_replace) _
es_string elim_alive_t replace server_var(elim_replace) _
es_format elim_alive_t %1%2_ server_var(elim_alive_t) event_var(userid)
}
if (event_var(es_userteam) equalto 3) do
{
es_string elim_alive_t replace server_var(elim_replace) _
es_string elim_alive_ct replace server_var(elim_replace) _
es_format elim_alive_ct %1%2_ server_var(elim_alive_ct) event_var(userid)
}
}
event player_connect
{
es_keycreate elimination event_var(userid)
es_keysetvalue elimination event_var(userid) killedby 0
es_keysetvalue elimination event_var(userid) killidstring _
}
event player_disconnect
{
//Remove from killers string
es_keygetvalue elim_userid elimination event_var(userid) killedby
es_keygetvalue elim_killidstring elimination server_var(elim_userid) killidstring
es_format elim_replace _%1_ server_var(elim_userid)
es_string elim_killidstring replace server_var(elim_replace) _
es_keysetvalue elimination server_var(elim_userid) killidstring server_var(elim_killidstring)
//Spawn players killed by victim
es_setinfo elim_userid event_var(userid)
es_xdoblock ich_elimination/respawnplayers
es_keydelete elimination event_var(userid)
}
event player_death
{
//Alive strings and roundend check
es_format elim_replace _%1_ event_var(userid)
//Remove from both just incase
es_string elim_alive_t replace server_var(elim_replace) _
es_string elim_alive_ct replace server_var(elim_replace) _
es_token elim_token server_var(elim_alive_ct) 0 _
if (server_var(elim_token) equalto 0) then es_xsetinfo elim_roundended 1
es_token elim_token server_var(elim_alive_t) 0 _
if (server_var(elim_token) equalto 0) then es_xsetinfo elim_roundended 1
if (server_var(elim_roundended) = 0) do
{
//tk
//suicide
//worldspawn
//normal
//Worldspawn - fall to death
if (event_var(attacker) = 0) do
{
if (server_var(elim_suicide_respawn) = 1) do
{
//elim_respawn delayed <userid> <round>
es_delayed server_var(elim_suicide_respawn_delay) elim_respawn delayed event_var(userid) server_var(elim_roundcount)
es_tell event_var(userid) #multi #green[Ich Elimination] #lightgreenSuicide auto-respawn enabled: server_var(elim_suicide_respawn_delay) seconds
}
}
else do
{
//Suicide
if (event_var(userid) = event_var(attacker)) do
{
if (server_var(elim_suicide_respawn) = 1) do
{
//elim_respawn delayed <userid> <round>
es_delayed server_var(elim_suicide_respawn_delay) elim_respawn delayed event_var(userid) server_var(elim_roundcount)
es_tell event_var(userid) #multi #green[Ich Elimination] #lightgreenSuicide auto-respawn enabled: server_var(elim_suicide_respawn_delay) seconds
}
}
else do
{
if (event_var(es_userteam) = event_var(es_attackerteam)) do
{
if (server_var(elim_teamkill_respawn) = 1) do
{
//elim_respawn delayed <userid> <round>
es_delayed server_var(elim_teamkill_respawn_delay) elim_respawn delayed event_var(userid) server_var(elim_roundcount)
es_tell event_var(userid) #multi #green[Ich Elimination] #lightgreenTeam kill auto-respawn enabled: server_var(elim_suicide_respawn_delay) seconds
}
}
else do
{
//Set killer's ID
es_keysetvalue elimination event_var(userid) killedby event_var(attacker)
//Add to attackers list
es_keygetvalue elim_killidstring elimination event_var(attacker) killidstring
es_format elim_replace _%1_ event_var(userid)
es_string elim_killidstring replace server_var(elim_replace) _
es_format elim_killidstring %1%2_ server_var(elim_killidstring) event_var(userid)
es_keysetvalue elimination event_var(attacker) killidstring server_var(elim_killidstring)
es_tell event_var(userid) #multi #greenYou will spawn when #default event_var(es_attackername) #green dies
}
}
}
//Spawn players killed by victim
es_setinfo elim_userid event_var(userid)
es_xdoblock ich_elimination/respawnplayers
}
}
block respawnplayers
{
es_keygetvalue elim_killidstring elimination server_var(elim_userid) killidstring
if (server_var(elim_killidstring) notequalto _) do
{
es_xsetinfo elim_message spawned
es_xdoblock ich_elimination/respawnplayers_loop
es_format elim_message "%1" server_var(elim_message)
es_msg server_var(elim_message)
}
es_keysetvalue elimination server_var(elim_userid) killidstring _
}
block respawnplayers_loop
{
es_xsetinfo elim_token 0
es_token elim_token server_var(elim_killidstring) 1 _
if (server_var(elim_roundended) = 0) do
{
es est_spawn server_var(elim_token)
es_getplayername elim_name server_var(elim_token)
es_format elim_message "%1, %2" server_var(elim_name) server_var(elim_message)
}
es_format elim_replace _%1_ server_var(elim_token)
es_string elim_killidstring replace server_var(elim_replace) _
if (server_var(elim_killidstring) notequalto _) then es_xdoblock ich_elimination/respawnplayers_loop
}
block elim_respawn
{
//elim_respawn delayed <userid> <round>
es_xsetinfo elim_arg1 0
es_xgetargv elim_arg1 1
if (server_var(elim_arg1) = delayed) do
{
es_xsetinfo elim_userid 0
es_xgetargv elim_userid 2
es_xsetinfo elim_arg3 0
es_xgetargv elim_arg3 3
es_getuserid elim_userid server_var(elim_userid)
if (server_var(elim_userid) != 0) do
{
if (server_var(elim_arg3) = server_var(elim_roundcount)) then es_xdoblock ich_elimination/respawn
}
}
}
block init
{
es_xkeygroupcreate elimination
es_xsetinfo elim_version 0.4
es_makepublic elim_version
es_xsetinfo elim_userid 0
es_xsetinfo elim_killidstring 0
es_xsetinfo elim_token 0
es_xsetinfo elim_replace 0
es_xsetinfo elim_userid 0
es_xsetinfo elim_index 0
es_xsetinfo elim_name 0
es_xsetinfo elim_exists 0
es_xsetinfo elim_disable_c4 0
es_xsetinfo elim_disable_hostages 0
es_exists elim_exists variable elim_alive_ct
if (server_var(elim_exists) = 0) do
{
es_xsetinfo elim_alive_ct _
es_xsetinfo elim_alive_t _
}
es_xexists elim_exists command elim_respawn
if (server_var(elim_exists) = 0) then es_xregcmd elim_respawn "ich_elimination/elim_respawn" "Elimination Mod Delay Respawn Command"
es_xsetinfo elim_suicide_respawn 0
es_xsetinfo elim_suicide_respawn_delay 0
es_xsetinfo elim_teamkill_respawn 0
es_xsetinfo elim_teamkill_respawn_delay 0
es_xdoblock ich_elimination/config
es_xcreateplayerlist elim
es_xforeachkey key in elim "es_keycreate elimination server_var(key); es_keysetvalue elimination server_var(key) killedby 0; es_keysetvalue elimination server_var(key) killidstring _"
es_xkeygroupdelete elim
es_xlog Ichthys Elimination Mod Init Executed
}
block load
{
es_xdoblock ich_elimination/init
}
block unload
{
es_keygroupdelete elimination
}
event round_end
{
es_xsetinfo elim_roundended 1
}
event round_start
{
es_xmath elim_roundcount + 1
es_xsetinfo elim_roundended 0
}
event es_map_start
{
es_xsetinfo elim_roundcount 0
es_xsetinfo elim_roundended 1
}
event bomb_exploded
{
es_xsetinfo elim_roundended 1
}
event bomb_defused
{
es_xsetinfo elim_roundended 1
}
event hostage_rescued_all
{
es_xsetinfo elim_roundended 1
}
I'll give it a try sometime, I need to practise the new API anyway
Posted: Tue Aug 28, 2012 9:43 pm
by Kami
Well the problem here is the respawn thing. We can set the props to "revive" someone but we lack an es_respawnplayer equivalent. Not sure if you can bypass that in any way.
Posted: Tue Aug 28, 2012 10:15 pm
by Monday
If someone wanted to get very cleaver (and in my opinion waste a lot of time), they could code an addon in python to run these old ESS addons.
Posted: Wed Aug 29, 2012 12:01 am
by BackRaw
I'll try this out, hope it works :)
Syntax: Select all
# addons/source-python/elimination/elimination.py
# anytime you kill an opponent you will be reviving all the players that he killed.
# If a player suicides he will be respawned after a delay. All players he killed will respawn
# If a player is team killed, he will be respawned after a delay. All players he killed will respawn
# =============================================================================
# >> IMPORTS
# =============================================================================
# Python Imports
from threading import Timer
# Source.Python Imports
from events import Event
from players import EasyPlayer
# =============================================================================
# >> CONSTANTS
# =============================================================================
RESPAWN_DELAY_SUICIDE 5.0
RESPAWN_DELAY_TEAMKILL 5.0
# =============================================================================
# >> GLOBAL VARIABLES
# =============================================================================
myplayers = {} # declare our player dictionary
# =============================================================================
# >> HELPER FUNCTIONS
# =============================================================================
def RespawnPlayer(victim):
# respawn the victim
pass
# =============================================================================
# >> EVENTS
# =============================================================================
@Event
def player_death(GameEvent):
victim = GameEvent.GetInt("userid")
attacker = GameEvent.GetInt("attacker")
victimteam = EasyPlayer(victim).team
if not victim in myplayers.keys():
myplayers[victim] = []
# temporary, because nothing like ES gamethread has been added to SP yet
# respawn the suicided or team-killed victim after the specified time
if not attacker:
timer = Timer(RESPAWN_DELAY_SUICIDE, RespawnPlayer, victim)
else:
if not attacker in myplayers.keys():
myplayers[attacker] = []
if EasyPlayer(attacker).team == myvictimteam:
timer = Timer(RESPAWN_DELAY_TEAMKILL, RespawnPlayer, victim)
else:
myplayers[attacker].append(victim)
if myplayers[victim]:
for killed in myplayers[victim]:
RespawnPlayer(killed)
myplayers[victim].remove(killed)
timer.start()
@Event # do I need this here ?
def unload():
myplayers.clear() # clear out our player dictionary
Posted: Wed Aug 29, 2012 8:30 am
by Ayuto
BackRaw wrote:Syntax: Select all
@Event # do I need this here ?
def unload():
myplayers.clear() # clear out our player dictionary
No, this is handled here:
http://code.google.com/p/source-python/source/browse/addons/source-python/_libs/addons/manager.py#92 ;)
Posted: Wed Aug 29, 2012 11:37 am
by BackRaw
Yeah, figured that out myself
thanks.
Posted: Mon Sep 03, 2012 11:10 am
by BackRaw
@simonus: since the respawning has been discussed and works now, it should be easy. I got time tonight to finish the script