Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Task przysyłający dodatkowy index


  • Zamknięty Temat jest zamknięty
9 odpowiedzi w tym temacie

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 24.01.2011 01:10

Witam. Pytanie raczej w dobrym miejscu, ale tak ogólnie to trochę chodzi o diablo. W diablo jest task, który wykonuje się, jeśli dana klasa strzeli do wroga z pistoletu
set_task(2.0, "funcDemageVic", id+GLUTON)

no i funkcja do, której odnosi się ten task wygląda tak
public funcDemageVic(id, attacker)
{
id-=GLUTON
if(get_user_health(id) > 10)
set_task(2.0, "funcDemageVic", id+GLUTON)
DoDamage(id, attacker1, 5);
}

Skąd ten "attacker"? I do tego w DoDamage jest "attacker1", chyba w ogóle jakaś pomyłka w kodzie... Nie widzę, żeby tamten task przeniósł ze sobą informacje na temat atakującego (bo nawet nie wiem czy się da to zrobić), więc ten "attacker" tutaj jest raczej nie potrzebny, no i chyba "DoDamage" nie będzie działać tak jak trzeba, bo tam dalej w kodzie jest warunek, jeśli atakujący jest połączony.
No to może teraz przejdźmy do rzeczy... jak przenieść w danym tasku jakiś dodatkowy index?
W dokumentacji jest
set_task ( Float:time, const function[], id = 0, parameter[]="", len = 0, flags[]="", repeat = 0 )

no ale tak skromnie są opisane dane parametry, że nie wiem do czego służy "parameter[]=""" i "len = 0". Czy to właśnie w któryś z nich da się przenieść te dodatkowe informacje? Przeczytałem też set_task - funkcje czasowe - Nieoficjalny polski support AMX Mod X ale jakoś nie bardzo rozumiem na jakiej zasadzie to działa... Trzeba zrobić nową tablicę
new data

potem pod nią
data = attacker

a task dać taki
set_task(2.0, "funcDemageVic", id+GLUTON, data, 1)

i potem id pobrać z id+GLUTON, następnie atakującego z "data"? Czy jednak to wszystko wrzucić do "data"?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 Owner123

    Wszechpomocny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 24.01.2011 02:03

new data[1]; data[0] = attacker

Jak sam napisales to musi byc tablica a nie zwykla zmienna.

Użytkownik Owner123 edytował ten post 24.01.2011 02:05

  • +
  • -
  • 1

#3 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 24.01.2011 07:40

set_task - funkcje czasowe - Nieoficjalny polski support AMX Mod X
  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 24.01.2011 10:52

jeśli piąty parametr set_task > 0 to funkcja realizująca task dostaje 2 argumenty: kopie tablicy podanej jako czwarty parametr i taskid

public taskZrobCos(data[], taskid){

}

  • +
  • -
  • 1

#5 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 24.01.2011 16:21

set_task - funkcje czasowe - Nieoficjalny polski support AMX Mod X

No właśnie to czytałem... Może napiszę jakiś przykład i ktoś by napisał, czy będzie dobrze
public Damage(id) { // oczywiście wcześniej w public init zdarzenie jest zarejestrowane
if(is_user_connected(id)) {
new weapon, body;
new attacker = get_user_attacker(id, weapon, body);
new data[1];
data[0] = attacker;
set_task(4.0, "funkcja", id, data, 1);
}
}

public funkcja(data[], id) {
data[0] = pid;
client_print(id, print_chat, "Jestes kozak");
client_print(pid, print_chat, "Jestes koks");
}

no powiedzmy, że takie coś... i to będzie działać?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 24.01.2011 17:53

Pomieszałeś.

public Damage(id) { // oczywiście wcześniej w public init zdarzenie jest zarejestrowane
if(is_user_connected(id)) {
new weapon, body;
new attacker = get_user_attacker(id, weapon, body);
new data[2];
data[0] = attacker;
data[1] = id;
set_task(4.0, "funkcja", id, data, 2);
}
}

public funkcja(data[]) {
new id = data[1];
new pid = data[0];
client_print(id, print_chat, "Jestes kozak");
client_print(pid, print_chat, "Jestes koks");
}

  • +
  • -
  • 1

#7 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 24.01.2011 18:00

A no rzeczywiście :D Ale takie coś jak R3X nie może być? Czyli id (tego co właśnie dotyczy funkcja 1) bierze z taskid, a "attacker" z tego "data"?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#8 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 24.01.2011 18:08

Ale takie coś jak R3X nie może być?

Może, R3X przecież by nie kłamał :D
Po prostu jak używam już tablicy do przekazania parametrów to już z przyzwyczajenie daje w niej wszystko a nie osobno z id task'a.
  • +
  • -
  • 1

#9 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 24.01.2011 18:12

No to temat już chyba wyczerpany (czyli można zamknąć). Dzięki za pomoc.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#10 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 24.01.2011 18:13

oczywiście, że może być
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych