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.
|
[ROZWIĄZANE] Task - wysłanie do funkcji id atakujacego
#2
Napisano 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
#3 Gość_21977_*
Napisano 15.06.2012 22:31
Ten temat został przeniesiony z forum
AMX Mod X > Pytania
do
Scripting AMXX > Pytania
#4
Napisano 16.06.2012 02:31
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.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#6
Napisano 16.06.2012 10:44
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 }
#7
Napisano 16.06.2012 12:15
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.
#8
Napisano 16.06.2012 14:03
@CheQ, w ten sposób nie da się pobrać wartości z tablicy data. Albo pobierasz id taska, albo data, innej opcji nie ma.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#10 Gość_21977_*
Napisano 16.06.2012 14:19
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
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych