←  Pluginy AMXX

AMXX.pl: Support AMX Mod X i SourceMod

»

Czas Online

  • +
  • -
City - zdjęcie City 17.08.2013

jak dodać ta flage admina ?

Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 22.08.2013

jak dodać ta flage admina ?

standardowa flaga admina to D czyli Banowanie :P, w next wersj(o ile mozna to tak nazwać <lol>) dodam define dla flagi zeby wam łatwiej było :P

Odpowiedz

  • +
  • -
apTmusic - zdjęcie apTmusic 22.08.2013

L 08/22/2013 - 20:12:47: [aktywnosc_adminow.amxx] SQL Insert error: Incorrect integer value: 'STEAM_0:0:490797837' for column 'id' at row 1
L 08/22/2013 - 20:13:22: [aktywnosc_adminow.amxx] SQL Insert error: Incorrect integer value: 'STEAM_0:0:863802885' for column 'id' at row 1
L 08/22/2013 - 20:13:26: [aktywnosc_adminow.amxx] SQL Insert error: Incorrect integer value: 'STEAM_0:0:341288237' for column 'id' at row 1
L 08/22/2013 - 20:15:45: [aktywnosc_adminow.amxx] SQL Insert error: Incorrect integer value: 'STEAM_0:0:1251268024' for column 'id' at row 1
 
pomóc.
Odpowiedz

  • +
  • -
adhek - zdjęcie adhek 14.09.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 ?

 

Odpowiedz

BlackDead - zdjęcie 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?

Odpowiedz

  • +
  • -
DEADP00L - zdjęcie 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"

Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie 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ć

Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie 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 :D

Odpowiedz

BlackDead - zdjęcie BlackDead 09.10.2013

MisieQ wstawisz tu wersję 1.4.0 ?  :D

 

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
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie 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

Załączony plik  Aktywność Adminów.rar   124,05 KB   103 Ilość pobrań

 

Błędy/Bugi/Problemy

Znalezione błędy prosze zgłaszać w temacie  ;)

 

Odpowiedz

  • +
  • -
robsone - zdjęcie robsone 10.10.2013

Co wpisać w pliku aktywnosc_adminow.sma w polu host bazy danych bo localhost nie działa ?

Odpowiedz

BlackDead - zdjęcie BlackDead 10.10.2013

jak masz na proserwer to np. www.nazwastrony.xaa.pl

Jak masz na innym hostingu to poszukaj na stronie.

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie 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 :D), 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 :)

 

 

Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 10.10.2013

Zostanie do ulepszone w nastepnej wersji :P tak jak mówiłem wersja 1.4.0 to taka RC :P

Odpowiedz

BlackDead - zdjęcie 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ś?

Odpowiedz

  • +
  • -
freetu - zdjęcie 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)
Odpowiedz

BlackDead - zdjęcie 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
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie 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

Odpowiedz

Seba - zdjęcie Seba 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 miejsca :D bo 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 bazy :D Poza 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 wazne :) bo inaczej zaraz wychodzi spaghetti code.

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
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie 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 miejsca :D bo 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 bazy :D Poza 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 wazne :) bo 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 :P

 

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 :blink: tak to jest jak się ma milion pięcset plików o tej samej nazwie


Misiaczek ;c (11.10.2013 14:58):
WWW jak i AMXX zostanie napisane od nowa :F bo po co poprawiac to jak można to napisać lepiej :)

Załączone pliki

Odpowiedz