Czas Online
Misiaczek ;c
22.08.2013
jak dodać ta flage admina ?
standardowa flaga admina to D czyli Banowanie
, w next wersj(o ile mozna to tak nazwać <lol>) dodam define dla flagi zeby wam łatwiej było ![]()
apTmusic
22.08.2013
adhek
14.09.2013
BlackDead
06.10.2013
Godziny spędzone na serwerze Wystapil blad biblioteki PDO: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '<mojhost>' (111)Co mam zrobić z tym ?
zamiast twojego hosta wpisz "localhost" u mnie nie działało na dobrym hoscie,tylko na localhost zadziałało.
A ja mam problem inny,Statystyki mi się nie wyświetlają : http://cs-staraszkola.pl/staty/
Wgle do bazy się nic nie dodaje.Może wie ktoś w czym problem? Mam to postawione na proserwer.
W pluginie dodałem dobre dane.Pomoże ktos?
DEADP00L
06.10.2013
@BlackDead
Spróbuj dodać IP serwera bez portu na proserwer.pl w cpanelu a dokładniej w "Menadżer zdalnego połączenia MySQL"
Misiaczek ;c
08.10.2013
Informacja
W Drodze jest aktualizacja do wersji 1.4.0 w której będzie poprawiony zapis SQL oraz zmieniona metoda zapisu przez co skrypt powinnien lepiej działać
Misiaczek ;c
09.10.2013
Informacja
Wersjia 1.4.0 jest gotowa, lecz trzeba ją przetestowac, zapis został od nowa napisany przez co teraz powinno byc lepiej ![]()
BlackDead
09.10.2013
MisieQ wstawisz tu wersję 1.4.0 ? ![]()
CBeebies,nie pomogło.Ja mam i tak dodane % więc wszystkie ip mogą się łaczyć.
Ale w logach znalazłem coś
L 10/09/2013 - 23:59:34: [aktywnosc_adminow.amxx] SQL Insert error: Column 'authid' cannot be null
Wie ktoś o co chodzi?
Użytkownik BlackDead edytował ten post 09.10.2013 23:07
Misiaczek ;c
10.10.2013
Wersja 1.4.0
Aby zaaktualizowac plugin nistety musimy wyczyscic baze danych z tabel
poniewaz zostaly one troche zmieniony przez co nie współgrają z starym zapisem ![]()
Wersja 1.4.0
Aktywność Adminów.rar 124,05 KB
103 Ilość pobrań
Błędy/Bugi/Problemy
Znalezione błędy prosze zgłaszać w temacie ![]()
robsone
10.10.2013
Co wpisać w pliku aktywnosc_adminow.sma w polu host bazy danych bo localhost nie działa ?
BlackDead
10.10.2013
jak masz na proserwer to np. www.nazwastrony.xaa.pl
Jak masz na innym hostingu to poszukaj na stronie.
GwynBleidD
10.10.2013
Plugin zacny, ale jest się do czego przyczepić... A ja lubię się czepiać, więc...
1. Spora część osób wykorzystywałaby ten skrypt do kontrolowania czy admin gra na serwerze. Przy tak rozwiązanym pluginie wymagałoby to co jakiś czas zanotowania ile kto przegrał do tej pory. Wygodniej by było, gdyby plugin przygotował od razu zestawienia dzienne, tygodniowe lub miesięczne. Wystarczy zamiast zapisywać czas dla każdego z graczy w 1 wierszu tabeli, zapisać dla każdego wiersza ile przegrała dana osoba w danym dniu. Wtedy kluczem unikalnym by była para nick-data. No i odpadają kolumny firstvisit i lastvisit.
2. Po co właściwie admini i gracze zostali rozdzieleni na 2 osobne tabele?
3. Widzę tutaj działalność mojego poradnika, niestety nie do końca... a szkoda, za chwilę wyjaśnię dlaczego.
4. Studium przypadku: mamy 32 osobowy serwer zapełniony po brzegi (HLTV nie ma, aby trochę wzmocnić dramaturgię i nie marnować 1 slota
), następuje zmiana mapy... kto jest obeznany w temacie wie, że przy zmianie mapy wszyscy gracze dostają reconnecta, więc serwer wywołuje 32x client_disconnect, co rodzi 32 zapytania SQL. Ojj... 32 zapytania na raz... to już trochę jest...
Zapytanie INSERT zostało zaprojektowane tak, aby za jednym zamachem wrzucić do bazy danych dowolną (dla naszego przypadku przyjmujemy, że dowolną, choć limity jakieś są...) ilość rekordów. Dotyczy to również odmiany z ON DUPLICATE KEY UPDATE. Składnia jest prosta i wielu osobom znana ![]()
Skoro istnieje taka możliwość to dlaczego z niej nie skorzystać i nie wrzucić wszystkich graczy w jednym zapytaniu? I tu wychodzi nie do końca zastosowanie się do tego, co pisałem w poradniku. Chodzi mi ściślej o to:
`time` = `time`+VALUES(`time`)
Pozwala to właśnie na użycie ON DUPLICATE KEY UPDATE z operacją od razu na wielu wierszach.
5. po kie licho na prosty tekst "admin" lub "users" wykorzystywany jest 512 znakowy bufor? Po kie licho ten bufor właściwie? nie prościej wrzucić już przy samej budowie zapytania tego kodu:
((get_user_flags(id) & FLAGA) ? "admin" : "users")
zamiast zapisywać najpierw tą wartość do bufora?
6. Następny przykład biegu wydarzeń: crash serwera... no i tracimy wszystko, co akurat ludzie przegrali... niech ten chrash będzie tuż przed zmianą mapy, to już trochę czasu w plecy przegranego jest... Niech crashe powtarzają się tak z 5x dziennie, to już jest naprawdę sporo... A można przecież zapisywać co chwilkę, np co 3 minuty wszystkich graczy na serwerze do bazy danych i po kłopocie, tracimy tylko maksymalnie 3 minuty przy każdym crashu wtedy.
No i wykonywanie tego co jakiś czas pozwala nam zintegrować to, o czym wspomniałem w punkcie 4. Wystarczy nie wykonywać nigdy zapytania w client_disconnect, ale w tasku i w plugin_end (tu trzeba pamiętać, że w plugin_end NIE WOLNO wykonywać ThreadQuery, należy to zrobić w "zwykły" sposób i nie ma obaw, że lag serwera nastąpi, nie będzie on dla graczy zauważalny). client_disconnect dalej będzie wykorzystywany, ale tym razem do "dopisywania" wychodzących graczy do zapytania, aby wszystko działało co najmniej jak wcześniej.
Taka garść konstruktywnej krytyki ![]()
Misiaczek ;c
10.10.2013
Zostanie do ulepszone w nastepnej wersji
tak jak mówiłem wersja 1.4.0 to taka RC ![]()
BlackDead
10.10.2013
Dalej mam problem.Dane dodają się do tabel: users i admins,ale na stronie się nie wyświetla nic : http://cs-staraszkola.pl/staty/
Mój config.php:
<?php $dbhost = "localhost"; #host bazy danych $dbuser = "csstaras_pb"; #użytkownik bazdy danych $dbpassword = "************"; #hasło bazy danych $dbname= "csstaras_paintball"; #nazwa bazy danych $limit = 20; #ilość wyników na stronę ?>
Jest połączenie z baza,ponieważ nie ma errorów na stronie (gdy np. wpisze inne hasło,są błędy)
Wie ktoś w czym problem?Może na proserwer to nie działa?
Testował ktoś?
freetu
10.10.2013
No chyba coś jest jednak nie tak.
Świeżo wgrałem wersję 1.4.0 i tak jak u poprzednika nie wyświetlają się żadne wyniki, a dane do bazy danych się zapisują, bo widzę wpisy.
http://aktywnosc.patologia.net.pl/
Nie korzystam z hostingu proserwer.
Dwa razy zmieniłem mapę (dla testu) i wypluło mi takie error logi:
L 10/10/2013 - 23:06:53: Start of error session. L 10/10/2013 - 23:06:53: Info (map "de_aztec") (file "addons/amxmodx/logs/error_20131010.log") L 10/10/2013 - 23:06:53: String formatted incorrectly - parameter 7 (total 6) L 10/10/2013 - 23:06:53: [AMXX] Displaying debug trace (plugin "aktywnosc_adminow.amxx") L 10/10/2013 - 23:06:53: [AMXX] Run time error 25: parameter error L 10/10/2013 - 23:06:53: [AMXX] [0] aktywnosc_adminow_1800146.sma::SQL_SaveData (line 138) L 10/10/2013 - 23:06:53: [AMXX] [1] aktywnosc_adminow_1800146.sma::client_disconnect (line 89) L 10/10/2013 - 23:06:53: String formatted incorrectly - parameter 7 (total 6) L 10/10/2013 - 23:06:53: [AMXX] Displaying debug trace (plugin "aktywnosc_adminow.amxx") L 10/10/2013 - 23:06:53: [AMXX] Run time error 25: parameter error L 10/10/2013 - 23:06:53: [AMXX] [0] aktywnosc_adminow_1800146.sma::SQL_SaveData (line 138) L 10/10/2013 - 23:06:53: [AMXX] [1] aktywnosc_adminow_1800146.sma::client_disconnect (line 89)
BlackDead
10.10.2013
U mnie te same errory
L 10/10/2013 - 23:15:03: Start of error session. L 10/10/2013 - 23:15:03: Info (map "aim_headshot") (file "addons/amxmodx/logs/error_20131010.log") L 10/10/2013 - 23:15:03: String formatted incorrectly - parameter 7 (total 6) L 10/10/2013 - 23:15:03: [AMXX] Displaying debug trace (plugin "aktywnosc_adminow.amxx") L 10/10/2013 - 23:15:03: [AMXX] Run time error 25: parameter error L 10/10/2013 - 23:15:03: [AMXX] [0] aktywnosc_adminow_1799634.sma::SQL_SaveData (line 138) L 10/10/2013 - 23:15:03: [AMXX] [1] aktywnosc_adminow_1799634.sma::client_disconnect (line 89) L 10/10/2013 - 23:15:03: String formatted incorrectly - parameter 7 (total 6) L 10/10/2013 - 23:15:03: [AMXX] Displaying debug trace (plugin "aktywnosc_adminow.amxx") L 10/10/2013 - 23:15:03: [AMXX] Run time error 25: parameter error L 10/10/2013 - 23:15:03: [AMXX] [0] aktywnosc_adminow_1799634.sma::SQL_SaveData (line 138) L 10/10/2013 - 23:15:03: [AMXX] [1] aktywnosc_adminow_1799634.sma::client_disconnect (line 89)
Użytkownik BlackDead edytował ten post 10.10.2013 22:23
Misiaczek ;c
11.10.2013
Zamieńcie
public SQL_SaveData(id) {
if(!gConnect[id])
return;
copy(szBuffer[0], charsmax(szBuffer[]), ((get_user_flags(id) & FLAGA) ? "admin" : "users"));
new temp[2048];
formatex(temp, charsmax(temp), "UPDATE `%s` SET `time` = %d, `lastvisit` = %d WHERE `nick` = '%s'", szBuffer[0], gTime[id], get_systime());
if(g_SqlTuple)
SQL_ThreadQuery(g_SqlTuple, "Query", temp);
}
na
public SQL_SaveData(id) {
if(!gConnect[id])
return;
copy(szBuffer[0], charsmax(szBuffer[]), ((get_user_flags(id) & FLAGA) ? "admin" : "users"));
new temp[2048];
formatex(temp, charsmax(temp), "UPDATE `%s` SET `time` = %d, `lastvisit` = %d WHERE `nick` = '%s'", szBuffer[0], gTime[id], get_systime(), gGracz[id][Nick]);
if(g_SqlTuple)
SQL_ThreadQuery(g_SqlTuple, "Query", temp);
}
w Załączniku wersja 1.4.1 z usuniętym szBuffer oraz naprawionym errorami, jak odeśpię nocke z pracy to poracuje nad wersja 1.5.0
Załączone pliki
Seba
11.10.2013
Spaprane jest wszystko - plugin amxx zle napisany, nieoptymalny - zbyt duze tablice i nie wszystkie sa potrzebne, do bazy zapisuje to samo co z niej pobralo (dodaje tylko rekord przy wchodzeniu, pozniej wkleja do bazy to samo bo nic nie dolicza). Dodatkowo nie jest zapisywane steamid gracza bo nie jest nigdzie pobierane. Zapytania SQL tez nie sa nalezycie wykonane.
Struktura bazy danych nie jest taka jak byc powinna, pola sa za duze, nie ma sensu uzywac tez dwoch tabel oddzielnych - i jezeli uzywa sie dla ktoregos pola indeksu UNIQUE to nalezy tez po stronie aplikacji NALEZYCIE sprawdzac istnienie wpisu
Skrypt na WWW - widac ze jest to wydanie dla troche bardziej zaawansowanych uzytkownikow z miejsca
Sama budowa strony - widac ze z jakiegos gotowca sklejane, blad w stylu - na dole zawsze wyswietla sie pasek. Sklejke z gotowca widac w pliku srodek.php, pierw uzywane jest API PDO do polaczenia z baza, a nastepnie w kolejnej istrukcji leciwe API MYSQL i zaraz ponizej znow PDO... tworzy to dwa oddzielne polaczenia do bazy
if(isSet($_GET['page'])) $page = (int)$_GET['page']; else $page = 0;powinno to byc zastapione np. czyms takim
$page = (isset($_GET['page'])) ? (int) $_GET['page'] : 0;Musisz pocwiczyc podstawy bo sa one bardzo wazne
Poprawiaj bledy, wierze ze dasz rade. Tylko testuj dokladnie zanim wydasz publicznie
PS. Na podstawie wersji 1.4.
Użytkownik Seba edytował ten post 11.10.2013 14:21
Misiaczek ;c
11.10.2013
Myslalem ze cos fajnego wyszlo a tutaj lipa totalna... w chwili obecnej ma to mase bledow i nie nadaje sie do poprawnego uzytkownia.
Spaprane jest wszystko - plugin amxx zle napisany, nieoptymalny - zbyt duze tablice i nie wszystkie sa potrzebne, do bazy zapisuje to samo co z niej pobralo (dodaje tylko rekord przy wchodzeniu, pozniej wkleja do bazy to samo bo nic nie dolicza). Dodatkowo nie jest zapisywane steamid gracza bo nie jest nigdzie pobierane. Zapytania SQL tez nie sa nalezycie wykonane.
Struktura bazy danych nie jest taka jak byc powinna, pola sa za duze, nie ma sensu uzywac tez dwoch tabel oddzielnych - i jezeli uzywa sie dla ktoregos pola indeksu UNIQUE to nalezy tez po stronie aplikacji NALEZYCIE sprawdzac istnienie wpisu
Skrypt na WWW - widac ze jest to wydanie dla troche bardziej zaawansowanych uzytkownikow z miejscabo w laczeniu sie przez PDO na sztywno wpisany masz port 3305, przez co po wpisaniu danych w pliku konfiguracyjnym PHP probuje sie laczyc z serwerem MySQL na porcie 3305. Domyslnym portem dla MySQL jest 3306 i takiego wlasnie portu uzywa ponad 90% firm hostingowych.
Sama budowa strony - widac ze z jakiegos gotowca sklejane, blad w stylu - na dole zawsze wyswietla sie pasek. Sklejke z gotowca widac w pliku srodek.php, pierw uzywane jest API PDO do polaczenia z baza, a nastepnie w kolejnej istrukcji leciwe API MYSQL i zaraz ponizej znow PDO... tworzy to dwa oddzielne polaczenia do bazyPoza tym wiele podstawowych bledow, widac brak doswiadczenia w programowaniu np w takim kodzie
if(isSet($_GET['page'])) $page = (int)$_GET['page']; else $page = 0;powinno to byc zastapione np. czyms takim$page = (isset($_GET['page'])) ? (int) $_GET['page'] : 0;Musisz pocwiczyc podstawy bo sa one bardzo waznebo inaczej zaraz wychodzi spaghetti code.
Poprawiaj bledy, wierze ze dasz rade. Tylko testuj dokladnie zanim wydasz publicznie
PS. Na podstawie wersji 1.4.
Seba WWW nie było przeze mnie pisane tylko przez osobe trzecia ;] autora www masz podanego ![]()
Zapis w pluginie jest przepisywany, na bardziej optymalniejszy oraz ogolnie poprawiam kod, tutaj tylko szybka poprawka bez zadnych optymalizacji bo sam nie wiem kiedy usunelo mi pobieranie steamid
tak to jest jak się ma milion pięcset plików o tej samej nazwie





