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.
|
Guest Message by DevFuse
Atakujący
Temat rozp. KariiO, 18.10.2011 12:27
10 odpowiedzi w tym temacie
#1
Napisano 18.10.2011 12:27
Witam czy istnieje jakaś funkcja żeby oznaczyć ent/gracza jako atakującego/zabijającego ?
Bo jest taki problem że mam dwa pluginy i w jednym atakujący zabija swoją ofiarę z jakieś mocy (piorun, kusza, totemy)[Diablomod] no i są logi że w "drugi" plugin nie umie rozpoznać atakującego po przez użycie funkcji get_user_attacker.
Bo jest taki problem że mam dwa pluginy i w jednym atakujący zabija swoją ofiarę z jakieś mocy (piorun, kusza, totemy)[Diablomod] no i są logi że w "drugi" plugin nie umie rozpoznać atakującego po przez użycie funkcji get_user_attacker.
#2
Napisano 18.10.2011 12:57
ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, fDamage, damagebits);
Za ent możesz podstawić ID atakującego gracza jeżeli o to Ci chodzi.
#3
Napisano 19.10.2011 13:48
W diablomodzie wszystko co ma zginąć sprowadza się do tej funkcji :
Zmieniłem na :
Ale w logach nadal :
public UTIL_Kill(attacker,id,weapon[]) { if( is_user_alive(id) && is_user_connected(id)){ if(get_user_team(attacker)!=get_user_team(id)) set_user_frags(attacker,get_user_frags(attacker) +1); if(get_user_team(attacker)==get_user_team(id)) set_user_frags(attacker,get_user_frags(attacker) -1); if (cs_get_user_money(attacker) + 150 <= 16000) cs_set_user_money(attacker,cs_get_user_money(attacker)+150) else cs_set_user_money(attacker,16000) cs_set_user_deaths(id, cs_get_user_deaths(id)+1) user_kill(id,1) if(is_user_connected(attacker) && attacker!=id) { award_kill(attacker,id) if(is_user_alive(attacker)) award_item(attacker,0) } message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(attacker) write_byte(id) write_byte(0) write_string(weapon) message_end() message_begin(MSG_ALL,gmsgScoreInfo) write_byte(attacker) write_short(get_user_frags(attacker)) write_short(get_user_deaths(attacker)) write_short(0) write_short(get_user_team(attacker)) message_end() message_begin(MSG_ALL,gmsgScoreInfo) write_byte(id) write_short(get_user_frags(id)) write_short(get_user_deaths(id)) write_short(0) write_short(get_user_team(id)) message_end() new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]; get_user_name(attacker, kname, 31); get_user_team(attacker, kteam, 9); get_user_authid(attacker, kauthid, 31); get_user_name(id, vname, 31); get_user_team(id, vteam, 9); get_user_authid(id, vauthid, 31); log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", kname, get_user_userid(attacker), kauthid, kteam, vname, get_user_userid(id), vauthid, vteam, weapon); } }
Zmieniłem na :
stock UTIL_Kill(killer, victim, damagebits, ent = 0, const szWeapon[] = ""){ new Float:fHP; pev(victim, pev_health, fHP); set_pev(victim, pev_health, 1.0); UTIL_Damage(killer, victim, fHP, damagebits, ent, szWeapon); } stock UTIL_Damage(attacker, victim, Float:fDamage, damagebits, ent = 0, const szWeapon[] = ""){ static info_target = 0; if(!info_target) info_target = engfunc(EngFunc_AllocString, "info_target"); if(pev_valid(ent)) ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, fDamage, damagebits); else{ ent = engfunc(EngFunc_CreateNamedEntity, info_target); set_pev(ent, pev_classname, szWeapon); ExecuteHamB(Ham_TakeDamage, victim, ent, attacker, fDamage, damagebits); set_pev(ent, pev_flags, FL_KILLME); } }
Ale w logach nadal :
L 10/19/2011 - 14:11:39: [AMXX] Displaying debug trace (plugin "VIP_3.2.amxx") L 10/19/2011 - 14:11:39: [AMXX] Run time error 10: native error (native "get_user_attacker") L 10/19/2011 - 14:11:39: [AMXX] [0] VIP_3.2.SMA::Damage (line 63) L 10/19/2011 - 14:14:10: Invalid player id 0Nie przeszkadzało by mi to gdyby nie fakt że wielkość pliku z logami to niekiedy kilka MB...
Użytkownik KariiO edytował ten post 19.10.2011 13:48
#4
Napisano 19.10.2011 14:02
hmm. Może dla bytu (piorunowi czy kuszy) ustawić entity_set_edict(Ent, EV_ENT_owner, id); gdzie id to gracz który tworzy ent. A w pluginie
new attacker = entity_get_edict(ent, EV_ENT_owner);
new attacker = entity_get_edict(ent, EV_ENT_owner);
Użytkownik Jak się nazwać edytował ten post 19.10.2011 14:03
Pisze na zamówienie statystyki pod nvault. GG: 15600964
#5
Napisano 19.10.2011 14:33
Tylko tak przy wszystkich (kuszach, totemach) mam, ale nie pomaga.
Ostatecznym wyjściem będzie chyba złączenie pluginów.
Ostatecznym wyjściem będzie chyba złączenie pluginów.
#6
Napisano 19.10.2011 14:40
daj sma vipa
#7
Napisano 21.10.2011 20:03
daj sma vipa
Odświeżam.
Odświeżam.
Załączone pliki
#8
Napisano 21.10.2011 20:07
twój problem sprowadza sie tylko do dodawania hp za zabicie ??
Użytkownik Stachuu ?? edytował ten post 21.10.2011 20:07
#9
Napisano 21.10.2011 20:51
bulletdamage też
#10
Napisano 22.10.2011 17:49
co do bulletdamage jeśli nie zamieniłeś eventu zadawania dmg (damage(id)) na hamsandwich ( co sam zrobilem i polecam)
to przy np zręczności i tak pokazuje bledne dane o ilosci zadanego hp ( bo leczy zadane obr )
Jesli masz oparte na hamsandwich dodaj w diablo
ze jeśli ma vpia
to przy np zręczności i tak pokazuje bledne dane o ilosci zadanego hp ( bo leczy zadane obr )
Jesli masz oparte na hamsandwich dodaj w diablo
ze jeśli ma vpia
damage*=x
#11
Napisano 31.10.2011 21:57
Zmieniłem hamsandwich, zobaczymy co z tego będzie. A jak z tą redukcją hp po przez zręczność, masz jakiś sposób?
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych