|
发表于 2009-2-24 19:38:35
|
显示全部楼层
来自 中国–江西–南昌
本帖最后由 nopain 于 2009-2-25 12:30 编辑
有时不会处死是因为AMXX函数的一个BUG,下面是修正后的代码,不会出现出现这种情况,死法只保留了一种,被雷打死。- /* AMX MOD X script.
- * This file is provided as is with no warranty.
- *
- * Effect: Losing the objective results in a random orgy of GFX destruction
- * for the losing team (everyone on the losing team DIES).
- * CVAR: Set mp_slaylosers to 0 if you want to turn it off.
- */
- #include <amxmodx>
- #include <amxmisc>
- #include <cstrike>
- new lightning
- new g_sModelIndexSmoke
- public plugin_init()
- {
- register_plugin("AMX Slay Losers","1.1","d3n14@yahoo.com")
- register_event("SendAudio","end_round","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
- register_cvar("mp_slaylosers","1",FCVAR_SERVER)
-
- return PLUGIN_CONTINUE
- }
- public end_round()
- {
- // Only active if CVAR is not equal to 0
- if( get_cvar_num("mp_slaylosers") )
- {
- new parm[32]
- new len = read_data(2,parm,31)
- set_task(0.3,"slay_those_losers",0,parm, len + 1)
- }
- return PLUGIN_CONTINUE
- }
- // Slays each player who failed to stop the other team from completing the objective.
- public slay_those_losers(parm[])
- {
- new origin[3], srco[3]
- new player[32], playersnum
- new id
-
- new CsTeams:team = (parm[7] == 't') ? CS_TEAM_CT : CS_TEAM_T
- get_players(player,playersnum,"a")
-
- for(new i = 0; i < playersnum; ++i)
- {
- id = player[i]
- // 不是失败方队员直接跳过
- if(team != cs_get_user_team(id))
- continue;
- get_user_origin(id,origin)
- origin[2] -= 26
- srco[0]=origin[0]+150
- srco[1]=origin[1]+150
- srco[2]=origin[2]+800
- slay_lightning(srco,origin)
- emit_sound(id,CHAN_ITEM, "ambience/thunder_clap.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
- set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,3);
- show_hudmessage(id, "任务失败^n所有失败方幸存队员将被处死!" );
- user_kill(id,1)
- //set_user_frags(id, get_user_frags(id)+0)
- }
- }
- slay_lightning(vec1[3],vec2[3])
- {
- //Lightning
- message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
- write_byte( 0 )
- write_coord(vec1[0])
- write_coord(vec1[1])
- write_coord(vec1[2])
- write_coord(vec2[0])
- write_coord(vec2[1])
- write_coord(vec2[2])
- write_short( lightning )
- write_byte( 1 ) // framestart
- write_byte( 5 ) // framerate
- write_byte( 2 ) // life
- write_byte( 20 ) // width
- write_byte( 30 ) // noise
- write_byte( 200 ) // r, g, b
- write_byte( 200 ) // r, g, b
- write_byte( 200 ) // r, g, b
- write_byte( 200 ) // brightness
- write_byte( 200 ) // speed
- message_end()
- //Sparks
- message_begin( MSG_PVS, SVC_TEMPENTITY,vec2)
- write_byte( 9 )
- write_coord( vec2[0] )
- write_coord( vec2[1] )
- write_coord( vec2[2] )
- message_end()
- //Smoke
- message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec2)
- write_byte( 5 )
- write_coord(vec2[0])
- write_coord(vec2[1])
- write_coord(vec2[2])
- write_short( g_sModelIndexSmoke )
- write_byte( 10 )
- write_byte( 10 )
- message_end()
- }
- public plugin_precache()
- {
- g_sModelIndexSmoke = precache_model("sprites/steam1.spr")
- lightning = precache_model("sprites/lgtning.spr")
- precache_sound( "ambience/thunder_clap.wav")
- return PLUGIN_CONTINUE
- }
复制代码 |
|