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
 

NwNwH - zdjęcie

NwNwH

Rejestracja: 29.11.2023
Aktualnie: Nieaktywny
Poza forum Ostatnio: 14.04.2025 23:05
-----

Moje posty

W temacie: AceHost.pl - Hosting serwerów CS 1.6

10.12.2024 15:28

Lepiej postawić serwer na VPS/VDS

W temacie: Bugujące się dane w fvault

15.08.2024 18:28

Ogółem to problem naprawiony, po prostu nie dałem szHelp do parse(szData,
Dzięki za pomoc w innych rzeczach.

W temacie: Bugujące się dane w fvault

13.08.2024 22:50

 


Dlaczego lepiej rozdzielać pluginy i robić natywy? Jest to czasochłonne i niewygodne bo trzeba otwierać ciągle jakiś plik żeby coś innego zedytować

Z konwencji, chociażby. Teorytycznie można zrobić jeden mega wielki plugin, który będzie zawierał w sobie dosłownie wszystko co tylko się da, ale będzie to powodowało błędy chociażby z nazwami zmiennych itd. Podejrzewam, że sam compilator amxxpc ma jakąś ograniczoną liczbę znaków do wykorzystania, ale nigdy się aż tak nie wgłębiałem. Przez dzielenie pluginów łatwiej można zlokalizować błąd (tak jak w twoim przypadku), więc w skrócie: "mniej kodu = szybsze znalezienie błędu (z reguły)".

 


zresztą chodzi mi po prostu o to że tworze np public loadSystem, public loadMisje, public loadOther, tak samo z save i robie to po prostu pod inny plik fvault i wtedy działa. Resetować czyli ustawiać 0 tak?

zapisujesz dane i resetujesz zmienne (czyli ustawiasz 0 / false / 0.0 / "")

 


register_clcmd było by o wiele gorsze, a takto sobie zrobie register_clcmd tylko na say'a i potem equal'em sprawdzam co gracz wpisal i jak nie rozponaje nic to printuje ze nie znaleziono komendy tez mam system mute i prefixy co wlasnie w tej klasie dzialaja

czyli dajesz dodatkowo-zbędną robotę, pobierasz say i co każde wpisanie sprawdzasz kilkanaście razy ifami daną rzecz. Jak dla mnie zbędna rzecz, czasochłonna i nieefektywna. 

 

Jak wszystko dasz do jednego sma i będzie tego bardzo duzo to kompilator moze sie zacinac, ale ja mam po prostu rozrzucone to tak jak napisałem wyżej dla mnie to jest o wiele lepsze niz robienie natywów itd. Nie wiem jakie błędy z nazwami zmiennymi ci chodzi, i te "itd", nigdy nie miałem takiego problemu.

Z racji że mod który robię nie należy do najprościejszych to mam bardzo dużo komend, robienie każdej komendy na register_clcmd by kosztowało o wiele więcej czasu bo nie każda komenda kieruje do jakiejś innej klasy tylko od razu mogę w tym equal'u np wyświetlić motd i po co mam robić specjalnie nową klasę żeby taką drobnostkę zrobić, na serwerze również mam system autoryzacji więc musiałbym w każdej klasie każdej komendy robic warunek czy gracz jest zalogowany a zrobienie tego od razu przy rejestracji clcmd jest chyba niemożliwe ale tego nei jestem pewien, plusem tez jest ze moge zrobic komendy na ! jak w cs go albo na inny prefix taka tam drobnostka. 

W temacie: Bugujące się dane w fvault

13.08.2024 20:09

 

+ słyszałem żeby mieć w jednym pliku wszystko a nie rozdzielać.


To źle słyszałeś. W zasadzie to właśnie powinno się rozdzielać pluginy, a zmienne przekazywać sobie natywami.

Generalnie zaleca się resetować zmienne przy wyjściu gracza na serwerze, a nie zerować w momencie nie znalezienia klucza vault.

Poza tym, wie ktoś jak przechować czas w PlayedAllTime[id], bo zrobiłem dodawanie w client_disconnect ale jak wschodze znowu i wychodze to ustawia sie czas jaki spedzilem na sesji a nie zlicza się
 

if(equal(szMessage, "/eloelo")){
new iTime;
iTime = str_to_num(PlayedAllTime[id]) + (playedTime(id));
ColorChat(id, GREEN, "Czas aktualnej sesji: %d", playedTime(id));
ColorChat(id, GREEN, "Przegrany czas allTime: %d", iTime);
return PLUGIN_HANDLED
}
tak samo komenda mi printuje tylko ten czas z playedTime


w zapisie który wysłałeś nie widzę tam chociażby linijki z kodem od zapisu czasu.

przed zapisem:
PlayedAllTime[id] += get_user_time(index, 0/1)

no i zamiast sprawdzać czy gracz wpisał komendę, to po prostu lepiej jest ją zarejestrować przez register_clcmd

 

Dlaczego lepiej rozdzielać pluginy i robić natywy? Jest to czasochłonne i niewygodne bo trzeba otwierać ciągle jakiś plik żeby coś innego zedytować, zresztą chodzi mi po prostu o to że tworze np public loadSystem, public loadMisje, public loadOther, tak samo z save i robie to po prostu pod inny plik fvault i wtedy działa. Resetować czyli ustawiać 0 tak?

przed zapisem czyli w client_disconnect przed saveSystem(id) ?
Staram się trzymać prawie wszystko w jednym sma i rozdzielać sobie na inne pliki w takim sensie ze np #include "files/saveload.inl" więc register_clcmd było by o wiele gorsze, a takto sobie zrobie register_clcmd tylko na say'a i potem equal'em sprawdzam co gracz wpisal i jak nie rozponaje nic to printuje ze nie znaleziono komendy tez mam system mute i prefixy co wlasnie w tej klasie dzialaja

W temacie: Bugujące się dane w fvault

12.08.2024 22:33

 

 

[quote name="Deus Vult" post="778749" timestamp="1723367785"]
Z tego kodu raczej nic nie wynika, poza tym że jest słabej jakości. Wyślij całość najlepiej.

To znaczy ze zmienne są alokowane daleko poza rzeczywisty rozmiar tablicy. Pokaz fragment kodu który odpowiada za wyświetlenie expa i lvl. Może tam jest problem z błędną konwersją danych?
jeżeli jest problem tylko z dwoma zmiennymi w zapisie to raczej nie szukał bym tu problemu

No z deklarowaniem rozmiaru tablicy to fakt, jak robiłem ten zapis to myślałem ze 33 to id xD, ale nie oznacza to ze od razu jest słabej jakości. To nie jest błąd z konwersją danych, bo wszędzie tak wyświetla ten exp i lvl i w menu broni się zgadza wszystko, gdy rozdzieliłem zapis na 3 pliki fvault to teraz działa prawidłowo, ale wole mieć to w jednym i poznać problem + słyszałem żeby mieć w jednym pliku wszystko a nie rozdzielać.