Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pobieranie świata gracza o podanym id
#1
Witam.

Próbuję stworzyć komendę teleportu do gracza o wybranym ID. Z poziomu serwera jestem w stanie pobrać pozycję gracza, ale nie widzę żadnej funkcji serwera, która pobierałaby świat. Gdyby dało się wywołać funkcję klienta u innego gracza i wyciągnąć od niego informacje, byłoby świetnie, ale nie jestem pewien, czy takie coś jest możliwe.

Istnieje szansa na napisane takiej komendy na obecnym etapie rozwoju projektu, czy powinienem jeszcze poczekać?
#2
Da się, to jest bardzo proste. Poczytaj o callClientFunc i callServerFunc. Mianowicie client po wykrytej zmianie świata może użyć funkcji callServerFunc z id i nazwą świata jako parametrami. Serwer następnie może te nazwy światów trzymać w tablicy/klasie danego gracza.
#3
Rozumiem, że serwer może wykonać funkcję klienta i odwrotnie. Mimo to muszę przyznać, że o ile separacja serwera i klienta ma wyjść na dobre, to mi sprawia to straszną trudność z poziomu logiki kodu, a czasami realizacji. Mój tok myślenia wygląda tak, że parametr id, który gracz przekazuje za pomocą komendy, musi zostać wykorzystany przez serwer, który wykona funkcję klienta getWorld() na kliencie gracza o tym id i zwróci wynik, który zostanie wykorzystany przez gracza wykonującego komendę.

Pisanie kodu sprawiało przyjemność, dopóki nie musiałem tworzyć korelacji pomiędzy klientem i serwerem, ale teraz jest to wręcz frustrujące.

EDIT:
Udało mi się wykonać coś takiego w ramach ćwiczeń:
Code:
callClientFunc(pid, "setPosition", x, y, z);
Przez co przeniosłem gracza o wskazanym pid (wskazałem na siebie, ale powinno działać na innych). Problem pojawia się, gdy funkcja klienta zwraca wartość, na której mi zależy. Następujący zapis:
Code:
local test = callClientFunc(pid, "getWorld");
print(test);
Wyświetla mi jedynie true. Zapewne callClientFunc zwraca true, jeśli wykona funkcję, albo coś takiego. Nie mam zielonego pojęcia, jak wydobyć wartość zwracaną przez funkcję klienta.
#4
Powiedzmy chcesz zwrócić ten WORLD :
SS :
function ...
{callClientFunc(pid, "getWorldek");}
function ...2(value)
{print(value) /// WORLD}
CS :
function getWorldek()
{local get = getWorld();
callServerFunc("...2", get);}

Możesz to to też inaczej zrobić. Jak chcesz coś to pisz pw.
#5
EDIT. Użyj funkcji getPlayerWorld(pid) po stronie serwera Smile
#6
Heh..rzeczywiście taka jestBig Grin. HWDP JP 100%!
#7
(26.12.2015, 01:17)Buras Wrote: Rozumiem, że serwer może wykonać funkcję klienta i odwrotnie. Mimo to muszę przyznać, że o ile separacja serwera i klienta ma wyjść na dobre, to mi sprawia to straszną trudność z poziomu logiki kodu, a czasami realizacji. Mój tok myślenia wygląda tak, że parametr id, który gracz przekazuje za pomocą komendy, musi zostać wykorzystany przez serwer, który wykona funkcję klienta getWorld() na kliencie gracza o tym id i zwróci wynik, który zostanie wykorzystany przez gracza wykonującego komendę.

Pisanie kodu sprawiało przyjemność, dopóki nie musiałem tworzyć korelacji pomiędzy klientem i serwerem, ale teraz jest to wręcz frustrujące.

EDIT:
Udało mi się wykonać coś takiego w ramach ćwiczeń:
Code:
callClientFunc(pid, "setPosition", x, y, z);
Przez co przeniosłem gracza o wskazanym pid (wskazałem na siebie, ale powinno działać na innych). Problem pojawia się, gdy funkcja klienta zwraca wartość, na której mi zależy. Następujący zapis:
Code:
local test = callClientFunc(pid, "getWorld");
print(test);
Wyświetla mi jedynie true. Zapewne callClientFunc zwraca true, jeśli wykona funkcję, albo coś takiego. Nie mam zielonego pojęcia, jak wydobyć wartość zwracaną przez funkcję klienta.

To tak nie działa, trzeba po prostu po stronie clienta stworzyć timer który będzie sprawdzał czy świat się zmienił i jak świat się zmieni, pakiet ma być wysyłany do serwera.
#8
Spokojnie po ogarnięciu dev 6-1, dodam do dev 7 większość funkcji klienta od gracza na stronie serwera. Póki co musicie radzić sobie z wywoływaniem funkcji.
#9
To trochę dziwne, ale getPlayerWorld(pid) nie zwraca mi obecnego świata gracza, tylko defaultowy świat serwera (nawet po zmianie świata). Mimo to myślę, że wreszcie udało mi się napisać chyba działające rozwiązanie.
#10
Pewnie bug, bo były problemy ze światami w obecnej wersji.


Possibly Related Threads…
Thread Author Replies Views Last Post
  Tutorial, jak zrobić pobieranie tekstury .vga z serwera i zastosowanie Matt Reaxx 9 5,948 08.02.2016, 20:18
Last Post: Blacha
  Pobieranie czasu w onWorldChange, zmiana czasu w onWorldEnter Buras 0 1,477 06.01.2016, 14:00
Last Post: Buras

Forum Jump:


Users browsing this thread: 1 Guest(s)