[ROZWIĄZANE] Pytanie odnośnie undefined sy...
Mr. Dziwny
27.11.2012
Witam,
otóż posiadam dobry plugin bossa (jest zaje ..). Wszystko pięknie itd., aczkolwiek był on zrobiony pod zombie. Ja natomiast chcę, aby był na serwer COD. Już wszystko co należało zmienić zmieniłem, ale nie mogę uporać się z jedną rzeczą, tzn. jak dodaję, że po zabiciu bossa ma iść exp dla każdego :
Podsyłam 2 public odpowiedzialne 1 za zadane obrażenia (chyba ), a 2 za zabójstwo bossa.
Nie mam pojęcia co z tym zrobić ; /
Proszę o pomoc, za pomoc leci
otóż posiadam dobry plugin bossa (jest zaje ..). Wszystko pięknie itd., aczkolwiek był on zrobiony pod zombie. Ja natomiast chcę, aby był na serwer COD. Już wszystko co należało zmienić zmieniłem, ale nie mogę uporać się z jedną rzeczą, tzn. jak dodaję, że po zabiciu bossa ma iść exp dla każdego :
a za zabranie mu 1 hp ma iść jeden exp:cod_set_user_xp(0, cod_get_user_xp(id)+40000);
Wyskakują mi błędy przy kompilacji :cod_set_user_xp(id, cod_get_user_xp(id)+1);
boss.sma(689) : error 017: undefined symbol "id"
boss.sma(689) : error 017: undefined symbol "i"
boss.sma(764) : error 017: undefined symbol "i"
boss.sma(764) : error 001: expected token: ",", but found ";"
Podsyłam 2 public odpowiedzialne 1 za zadane obrażenia (chyba ), a 2 za zabójstwo bossa.
public npc_takedamage(ent, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_alive(attacker) || !is_valid_ent(ent))
return;
new className[32];
entity_get_string(ent, EV_SZ_classname, className, charsmax(className))
if(!equali(className, npc_classname) || !g_alive[ent])
return;
g_fUserDamage[attacker] += damage;
//client_print(attacker, print_center, "%f" , g_fUserDamage[attacker]);
if(g_fUserDamage[attacker] >= 1){
g_fUserDamage[attacker] -= 1;
cod_set_user_xp(id, cod_get_user_xp(id)+1);
}
entity_set_float(g_pSprite, EV_FL_frame, entity_get_float(ent, EV_FL_health) / (ALIEN_HEALTH / 100.0));
}
public npc_killed(ent, attacker)
{
new className[32];
entity_get_string(ent, EV_SZ_classname, className, charsmax(className))
if(!equali(className, npc_classname) || !g_alive[ent])
return HAM_IGNORED;
g_alive[ent] = 0
Util_PlayAnimation(ent, ANIM_DEATH);
emit_sound(ent, CHAN_VOICE, g_AlienSound[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
remove_task(ent)
set_pev(ent, pev_solid, SOLID_NOT)
set_task(4.5, "npc_remove", ent)
entity_set_int(ent, EV_INT_iuser4, 1);
//cs_set_user_money(attacker, cs_get_user_money(attacker) + g_reward[ent])
cod_set_user_xp(0, cod_get_user_xp(id)+40000);
entity_set_int(g_pSprite, EV_INT_rendermode, kRenderTransTexture);
entity_set_float(g_pSprite, EV_FL_renderamt, 0.0);
begin_changelevel();
client_print(0, print_chat, "BOSS nie zyje! Zmiana mapy na de_dust2");
return HAM_SUPERCEDE;
}
Nie mam pojęcia co z tym zrobić ; /
Proszę o pomoc, za pomoc leci
DEADP00L
27.11.2012
To
zamień na:
cod_set_user_xp(0, cod_get_user_xp(id)+40000);
zamień na:
cod_set_user_xp(0, cod_get_user_xp(0)+40000);
Mr. Dziwny
28.11.2012
a 0 to nie jest przypadkiem funkcja dla wszystkich ? Czyli exp wszystkich , tj. jak to będzie to się poziomy wyzerują i doda się 40 k expa.. bynajmniej tak mi się wydaję ;x
JabLuszko
28.11.2012
Nie masz id, bo autor nazwał to attacker - w przypadku npc_takedamage.
W przypadku npc_killed wersja z 0 nie zadziała (chyba, że poprawiałeś silnik QTM_CodMod, żeby to obsługiwał) => musisz przeiterować po wszystkich graczach i dać im EXP osobno - http://amxx.pl/dokum...f90/get_players
Użytkownik JabLuszko edytował ten post 28.11.2012 07:52
W przypadku npc_killed wersja z 0 nie zadziała (chyba, że poprawiałeś silnik QTM_CodMod, żeby to obsługiwał) => musisz przeiterować po wszystkich graczach i dać im EXP osobno - http://amxx.pl/dokum...f90/get_players
Użytkownik JabLuszko edytował ten post 28.11.2012 07:52
Mr. Dziwny
28.11.2012
Czyli jak powinno wyglądać npc_killed, bo nie za bardzo załapałem
Mam pytanie jeszcze odnośnie tego:
Mam pytanie jeszcze odnośnie tego:
public npc_takedamage(ent, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_alive(attacker) || !is_valid_ent(ent))
return;
new className[32];
entity_get_string(ent, EV_SZ_classname, className, charsmax(className))
if(!equali(className, npc_classname) || !g_alive[ent])
return;
g_fUserDamage[attacker] += damage;
//client_print(attacker, print_center, "%f" , g_fUserDamage[attacker]);
if(g_fUserDamage[attacker] >= 1){
g_fUserDamage[attacker] -= 1;
cod_set_user_xp(id, cod_get_user_xp(id)+1);
}
entity_set_float(g_pSprite, EV_FL_frame, entity_get_float(ent, EV_FL_health) / (ALIEN_HEALTH / 100.0));
}
JabLuszko
28.11.2012
Wydało mi się, że coś tam potrafisz - jednak się przeliczyłem.
Czy ten powyższy if to Twoje dzieło? Jeśli to Twoje dzieło to skasuj i zamień na
Co przykładu z npc_killed to nie wiem czego nie zrozumiałeś (warto by napisać...).
Masz tam w linku przykładową pętlę iterującą po wszystkich graczach (oraz ewentualne warunki-flagi) skopiuj oraz dopisz tam tylko cod_set_user_xp(id, cod_get_user_xp(id)+ILE_EXPA));. Oczywiście z odpowiednimi flagami - są one w dokumentacji wytłumaczone - ja nie wiem czy wszyscy mają dostać, czy wszyscy żywi, czy wszyscy w CT i tak dalej...
Użytkownik JabLuszko edytował ten post 28.11.2012 18:37
if(g_fUserDamage[attacker] >= 1){
g_fUserDamage[attacker] -= 1;
cod_set_user_xp(id, cod_get_user_xp(id)+1);
}
Czy ten powyższy if to Twoje dzieło? Jeśli to Twoje dzieło to skasuj i zamień na
cod_set_user_xp(attacker, cod_get_user_xp(attacker)+floatround(dmg));
Co przykładu z npc_killed to nie wiem czego nie zrozumiałeś (warto by napisać...).
Masz tam w linku przykładową pętlę iterującą po wszystkich graczach (oraz ewentualne warunki-flagi) skopiuj oraz dopisz tam tylko cod_set_user_xp(id, cod_get_user_xp(id)+ILE_EXPA));. Oczywiście z odpowiednimi flagami - są one w dokumentacji wytłumaczone - ja nie wiem czy wszyscy mają dostać, czy wszyscy żywi, czy wszyscy w CT i tak dalej...
Użytkownik JabLuszko edytował ten post 28.11.2012 18:37
Mr. Dziwny
29.11.2012
Dobra doszedłem do wniosku , ze lepiej mi się myśli nocą.. Wszystko dziala jak należy
Dziwie się tylko sb że nie załapałem od początku o co w tym chodzi (odnośnie 1 funkcji, co do killied to pomogłeś mi i to za***iście)
Oczywiście leci
Temat do zamknięcia.
Dziwie się tylko sb że nie załapałem od początku o co w tym chodzi (odnośnie 1 funkcji, co do killied to pomogłeś mi i to za***iście)
Oczywiście leci
Temat do zamknięcia.
Gość_21977_* 29.11.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Gość_21977_* 29.11.2012
Automatyczna wiadomość
Ten temat został przeniesiony z forum
AMX Mod X → Pytania
do
Scripting AMXX → Problemy
Ten temat został przeniesiony z forum
AMX Mod X → Pytania
do
Scripting AMXX → Problemy