Osker Lee 发表于 2007-7-27 16:06:04

求助:玩家死亡后变急救包插件

最近在Super Hero的官方网上找到了一个很有趣的英雄,他的技能有点像七龙珠里的魔人布欧(sh_majinbuu.amxx),可以把玩家打死后让其变成巧克力(急救包),无论谁去捡起掉在地上的急救包都可以增加50HP!

我个人认为这个插件有三个好处:

1. 因为玩家死亡后尸体变成急救包了,因此可以避免死后被人鞭尸。

2. 同时因为急救包可以补充50HP,通过吃急救包,HP会一直增加,甚至可以突破100HP而无上限!因此大家就不会因为一番搏杀后由于血太少而无力回天了。

3. 死后玩家的尸体也是能做出贡献的,“落叶不是无情物,化作春泥更护花”,呵呵,他补充了别人的HP,物尽其用啊!

所以,我想请高手帮忙把这个英雄插件改成普通的大家都能共享的插件,改后的插件可以增加以下指令:
amx_medkit 1   // 插件开关控制               
amx_medkithealth 50 //急救包补充的血值(默认是50)

向辛勤的插件幕后编译者致以最崇高的敬意!

Osker Lee 发表于 2007-7-27 18:29:41

回复: 求助:玩家死亡后变急救包插件

方面起见,我发些图片上来。

Osker Lee 发表于 2007-7-31 15:26:54

回复: 求助:玩家死亡后变急救包插件

不知道有人尝试过把超级英雄插件改成普通的共享插件没?其实Super Hero官方网的超级英雄大
概有200多个,并且各个英雄插件之间是相互独立的,其中某些单个插件就我个人认为是很优秀的。

唉,问题难就难在想要把它们转化成普通插件可不是一件容易的事情啊!尤其是对于一个菜鸟来说......:burn:

Osker Lee 发表于 2007-8-2 15:20:50

回复: 求助:玩家死亡后变急救包插件

我自己试着把插件的源代码改了一下,但无法成功地在Amxmodx1.76d下编译出来。我知道里面肯定还有很多地方没有修改好,麻烦大家帮帮忙了......:burn:


*/

#include <amxmodx>
#include <cstrike>
#include <csx>


// GLOBAL VARIABLES
#define Smoke

//----------------------------------------------------------------------------------------------

public plugin_init()
{
// Plugin Info
register_plugin("AMX Medkit","1.0","duper/Rockell")

// DO NOT EDIT THIS FILE TO CHANGE CVARS, USE THE SHCONFIG.CFG
register_cvar("amx_medkit", "1" )
register_cvar("amx_medkithealth", "50")

// REGISTER EVENTS THIS HERO WILL RESPOND TO! (AND SERVER COMMANDS)
// INIT

register_event("ResetHUD", "newRound","b")
register_event("DeathMsg","deathevent","a")

}
//----------------------------------------------------------------------------------------------

public newRound()
{
      new chocolate = find_ent_by_class(-1, "chocolate")
while(chocolate) {
remove_entity(chocolate)
chocolate = find_ent_by_class(chocolate, "chocolate")
      }
}

//----------------------------------------------------------------------------------------------

public deathevent()
{
new killer = read_data(1)
new victim = read_data(2)
if ( killer != victim )
      {
if ( gHasBuuPower && is_user_alive(killer) )
{
createChocolate(victim)
new aimvec
get_user_origin(victim, aimvec)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(23)
write_coord(aimvec)
write_coord(aimvec)
write_coord(aimvec)
write_short(Smoke)
write_byte(001)
write_byte(65)
write_byte(200)
message_end()
aimvec -= 100
set_user_origin(victim, aimvec)

}
}
return PLUGIN_HANDLED
}

//----------------------------------------------------------------------------------------------

public createChocolate(victim)
{
new Float:vAim, Float:vOrigin
entity_get_vector(victim, EV_VEC_origin, vOrigin)
VelocityByAim(victim, random_num(2, 4), vAim)

vOrigin += vAim
vOrigin += vAim
vOrigin += 30.0

new chocolate = create_entity("info_target")
entity_set_string(chocolate, EV_SZ_classname, "chocolate")
entity_set_model(chocolate, "models/w_medkit.mdl")
entity_set_size(chocolate, Float:{-2.5, -2.5, -1.5}, Float:{2.5, 2.5, 1.5})
entity_set_int(chocolate, EV_INT_solid, 2)
entity_set_int(chocolate, EV_INT_movetype, 6)
entity_set_vector(chocolate, EV_VEC_origin, vOrigin)
}

