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
 

Zdjęcie

Sprawdzenie czy gracz posiada id skina.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 15.05.2018 12:06

Witam. Mam problem z sprawdzeniem czy gracz posiada id_skina. Otóż gdy gracz kupuje skina to id skina do tablicy Skiny_gracza[33][500];

format(string, charsmax(string), "%i#", ID_Skina_num);
add(Skiny_gracza[id], 499, string, charsmax(string))

Zapis wydaje mi się że dobrze działa bo sprawdzałem go przez nvault editor i id_skinów, które gracz kupił poprawnie się zapisują no ale trochę mam problem ze sprawdzeniem czy gracz posiada akurat to id_skina do którego chce założyć skina. Próbowałem tak:

ArrayGetString(g_ID_Skina, i, ID_Skina, charsmax(ID_Skina));
ID_Skina_num = str_to_num(ID_Skina);

format(sz_ID_Skina, charsmax(sz_ID_Skina), "%i", ID_Skina_num);	
if(containi(Skiny_gracza[id], sz_ID_Skina))

ale przy takim sprawdzeniu gracz wszystkie skiny ma odblokowane. Może go od razu założyć bez wcześniejszego kupowania. Jakieś propozycję, wskazówki co do tego sprawdzenia? Wcześniej używałem Player_skins[id][ID_Skina_num]=true; i wrzucałem to w zapis ale z racji iż do zapisu trafiałoby np. 100 (ilość skinów) pozycji "0" lub "1" to wtedy taki zapis trochę da wycisk serwerowi przy np 1k osób, które wbiją na serwer. Dodatkowo zapis ważył by już dosyć dużo tak że kolejny mankament takiego zapisu. Z góry dzięki za jakakolwiek pomoc.


  • +
  • -
  • 0

#2 FireMachine

    Pomocny

  • Użytkownik

Reputacja: 25
Życzliwy

  • Postów:48
  • GG:
  • Imię:Michał
  • Lokalizacja:Gdańsk
Offline

Napisano 15.05.2018 13:24

Jako, że nie wiem co dokładnie masz na myśli mam nadzieje że poprawnie
 
Skiny zapisujesz w postaci 
 
1#2#5#10#8#120#  (Mniejsza o kolejność)
 
Więc wystarczyło by po pobraniu tego stringu zrobić coś takiego
 

format(string,charsmax(string),"%i#",sz_ID_Skina)
if(containi(Skiny_gracza[id],string)>=0)
{...}

 
U ciebie nie zauważyłem separatora "#" który rozdziela przez co wyszuka dla skina 1 może zweryfikować skin 21 (też jedynka)
 
Swoją drogą takie weryfikowanie też daje w kość serwerowi ciągła weryfikacja stringów.
Z doświadczenia wiem że jak miałby to być GoMod z dużą ilością skinów to lepiej SQL 
 
 
Jeszcze jedna mała wskazówka jak chcesz ograniczyć wielkość zapisu to możesz stosować system binarny ale wtedy są dodatkowe problemy
- Rozdzielanie skinów na serie po 30 
- Dodatkowe utrudnienie w przetrzymywaniu serii i odwołanie się do konkretnej (Wystarczyło by "floatround(NR_SKINU/30.0, floatround_floor);")
- Najlepiej ładowanie z nVault przy logowaniu jak i przy zmianie skinów

- Zapis w tablicy posiadanych skinów lub odwoływanie się binarnie podczas próby wybrania


  • +
  • -
  • 1

Pomogłem?

Zostaw plusa zanim ja postawie plusa nad tobą  :D 


#3 Toldi

    Czempion

  • Autor tematu
  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 15.05.2018 17:47

Dzięki za wskazówki. Co do SQL gdybym go tylko umiał to by było miodzio :D. Mówisz że weryfikowanie też daje w kość serwerowi ale  gdy na serwer będzie wgrane np te 100+ skinów i wbije na serwer 1k+ osób to taki zapis będzie bardzo dużo ważył. W takim przypadku zapis samych id_skinów mocno by wpłynął na wagę pliku. Co do tego separatora to tak właśnie myślałem że gdy gracz będzie posiadał skina o id=2 to odblokuje mu tez skin 20, 21 itd przez tą 2 w liczbie. Okey popróbuję jeszcze może coś z tego wyjdzie. Dzięki za chęci.


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych