Mam takie pytanko, wiem że dałoby rady, ale jak to zobić, aby przy wskrzeszaniu u nekromanty pojawil sie model defibrylatora ?
I zeby je jakos uzywal do wskrzeszania.
Kod nekromanty: <a href="http://cs.gamebanana.com/skins/119615">MODEL DEFIBRYLATORA</a>
Spoiler
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <fakemeta_util> #include <cstrike> #include <fun> #include <engine> #include <csx> #include <hamsandwich> #include <diablo_nowe.inc> #define pev_zorigin pev_fuser4 #define seconds(%1) ((1<<12) * (%1)) #define TASKID_RESPAWN 666 #define TASKID_CHECKRE 1231 #define TASKID_ORIGIN 12312 #define TASKID_CHECKST 125435 #define TASKID_SETUSER 988 new NEKRO_VIEW[] = "models/diablomod/v_nekromanta.mdl" #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "DarkGL" new SOUND_START[] = "items/medshot4.wav" new SOUND_FINISHED[] = "items/smallmedkit2.wav" new SOUND_FAILED[] = "items/medshotno1.wav" new pCvarRevival,pCvarDistance,pCvarRevivalHealth; new Float:g_revive_delay[33] new Float:g_body_origin[33][3] new bool:bKlasa[33]; new const szNazwaKlasy[] = "Nekromanta"; new const iHealth = 90; new const szOpis[] = "<center>Na start:<br>+90HP<br><br>Umiejetnosci:<br>Atakujac zabierasz dodatkowo 10HP<br>Mozesz wskrzeszac umarlych</center>" new const iFlags = FLAG_ALL; new const szFraction[] = "Klasy Zwykle"; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) diablo_register_class( szNazwaKlasy, iHealth, szOpis, iFlags, szFraction ); pCvarRevival = register_cvar("diablo_revival_time","3"); pCvarRevivalHealth = register_cvar("diablo_revival_health","25"); pCvarDistance = register_cvar("diablo_revival_distance", "70.0") } public diablo_class_disabled(id){ bKlasa[id] = false; } public diablo_class_enabled(id){ bKlasa[id] = true; } public plugin_precache(){ precache_sound(SOUND_START); precache_sound(SOUND_FINISHED); precache_sound(SOUND_FAILED); precache_model(NEKRO_VIEW); } public diablo_weapon_deploy(id,wpnID,weaponEnt){ if(bKlasa[id] && wpnID == CSW_KNIFE){ entity_set_string(id, EV_SZ_viewmodel, NEKRO_VIEW) } } public diablo_clean_data(id){ g_revive_delay[id] = 0.0 g_body_origin[id] = Float:{0.0, 0.0, 0.0} } public diablo_set_data(id){ g_revive_delay[id] = 0.0 g_body_origin[id] = Float:{0.0, 0.0, 0.0} } public diablo_damage_class_do(iVictim,iAttacker,&Float:fDamage,damageBits){ fDamage += 10.0; } public diablo_class_skill_used(id){ if(task_exists(id)) return PLUGIN_CONTINUE if(!(fm_get_user_button(id) & IN_USE)) return PLUGIN_CONTINUE new body = find_dead_body(id) if(!fm_is_valid_ent(body)) return PLUGIN_CONTINUE new lucky_bastard = pev(body, pev_owner) new lb_team = get_user_team(lucky_bastard) if(lb_team != 1 && lb_team != 2) return PLUGIN_CONTINUE static szName[64] get_user_name(lucky_bastard, szName,charsmax( szName ) ) client_print(id, print_chat, "Odradzanie %s", szName) new revivaltime = get_pcvar_num(pCvarRevival) msg_bartime(id, revivaltime) new Float:gametime = get_gametime() g_revive_delay[id] = gametime + float(revivaltime) - 0.01 emit_sound(id, CHAN_AUTO, SOUND_START, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) set_task(0.0, "task_revive", id) return PLUGIN_CONTINUE } public Float:diablo_cast_time(id,Float:standardTime){ return 0.0; } public task_revive(id) { if(!is_user_alive(id)) { failed_revive(id) return FMRES_IGNORED } if(!(fm_get_user_button(id) & IN_USE)) { failed_revive(id) return FMRES_IGNORED } new body = find_dead_body(id) if(!fm_is_valid_ent(body)) { failed_revive(id) return FMRES_IGNORED } new lucky_bastard = pev(body, pev_owner) if(!is_user_connected(lucky_bastard)) { failed_revive(id) return FMRES_IGNORED } new lb_team = get_user_team(lucky_bastard) if(lb_team != 1 && lb_team != 2) { failed_revive(id) return FMRES_IGNORED } static Float:velocity[3] pev(id, pev_velocity, velocity) velocity[0] = 0.0 velocity[1] = 0.0 set_pev(id, pev_velocity, velocity) new Float:gametime = get_gametime() if(g_revive_delay[id] < gametime) { if(findemptyloc(body, 10.0)) { fm_remove_entity(body) emit_sound(id, CHAN_AUTO, SOUND_FINISHED, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) new args[3] args[0]=lucky_bastard args[2]=id if(get_user_team(id)!=get_user_team(lucky_bastard)) { diablo_damage(id,0,30.0,diabloDamageKnife); args[1]=1 diablo_add_xp(id,diablo_get_xpbonus()); } else { args[1]=0 diablo_add_xp(id,diablo_get_xpbonus()); set_task(0.1, "task_respawn", TASKID_RESPAWN + lucky_bastard,args,3) } } else failed_revive(id) } else set_task(0.1, "task_revive", id) return FMRES_IGNORED } public task_respawn(args[]) { new id = args[0] if (!is_user_connected(id) || is_user_alive(id) || cs_get_user_team(id) == CS_TEAM_SPECTATOR) return set_pev(id, pev_deadflag, DEAD_RESPAWNABLE) dllfunc(DLLFunc_Think, id) dllfunc(DLLFunc_Spawn, id) set_pev(id, pev_iuser1, 0) set_task(0.1, "task_check_respawn", TASKID_CHECKRE + id,args,3) } public task_check_respawn(args[]) { new id = args[0] if(pev(id, pev_iuser1)) set_task(0.1, "task_respawn", TASKID_RESPAWN + id,args,3) else set_task(0.1, "task_origin", TASKID_ORIGIN + id,args,3) } public task_origin(args[]) { new id = args[0] engfunc(EngFunc_SetOrigin, id, g_body_origin[id]) static Float:origin[3] pev(id, pev_origin, origin) set_pev(id, pev_zorigin, origin[2]) set_task(0.1, "task_stuck_check", TASKID_CHECKST + id,args,3) } public task_stuck_check(args[]) { new id = args[0] static Float:origin[3] pev(id, pev_origin, origin) if(origin[2] == pev(id, pev_zorigin)) set_task(0.1, "task_respawn", TASKID_RESPAWN + id,args,3) else set_task(0.1, "task_setplayer", TASKID_SETUSER + id,args,3) } public task_setplayer(args[]) { new id = args[0] fm_give_item(id, "weapon_knife") if(args[1]==1) { fm_give_item(id, "weapon_mp5navy") diablo_add_hp(id,999); set_user_godmode(id, 1) new newarg[1] newarg[0]=id set_task(3.0,"god_off",id+95123,newarg,1) } else { diablo_add_hp(id,get_pcvar_num(pCvarRevivalHealth) + diablo_get_user_int(args[2])); Display_Fade(id,seconds(2),seconds(2),0,0,0,0,255) } } public god_off(args[]) { set_user_godmode(args[0], 0) } public failed_revive(id) { msg_bartime(id, 0) emit_sound(id, CHAN_AUTO, SOUND_FAILED, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } stock find_dead_body(id) { static Float:origin[3] pev(id, pev_origin, origin) new ent static classname[32] while((ent = fm_find_ent_in_sphere(ent, origin, get_pcvar_float(pCvarDistance))) != 0) { pev(ent, pev_classname, classname, 31) if(equali(classname, "fakeCorpse") && fm_is_ent_visible(id, ent) && is_user_connected( pev( ent , pev_owner ) ) && !is_user_alive( pev( ent , pev_owner ) )) return ent } return 0 } stock msg_bartime(id, seconds) { if(is_user_bot(id)||!is_user_alive(id)||!is_user_connected(id)) return if((fm_get_user_button(id) & IN_USE)) diablo_damage(id,0,10.0,diabloDamageKnife); static g_msg_bartime; if(!g_msg_bartime) g_msg_bartime = get_user_msgid("BarTime") message_begin(MSG_ONE, g_msg_bartime, _, id) write_byte(seconds) write_byte(0) message_end() } stock bool:findemptyloc(ent, Float:radius) { if(!fm_is_valid_ent(ent)) return false static Float:origin[3] pev(ent, pev_origin, origin) origin[2] += 2.0 new owner = pev(ent, pev_owner) new num = 0, bool:found = false while(num <= 100) { if(is_hull_vacant(origin)) { g_body_origin[owner][0] = origin[0] g_body_origin[owner][1] = origin[1] g_body_origin[owner][2] = origin[2] found = true break } else { origin[0] += random_float(-radius, radius) origin[1] += random_float(-radius, radius) origin[2] += random_float(-radius, radius) num++ } } return found } stock bool:is_hull_vacant(const Float:origin[3]) { new tr = 0 engfunc(EngFunc_TraceHull, origin, origin, 0, HULL_HUMAN, 0, tr) if(!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) return true return false } stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha) { static g_msg_screenfade; if(!g_msg_screenfade) g_msg_screenfade = get_user_msgid("ScreenFade"); message_begin( MSG_ONE, g_msg_screenfade,{0,0,0},id ) write_short( duration ) // Duration of fadeout write_short( holdtime ) // Hold time of color write_short( fadetype ) // Fade type write_byte ( red ) // Red write_byte ( green ) // Green write_byte ( blue ) // Blue write_byte ( alpha ) // Alpha message_end() }