[ROZWIĄZANE] Task - wysłanie do funkcji id...
Sniper Elite
15.06.2012
Witam. Odpalam taska przy uderzeniu gracza, który odpala funkcję zadającą obrażenia.
Jak wysłać taskiem do funkcji id osoby która tego taska nałożyła (zaatakowała gracza)?
Dzięki za pomoc.
Jak wysłać taskiem do funkcji id osoby która tego taska nałożyła (zaatakowała gracza)?
Dzięki za pomoc.
Fryteczq
15.06.2012
Nie wiem czy zrozumiesz ale ja bym to tak zrobił
Użytkownik Fryteczq edytował ten post 15.06.2012 21:47
public funkcja(id,ofiara)
{
nalozyltask[ofiara]=id
set_task(0.5, "funkcja2", ofiara);
}
public funkcja2(id)
{
gracz_atakowany=id
gracz_atakujacy=nalozyltask[id]
}
Użytkownik Fryteczq edytował ten post 15.06.2012 21:47
Gość_21977_* 15.06.2012
Automatyczna wiadomość
Ten temat został przeniesiony z forum
AMX Mod X > Pytania
do
Scripting AMXX > Pytania
Ten temat został przeniesiony z forum
AMX Mod X > Pytania
do
Scripting AMXX > Pytania
GwynBleidD
16.06.2012
Fryteczq, nic z Twojego kodu nie da się zrozumieć
Co do tematu. set_task umożliwia zdefiniowanie tablicy o nazwie "data". Jest to tablica, która zostanie przekazana bezpośrednio do funkcji wywołującej task, jednak funkcja musi być następującej konstrukcji:
To jest przykładowa zawartość, dla
Jest to jak widać bardzo dobra metoda do podania dowolnych danych do taska, bez używania zmiennych globalnych (które niepotrzebnie zajmują pamięć i mogą być "nadpisane" gdy wywoła się kila tasków dla jednego gracza, zanim pierwszy z nich się wykona). Jest proste, wygodne i zawsze działa Nie otrzymujesz jednak wtedy w tasku zmiennej id, czyli id taska, ale możesz dopisać tą zmienną do tablicy data, jeśli jest Ci potrzebna.
Co do tematu. set_task umożliwia zdefiniowanie tablicy o nazwie "data". Jest to tablica, która zostanie przekazana bezpośrednio do funkcji wywołującej task, jednak funkcja musi być następującej konstrukcji:
public funkcja(data[], len) {
ofiara = data[0];
atakujacy = data[1];
}
To jest przykładowa zawartość, dla
new data[2]
data[0] = ofiara
data[1] = atakujacy
set_task(10.0, "funkcja", atakujacy, data, 2);
Jest to jak widać bardzo dobra metoda do podania dowolnych danych do taska, bez używania zmiennych globalnych (które niepotrzebnie zajmują pamięć i mogą być "nadpisane" gdy wywoła się kila tasków dla jednego gracza, zanim pierwszy z nich się wykona). Jest proste, wygodne i zawsze działa Nie otrzymujesz jednak wtedy w tasku zmiennej id, czyli id taska, ale możesz dopisać tą zmienną do tablicy data, jeśli jest Ci potrzebna.
dasiek
16.06.2012
dodajesz jakąś tam liczbe do ID wysyłąnego gracza.
np
a w funkcji na początku odejmujesz od wsyłanego ID dodaną wartość
np
set_task(10.0, "funkcja", atakujacy+8123, data, 2);
a w funkcji na początku odejmujesz od wsyłanego ID dodaną wartość
public funkcja(id) { id-=8123; //cos tam dalej robi }
Sniper Elite
16.06.2012
if(player_b_bio[attacker_id]){ if(task_exists(id+TASK_POCISKI_BIO)) remove_task(id+TASK_POCISKI_BIO) new data[2] data[0] = id data[1] = attacker_id set_task(1.0, "Pociski_bio", attacker_id+TASK_POCISKI_BIO, data, 2, "a", 5); }
public Pociski_bio(data[], len){ new attacker_id, id id = data[0]; attacker_id = data[1]; if(is_user_alive(id)){ ExecuteHam(Ham_TakeDamage, id, 0, attacker_id, 10.0 , 1); } }
I jak tu teraz zrobić te unikalne id taska bo ja nie kumam tego.
GwynBleidD
16.06.2012
@Sniper Elite, właśnie to w kodzie masz zrobione, ściślej attacker_id+TASK_POCISKI_BIO daje Ci unikalność taska. Problemy tylko jeden widzę, w if task_exists podajesz attacker_id zamiast id. Tak samo w remove_task.
@CheQ, w ten sposób nie da się pobrać wartości z tablicy data. Albo pobierasz id taska, albo data, innej opcji nie ma.
@CheQ, w ten sposób nie da się pobrać wartości z tablicy data. Albo pobierasz id taska, albo data, innej opcji nie ma.
Gość_21977_* 16.06.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