Osker Lee 发表于 2007-12-18 21:41:24

求助:玩家埋包或拆包时进入无敌状态插件

最近在Super Hero超级英雄的官方网上找到了一个叫sh_bombsquad.amxx(爆破专家)的英雄,我把他修改成了普通的共享插件(bomb_godmode.amxx), 插件的功能如下:

1. 如果你是T,那么你在埋C4的时候会进入上帝模式(即无敌状态),并且上帝模式会持续5秒钟(默认是5秒钟),当你埋完C4后,上帝模式消失,玩家这时恢复正常模式.

2. 如果你是CT,那么当你拆C4的时候将进入上帝模式,直到你把C4拆除了才恢复正常状态.

3. 玩家进入上帝模式时,T的身体会发红光,CT的身体会发蓝光.

这个插件的主要作用就是为了防止别人趁埋包的T或拆包的CT不注意时在背后放冷箭!这种情况相信大家都遇到过吧?那感觉可能就两个字 --- 郁闷!!! :spiderman

我对插件做了修改,增加了以下控制命令:
bomb_godmode 1 // 插件的开关
bomb_godtime 5 // 上帝模式的持续时间

插件编译完后可以在服务器运行,但有BUG:

1. 编译过程中源代码的第27行出现了一个错误提示: function "newspawn" should return a value.

2. bomb_godmode 1 这个命令完全不管用,无法控制插件的开关.

3. 只要玩家一旦实施了埋包或拆包的事件,那么他就会一直处在上帝模式,直到下局开始时无敌状态才消失,完全不受bomb_godtime 5的影响,该命令也完全无效.

希望高手帮忙修正一下这三个BUG,不胜感激!

Rulzy 发表于 2007-12-19 02:27:39

回复: 求助:玩家埋包或拆包时进入无敌状态插件

呵呵,如果拆包的时候CT无敌,那T还怎么玩?如果设置成5秒钟,CT又有拆弹器,则一拆准成功。

Rulzy 发表于 2007-12-19 02:32:24

回复: 求助:玩家埋包或拆包时进入无敌状态插件


register_event("BarTime", "SetGodmode", "be", "1=3", "1=5", "1=10")
register_event("BarTime", "UnSetGodmode", "be", "1=0")

public SetGodemode(id)
{
    set_user_godmode(id, 1)
}


public UnSetGodemode(id)
{
    set_user_godmode(id, 0)
}

未测试!!

zwfgdlc 发表于 2007-12-19 03:30:22

回复: 求助:玩家埋包或拆包时进入无敌状态插件

修改了下,当玩家在拆C4或放C4时无敌但是也无法杀人,以防有人利用拆C4或放C4没完成时,利用无敌状态去杀人.没试过.自己测试下,

#include <amxmodx>
#include <fun>
#include <csx>
new bool:g_restart_attempt
//----------------------------------------------------------------------------------------------
public plugin_init()
{
// Plugin Info
register_plugin("Bomb Godmode","1.1","Emp & X-man")
register_event("ResetHUD","eResetHUD","be")
register_clcmd("fullupdate", "cmd_fullupdate")
}
//----------------------------------------------------------------------------------------------
public cmd_fullupdate()
{
return PLUGIN_HANDLED
}
public eResetHUD(id)
{
if (g_restart_attempt)
{
g_restart_attempt = false
return PLUGIN_CONTINUE
}
ePlayerSpawn(id)
return PLUGIN_CONTINUE
}
public ePlayerSpawn(id)
{
if(get_user_godmode(id))
set_user_godmode(id)
}
//----------------------------------------------------------------------------------------------
public bomb_planting(id)
{

if ( is_user_alive(id) )
{
set_user_godmode(id, 1)
set_user_hitzones(id,0,0)
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 255)
client_print(id, print_chat, " You have 5 seconds of godmode for attempting to plant.")
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public bomb_defusing(id)
{

if ( is_user_alive(id) )
{
set_user_godmode(id, 1)
set_user_hitzones(id,0,0)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 255)
client_print(id, print_chat, " You have 5 seconds of godmode for attempting to defuse." )
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public bomb_defused(id)
{
if(get_user_godmode(id))
set_user_godmode(id)
set_user_hitzones(id,0,255)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0)
}
public bomb_planted(id)
{
if(get_user_godmode(id))
set_user_godmode(id)
set_user_hitzones(id,0,255)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0)
}

米高佐敦 发表于 2007-12-19 11:01:53

