Ostatni parametr LoadFileForMe i odpowiedn...
Ogen Dogen
08.03.2014
Witam. Tak więc mam 2 pytania. Pierwsze jak powinno wyglądać użycie funkcji LoadFileForMe ? Mam problem z ostatnim parametrem , nie wiem za bardzo jak uzupełnić a w dokumentacji nie ma przykładu.
Druga rzecz to kiedy używać funkcji is_user_connected żeby kod był optymalny ? Wiem że przed dodaniem broni się sprawdza lub w menu żeby się zabezpieczyć przed wykonaniem na nie istniejącym graczu. Kiedy jeszcze i jak używać żeby nie zostało niepotrzebnie użyte ?
^Grzyboo
08.03.2014
Nie ma co się bać o to is_user_connected. Warto w jakiś eventach itd, tam gdzie przez "przypadek" może się wykonać na niepołączonych graczach. Jeśli Cię bardzo boli optymalizacja to możesz stworzyć zmienną i to ją sprawdzać, zamiast natywu.
new gbConnected[33]; public client_connect(id) gbConnected[id] = true; public client_disconnect(id) gbConnected[id] = false;
Ogólnie unikać niepotrzebnie w prethinku sprawdzania tego, a tak to możesz wrzucać gdziekolwiek chcesz. Lepiej wrzucić, niż potem mieć crashe, albo inne dziwne problemy bez powodu.
Co do LoadFileForMe
to &length: "Variable to store the file length. This may return a number larger than the buffer size".
Jest to zmienna referencyjna, czyli do niej zostanie zwrócona długość pliku. Po prostu tworzysz nową zmienną.
new iReturn; LoadFileForMe(..., ..., ..., iReturn);
Do iReturn zostanie zwrócona owa długość i nic poza tym. Nie ma to żadnego wpływu na działanie funkcji.
Engi
08.03.2014
Druga rzecz to kiedy używać funkcji is_user_connected żeby kod był optymalny ? Wiem że przed dodaniem broni się sprawdza lub w menu żeby się zabezpieczyć przed wykonaniem na nie istniejącym graczu. Kiedy jeszcze i jak używać żeby nie zostało niepotrzebnie użyte ?
Broni nie daje się martwym graczom dlatego możesz użyć po spawnie is_user_alive(id) (automatycznie nie musisz używać is_user_connected bo jeżeli gracz żywy to wiadomo że połączony, kiedyś ktoś o tym pisał na forum) i wtedy rozdać broń. is_user_connected używaj kiedy operujesz na martwym graczu, a is_user_alive na żywym.
Nie dodawaj tego w żadnych prethinkach, jeżeli musisz sprawdzić czy gracz dalej nie żyje albo czy jest połączony do jakiegoś pluginu np do respawnu to ustaw sobie taska
Ogen Dogen
09.03.2014
A czy przy pomocy LoadFileForMe mogę wczytać zawartość plików nvault i statystyk .dat ? Chciałbym zrobić sobie funkcje do backup'u takich plików , bo ze zwykłymi nie byłoby problemów
is_user_connected używaj kiedy operujesz na martwym graczu, a is_user_alive na żywym.
To co zwróci is_user_alive kiedy nie ma gracza w grze ? False , -1 ?
Engi
09.03.2014
To co zwróci is_user_alive kiedy nie ma gracza w grze ? False , -1 ?
Dokumentacji już ci się nie chciało sprawdzać
Funkcja zwraca 1 gdy jest żywy, 0 w pozostałych przypadkach.
Ogen Dogen
09.03.2014
Dzięki , plusy dla was. Nurtuje mnie jeszcze jedna kwestia. Co gdy gracza się zwiesi w grze , bo np. miał problem z łączem a cały czas stoi na respie. Wtedy is_user_alive zwróci true , wykona kod a gracz przecież jest nie połączony. Chyba że to tak samo się zachowuje
Engi
09.03.2014
Wydaje mi się, że gracz który ma laga (wisi w powietrzu na respie np.) jest traktowany jako połączony i żywy, wnioskuję tym że da się go slapować (zawsze sprawdzam zanim wykopie takiego gracza właśnie slapem, jak wisi w powietrzu to kick), serwer wyrzuca go zazwyczaj sam po 30 sekundach (bodajże ustawiane w server.cfg ale ręki uciąć nie dam) z powodem "connection time out" czy jakoś tak.
Należy jeszcze zwrócić uwagę, że gracz który ma laga, zamknie cs'a i wróci na serwer zanim serwer wykopie jego zlagowanego "klona" będzie miał zmieniony nick z dodanym (1), będzie się "gryzło" z zapisem na nick póki zlagowany "klon" nie zostanie wyrzucony z serwera, a gracz nie zrobi reconnecta
Co do kopiowania plików poczekaj na TibacK'a, kiedyś też szukał kodu na kopiowanie pliku .vault ale kazał zamknąć temat, napisałem do niego pw z prośbą o wstawienie tego kodu jeżeli nie jest ściśle tajny