public moc(id) { set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5) if(smiertelne[id]==0) { show_hudmessage(id, "Smiertelnych obrazen mozesz uzyc raz na runde !") return PLUGIN_HANDLED } new lezacy = find_dead_body(id) if (lezacy == -1 || lezacy == 0) return PLUGIN_HANDLED if (is_user_alive(lezacy)) { show_hudmessage(id, "Smiertelne obrazenia musza byc pobrane od martwego gracza !") return PLUGIN_HANDLED } new index1, bodypart1 get_user_aiming(id,index1,bodypart1) if (index1==0) { show_hudmessage(id, "Smiertelne obrazenia zadzialaja gdy bd. mial wroga na celowniku !") return PLUGIN_HANDLED } UTIL_Damage(id,index1,0.0+last_hit[lezacy],DMG_SLASH,0,"world") //obraznie client_print(id,print_chat,"Zadales %i smiertelnych obrazen wrogowi!",last_hit[lezacy]) smiertelne[id]-- new Float:forigin[3], origin[3] pev(lezacy,pev_origin,forigin) FVecIVec(forigin,origin) new origin2[3] get_user_origin(index1,origin2) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte (TE_BEAMPOINTS) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]+8) write_coord(origin2[0]) write_coord(origin2[1]) write_coord(origin2[2]+8) write_short(sprite_lgt); write_byte(1) // framestart write_byte(1) // framerate write_byte(10) // life write_byte(200) // width write_byte(200) // noise write_byte(255) // r, g, b (red) write_byte(0) // r, g, b (TUTOR_TUTOR_GREEN) write_byte(0) // r, g, b (blue) write_byte(100) // brightness write_byte(5) // speed message_end() return PLUGIN_HANDLED } 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(cvar_revival_dis))) != 0) { pev(ent, pev_classname, classname, 31) if(equali(classname, "fake_corpse") && fm_is_ent_visible(id, ent)) return ent } return 0 }Funkcja miała pobierać od najbliższego zmarłego(trupa) ostatnie obrazenia(last_hit) i zadawać je wrogowi(temu co mamy go na celowniku), jakieś pomysły dlaczego nie działa ?
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Umarli - pobieranie wartości
#1
Napisano 25.12.2011 22:26
#2
Napisano 26.12.2011 18:38
zamiast util... uzyj change_health
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#3
Napisano 28.12.2011 13:56
Możesz jak inaczej znaleźć najbliższego trupa ?
#4
Napisano 28.12.2011 14:09
Pewnie nie tworzysz "fake_corpse", więc jak ma znaleźć tego trupa?Jest pewien problem bo nic nie pokazuje
Możesz jak inaczej znaleźć najbliższego trupa ?
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#5
Napisano 28.12.2011 14:13
Deathmsg:Pewnie nie tworzysz "fake_corpse", więc jak ma znaleźć tego trupa?Jest pewien problem bo nic nie pokazuje
Możesz jak inaczej znaleźć najbliższego trupa ?
set_task(0.5, "task_check_dead_flag", vid)down:
public task_check_dead_flag(id) { if(!is_user_connected(id)) return if(pev(id, pev_deadflag) == DEAD_DEAD) create_fake_corpse(id) else set_task(0.5, "task_check_dead_flag", id) }
#6
Napisano 28.12.2011 14:25
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#7
Napisano 28.12.2011 15:06
if (lezacy == -1 || lezacy == 0) return PLUGIN_HANDLEDZastanawia mnie czy dobrze zrobiłem ten warunek...
#8
Napisano 28.12.2011 15:12
if(!pev_valid(lezacy))
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#9
Napisano 28.12.2011 15:37
if(!(1 <= lezacy <= get_maxplayers()) || is_user_alive(lezacy))
return PLUGIN_CONTINUE
#10
Napisano 28.12.2011 16:31
new lezacyx = find_dead_body(id) new lezacyx = pev(lezacyx, pev_owner)
#11
Napisano 28.12.2011 16:50
A nawet na 100% to trzeba dodać, ale zrób nową zmiennąNie wiem czemu ale w funkcji od wskrzeszania nekromanty był jeszcze taki myk i może dlatego bez niego nie działa :
new lezacyx = find_dead_body(id) new lezacyx = pev(lezacyx, pev_owner)
new lezacy = find_dead_body(id);
new lezacyid = pev(lezacy, pev_owner);
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#12
Napisano 28.12.2011 17:00
public zadaj_smiertelnex(id) { set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5) if(smiertelne[id]==0) { show_hudmessage(id, "Smiertelnych obrazen mozesz uzyc raz na runde !") return PLUGIN_HANDLED } if(player_class[id]!=Wampir) return PLUGIN_HANDLED new lezacyx = find_dead_body(id) new lezacy = pev(lezacyx, pev_owner) if(!(1 <= lezacy <= get_maxplayers()) || is_user_alive(lezacy)) { show_hudmessage(id, "Blad !") return PLUGIN_CONTINUE } new index1, bodypart1 get_user_aiming(id,index1,bodypart1) if (index1==0) { show_hudmessage(id, "Smiertelne obrazenia zadzialaja gdy bd. mial wroga na celowniku !") return PLUGIN_HANDLED } new obrazenia = floatround(last_hit[lezacy],floatround_ceil) change_health(index1,-obrazenia,id,"world") client_print(id,print_chat,"Zadales %i smiertelnych obrazen wrogowi!",obrazenia) smiertelne[id]-- new Float:forigin[3], origin[3] pev(lezacy,pev_origin,forigin) FVecIVec(forigin,origin) new origin2[3] get_user_origin(index1,origin2) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte (TE_BEAMPOINTS) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]+8) write_coord(origin2[0]) write_coord(origin2[1]) write_coord(origin2[2]+8) write_short(sprite_lgt); write_byte(1) // framestart write_byte(1) // framerate write_byte(10) // life write_byte(200) // width write_byte(200) // noise write_byte(255) // r, g, b (red) write_byte(0) // r, g, b (TUTOR_TUTOR_GREEN) write_byte(0) // r, g, b (blue) write_byte(100) // brightness write_byte(5) // speed message_end() return PLUGIN_HANDLED }Tak wygląda teraz kod.
Ten kod /\ działa jakby co
Można zamknąć.
#13
Napisano 28.12.2011 17:06
public zadaj_smiertelnex(id)
{
set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
if(!smiertelne[id])
{
show_hudmessage(id, "Smiertelnych obrazen mozesz uzyc raz na runde !")
return PLUGIN_HANDLED
}
if(player_class[id]!=Wampir) return PLUGIN_HANDLED
new lezacyx = find_dead_body(id)
if(!pev_valid(lezacyx))
return PLUGIN_HANDLED
new lezacy = pev(lezacyx, pev_owner)
if(!is_user_connected(lezacy) || is_user_alive(lezacy))
{
show_hudmessage(id, "Blad !")
return PLUGIN_CONTINUE
}
new index1, bodypart1
get_user_aiming(id,index1,bodypart1)
if (!is_user_alive(index1))
{
show_hudmessage(id, "Smiertelne obrazenia zadzialaja gdy bd. mial wroga na celowniku !")
return PLUGIN_HANDLED
}
new obrazenia = floatround(last_hit[lezacy],floatround_ceil)
change_health(index1,-obrazenia,id,"world")
client_print(id,print_chat,"Zadales %i smiertelnych obrazen wrogowi!",obrazenia)
smiertelne[id]--
new origin[3], origin2[3]
get_user_origin(lezacy,origin)
get_user_origin(index1,origin2)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (TE_BEAMPOINTS)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+8)
write_coord(origin2[0])
write_coord(origin2[1])
write_coord(origin2[2]+8)
write_short(sprite_lgt);
write_byte(1) // framestart
write_byte(1) // framerate
write_byte(10) // life
write_byte(200) // width
write_byte(200) // noise
write_byte(255) // r, g, b (red)
write_byte(0) // r, g, b (TUTOR_TUTOR_GREEN)
write_byte(0) // r, g, b (blue)
write_byte(100) // brightness
write_byte(5) // speed
message_end()
return PLUGIN_HANDLED
}
Tak powinno być dobrze.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo