Guest User

Logsystem von cHaOsFaTz

a guest
Oct 17th, 2011
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.03 KB | None | 0 0
  1. /*
  2.  
  3. //————————————————————————————————————————————————————————————————————————————————————————————————————
  4. // Copyright
  5. //————————————————————————————————————————————————————————————————————————————————————————————————————
  6.  
  7. Das Copyright darf unter keinen Umständen entfernt werden.
  8. Falls Änderungen vorgenommen werden oder sogar das Copyright
  9. entfernt wird, sehe ich mich gezwungen rechtliche Schritte
  10. einzuleiten und dies zur Anzeige zubringen.
  11. Jegliche Weitergabe des Scriptes ob nun Verkauf oder Download
  12. wird ebenfalls zur Anzeige gebracht.
  13.  
  14. //————————————————————————————————————————————————————————————————————————————————————————————————————
  15. // Scripter
  16. //————————————————————————————————————————————————————————————————————————————————————————————————————
  17.  
  18. [uL]cHaOsFaTz
  19.  
  20. //————————————————————————————————————————————————————————————————————————————————————————————————————
  21. // Aktuelle Version
  22. //————————————————————————————————————————————————————————————————————————————————————————————————————
  23.  
  24. Die aktuelle Version ist 1.0 Beta
  25.  
  26. //————————————————————————————————————————————————————————————————————————————————————————————————————
  27. // Bugs
  28. //————————————————————————————————————————————————————————————————————————————————————————————————————
  29.  
  30. * wenn Spieler sich selber umbringt wird 255 angezeigt ( sollte aber jeder kennen )
  31. * Logs werden nicht sortiert in der Datenbank ( am Besten selber sortieren nach Uhrzeit )
  32. * beim Dialog sagt er nicht, das es bereits aktivert wurde ( baue noch eine bessere Funktion ein )
  33.  
  34. //————————————————————————————————————————————————————————————————————————————————————————————————————
  35. // Aktueller Stand
  36. //————————————————————————————————————————————————————————————————————————————————————————————————————
  37.  
  38. 17.10.2011 04:16 Zeilen 354 * neue .pwn Datei erstellt
  39. 17.10.2011 04:32 Zeilen 380 * unwichtige public Bereiche entfernt und das Logsystem angefangen
  40. 17.10.2011 06:27 Zeilen 439 * alles soweit getestet und soweit für gut erklärt ;)
  41. 17.10.2011 06:31 Zeilen 364 * ein paar Feinheiten noch vorgenommen und ausgiebig testet
  42. 17.10.2011 06:50 Zeilen 369 * Abfragen verbessert und Dialog eingefügt zum aktivieren und deaktivieren der Logs
  43. 17.10.2011 07:11 Zeilen 330 * die Debugfunktion eingefügt, Code optimiert und alles nochmals getestet
  44. 17.10.2011 07:32 Zeilen 356 * noch einen Bug behoben und noch eine neue Funktion eingefügt
  45.  
  46. //————————————————————————————————————————————————————————————————————————————————————————————————————
  47. // Datenbankstruktur
  48. //————————————————————————————————————————————————————————————————————————————————————————————————————
  49.  
  50. Ihr benötigt KEINE Datenbankdatei von mir, da das System beim Laden prüft, ob die
  51. Struktur vorhanden ist. Falls die nicht da ist, erstellt das System die automatisch.
  52.  
  53. */
  54.  
  55. #include <a_samp> // Standard SAMP
  56. #include <a_mysql> // MYSQL Datenbankverbindung
  57. #include <ocmd> // vereinfachte Befehle
  58.  
  59. #pragma tabsize 0 // Zeileneinrückung ignorieren
  60.  
  61. #define MYSQL_Hostname "IPADRESSE" // IP Adresse oder Hostname
  62. #define MYSQL_Benutzername "BENUTZERNAME" // Benutzername der Datenbank
  63. #define MYSQL_Datenbank "DATENBANK" // Name der Datenbank
  64. #define MYSQL_Passwort "PASSWORT" // Passwort der Datenbank
  65.  
  66. #define DIALOG_Logsystem_Hauptmenue 1 // DialogID 1 ( falls schon verwendet wird, bitte ändern
  67. #define DIALOG_Logsystem_Einstellungen 2 // DialogID 2 ( falls schon verwendet wird, bitte ändern
  68.  
  69. #define FARBE_Gruen 0x9EC73DAA
  70. #define FARBE_Rot 0xFF0000FF
  71.  
  72. #define Maximale_Logs 2500 // Anzahl der maximalen Logs die gespeichert werden können
  73.  
  74. new Logsystem_String[255],Logsystem_IPAdresse[32],Logsystem_MYSQLStruktur[512];
  75. new Jahr,Monat,Tag,Stunde,Minute,Sekunde;
  76.  
  77. forward Logsystem_Struktur();
  78. forward Warnung_Logs();
  79.  
  80. //————————————————————————————————————————————————————————————————————————————————————————————————————
  81. public OnFilterScriptInit()
  82. //————————————————————————————————————————————————————————————————————————————————————————————————————
  83.  
  84. {
  85. MYSQL_Datenbankverbindung();
  86. mysql_debug(0); // 0 = Debug deaktiviert 1 = Debug aktiviert ( hilfreich wenn Fehler auftreten )
  87.  
  88. print("——————————————————————————————————————————————————————————————————————\n");
  89. print("Logsystem von [uL]cHaOsFaTz\nAktuelle Version : 1.0 Beta\n");
  90. print("——————————————————————————————————————————————————————————————————————\n");
  91. print("Logsystem wurde erfolgreich geladen und kann nun verwendet werden.\n");
  92. print("——————————————————————————————————————————————————————————————————————");
  93.  
  94. Logsystem_Struktur(); // erstellt die Datenbankstruktur falls noch nicht vorhanden
  95.  
  96. new playerid;
  97. GetPlayerIp(playerid,Logsystem_IPAdresse,sizeof(Logsystem_IPAdresse));
  98. gettime(Stunde, Minute, Sekunde);
  99. getdate(Jahr, Monat, Tag);
  100. mysql_query("SELECT NULL FROM logsystem");
  101. mysql_store_result();
  102. new rows = mysql_num_rows();
  103. mysql_free_result();
  104. new LogsystemID = rows++;
  105. if(LogsystemID < Maximale_Logs)
  106. {
  107. MYSQL_Ueberpruefung();
  108. format(Logsystem_String, sizeof(Logsystem_String), "INSERT INTO logsystem (ID,Datum,Uhrzeit,Spielername,Funktion,Aktion,IP) VALUES ('%d','%02d.%02d.%d','%02d:%02d:%02d','keiner','Server','Server wurde gestartet','keine')",LogsystemID,Tag,Monat,Jahr,Stunde,Minute,Sekunde,Spielername(playerid),Logsystem_IPAdresse);
  109. mysql_query(Logsystem_String);
  110. } else { print("Es sind zu viele Logs vorhanden."); print("Bitte lösche ein paar Logs oder ändere die Anzahl der Logs im Script.");}
  111. return 1;
  112. }
  113.  
  114. //————————————————————————————————————————————————————————————————————————————————————————————————————
  115. public OnFilterScriptExit()
  116. //————————————————————————————————————————————————————————————————————————————————————————————————————
  117.  
  118. {
  119. return 1;
  120. }
  121.  
  122. //————————————————————————————————————————————————————————————————————————————————————————————————————
  123. public OnPlayerConnect(playerid)
  124. //————————————————————————————————————————————————————————————————————————————————————————————————————
  125.  
  126. {
  127. GetPlayerIp(playerid,Logsystem_IPAdresse,sizeof(Logsystem_IPAdresse));
  128. gettime(Stunde, Minute, Sekunde);
  129. getdate(Jahr, Monat, Tag);
  130. mysql_query("SELECT NULL FROM logsystem");
  131. mysql_store_result();
  132. new rows = mysql_num_rows();
  133. mysql_free_result();
  134. new LogsystemID = rows++;
  135. if(LogsystemID < Maximale_Logs)
  136. {
  137. MYSQL_Ueberpruefung();
  138. format(Logsystem_String, sizeof(Logsystem_String), "INSERT INTO logsystem (ID,Datum,Uhrzeit,Spielername,Funktion,Aktion,IP) VALUES ('%d','%02d.%02d.%d','%02d:%02d:%02d','%s','Verbindung','Spieler verbindet sich','%s')",LogsystemID,Tag,Monat,Jahr,Stunde,Minute,Sekunde,Spielername(playerid),Logsystem_IPAdresse);
  139. mysql_query(Logsystem_String);
  140. } else { print("Es sind zu viele Logs vorhanden."); print("Bitte lösche ein paar Logs oder ändere die Anzahl der Logs im Script.");}
  141. return 1;
  142. }
  143.  
  144. //————————————————————————————————————————————————————————————————————————————————————————————————————
  145. public OnPlayerDisconnect(playerid, reason)
  146. //————————————————————————————————————————————————————————————————————————————————————————————————————
  147.  
  148. {
  149. GetPlayerIp(playerid,Logsystem_IPAdresse,sizeof(Logsystem_IPAdresse));
  150. gettime(Stunde, Minute, Sekunde);
  151. getdate(Jahr, Monat, Tag);
  152. mysql_query("SELECT NULL FROM logsystem");
  153. mysql_store_result();
  154. new rows = mysql_num_rows();
  155. mysql_free_result();
  156. new LogsystemID = rows++;
  157. if(LogsystemID < Maximale_Logs)
  158. {
  159. MYSQL_Ueberpruefung();
  160. format(Logsystem_String, sizeof(Logsystem_String), "INSERT INTO logsystem (ID,Datum,Uhrzeit,Spielername,Funktion,Aktion,IP) VALUES ('%d','%02d.%02d.%d','%02d:%02d:%02d','%s','Verbindung','Spieler hat Server verlassen','%s')",LogsystemID,Tag,Monat,Jahr,Stunde,Minute,Sekunde,Spielername(playerid),Logsystem_IPAdresse);
  161. mysql_query(Logsystem_String);
  162. } else { print("Es sind zu viele Logs vorhanden."); print("Bitte lösche ein paar Logs oder ändere die Anzahl der Logs im Script.");}
  163. return 1;
  164. }
  165.  
  166. //————————————————————————————————————————————————————————————————————————————————————————————————————
  167. public OnPlayerDeath(playerid, killerid, reason)
  168. //————————————————————————————————————————————————————————————————————————————————————————————————————
  169.  
  170. {
  171. GetPlayerIp(playerid,Logsystem_IPAdresse,sizeof(Logsystem_IPAdresse));
  172. gettime(Stunde, Minute, Sekunde);
  173. getdate(Jahr, Monat, Tag);
  174. mysql_query("SELECT NULL FROM logsystem");
  175. mysql_store_result();
  176. new rows = mysql_num_rows();
  177. mysql_free_result();
  178. new LogsystemID = rows++;
  179. if(LogsystemID < Maximale_Logs)
  180. {
  181. MYSQL_Ueberpruefung();
  182. format(Logsystem_String, sizeof(Logsystem_String), "INSERT INTO logsystem (ID,Datum,Uhrzeit,Spielername,Funktion,Aktion,IP) VALUES ('%d','%02d.%02d.%d','%02d:%02d:%02d','%s','%d','%s','%s')",LogsystemID,Tag,Monat,Jahr,Stunde,Minute,Sekunde,Spielername(playerid),reason,Spielername(killerid),Logsystem_IPAdresse);
  183. mysql_query(Logsystem_String);
  184. } else { print("Es sind zu viele Logs vorhanden."); print("Bitte lösche ein paar Logs oder ändere die Anzahl der Logs im Script.");}
  185. return 1;
  186. }
  187.  
  188. //————————————————————————————————————————————————————————————————————————————————————————————————————
  189. public OnPlayerText(playerid, text[])
  190. //————————————————————————————————————————————————————————————————————————————————————————————————————
  191.  
  192. {
  193. GetPlayerIp(playerid,Logsystem_IPAdresse,sizeof(Logsystem_IPAdresse));
  194. gettime(Stunde, Minute, Sekunde);
  195. getdate(Jahr, Monat, Tag);
  196. mysql_query("SELECT NULL FROM logsystem");
  197. mysql_store_result();
  198. new rows = mysql_num_rows();
  199. mysql_free_result();
  200. new LogsystemID = rows++;
  201. if(LogsystemID < Maximale_Logs)
  202. {
  203. MYSQL_Ueberpruefung();
  204. format(Logsystem_String, sizeof(Logsystem_String), "INSERT INTO logsystem (ID,Datum,Uhrzeit,Spielername,Funktion,Aktion,IP) VALUES ('%d','%02d.%02d.%d','%02d:%02d:%02d','%s','Chat','%s','%s')",LogsystemID,Tag,Monat,Jahr,Stunde,Minute,Sekunde,Spielername(playerid),text,Logsystem_IPAdresse);
  205. mysql_query(Logsystem_String);
  206. } else { print("Es sind zu viele Logs vorhanden."); print("Bitte lösche ein paar Logs oder ändere die Anzahl der Logs im Script.");}
  207. return 1;
  208. }
  209.  
  210. //————————————————————————————————————————————————————————————————————————————————————————————————————
  211. public OnPlayerCommandText(playerid, cmdtext[])
  212. //————————————————————————————————————————————————————————————————————————————————————————————————————
  213.  
  214. {
  215. GetPlayerIp(playerid,Logsystem_IPAdresse,sizeof(Logsystem_IPAdresse));
  216. gettime(Stunde, Minute, Sekunde);
  217. getdate(Jahr, Monat, Tag);
  218. mysql_query("SELECT NULL FROM logsystem");
  219. mysql_store_result();
  220. new rows = mysql_num_rows();
  221. mysql_free_result();
  222. new LogsystemID = rows++;
  223. if(LogsystemID < Maximale_Logs)
  224. {
  225. MYSQL_Ueberpruefung();
  226. format(Logsystem_String, sizeof(Logsystem_String), "INSERT INTO logsystem (ID,Datum,Uhrzeit,Spielername,Funktion,Aktion,IP) VALUES ('%d','%02d.%02d.%d','%02d:%02d:%02d','%s','Befehl','%s','%s')",LogsystemID,Tag,Monat,Jahr,Stunde,Minute,Sekunde,Spielername(playerid),cmdtext,Logsystem_IPAdresse);
  227. mysql_query(Logsystem_String);
  228. } else { print("Es sind zu viele Logs vorhanden."); print("Bitte lösche ein paar Logs oder ändere die Anzahl der Logs im Script.");}
  229. return 1;
  230. }
  231.  
  232. //————————————————————————————————————————————————————————————————————————————————————————————————————
  233. public OnRconCommand(cmd[])
  234. //————————————————————————————————————————————————————————————————————————————————————————————————————
  235.  
  236. {
  237. new playerid;
  238. GetPlayerIp(playerid,Logsystem_IPAdresse,sizeof(Logsystem_IPAdresse));
  239. gettime(Stunde, Minute, Sekunde);
  240. getdate(Jahr, Monat, Tag);
  241. mysql_query("SELECT NULL FROM logsystem");
  242. mysql_store_result();
  243. new rows = mysql_num_rows();
  244. mysql_free_result();
  245. new LogsystemID = rows++;
  246. if(LogsystemID < Maximale_Logs)
  247. {
  248. MYSQL_Ueberpruefung();
  249. format(Logsystem_String, sizeof(Logsystem_String), "INSERT INTO logsystem (ID,Datum,Uhrzeit,Spielername,Funktion,Aktion,IP) VALUES ('%d','%02d.%02d.%d','%02d:%02d:%02d','%s','RCON','%s','%s')",LogsystemID,Tag,Monat,Jahr,Stunde,Minute,Sekunde,Spielername(playerid),cmd,Logsystem_IPAdresse);
  250. mysql_query(Logsystem_String);
  251. } else { print("Es sind zu viele Logs vorhanden."); print("Bitte lösche ein paar Logs oder ändere die Anzahl der Logs im Script.");}
  252. return 1;
  253. }
  254.  
  255. //————————————————————————————————————————————————————————————————————————————————————————————————————
  256. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  257. //————————————————————————————————————————————————————————————————————————————————————————————————————
  258.  
  259. {
  260. if (dialogid == DIALOG_Logsystem_Hauptmenue && response) { Logsystem_Einstellungen(playerid); }
  261.  
  262. if (dialogid == DIALOG_Logsystem_Einstellungen && response)
  263. {
  264. if(listitem==0) // Logsystem aktivieren
  265. {
  266. if(mysql_connect(MYSQL_Hostname, MYSQL_Benutzername, MYSQL_Datenbank, MYSQL_Passwort))
  267. {
  268. mysql_connect(MYSQL_Hostname, MYSQL_Benutzername, MYSQL_Datenbank, MYSQL_Passwort);
  269. SendClientMessage(playerid, FARBE_Gruen, "Das Logsystem wurde erfolgreich aktiviert.");
  270. } else { SendClientMessage(playerid, FARBE_Rot, "Das Logsystem wurde bereits aktiviert.");}
  271. }
  272.  
  273. if(listitem==1) // Logsystem deaktivieren
  274. {
  275. if(mysql_close(1))
  276. {
  277. mysql_close(1); // * mir ist aktuell keine bessere Möglichkeit eingefallen ;)
  278. SendClientMessage(playerid, FARBE_Gruen, "Das Logsystem wurde erfolgreich deaktiviert.");
  279. } else { SendClientMessage(playerid, FARBE_Rot, "Das Logsystem wurde bereits deaktivert.");}
  280. }
  281. }
  282. return 1;
  283. }
  284.  
  285. stock MYSQL_Datenbankverbindung()
  286. {
  287. mysql_connect(MYSQL_Hostname, MYSQL_Benutzername, MYSQL_Datenbank, MYSQL_Passwort);
  288. if(mysql_ping() == 1)
  289. {
  290. print("Die Verbindung zur MYSQL Datenbank wurde erfolgreich hergestellt!"); return true;
  291. } else { print("Es konnte keine Verbindung zur MYSQL Datenbank hergestellt werden!"); print("Es wird erneut versucht eine Verbindung zur MYSQL Datenbank herzustellen!");
  292.  
  293. mysql_connect(MYSQL_Hostname, MYSQL_Benutzername, MYSQL_Datenbank, MYSQL_Passwort);
  294. if(mysql_ping() == 1) { print("Es konnte im 2 Versuch eine Verbindung zur MYSQL Datenbank hergestellt werden!"); return true;
  295. } else { print("Es konnte keine Verbindung zur MYSQL Datenbank hergestellt werden!"); print("Der Server wird nun beendet"); SendRconCommand("exit"); return true; }
  296. }
  297. }
  298.  
  299. MYSQL_Ueberpruefung()
  300. {
  301. if(mysql_ping() == -1)
  302. mysql_connect(MYSQL_Hostname, MYSQL_Benutzername, MYSQL_Datenbank, MYSQL_Passwort);
  303. }
  304.  
  305. public Logsystem_Struktur()
  306. {
  307. format(Logsystem_MYSQLStruktur,sizeof(Logsystem_MYSQLStruktur),"CREATE TABLE IF NOT EXISTS `logsystem` (`ID` int(4) NOT NULL,`Datum` varchar(12) NOT NULL,`Uhrzeit` varchar(10) NOT NULL,`Spielername` varchar(32) NOT NULL,`Funktion` varchar(256) NOT NULL,`Aktion` varchar(256) NOT NULL,`IP` varchar(16) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;");
  308. mysql_query(Logsystem_MYSQLStruktur);
  309. }
  310.  
  311. stock Spielername(playerid)
  312. {
  313. new NamedesSpieler[MAX_PLAYER_NAME];
  314. GetPlayerName(playerid, NamedesSpieler, MAX_PLAYER_NAME);
  315. return NamedesSpieler;
  316. }
  317.  
  318. stock Logsystem_Einstellungen(playerid)
  319. {
  320. ShowPlayerDialog(playerid, DIALOG_Logsystem_Einstellungen, DIALOG_STYLE_LIST, "{FF0000}Logsystem", "Logsystem aktivieren\nLogsystem deaktivieren", "Weiter", "Abbrechen");
  321. return 1;
  322. }
  323.  
  324. stock Logsystem_Hauptmenue(playerid)
  325. {
  326. ShowPlayerDialog(playerid, DIALOG_Logsystem_Hauptmenue, DIALOG_STYLE_LIST, "{FF0000}Logsystem", "Einstellungen", "Weiter", "Abbrechen");
  327. return 1;
  328. }
  329.  
  330. ocmd:logsystem(playerid, params[])
  331. {
  332. if(IsPlayerAdmin(playerid))
  333. { // prüft ob der Spieler als RCON eingeloggt ist
  334. Logsystem_Hauptmenue(playerid);
  335. }
  336. else
  337. {
  338. SendClientMessage(playerid, FARBE_Rot, "Du hast nicht die Berechtigung diesen Befehl zu benutzen.");
  339. }
  340. return 1;
  341. }
  342.  
  343. /*
  344.  
  345. //————————————————————————————————————————————————————————————————————————————————————————————————————
  346. // Copyright
  347. //————————————————————————————————————————————————————————————————————————————————————————————————————
  348.  
  349. Das Copyright darf unter keinen Umständen entfernt werden.
  350. Falls Änderungen vorgenommen werden oder sogar das Copyright
  351. entfernt wird, sehe ich mich gezwungen rechtliche Schritte
  352. einzuleiten und dies zur Anzeige zubringen.
  353. Jegliche Weitergabe des Scriptes ob nun Verkauf oder Download
  354. wird ebenfalls zur Anzeige gebracht.
  355.  
  356. */
  357.  
Advertisement
Add Comment
Please, Sign In to add comment