26.12.2015, 12:11
(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ń:
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:callClientFunc(pid, "setPosition", x, y, z);
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.Code:local test = callClientFunc(pid, "getWorld");
print(test);
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.