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

ta sama "ilosc licznika" po uzyciu komendy retry


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

#1 Oporowiec.

    Zaawansowany

  • Zbanowany

Reputacja: 10
Początkujący

  • Postów:146
  • Imię:Wojtek
  • Lokalizacja:Zadupie
Offline

Napisano 24.01.2014 21:04

siema :)
mam swoj plugin w, ktorym znajduje sie zmienna licznik i nalicza ona ile razy gracz uzyl danej komendy, jest taka mozliwosc zeby "licznik" pozostal ten sam po uzyciu komendy retry lub recconect ?
proszę o przykladowy plugin.


Reset statystyk: http://amxx.pl/topic...statystyk-2014/

 

5392 oraz 6262 Moim autorytetem  :) 


#2 Filip1512

    Wszechmogący

  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 25.01.2014 13:30

Najlepiej zrobić zapis nvault bądź mysql, ale z mysql na takie pierdoły będzie zbędny.


  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#3 Oporowiec.

    Zaawansowany

  • Autor tematu
  • Zbanowany

Reputacja: 10
Początkujący

  • Postów:146
  • Imię:Wojtek
  • Lokalizacja:Zadupie
Offline

Napisano 25.01.2014 13:43

ale mi chodzi o to zeby na nowej mapie juz licznik byl zerowany..

 

@ps

za co dostalem - ?


Reset statystyk: http://amxx.pl/topic...statystyk-2014/

 

5392 oraz 6262 Moim autorytetem  :) 


#4 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 29.01.2014 13:05

To i tak musisz gdzieś  przechowywać te dane, zwykła tablica Ci nie wystarczy.
Gdyż nie masz pojęcia ilu user ów bd wchodziło, chyba że zrobisz ogromną przykładowo 100, do której bd zapisywał nicki.
Tablica 2 wymiarowa -> 1 wymiar = nick 2gi wymiar= "zliczanie';

Tablice przeszukiwałbyś pod względem nicku czy taki nick już istnieje jeżeli tak to ma pobrać z 2giej wartości to "zliczenie" i przypisać do obecnego.
Przy małym serwerze to mogło by zadziałać lecz przy większym nie bardzo,. Jednocześnie trzeba zwrócić uwagę na wydajność( w przypadku optymistycznej wartości jest to  algorytm rzędu n^2) więc mało optymalny.

Jednocześnie mający charakterystyczny błąd -> co w momencie przekroczenia ilości osób w tablicy(więcej osób wejdzie niż tablica ma rozmiar)
Wtedy dla tych kolejnych będzie sypał errorami( wyjście poza tablice)
Dodatkowo "powiększenie tablicy" o kolejne rozmiary, zwiększy czas przeszukiwania jej .

Dlatego albo zapis+odczyt z pliku tekstowego
Bądź nvault/mysql;
W przypadku mysqla -> mniejsze obciążenie dla serwera gdyż zapytania wykonywały by się po stronie serwera mysql.

A przy starcie nowej mapy, wykonywała by się komenda czyszcząca daną tabele w mysqlu.
Więc co nowa mapa= to nowe zliczanie.






 


 


  • +
  • -
  • -1
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 29.01.2014 13:48

Przecież takie dane, można spokojnie zmieścić nawet w tablicy 32-elementowej, tylko trzeba by te elementy usuwać po kilkunastu/dziesięciu sekundach, bo przecież reconnect nie trwa jakoś bardzo długo. Wykorzystywanie do czegoś takiego mysql, to czysta głupota, nawet jak dla mnie nvault/plik też jest złym pomysłem, bo na pewno wydajniej jest wczytywać coś z tablicy niż z czegokolwiek innego.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 29.01.2014 14:14

zapis do tablicy - wartość N

Funkcja  czyszczenia->
Sprawdzająca czy dany gracz jest() (jazda po wszystkich elementach) tablicy -> N
jesli  nie to, to wywołaj -> funkcje czasowa, ze za x sek ma usunąć jego z tablicy z tablicy ->liniowe

[usunięc] rekordu - liniowe


I teraz założenie pesymistyczne, 
A co w momencie gdy przed usunięciem, a wpisaniem nowej wartości tablica się przepełni?
Błąd ? no wiadomo .

Reconnect zależny od sprzętu więc trzeba też wsiąść pod uwagę tą sferę.
Dlatego nie skróci się czasu "usunięcia" poniżej 1s(nawet do wychwycenia funkcji client_connect). A na poważnych serwerowniach w ciągu 1s chce wbić na serwer 5 graczy gdy serwer jest full.

Więc twoja propozycja jest nie wydajna, oraz posiada błędy krytyczne.
Gdyż nie zakłada wszystkich możliwych opcji.
Ps: dziękuje za minus -1 . Chociaż mój post nie złamał regulaminu oraz rozwiązanie podane nie działa na szkodę klienta, a pkt reputacji są dla niektórych zabawką :)
(to też można  podać pod minus)










 


  • +
  • -
  • 0
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#7 GeDox

    Wszechpomocny

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:315
  • Steam:steam
  • Imię:Przemysław
  • Lokalizacja:Kielce
Offline

Napisano 29.01.2014 17:01

@up
Poczytaj o trie i array :)

@topic
Proponuje wykorzystanie trie z zapisem na nick:)

Użytkownik GeDox edytował ten post 29.01.2014 17:02

  • +
  • -
  • 0

#8 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 29.01.2014 17:49

I teraz założenie pesymistyczne, 
A co w momencie gdy przed usunięciem, a wpisaniem nowej wartości tablica się przepełni?
Błąd ? no wiadomo .

Jaki błąd? Jak przy pisaniu kodu nie założysz sobie takiej sytuacji, to oczywiście, będzie błąd, ale czy ja gdzieś napisałem, żeby nie brać tego pod uwagę? Przecież samo napisanie to, że można wykorzystać N elementową tablicę, od razu oznacza, że trzeba się zabezpieczyć przed przepełnieniem, dodatkowo tablice, to nie tylko zwykłe
new tablica[32];

tak jak to już wyżej zostało napisane.
 

Reconnect zależny od sprzętu więc trzeba też wsiąść pod uwagę tą sferę.
Dlatego nie skróci się czasu "usunięcia" poniżej 1s(nawet do wychwycenia funkcji client_connect). A na poważnych serwerowniach w ciągu 1s chce wbić na serwer 5 graczy gdy serwer jest full.

Nie wiem jaki związek miało by tutaj wbijanie graczy na serwer, przecież coś zapisuję się tylko przy wychodzeniu gracza i nawet przy 32 slotach, raczej gracze nie wychodzą częściej niż raz na ok. 10 sekund (albo nawet i więcej), więc bez problemu usuwanie można ustawić na jakieś 5-10 sekund po wyjściu gracza.
 

Więc twoja propozycja jest nie wydajna, oraz posiada błędy krytyczne.
Gdyż nie zakłada wszystkich możliwych opcji.
Ps: dziękuje za minus -1 . Chociaż mój post nie złamał regulaminu oraz rozwiązanie podane nie działa na szkodę klienta, a pkt reputacji są dla niektórych zabawką :)
(to też można  podać pod minus)

O błędach krytycznych napisałem, a to czy jest wydajna, na pewno jest lepszym rozwiązaniem niż "zaprzęganie" do tak prostej czynności mysql. A minus? Nie musisz łamać regulaminu, żeby go dostać, nie musisz też działać na czyjąś szkodę, po prostu mam taką możliwość, więc go dałem, a dlaczego? Wywnioskuj to sobie z moich postów, bo za darmo go nie dostałeś.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





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

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