|
发表于 2010-6-17 11:53:37
|
显示全部楼层
来自 中国–甘肃–兰州
本帖最后由 yesterday 于 2010-6-17 11:55 编辑
可以编译,没试效果,你试试看吧,应该没问题
- #include <amxmod>
- #include <cstrike>
- #include <fakemeta>
- #include <fun>
- //----------------------------------------------------------------------------------------------
- new g_medkit, g_medkithealth, g_kitmaxhp
- new max_players
- public plugin_init()
- {
- // Plugin Info
- register_plugin("AMX Medkit","1.0","duper/Rockell X-man")
- register_cvar("amx_medkit", "1")
- register_cvar("amx_medkithealth", "30")
- register_cvar("amx_kitmaxhp","120")
- register_event("ResetHUD", "newRound","b")
- register_event("DeathMsg","deathevent","a")
- max_players = get_maxplayers()
- }
- //----------------------------------------------------------------------------------------------
- public plugin_cfg()
- {
- set_task(0.5, "cache_cvars")
- }
- public cache_cvars()
- {
- g_medkit = get_cvar_num("amx_medkit")
- g_medkithealth = get_cvar_num("amx_medkithealth")
- g_kitmaxhp = get_cvar_num("amx_kitmaxhp")
- }
- public newRound()
- {
- new chocolate = find_ent_by_class(-1, "chocolate")
- while(chocolate) {
- remove_entity(chocolate)
- chocolate = find_ent_by_class(chocolate, "chocolate")
- }
- return PLUGIN_CONTINUE
- }
- //----------------------------------------------------------------------------------------------
- public deathevent()
- {
- if ( !g_medkit)
- return PLUGIN_CONTINUE
- new killer = read_data(1)
- new victim = read_data(2)
- if ( killer != victim )
- {
- createChocolate(victim)
- }
- if(is_user_connected(victim))
- cs_reset_user_model(victim)
- return PLUGIN_CONTINUE
- }
- //----------------------------------------------------------------------------------------------
- public createChocolate(victim)
- {
- new Float:vAim[3], Float:vOrigin[3]
- entity_get_vector(victim, EV_VEC_origin, vOrigin)
- VelocityByAim(victim, random_num(2, 4), vAim)
-
- vOrigin[0] += vAim[0]
- vOrigin[1] += vAim[1]
- vOrigin[2] += 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")
- precache_sound( "items/smallmedkit1.wav")
- }
- //----------------------------------------------------------------------------------------------
- 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
-
- new classname[32]
- entity_get_string(ptr, EV_SZ_classname, classname, 31)
- if(equal(classname, "chocolate"))
- {
- new gOrigHealth = get_user_health(ptd)
- new health = gOrigHealth + g_medkithealth
- if(health > g_kitmaxhp)
- {
- set_user_health(ptd, g_kitmaxhp)
- }
- else
- {
- set_user_health(ptd, health)
- }
- emit_sound(ptd,CHAN_VOICE,"items/smallmedkit1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
- remove_entity(ptr)
- new sMsg[128], sName[32]
- new hp1 = get_user_health(ptd)
- get_user_name(ptd,sName,32)
- for(new id=1;id<=max_players;id++)
- {
- if(ptd == id)
- {
- format(sMsg, 128, "你拾获了^x04急救包^x01,生命值恢复到了^x03%d^x01点HP." , hp1)
- client_color(ptd, ptd, sMsg)
- }
- else
- {
- if(fm_entity_range(ptd, id) <= 500.0)
- {
- format(sMsg, 128, "玩家^x03%s^x01拾获了^x04急救包^x01,生命值恢复到了^x03%d^x01点HP." ,sName , hp1)
- client_color(ptd, ptd, sMsg)
- }
- }
- }
- }
- return PLUGIN_CONTINUE
- }
- public client_color(playerid, colorid, sMsg[])
- {
- message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),{0,0,0},playerid)
- write_byte(colorid)
- write_string(sMsg)
- message_end()
- }
- public client_death(killer, victim, wpnindex, hitplace, TK)
- {
- if(wpnindex == CSW_C4 && is_user_connected(victim))
- cs_reset_user_model(victim)
- }
- stock Float:fm_entity_range(ent1, ent2)
- {
- new Float:origin1[3], Float:origin2[3];
- pev(ent1, pev_origin, origin1);
- pev(ent2, pev_origin, origin2);
- return get_distance_f(origin1, origin2);
- }
复制代码 |
|