回复: 求助:玩家埋包或拆包时进入无敌状态插件

楼主,这样不合理啊!一接近C4就必成功哦!

Osker Lee 发表于 2007-12-19 14:48:09

回复: 求助:玩家埋包或拆包时进入无敌状态插件

zwfgdlc楼主,我刚才测试了一下,基本上可以了.不过还是有个BUG:

当正在埋包或拆包的玩家如果中途停止的话(即在还没有完全埋好C4或者拆除C4的情况下就停止实施这个行为),那么玩家的身体会一直持续发光,即仍然会保持着无敌状态,直到下一局开始为止,除非他重新实施完上述的行为,才会退出无敌模式从而恢复正常的状态.

Osker Lee 发表于 2007-12-20 13:13:16

回复: 求助:玩家埋包或拆包时进入无敌状态插件

zwfgdlc楼主,我刚才测试了一下,基本上可以了.不过还是有个BUG:

当正在埋包或拆包的玩家如果中途停止的话(即在还没有完全埋好C4或者拆除C4的情况下就停止实施这个行为),那么玩家的身体会一直持续发光,即仍然会保持着无敌状态,直到下一局开始为止,除非他重新实施完上述的行为,才会退出无敌模式从而恢复正常的状态.

所以,当正在埋包或拆包的玩家如果中途停止的话,如何定义让他们退出无敌状态的代码?

Rulzy 发表于 2007-12-20 17:40:24

回复: 求助:玩家埋包或拆包时进入无敌状态插件

Post by Osker Lee
zwfgdlc楼主,我刚才测试了一下,基本上可以了.不过还是有个BUG:

当正在埋包或拆包的玩家如果中途停止的话(即在还没有完全埋好C4或者拆除C4的情况下就停止实施这个行为),那么玩家的身体会一直持续发光,即仍然会保持着无敌状态,直到下一局开始为止,除非他重新实施完上述的行为,才会退出无敌模式从而恢复正常的状态.

所以,当正在埋包或拆包的玩家如果中途停止的话,如何定义让他们退出无敌状态的代码? register_event("BarTime", "UnSetGodmode", "be", "1=0")

Osker Lee 发表于 2007-12-20 21:32:09

回复: 求助:玩家埋包或拆包时进入无敌状态插件

register_plugin("Bomb Godmode","1.1","Emp & X-man")
register_event("ResetHUD","eResetHUD","be")
register_clcmd("fullupdate", "cmd_fullupdate")
register_event("BarTime", "UnSetGodmode", "be", "1=0")
Rulzy版主,我按照你的要求在bomb_godmode.sma的注册事件里添加了红色的这句代码,但还是没能测试成功,为什么会这样啊?:cry:

zwfgdlc 发表于 2007-12-20 21:49:57

回复: 求助:玩家埋包或拆包时进入无敌状态插件


#include <amxmodx>
#include <fun>
#include <csx>
new bool:g_restart_attempt
//----------------------------------------------------------------------------------------------
public plugin_init()
{
// Plugin Info
register_plugin("Bomb Godmode","1.1","Emp & X-man")
register_event("ResetHUD","eResetHUD","be")
register_clcmd("fullupdate", "cmd_fullupdate")
register_event("BarTime", "UnSetGodmode", "be", "1=0")
}
//----------------------------------------------------------------------------------------------
public cmd_fullupdate()
{
return PLUGIN_HANDLED
}
public eResetHUD(id)
{
if (g_restart_attempt)
{
g_restart_attempt = false
return PLUGIN_CONTINUE
}
ePlayerSpawn(id)
return PLUGIN_CONTINUE
}
public ePlayerSpawn(id)
{
if(get_user_godmode(id))
set_user_godmode(id)
}
//----------------------------------------------------------------------------------------------
public bomb_planting(id)
{

if ( is_user_alive(id) )
{
set_user_godmode(id, 1)
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 255)
client_print(id, print_chat, " You have 5 seconds of godmode for attempting to plant.")
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public bomb_defusing(id)
{

if ( is_user_alive(id) )
{
set_user_godmode(id, 1)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 255)
client_print(id, print_chat, " You have 5 seconds of godmode for attempting to defuse." )
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public UnSetGodmode(id)
{
if(get_user_godmode(id))
set_user_godmode(id)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0)
}


页: [1] 2
查看完整版本: 求助:玩家埋包或拆包时进入无敌状态插件