import es import gamethread import playerlib import psyco ################################################################################ # # # Redie PY Config # # # ################################################################################ pluginType = 'est' # 'spe' or 'est' ghostSpeed = 1.0 # 1.0 == 100% advertType = 'death' # 'death' or 'start' canJump = 1 # 1 can jump as ghost 0 cant jump as ghost ################################################################################ # # # End Config # # # ################################################################################ psyco.full() if pluginType == 'spe': import spe info = es.AddonInfo() info.name = 'Redie PY' info.version = '1.0.02' info.basename = 'rediepy' info.url = 'www.thefactoidvoid.com' info.author = 'Largo Usagi' info.description = 'A python only recode of the redie script' rediepyUsers = {} canRedie = 0 es.ServerVar('RediPYVersion',info.version,'Current Redie PY Version').makepublic() def load(): es.server.queuecmd('extendedevents_load player_drop') es.addons.registerClientCommandFilter(dropFilter) es.dbgmsg(0,'Loaded RediePY') def unload(): es.addons.unregisterClientCommandFilter(dropFilter) def player_activate(ev): rediepyUsers[int(ev['userid'])] = 0 def player_disconnect(ev): del rediepyUsers[int(ev['userid'])] def round_start(ev): roundStart(ev) def round_end(ev): roundEnd(ev) def player_say(ev): chatFilter(ev) def player_spawn(ev): playerSpawn(ev) def player_death(ev): playerDeath(ev) def player_activeweapon(ev): weaponChange(ev) def item_pickup(ev): pickup(ev) def player_blind(ev): blind(ev) def bomb_begindefuse(ev): beginDefuse(ev) ################################################################################ # # # Redie PY functions # # # ################################################################################ def playerDeath(ev): if advertType == 'death': es.tell(int(ev['userid']), "#multi", "#greenThis server is running Redie PY version #lightgreen" + str(info.version) + "#green say #lightgreen!redie #greento become a ghost") def beginDefuse(ev): userid = int(ev['userid']) if rediepyUsers[userid] == 1: rediePlayer(userid) es.tell(int(ev['userid']), "#green", "You cant defuse as a ghost") def toggleRedie(value): global canRedie canRedie = value def playerSpawn(ev): userid = int(ev['userid']) player = playerlib.getPlayer(userid) if not player.isbot: try: if rediepyUsers[userid] == 0: godMode(userid, 0) visable(userid) else: if canRedie == 1: player = playerlib.getPlayer(userid) player.speed = ghostSpeed es.tell(int(ev['userid']), "#multi", "#greenYou are now a ghost say #lightgreen !spec #green to return to spectators") except: pass def blind(ev): userid = int(ev['userid']) if rediepyUsers[userid] == 1: es.setplayerprop(userid,'CCSPlayer.m_flFlashMaxAlpha',0) es.setplayerprop(userid,'CCSPlayer.m_flFlashDuration',0) def roundEnd(ev): toggleRedie(0) for key in rediepyUsers: if rediepyUsers[key] == 1: strip(key) godMode(key, 0) es.setplayerprop(userid, 'CBasePlayer.m_iHealth',99999999999) rediepyUsers[key] = 0 spawn(key) def pickup(ev): userid = int(ev['userid']) player = playerlib.getPlayer(userid) if not player.isbot: if rediepyUsers[userid] == 1: player = playerlib.getPlayer(userid) if player.primary: player.setPrimaryClip(0) player.setPrimaryAmmo(0) if player.secondary: player.setSecondaryClip(0) player.setSecondaryAmmo(0) player.setWeaponColor(0,0,0,0) def roundStart(ev): toggleRedie(1) for key in rediepyUsers: rediepyUsers[key] = 0 if advertType == 'start': es.msg("#multi", "#greenThis server is running Redie PY version #lightgreen" + str(info.version) + "#green say #lightgreen!redie #greento become a ghost") def chatFilter(ev): if '!redie' in ev['text']: if playerlib.getPlayer(int(ev['userid'])).isdead: if canRedie == 1: rediePlayer(int(ev['userid'])) else: es.tell(int(ev['userid']), "#green", "You cant do this at this time") else: es.tell(int(ev['userid']), "#green", "You need to be dead to do this") elif '!spec' in ev['text']: if rediepyUsers[int(ev['userid'])] == 1: strip(int(ev['userid'])) #es.setplayerprop(int(ev['userid']),'CBasePlayer.m_lifeState',2) #rediepyUsers[int(ev['userid'])] = 0 respec(int(ev['userid'])) else: es.tell(int(ev['userid']), "#green", "You need to be a ghost to do this") def respec(userid): player = playerlib.getPlayer(userid) team = int(player.team) if pluginType == 'spe': switchTeam(userid,1) switchTeam(userid,team) elif pluginType == 'est': es.server.queuecmd('est_team %s 1' %userid) es.server.queuecmd('est_team %s %s' %(userid,team)) def spawn(userid): if pluginType == 'spe': spe.respawn(userid) elif pluginType == 'est': es.server.queuecmd('est_spawn %s' %userid) def dropFilter(userid, args): if rediepyUsers[userid] == 1: if args[0] in ['drop', 'lastinv', 'slot1', 'slot2', 'slot3', 'slot4', 'slot5']: es.sexec(userid, "use weapon_scout") return False return True def strip(userid): if pluginType == 'spe': weps = spe.getWeaponDict(userid) if not weps: es.dbgmsg(0,'Couldnt Find Player or Player Had no Weapons') return for weapon in weps: if weapon == "weapon_knife": continue spe.removeEntityByInstance(weps[weapon]['instance']) elif pluginType == 'est': es.server.queuecmd('est_stripplayer %s' %userid) def equipt(userid): player = playerlib.getPlayer(userid) es.server.cmd('es_xgive %s %s' %(userid,'weapon_scout')) es.server.cmd('es_xgive %s %s' %(userid,'weapon_glock')) es.server.queuecmd('es_xgive %s weapon_hegrenade' %userid) es.server.queuecmd('es_xgive %s weapon_smokegrenade' %userid) es.server.queuecmd('es_xgive %s weapon_flashbang' %userid) if int(playerlib.getPlayer(userid).team) == 3: es.server.cmd('es_xgive %s %s' %(userid,'weapon_c4')) player.setHE(5) player.setFB(5) player.setSG(5) def noCollide(userid): es.setplayerprop(userid, 'CCSPlayer.baseclass.baseclass.baseclass.baseclass.baseclass.baseclass.m_CollisionGroup', 2) def deadflag(userid): if canJump == 0: es.setplayerprop(userid,'CBasePlayer.pl.deadflag',1) #dissalows Jumping es.setplayerprop(userid,'CBasePlayer.m_lifeState',1) def weaponChange(ev): userid = int(ev['userid']) if rediepyUsers[userid] == 1: player = playerlib.getPlayer(userid) player.setWeaponColor(0,0,0,0) es.sexec(userid, "use weapon_scout") def rediePlayer(userid): rediepyUsers[userid] = 1 if pluginType == 'spe': spawn(userid) strip(userid) godMode(userid) model(userid,1) equipt(userid) noCollide(userid) invis(userid) deadflag(userid) gotoGuns(userid) elif pluginType == 'est': spawn(userid) gamethread.delayed(.05,strip,userid) gamethread.delayed(.1,godMode,userid) gamethread.delayed(.2,model,userid,1) gamethread.delayed(.3,equipt,userid,1) gamethread.delayed(.4,noCollide,userid) gamethread.delayed(.5,invis,userid) gamethread.delayed(.6,deadflag,userid) gamethread.delayed(.7,gotoGuns,userid) def gotoGuns(userid): gamethread.delayed(.05,es.sexec,(userid, "use weapon_glock")) gamethread.delayed(.1,es.sexec,(userid, "use weapon_hegrenade")) gamethread.delayed(.2,es.sexec,(userid, "use weapon_smokegrenade")) gamethread.delayed(.3,es.sexec,(userid, "use weapon_flashbang")) gamethread.delayed(.4,es.sexec,(userid, "use weapon_c4")) gamethread.delayed(.5,es.sexec,(userid, "use weapon_scout")) def model(userid): player = playerlib.getPlayer(userid) player.setModel('seagull') def godMode(userid, state): playerlib.getPlayer(userid).godMode = state def invis(userid): player = playerlib.getPlayer(userid) player.setColor(0,0,0,0) player.setWeaponColor(0,0,0,0) if pluginType == 'est': es.server.queuecmd('est_setplayercolor %s 0 0 0 0 1' %userid) def visable(userid): if pluginType == 'est': es.server.queuecmd('est_setplayercolor %s 255 255 255 255' %userid) else: player = playerlib.getPlayer(userid) player.setColor(255,255,255,255) player.setWeaponColor(255,255,255,255) ################################################################################ # # # EOF # # # ################################################################################