- | Afiseaza codul
/* Copyleft 2007 Plugin thread: http://forums.alliedmods.net/showthread.php?t=16418 USURF ===== Description This mod is designed to assist in the running of a surf server. It includes many features, such as surfing help, semiclip, checkpoints, "BOOM" button removal and many more features. Was previously known as "Surf Management / Tools" Changelog: March 4, 2007 - v5.0 - Renamed and fixed major bugs March 13, 2007 - v5.1 - [FEATURE] Added timer [FEATURE] Added bunnyhop [FEATURE] Added team stack [FEATURE] Added godmode [BUG] Improved semiclip [BUG] Fixed crashing on Linux servers [BUG] Fixed crouching with checkpoints [BUG] Fixed respawn to send people back to their spawns rather than killing them March 16, 2007 - v5.2 - [FEATURE] Cleaned up the /surfhelp MOTD display [FEATURE] Added menu to /surfhelp [BUG] Fixed surf help showing more than once [BUG] Optimized surf help section [BUG] Added new commands to /surfhelp display [BUG] Removed some old semiclip code that was causing problems only for people on the same team [BUG] Fixed checkpoints and timers working on non-surf maps Credits: XxAvalanchexX - Post about blocking knife hits */ #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <cstrike> #include <time> #define TIMER_TASK 23981293 #define TIMER_INTERVAL 1.0 new p_On new p_AutoCvars new p_Help new p_HelpInterval new p_Respawn new p_RemoveDropped new p_RemoveButton new p_NoGuns new p_SpawnDist new p_Semiclip new p_Cp new p_CpDelay new p_BunnyHop new p_BunnyHopAutoJump new p_Timer new p_X new p_Y new p_R new p_G new p_B new p_TeamStack new p_Godmode new bool:g_SurfMap new Float:g_Origin[33][3] new Float:g_Velocity[33][3] new Float:g_Angles[33][3] new Float:g_LastSave[33] new g_Time[33] new g_Timing[33] new g_Timer[33] new g_Menu[512] new g_TimerMenu[] = "TimerMenu" new g_TimerTask = TIMER_TASK new Float:g_TimerInterval = TIMER_INTERVAL new g_HudObject new g_SemiclipThinkerClassname[] = "usurf_semiclip" new g_SemiclipThinker new g_Models[2][4] = { {_:CS_T_ARCTIC,_:CS_T_GUERILLA,_:CS_T_LEET,_:CS_T_TERROR}, {_:CS_CT_GIGN,_:CS_CT_GSG9,_:CS_CT_SAS,_:CS_CT_URBAN} } new g_SurfHelpMenu public plugin_init() { new VERSION[] = "5.2" register_plugin("uSurf",VERSION,"Hawk552") register_cvar("usurf_version", VERSION, FCVAR_SERVER) new NewVersion[10] format(NewVersion,9,"usurf %s",VERSION) register_cvar("surf_base_version",NewVersion,FCVAR_SERVER) // Global Commands / Cvars p_On = register_cvar("usurf_on","1") //Auto Cvars p_AutoCvars = register_cvar("usurf_autocvars","1") // Before we do ANYTHING, let's see if it's a surf map or not. CheckSurf() if(get_pcvar_num(p_On)) set_task(5.0,"ExecCvars") // Surf Help register_clcmd("say /surfhelp","CmdSurfhelp") register_clcmd("say /help","CmdSurfhelp") p_Help = register_cvar("usurf_help","1") p_HelpInterval = register_cvar("usurf_help_interval","60.0") set_task(get_pcvar_float(p_HelpInterval),"ShowSurfHelp") g_SurfHelpMenu = menu_create("Surf Help","SurfHelpHandle") menu_additem(g_SurfHelpMenu,"Surfing Help") menu_additem(g_SurfHelpMenu,"uSurf Commands") menu_additem(g_SurfHelpMenu,"About uSurf") // Checkpoints register_clcmd("say /checkpoint","CmdCheckpoint") register_clcmd("say /gocheck","CmdGoCheck") p_Cp = register_cvar("usurf_checkpoint","1") p_CpDelay = register_cvar("usurf_checkpoint_delay","20") // extra stuff p_RemoveDropped = register_cvar("usurf_remove_dropped","1") p_RemoveButton = register_cvar("usurf_remove_button","1") p_NoGuns = register_cvar("usurf_noguns","0") p_SpawnDist = register_cvar("usurf_spawn_dist","500") p_Semiclip = register_cvar("usurf_semiclip","0") p_TeamStack = register_cvar("usurf_teamstack","0") p_Godmode = register_cvar("usurf_godmode","1") // bunny hopping p_BunnyHop = register_cvar("usurf_bunnyhop","1") p_BunnyHopAutoJump = register_cvar("usurf_bunnyhop_autojump","1") // timer p_Timer = register_cvar("usurf_timer","1") p_X = register_cvar("usurf_timer_x","0.8") p_Y = register_cvar("usurf_timer_y","-0.8") p_R = register_cvar("usurf_timer_r","0") p_G = register_cvar("usurf_timer_g","0") p_B = register_cvar("usurf_timer_b","255") register_clcmd("say /timer","CmdTimer") register_menucmd(register_menuid(g_TimerMenu),1023,"TimerHandle") register_menucmd(register_menuid("Team_Select",1),MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6,"TeamHandle") register_clcmd("jointeam","TeamHandle") g_HudObject = CreateHudSyncObj() register_dictionary("time.txt") register_forward(FM_SetModel,"ForwardSetModel") register_forward(FM_PlayerPreThink,"ForwardPlayerPreThink") register_forward(FM_Touch,"ForwardTouch") register_forward(FM_Think,"ForwardThink") register_forward(FM_TraceLine,"ForwardTraceLine",1) register_forward(FM_TraceHull,"ForwardTraceHull",1) CheckSurf() CheckButton() // Respawn p_Respawn = register_cvar("usurf_respawn","1") register_event("DeathMsg","EventDeathMsg","a") register_clcmd("say /respawn","CmdRespawn") set_task(1.0,"StandardTimer",_,_,_,"b") new Ent = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target")) if(!Ent) return set_pev(Ent,pev_classname,g_SemiclipThinkerClassname) new Float:Time global_get(glb_time,Time) set_pev(Ent,pev_nextthink,Time + 0.01) dllfunc(DLLFunc_Spawn,Ent) g_SemiclipThinker = Ent } public CheckSurf() { new MapName[32] get_mapname(MapName,31) if(containi(MapName,"surf") != -1 || containi(MapName,"wurf_") != -1 || equali(MapName,"tentical")) g_SurfMap = true return PLUGIN_CONTINUE } public ExecCvars() { if(get_pcvar_num(p_On) && get_pcvar_num(p_AutoCvars) && g_SurfMap) { new ConfigsDir[50],FileLocation[50] get_configsdir(ConfigsDir,49) format(FileLocation,49,"%s/surf.cfg",ConfigsDir) // I'm not going to update this, because the old file // natives are actually much easier to work with for // this purpose. if(file_exists(FileLocation)) server_cmd("exec ^"%s^"",FileLocation) else { write_file(FileLocation,"sv_airaccelerate 100") write_file(FileLocation,"mp_freezetime 0") write_file(FileLocation,"amxx pause statsx.amxx") write_file(FileLocation,"amxx pause miscstats.amxx") write_file(FileLocation,"amxx pause stats_logging.amxx") // people seem to be stupid to fucking RTFM, so I really have to disable this by default write_file(FileLocation,"//humans_join_team ct // if you want all players on one team, use this") write_file(FileLocation,"echo Executing surf map config.",2) server_cmd("exec %s",FileLocation) format(FileLocation,49,"%s/amxx.cfg",ConfigsDir) if(file_exists(FileLocation)) { write_file(FileLocation,"// AUTO WRITTEN BY USURF") write_file(FileLocation,"^n^nhumans_join_team any") write_file(FileLocation,"sv_airaccelerate 10") } } } } public client_disconnect(id) { g_Origin[id][0] = 0.0 g_Timing[id] = 0 g_Time[id] = 0 g_Timer[id] = 0 g_LastSave[id] = 0.0 g_Origin[id] = Float:{0.0,0.0,0.0} } public TeamHandle(id,Item) { // to prevent memory corruption new Key = Item new Arg[2] read_argv(0,Arg,1) if(Arg[0] == 'j') { read_argv(1,Arg,1) Key = str_to_num(Arg) - 1 } new TeamStack = get_pcvar_num(p_TeamStack) if(Key != 5 && Key != TeamStack - 1 && (TeamStack == _:CS_TEAM_T || TeamStack == _:CS_TEAM_CT)) { client_print(id,print_center,"You must join the %s team.",TeamStack == 1 ? "Terrorist" : "Counter-Terrorist") engclient_cmd(id,"chooseteam") return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public CmdTimer(id) { if(!get_pcvar_num(p_Timer) || !get_pcvar_num(p_On) || !g_SurfMap) return new Len = format(g_Menu,sizeof g_Menu - 1,"uSurf Timer Menu^n^n1. %s Timer^n",g_Timer[id] ? "Disable" : "Enable") if(g_Timer[id]) Len += format(g_Menu[Len],sizeof g_Menu - Len - 1,"2. %s Timing^n3. Reset Timer^n",g_Timing[id] ? "Stop" : "Begin") format(g_Menu[Len],sizeof g_Menu - Len - 1,"^n0. Exit") new Keys = g_Timer[id] ? MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0 : MENU_KEY_1|MENU_KEY_0 show_menu(id,Keys,g_Menu,-1,g_TimerMenu) } public TimerHandle(id,Key) { switch(Key) { case 0 : { g_Timer[id] = !g_Timer[id] if(!g_Timer[id]) ShowSyncHudMsg(id,g_HudObject,"") } case 1 : { g_Timing[id] = !g_Timing[id] g_Timing[id] ? set_task(g_TimerInterval,"Timer",id + g_TimerTask) : remove_task(id + g_TimerTask) } case 2 : g_Time[id] = 0 } if(Key != 9) CmdTimer(id) } public Timer(id) { g_Time[id - g_TimerTask] += floatround(g_TimerInterval) set_task(g_TimerInterval,"Timer",id) } public CmdSurfhelp(id) { if(!get_pcvar_num(p_On) || !get_pcvar_num(p_Help) || !g_SurfMap) return PLUGIN_CONTINUE menu_display(id,g_SurfHelpMenu,0) return PLUGIN_CONTINUE } public SurfHelpHandle(id,Menu,Key) { static MOTD[4096], Title[16],Pos switch(Key) { case 0 : { copy(Title,15,"Surf Help") Pos = format(MOTD,sizeof MOTD - 1,"<style type=^"text/css^"><!--.sty1 {color: #CC9900;font-family: Arial, Helvetica, sans-serif;}--></style><body bgcolor=^"#000000^"><span class=^"sty1^"><strong><div align=^"center^">Surf Discipline</div></strong></span></p><table width=^"100%%^" border=^"1^"><table width=^"100%%^" border=^"1^">") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">To surf, jump or walk onto one of the curved walls (hereby referted to as 'ramps'). Then simply hold strafe (Default are the A and D keys). This will cause you to glide along the walls, or "surf". </span></td></tr>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">While surfing, never press up, down, or crouch; pressing those will cause you to slide off the wall and fall, which, in most surf maps, will cause you to get sent back to your spawn. </span></td></tr>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">To change direction (in order to make it to the next ramp), press the button for the direction you wish to go before flying off of your current ramp.</span></td></tr>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">Surfing takes pratice, so don't be discouraged if you don't get it right the first time.</span></td></tr>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"</table><p align=^"center^"><span class=^"sty1^"><strong>Powered by uSurf</strong></span></p></body></html>") } case 1 : { copy(Title,15,"uSurf Commands") Pos = format(MOTD,sizeof MOTD - 1,"<style type=^"text/css^"><!--.sty1 {color: #CC9900;font-family: Arial, Helvetica, sans-serif;}--></style>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<body bgcolor=^"#000000^"><strong><span class=^"sty1^"><div align=^"center^"><p>uSurf Commands</strong></p></span></div><table width=^"100%%^" border=^"1^">") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /surfhelp</span></td><td><span class=^"sty1^">Brings up this window.</span>/td></tr>") if(get_pcvar_num(p_Respawn)) Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /respawn</span></td><td><span class=^"sty1^">Sends you back to your spawn, or, in the event of a malfunction, allows you to respawn yourself manually.</span></td></tr>") if(get_pcvar_num(p_Cp)) { new Cvar = get_pcvar_num(p_CpDelay) Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /checkpoint</span></td><td><span class=^"sty1^">Saves a checkpoint at your current location. Use "say /gocheck" to go to it. You can save or load a checkpoint every %d seconds.</span></td></tr>",Cvar) Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /gocheck</span></td><td><span class=^"sty1^">Allows you to go to one of your saved checkpoints. You can save or load a checkpoint every %d seconds.</span></td></tr>",Cvar) } if(get_pcvar_num(p_Timer)) Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td><span class=^"sty1^">say /timer</span></td><td><span class=^"sty1^">Brings up a menu with various timer options, allowing you to time various events.</span></td></tr>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"</table><p align=^"center^"><span class=^"sty1^"><strong>Powered by uSurf</strong></span></p></body></html>") } case 2 : { copy(Title,15,"About uSurf") Pos = format(MOTD,sizeof MOTD - 1,"<style type=^"text/css^"><!--.sty1 {color: #CC9900;font-family: Arial, Helvetica, sans-serif;}--></style>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<body bgcolor=^"#000000^"><strong><span class=^"sty1^"><div align=^"center^">About uSurf</span></strong></div>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<span class=^"sty1^"><p>This plugin is designed to manage surf servers. It is the successor to Surf Management / Tools.</p>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"<p>For more information or to download this plugin, go <a href=^"http://forums.alliedmods.net/showthread ... ^">here</a> (<a href=^"http://forums.alliedmods.net/showthread ... t=16418</a>)</p>") Pos += format(MOTD[Pos],sizeof MOTD - 1 - Pos,"</span><p align=^"center^"><span class=^"sty1^"><strong>Powered by uSurf</strong></span></p></body></html") } default : return } show_motd(id,MOTD,Title) menu_display(id,g_SurfHelpMenu,0) } public ShowSurfHelp() { if(g_SurfMap && get_pcvar_num(p_Help) && get_pcvar_num(p_On)) client_print(0,print_chat,"[USURF] Need help surfing? Say /surfhelp") set_task(get_pcvar_float(p_HelpInterval),"ShowSurfHelp") } public CmdCheckpoint(id) { if(!get_pcvar_num(p_Cp) || !get_pcvar_num(p_On) || !g_SurfMap) return PLUGIN_HANDLED new Float:Time,Float:Delay = get_pcvar_float(p_CpDelay) global_get(glb_time,Time) new Float:TimePassed = Time - g_LastSave[id] if(TimePassed < Delay) { client_print(id,print_chat,"[USURF] You must wait %d seconds before saving again.",floatround(Delay - TimePassed)) return PLUGIN_HANDLED } pev(id,pev_origin,g_Origin[id]) if(pev(id,pev_button) & IN_DUCK) g_Origin[id][2] += 24.0 pev(id,pev_velocity,g_Velocity[id]) pev(id,pev_angles,g_Angles[id]) g_LastSave[id] = Time client_print(id,print_chat,"[USURF] You have saved this checkpoint.") return PLUGIN_HANDLED } public CmdGoCheck(id) { if(!get_pcvar_num(p_Cp) || !get_pcvar_num(p_On) || !g_SurfMap) return PLUGIN_HANDLED if(!g_Origin[id][0]) { client_print(id,print_chat,"[USURF] You have not saved a checkpoint.") return PLUGIN_HANDLED } new Float:Time,Float:Delay = get_pcvar_float(p_CpDelay) global_get(glb_time,Time) new Float:TimePassed = Time - g_LastSave[id] if(TimePassed < Delay) { client_print(id,print_chat,"[USURF] You must wait %d seconds before going to a checkpoint.",floatround(Delay - TimePassed)) return PLUGIN_HANDLED } engfunc(EngFunc_SetOrigin,id,g_Origin[id]) set_pev(id,pev_velocity,g_Velocity[id]) set_pev(id,pev_fixangle,1) set_pev(id,pev_angles,g_Angles[id]) g_LastSave[id] = Time client_print(id,print_chat,"[USURF] You have gone to your last checkpoint.") return PLUGIN_HANDLED } public CmdRespawn(id) { new CsTeams:Team = cs_get_user_team(id) if(!get_pcvar_num(p_On)) return client_print(id,print_chat,"[USURF] Sorry, the surf plugin is currently disabled.") else if(!get_pcvar_num(p_Respawn)) return client_print(id,print_chat,"[USURF] Respawning is currently disabled.") else if(!g_SurfMap) return client_print(id,print_chat,"[USURF] This is not a surf map.") if(Team == CS_TEAM_T || Team == CS_TEAM_CT) set_task(0.5,"Spawn",id) else return client_print(id,print_chat,"[USURF] You must be on a team to respawn.") client_print(id,print_chat,is_user_alive(id) ? "[USURF] You have been sent back to your spawn." : "[USURF] You have been respawned.") return PLUGIN_CONTINUE } public StandardTimer() { if(!get_pcvar_num(p_On) || !g_SurfMap) return static Players[32],Playersnum,Player,CsTeams:Team new TeamStack = get_pcvar_num(p_TeamStack) if(TeamStack == _:CS_TEAM_CT || TeamStack == _:CS_TEAM_T) { get_players(Players,Playersnum) for(new Count;Count < Playersnum;Count++) { Player = Players[Count] Team = cs_get_user_team(Player) if(_:Team != TeamStack && (Team == CS_TEAM_T || Team == CS_TEAM_CT)) cs_set_user_team(Player,CsTeams:TeamStack,CsInternalModel:g_Models[TeamStack - 1][random_num(0,3)]) } } if(!get_pcvar_num(p_Respawn)) return get_players(Players,Playersnum,"b") for(new Count = 0;Count < Playersnum;Count++) { Player = Players[Count] Team = cs_get_user_team(Player) if(Team == CS_TEAM_T || Team == CS_TEAM_CT) Spawn(Player) } } public EventDeathMsg() { new id = read_data(2) set_task(0.5,"Spawn",id) global_get(glb_time,g_LastSave[id]) g_LastSave[id] -= get_pcvar_num(p_CpDelay) } public Spawn(id) { new CsTeams:Team = cs_get_user_team(id) if(is_user_connected(id) && (Team == CS_TEAM_T || Team == CS_TEAM_CT) && get_pcvar_num(p_On) && get_pcvar_num(p_Respawn) && g_SurfMap) { dllfunc(DLLFunc_Spawn,id) set_task(0.2,"GiveSuit",id) set_task(0.3,"GiveItems",id) } } public GiveSuit(id) fm_give_item(id,"item_suit") public GiveItems(id) { fm_give_item(id,"weapon_knife") fm_give_item(id,"weapon_scout") } // no, VEN did not write this, I did (although I found out later that he wrote something like it) fm_give_item(id,Item[]) { if(containi(Item,"item_") == -1 && containi(Item,"weapon_") == -1 && containi(Item,"ammo_") == -1 && containi(Item,"tf_weapon_") == -1) return new Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, Item)),Float:vOrigin[3] if(!pev_valid(Ent)) return pev(id,pev_origin,vOrigin) set_pev(Ent,pev_origin,vOrigin) set_pev(Ent,pev_spawnflags,pev(Ent,pev_spawnflags)|(1<<30)) dllfunc(DLLFunc_Spawn,Ent) new Solid = pev(Ent,pev_solid) dllfunc(DLLFunc_Touch,Ent,id) if(pev(Ent,pev_solid) == Solid) engfunc(EngFunc_RemoveEntity,Ent) } CheckButton() if(get_pcvar_num(p_RemoveButton) && get_pcvar_num(p_On) && g_SurfMap) { new Ent,Value[] = "classname",ClassName[] = "env_explosion" while((Ent = engfunc(EngFunc_FindEntityByString,Ent,Value,ClassName)) != 0) if(pev_valid(Ent)) set_pev(Ent,pev_flags,pev(Ent,pev_flags)|FL_KILLME) } public ForwardPlayerPreThink(id) { if(!is_user_alive(id) || !get_pcvar_num(p_On) || !g_SurfMap) return new NoGuns = get_pcvar_num(p_NoGuns) if(NoGuns == 1) { new SpawnDistance = get_pcvar_num(p_SpawnDist) static Float:vOrigin[3] pev(id,pev_origin,vOrigin) new DeathMatch = engfunc(EngFunc_FindEntityByString,-1,"classname","info_player_deathmatch") new PlayerStart = engfunc(EngFunc_FindEntityByString,-1,"classname","info_player_start") if(DeathMatch && PlayerStart) { static Float:vDeathMatch_Origin[3] pev(DeathMatch,pev_origin,vDeathMatch_Origin) static Float:vPlayerStart_Origin[3] pev(PlayerStart,pev_origin,vPlayerStart_Origin) new Float:DeathMatch_Distance = get_distance_f(vOrigin,vDeathMatch_Origin) new Float:PlayerStart_Distance = get_distance_f(vOrigin,vPlayerStart_Origin) new Clip,Ammo,Weapon = get_user_weapon(id,Clip,Ammo) if(DeathMatch_Distance < SpawnDistance || PlayerStart_Distance < SpawnDistance) { if(Weapon != CSW_KNIFE && Weapon != CSW_C4 && Weapon != CSW_HEGRENADE && Weapon != CSW_FLASHBANG && Weapon != CSW_SMOKEGRENADE) client_cmd(id,"drop") } // Argh, stupid thing doesn't understand this if I don't add the brackets. else if(DeathMatch_Distance > SpawnDistance || PlayerStart_Distance > SpawnDistance) if(!user_has_weapon(id,CSW_SCOUT)) fm_give_item(id,"weapon_scout") } } else if(NoGuns == 2) { new Clip, Ammo, Weapon = get_user_weapon(id,Clip,Ammo) if(Weapon != CSW_KNIFE && Weapon != CSW_C4 && Weapon != CSW_HEGRENADE && Weapon != CSW_FLASHBANG && Weapon != CSW_SMOKEGRENADE) client_cmd(id,"drop") } else if(NoGuns == 3) { new Clip, Ammo, Weapon = get_user_weapon(id,Clip,Ammo) if(Weapon != CSW_KNIFE && Weapon != CSW_C4) { fm_strip_user_weapons(id) fm_give_item(id,"weapon_knife") } } if(get_pcvar_num(p_BunnyHop)) { set_pev(id,pev_fuser2,0.0) if(get_pcvar_num(p_BunnyHopAutoJump) && pev(id,pev_button) & IN_JUMP) { new Flags = pev(id,pev_flags) if(!(Flags & FL_WATERJUMP) && pev(id,pev_waterlevel) < 2 && Flags & FL_ONGROUND) { new Float:Velocity[3] pev(id,pev_velocity,Velocity) Velocity[2] += 250.0 set_pev(id,pev_velocity,Velocity) set_pev(id,pev_gaitsequence,6) } } } if(get_pcvar_num(p_Timer) && g_Timer[id]) { static Time[33] set_hudmessage(get_pcvar_num(p_R),get_pcvar_num(p_G),get_pcvar_num(p_B),get_pcvar_float(p_X),get_pcvar_float(p_Y),0,0.0,6.0,0.0,0.0,-1) get_time_length(id,g_Time[id],timeunit_seconds,Time,32) ShowSyncHudMsg(id,g_HudObject,"Timer: %s",Time) } } public ForwardSetModel(id,Model[]) { if(!pev_valid(id) || !g_SurfMap || !get_pcvar_num(p_On) || !strlen(Model) || !get_pcvar_num(p_RemoveDropped)) return static ClassName[33] pev(id,pev_classname,ClassName,32) if(equali(ClassName,"weaponbox")) set_task(0.1,"RemoveGun",id) } public RemoveGun(id) if(pev_valid(id)) engfunc(EngFunc_RemoveEntity,id) public ForwardTouch(pentru,Ptd) { if(!pev_valid(pentru) || !pev_valid(Ptd) || !g_SurfMap || !get_pcvar_num(p_On) || !get_pcvar_num(p_Respawn)) return FMRES_IGNORED new id if(is_user_alive(pentru)) id = pentru else if(is_user_alive(Ptd)) id = Ptd if(!id) return FMRES_IGNORED static Classname[33] pev(id == pentru ? Ptd : pentru,pev_classname,Classname,32) if(equali(Classname,"trigger_hurt")) { Spawn(id) return FMRES_SUPERCEDE } return FMRES_IGNORED } public ForwardThink(Ent) { if(Ent != g_SemiclipThinker || !g_SurfMap) return if(get_pcvar_num(p_Semiclip) && get_pcvar_num(p_On)) { static Players[32],Playersnum,Player get_players(Players,Playersnum) for(new Count;Count < Playersnum;Count++) { Player = Players[Count] if(!is_user_alive(Player)) continue set_pev(Player,pev_solid,IsColliding(Player) ? SOLID_NOT : SOLID_BBOX) } } new Float:Time global_get(glb_time,Time) set_pev(Ent,pev_nextthink,Time + 0.01) } public ForwardTraceLine(Float:v1[3],Float:v2[3],EntToSkip,NoMonsters,TR) { if(!get_pcvar_num(p_Godmode) || !g_SurfMap || !get_pcvar_num(p_On)) return FMRES_IGNORED new id = get_tr(TR_pHit) if(!is_user_alive(id)) return FMRES_IGNORED new Attacker while((Attacker = engfunc(EngFunc_FindEntityInSphere,Attacker,v1,10.0)) != 0) if(Attacker < 33 && Attacker > 0) break if(!is_user_alive(Attacker)) return FMRES_IGNORED new Button = pev(Attacker,pev_button) if(!(Button & IN_ATTACK) && !(Button & IN_ATTACK2)) return FMRES_IGNORED set_tr(TR_flFraction,1.0) return FMRES_IGNORED } public ForwardTraceHull(Float:v1[3],Float:v2[3],NoMonsters,Hull,EntToSkip,TR) { if(!g_SurfMap || !get_pcvar_num(p_On) || !get_pcvar_num(p_Godmode)) return FMRES_IGNORED new Button = pev(EntToSkip,pev_button) if(!(Button & IN_ATTACK) && !(Button & IN_ATTACK2)) return FMRES_IGNORED set_tr(TR_flFraction,1.0) return FMRES_IGNORED } // thanks to VEN for this stock from Fakemeta Utilities fm_strip_user_weapons(index) { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip")) if (!pev_valid(ent)) return 0 dllfunc(DLLFunc_Spawn, ent) dllfunc(DLLFunc_Use, ent, index) engfunc(EngFunc_RemoveEntity, ent) return 1 } IsColliding(id) { if(pev(id,pev_flags) & FL_ONGROUND || pev(id,pev_button) & IN_JUMP) return false new Ent,Float:Origin[3] pev(id,pev_origin,Origin) while((Ent = engfunc(EngFunc_FindEntityInSphere,Ent,Origin,36.0)) != 0) if(Ent > 0 && Ent <= 32 && is_user_alive(Ent) && Ent != id) return true return false }
plugin surf problema
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
Forum rules
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
-
- Membru, skill 0
- Posts: 36
- Joined: 11 Jan 2014, 23:15
- Detinator Steam: Da
- CS Status: Citesc forumul eXtreamCS.com...!
- SteamID: STEAM_0:1:83849775
- Contact: