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.
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.
|
ta sama "ilosc licznika" po uzyciu komendy retry
#1
Napisano 24.01.2014 21:04
#2
Napisano 25.01.2014 13:30
Najlepiej zrobić zapis nvault bądź mysql, ale z mysql na takie pierdoły będzie zbędny.
#3
Napisano 25.01.2014 13:43
ale mi chodzi o to zeby na nowej mapie juz licznik byl zerowany..
@ps
za co dostalem - ?
#4
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.
Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine
#5
Napisano 29.01.2014 13:48
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#6
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)
Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine
#7
Napisano 29.01.2014 17:01
Poczytaj o trie i array
@topic
Proponuje wykorzystanie trie z zapisem na nick:)
Użytkownik GeDox edytował ten post 29.01.2014 17:02
#8
Napisano 29.01.2014 17:49
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łeI 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 .
new tablica[32];
tak jak to już wyżej zostało napisane.
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.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.
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ś.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)
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