//----------------------------------------------------------------------------------------------

public plugin_precache() {
precache_model("models/w_medkit.mdl")
Smoke = precache_model("sprites/wall_puff4.spr")
}

//----------------------------------------------------------------------------------------------

public pfn_touch(ptr, ptd)
{
if(!is_valid_ent(ptd) || !is_valid_ent(ptr))
return PLUGIN_CONTINUE
   
if(!is_user_connected(ptd) || !is_user_alive(ptd))
return PLUGIN_CONTINUE

if( !gHasBuuPower )
return PLUGIN_CONTINUE

new classname
entity_get_string(ptr, EV_SZ_classname, classname, 31)
if(equal(classname, "chocolate"))
{
new gOrigHealth = get_user_health(ptd)
new health = gOrigHealth + get_cvar_num("buu_chocolatehealth")
set_user_health(ptd, health)
remove_entity(ptr)
}
return PLUGIN_CONTINUE
}

Osker Lee 发表于 2007-8-4 19:33:41

回复: 求助:玩家死亡后变急救包插件

呵呵,整整花了我两个多个小时,终于改好了!(唉,真是求人不如求己啊......):burn:

这个插件是在Amxmodx1.76d下编译成功的,修改后的源代码如有什么问题,欢迎高手不吝赐教和斧正!

Osker Lee 发表于 2007-8-5 20:56:38

回复: 求助:玩家死亡后变急救包插件

今天测试了一下插件,还真发现了问题:就是当玩家被人打死后,第一人称的主视觉画面会变得支离破碎,同时还会出现别的玩家在空中走动的错误画面,并且这种情况会持续几秒钟。如果玩家以第三方的视觉观察别的玩家时,当别的玩家阵亡时主视觉的画面也会出现类似的情况。

因此今天对插件又做了修改,即让玩家死后的尸体不再消失,同时死亡的瞬间会掉出一个急救包,别的玩家捡了依然可以增加HP,这样一来就可以解决上面的BUG了!这次修改也解决了尽管玩家在控制台输入了“amx_medkit 0”这个关闭命令,但玩家死亡时依然会掉出急救包的BUG!

另外,当玩家捡起急救包时,增加了相应的音效提示。

当然,要是大家还有什么更好的建议,也不妨自己去作修改。

米高佐敦 发表于 2007-8-5 22:51:29

回复: 求助:玩家死亡后变急救包插件

Post by Osker Lee
今天测试了一下插件,还真发现了问题:就是当玩家被人打死后,第一人称的主视觉画面会变得支离破碎,同时还会出现别的玩家在空中走动的错误画面,并且这种情况会持续几秒钟。如果玩家以第三方的视觉观察别的玩家时,当别的玩家阵亡时主视觉的画面也会出现类似的情况。

因此今天对插件又做了修改,即让玩家死后的尸体不再消失,同时死亡的瞬间会掉出一个急救包,别的玩家捡了依然可以增加HP,这样一来就可以解决上面的BUG了!这次修改也解决了尽管玩家在控制台输入了“amx_medkit 0”这个关闭命令,但玩家死亡时依然会掉出急救包的BUG!

另外,当玩家捡起急救包时,增加了相应的音效提示。

当然,要是大家还有...

尸体不消失的话会让服务器资源占用很大,客户端FPS值会爆减

Osker Lee 发表于 2007-8-6 13:59:30

回复: 求助:玩家死亡后变急救包插件

呵呵,对插件又作了些许调整,附带了amxmod.inc文件,不然是无法编译的!:byebye:

lu0007 发表于 2007-8-6 14:20:32

回复: 求助:玩家死亡后变急救包插件

辛苦了!!!!!
努力~……

qq457417918 发表于 2007-8-6 15:50:55

回复: 求助:玩家死亡后变急救包插件

支持
辛苦了
..............
页: [1] 2 3
查看完整版本: 求助:玩家死亡后变急救包插件