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

[ROZWIĄZANE] Task - wysłanie do funkcji id atakujacego


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

#1 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 15.06.2012 20:51

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.
  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#2 Fryteczq

    Początkujący

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:11
  • Lokalizacja:Internet
Offline

Napisano 15.06.2012 21:47

Nie wiem czy zrozumiesz ale ja bym to tak zrobił :)

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

  • +
  • -
  • 1
Dołączona grafika
*E-T-H* Fryteczq
WalWarRpg progress [||||||||||||||||||||] 10%
www.Radio-Banzai.pl Dla Fanów Anime

#3 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 15.06.2012 22:31

Automatyczna wiadomość


Ten temat został przeniesiony z forum

AMX Mod X > Pytania

do

Scripting AMXX > Pytania

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 16.06.2012 02:31

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:

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.
  • +
  • -
  • 1

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ę.
 
1988650.png?theme=dark


#5 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 16.06.2012 09:19

Dzięki.
A jak dopisać ten unikalny id taska?
  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#6 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 16.06.2012 10:44

dodajesz jakąś tam liczbe do ID wysyłąnego gracza.
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
}

  • +
  • -
  • 1

#7 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

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.
  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#8 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 16.06.2012 14:03

@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.
  • +
  • -
  • 1

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ę.
 
1988650.png?theme=dark


#9 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 16.06.2012 14:16

Dzięki, już mi wszystko działa.
  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#10 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 16.06.2012 14:19

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika 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