Gothic Online Forums
Lista parametrów - Printable Version

+- Gothic Online Forums (https://archive.gothic-online.com)
+-- Forum: Community (https://archive.gothic-online.com/forum-18.html)
+--- Forum: Polish (Polski) (https://archive.gothic-online.com/forum-19.html)
+---- Forum: Pomoc (https://archive.gothic-online.com/forum-23.html)
+---- Thread: Lista parametrów (/thread-2284.html)

Pages: 1 2 3 4 5 6


RE: Lista parametrów - Toworish - 18.01.2018

Tak dokładnie. Trzeba też pamiętać że jest to liczone od 0
więc: jeśli liczba slotów naszego serwera wynosi 32 to:

pierwszy gracz będzie miał ID: 0 a ostatni gracz będzie miał ID:31

a, pierwszy npc będzie miał ID:32 no i następne coraz wyższe.


RE: Lista parametrów - Ozaru - 18.01.2018

To to wiadomo hmmm chyba znów się nie sprecyzowałem xD Chodzi ogólnie o to,że mam taki kod:

function onPlayerDead(pid, kid)
{
if (kid == -1)
setLevel(pid, 1);
}

addEventHandler("onPlayerDead", onPlayerDead);

I kiedy nasz wilczek nas ubije to dostajemy lv,więc wartość minus jeden nie jest wyznacznikiem ID?


RE: Lista parametrów - Quarchodron - 18.01.2018

no nie Big Grin Określ to za pomocą getPlayerName(kid) == "Wilczek" i masz wilczka zabójce
Ale tak ten kid powinnien być id wilczka czyli np. 32.


RE: Lista parametrów - Patrix - 18.01.2018

Z tego co mi wiadomo, to client-side'owy event "onPlayerDead" ma tylko jeden argument, (przykład z defaultowego skryptu npc.nut)

Squirrel Script
  1. local function deadHandler(pid)
  2. {
  3. print ("Die: " + pid);
  4.  
  5. if (pid == wolf)
  6. {
  7. unspawnNpc(pid);
  8. spawnWolf();
  9. }
  10. }
  11.  
  12. addEventHandler("onPlayerDead", deadHandler);





RE: Lista parametrów - Toworish - 19.01.2018

Tak jak kolega Patrix powiedział. W Najnowszej wersji G2O ten callback jest po stronie serwera a nie klienta, i posiada tylko jeden argument, jak ziom wyżej pokazał, a ty używasz starszej wersji clienta G2O.
Oczywiście to nie twoja wina, zwyczajnie Admini etc mają wyjebane na to wszystko Smile


RE: Lista parametrów - Marko - 19.01.2018

Nie wyprowadzaj z błędu, jak sam jesteś w błędzie... Wydarzenie "onPlayerDead" jest dostępne zarówno po stronie serwera, jak i po stronie klienta. Z tym, że po stronie serwera posiada ono dwa argumenty, a po stronie klienta tylko jeden. Co do Twojego problemu - Ozaru:
Identyfikatorów nie można zmieniać, są one przydzielane automatycznie, licząc od maksymalnej liczby slotów przydzielonych dla graczy-1. Przykład:

Server:
Code:
function oPD(pid, kid){
    if(getPlayerName(kid) == "test" || kid >= getMaxSlots()){
        callClientFunc(pid, "sL");
    }//wysyłanie pakietu
}addEventHandler("onPlayerDead", oPD);

Client:
Code:
function sL(){
    setLevel(heroId, getLevel() + 1);
}//odbieranie pakietu

Edit: Przykład dostosowany do Twojej wypowiedzi:
Quote:I kiedy nasz wilczek nas ubije to dostajemy lv,więc wartość minus jeden nie jest wyznacznikiem ID?
P.S: Argument "kid" ma watość -1 tylko wtedy, gdy sprawca nie jest znany, np. śmierć poprzez upadek lub za pomocą skryptu, a konkretnie funkcji "setPlayerHealth".


RE: Lista parametrów - Ozaru - 20.01.2018

Ale ten kod działa:

function onPlayerDead(pid, kid)
{
if (kid == -1)
setLevel(pid, 1);
}

addEventHandler("onPlayerDead", onPlayerDead);

Kiedy wilczek nas ubije to mamy lv,tylko nie rozumiem co oznacza -1 bo np kiedy chcę dodać pid zamiast tego -1 to nic się nie dzieje,tak jakby działało to tylko w jedną stronę.


RE: Lista parametrów - Toworish - 20.01.2018

(20.01.2018, 02:32)Ozaru Wrote: Ale ten kod działa:

function onPlayerDead(pid, kid)
{
if (kid == -1)
setLevel(pid, 1);
}

addEventHandler("onPlayerDead", onPlayerDead);

Kiedy wilczek nas ubije to mamy lv,tylko nie rozumiem co oznacza -1 bo np kiedy chcę dodać pid zamiast tego -1 to nic się nie dzieje,tak jakby działało to tylko w jedną stronę.

Em. Nie zauważyłem wtedy tego callbacka, sorry mój błąd.

Ta funkcja nie działa, nie wiem dlaczego sądzisz że działa, ale sprawdzałem z ciekawości i nie działa Smile

w plikach serwera w example/npc.nut masz przykład użycia tego callbacka po stronie klienta, a wygląda on tak:
Code:
local function deadHandler(pid)
{
    print ("Die: " + pid);

    if (pid == wolf)
    {
        unspawnNpc(pid);
        spawnWolf();
    }
}

addEventHandler("onPlayerDead", deadHandler);
No i tu masz 1 argument. ID stworzenia które zdechnie, jak widzisz to id jest printowane za każdym razem gdy umrzesz ty, lub wilk.

To znaczy że: Jeśli wilk zabije ciebie, to wyprintuje ci "Die: twoje id" a jeśli ty zabijesz wilka to wyprintuje ci "Die: id wilka"

no i masz warunek że jeśli ID zabitego to id wilka. To wtedy go odspawni i wywoła spawn spowrotem.

przykładowo:
 robisz sobie zmienną local wolf = null; to jest zmienna twojego wilka.
potem w onInit czyli po wejściu do gry sobie robisz takie coś: 
wolf = createNpc("wilk");
print("ID wilka to: "+wolf);
wyświetli "ID wilka to: id wilka"

czyli zmienna do której przypisujesz NPC zwraca jego id.

przeanalizuj se ten plik npc.nut


Ogólnie to Marko dobrze cie nakierował, aczkolwiek nie wiem czy serwer odczyta ID wyższe od max slotów skoro npc nie są zsynchronizowane.


RE: Lista parametrów - Marko - 20.01.2018

W przypadku kiedy popełnimy błąd przy tworzeniu wydarzenia w skrypcie, np. podamy błędną ilość argumentów, tak jak Ty to zrobiłeś, to nie otrzymamy żadnych błędów, ale i żadnych rezultatów, jeśli chodzi o instrukcje w nim umieszczone. Jedno jest pewne... Podajesz inny przykład, niż ten którego użyłeś lub w zaparte kłamiesz i marnujesz nasz czas. Umiesz czytać ze zrozumieniem? Nie ma opcji, by ten Twój przykład działał. Znasz w ogóle różnice pomiędzy stroną serwera, a klienta?

Używając tylko strony klienta możesz to zrobić tak:
Code:
function oPDclient(playerid){
    if(getPlayerName(playerid) == "Wilczek" && playerid >= 32){
        setLevel(heroId, getLevel() + 1);
    }//"heroId", to stała, która określa nasz identyfikator po stronie klienta
}addEventHandler("onPlayerDead", oPDclient);
Ten przykład ukazuje, jak zrobić, żeby otrzymywać poziom za każdego zabitego bota z nazwą Wilczek, który ma ID wyższe, niż 31, z tym, że wszyscy go dostaną.


RE: Lista parametrów - Ozaru - 20.01.2018

Wielkie dzięki Marko! I wszystkim za pomoc,właśnie o to mi chodziło ^^ ^^

PS:Tam ta funkcja działa ponieważ dodałem wcześniej po stronie servera i clienta funkcję setLevel,nie macie jej dodanej dlatego wam nie działa.