ulbi1990

uStarter

May 25th, 2013
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 24.50 KB | None | 0 0
  1. /*==============================================================================
  2.                                  INCLUDES
  3. ==============================================================================*/
  4.  
  5. #include <a_samp>
  6. #include <irc>
  7. #include <sscanf2>
  8. #include <zcmd>
  9.  
  10. native WP_Hash(buffer[], len, const str[]);
  11.  
  12. /*==============================================================================
  13.                                 IRC RELATED
  14. ==============================================================================*/
  15.  
  16. #define IRC_CHANNEL "#SAMPStarterKit" //Channel Name
  17. #define IRC_SERVER "irc.va.us.mibbit.net" //Hoster/Server Name
  18. #define IRC_PORT (6667) //Port des IRC (default=6667)
  19.  
  20. #define BOT_NAME "Bot1" //Wird in der Liste angezeigt
  21. #define BOT_REALNAME "Beginner Bot" //Wie er im Whois angezeigt werden soll
  22. #define BOT_USERNAME "Bot" //Wird wie folgt angezeigt: "username@hostname"
  23.  
  24. #define MAX_BOTS (1) //Maximale Anzahl an Bots welche zum IRC connecten
  25. #define MAX_IRC_ATTEMPS 3 //Maximalle Versuche wenn ein IRC Bot nicht connecten konnte
  26.  
  27. /*==============================================================================
  28.                                 CLIENT RELATED
  29. ==============================================================================*/
  30.  
  31. #define SERVERNAME "uStarter"
  32. #define HOSTNAME "hostname Starter Kit IRC/SQLite/Whirlpool/sscanf2/zcmd"
  33. #define MAPNAME "mapname made by ulbi1990"
  34.  
  35. #define SPAWNPOS 1958.3783, 1343.1572, 15.3746
  36.  
  37. /*==============================================================================
  38.                                   DEFINES
  39. ==============================================================================*/
  40.  
  41. //Dialoge
  42.  
  43. #define REGISTER 20
  44. #define LOGIN 21
  45.  
  46. //Farben
  47.  
  48. #define gelb 0xFFFF00FF
  49. #define blau 0x0000FFFF
  50. #define rot 0xFF0000FF
  51.  
  52. /*==============================================================================
  53.                                  STOCKS & FORWARDS
  54. ==============================================================================*/
  55.  
  56. stock DB_Escape(text[])
  57. {
  58.     new
  59.         ret[80 * 2],
  60.         ch,
  61.         i,
  62.         j;
  63.     while ((ch = text[i++]) && j < sizeof (ret))
  64.     {
  65.         if (ch == '\'')
  66.         {
  67.             if (j < sizeof (ret) - 2)
  68.             {
  69.                 ret[j++] = '\'';
  70.                 ret[j++] = '\'';
  71.             }
  72.         }
  73.         else if (j < sizeof (ret))
  74.         {
  75.             ret[j++] = ch;
  76.         }
  77.         else
  78.         {
  79.             j++;
  80.         }
  81.     }
  82.     ret[sizeof (ret) - 1] = '\0';
  83.     return ret;
  84. }
  85.  
  86. forward KickTimer(playerid);
  87. forward SpawnTimer(playerid);
  88.  
  89. /*==============================================================================
  90.                                   VARIABLEN
  91. ==============================================================================*/
  92.  
  93. //IRC Related [erste sind f�r die Bot IDs welche vom Script aus auf den Server connecten, zweite ist die Gruppen ID]
  94.  
  95. new BotIDs[MAX_BOTS],IRCAttemps[MAX_BOTS],GruppenID;
  96.  
  97. //Server Related
  98.  
  99. enum PlayerInfo
  100. {
  101.     Adminlevel,
  102.     Viplevel,
  103.     Money,
  104.     Skin,
  105.     Float:PosX,
  106.     Float:PosY,
  107.     Float:PosZ,
  108.     LoggedIn,
  109.     NewRegistered
  110. }
  111.  
  112. enum PlayerBanInfo
  113. {
  114.     Banned,
  115.     BanDate[128],
  116.     BanAdmin[128],
  117.     BanReason[128]
  118. }
  119.  
  120. new pInfo[MAX_PLAYERS][PlayerInfo],pbInfo[MAX_PLAYERS][PlayerBanInfo],DB:database;
  121.  
  122. /*==============================================================================
  123.                                   MAINSCRIPT
  124. ==============================================================================*/
  125.  
  126. main()
  127. {
  128.     print("\t|=============================================|");
  129.     print("\t|Starter Kit IRC/SQLite/Whirlpool/sscanf2/zcmd|");
  130.     print("\t|            scripted by ulbi1990             |");
  131.     print("\t|=============================================|");
  132. }
  133.  
  134. public OnGameModeInit()
  135. {
  136.     SetGameModeText(SERVERNAME);
  137.     SendRconCommand(HOSTNAME);
  138.     SendRconCommand(MAPNAME);
  139.     //Bot zum IRC Channel connecten lassen und eine Gruppen ID erstellen
  140.     BotIDs[0]=IRC_Connect(IRC_SERVER,IRC_PORT,BOT_NAME,BOT_REALNAME,BOT_USERNAME);
  141.     GruppenID=IRC_CreateGroup();
  142.    
  143.     //Datenbanken related
  144.     database=db_open("Datenbank.db");
  145.     db_query(database,"CREATE TABLE IF NOT EXISTS `Accounts`(`ID`INTEGER PRIMARY KEY AUTOINCREMENT,`Name`,`Passwort`,`Adminlevel`,`Viplevel`,`Score`,`Money`,`Skin`,`PosX`,`PosY`,`PosZ`)");
  146.     db_query(database,"CREATE TABLE IF NOT EXISTS `Bans`(`ID`INTEGER PRIMARY KEY AUTOINCREMENT,`Name`,`Date`,`Admin`,`Reason`,`Banned`)");
  147.     return 1;
  148. }
  149.  
  150. public OnGameModeExit()
  151. {
  152.     IRC_Quit(BotIDs[0],"Server shutdown!"); //Bot vom IRC wieder disconnecten
  153.     IRC_DestroyGroup(GruppenID); //Gruppen ID wieder l�schen
  154.     db_close(database);
  155.     return 1;
  156. }
  157.  
  158. public OnPlayerRequestClass(playerid, classid)
  159. {
  160.     return 1;
  161. }
  162.  
  163. public OnPlayerConnect(playerid)
  164. {
  165.     new msg[128],name[MAX_PLAYER_NAME+1],DBResult:BResult,DBResult:Result; //Variablen erstellen
  166.     GetPlayerName(playerid,name,sizeof(name)); //Name des Spielers bekommen
  167.     format(msg,sizeof(msg),"SELECT * FROM `Bans` WHERE `Name`='%s'",DB_Escape(name));
  168.     BResult=db_query(database,msg);
  169.     if(db_num_rows(BResult)>0)
  170.     {
  171.         db_get_field_assoc(BResult,"Banned",msg,sizeof(msg));
  172.         pbInfo[playerid][Banned]=strval(msg);
  173.         db_get_field_assoc(BResult,"Date",msg,sizeof(msg));
  174.         pbInfo[playerid][BanDate]=msg;
  175.         db_get_field_assoc(BResult,"Admin",msg,sizeof(msg));
  176.         pbInfo[playerid][BanAdmin]=msg;
  177.         db_get_field_assoc(BResult,"Reason",msg,sizeof(msg));
  178.         pbInfo[playerid][BanReason]=msg;
  179.         if(pbInfo[playerid][Banned]==1)
  180.         {
  181.             format(msg,sizeof(msg),"Du bist gebannt. [Datum des Bannes: %s || Admin: %s || Grund: %s]",pbInfo[playerid][BanDate],pbInfo[playerid][BanAdmin],pbInfo[playerid][BanReason]);
  182.             SendClientMessage(playerid,rot,msg);
  183.             SetTimerEx("KickTimer",500,0,"i",playerid);
  184.         }
  185.         else if(pbInfo[playerid][Banned]==0)
  186.         {
  187.             format(msg,sizeof(msg),"SELECT * FROM `Accounts` WHERE `Name`='%s'",DB_Escape(name));
  188.             Result=db_query(database,msg);
  189.             if(db_num_rows(Result)>0)
  190.             {
  191.                 ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,""#SERVERNAME" Login Bereich","Gebe bitte nun dein Passwort ein um dich einzuloggen!","Login","Kick");
  192.             }
  193.             else
  194.             {
  195.                 ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_PASSWORD,""#SERVERNAME" Registrierungs Bereich","Gebe bitte nun ein Passwort ein um dich zu registrieren!","Register","Kick");
  196.             }
  197.         }
  198.     }
  199.     else
  200.     {
  201.         format(msg,sizeof(msg),"SELECT * FROM `Accounts` WHERE `Name`='%s'",DB_Escape(name));
  202.         Result=db_query(database,msg);
  203.         if(db_num_rows(Result)>0)
  204.         {
  205.             ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,""#SERVERNAME" Login Bereich","Gebe bitte nun dein Passwort ein um dich einzuloggen!","Login","Kick");
  206.         }
  207.         else
  208.         {
  209.             ShowPlayerDialog(playerid,REGISTER,DIALOG_STYLE_PASSWORD,""#SERVERNAME" Registrierungs Bereich","Gebe bitte nun ein Passwort ein um dich zu registrieren!","Register","Kick");
  210.         }
  211.         db_free_result(Result);
  212.     }
  213.     db_free_result(BResult);
  214.     return 1;
  215. }
  216.  
  217. public OnPlayerDisconnect(playerid, reason)
  218. {
  219.     new msg[256],name[MAX_PLAYER_NAME+1],Float:zPos[3]; //Variablen erstellen
  220.     GetPlayerName(playerid,name,sizeof(name)); //Name des Spielers bekommen
  221.     switch(reason) // in den Grund switchen
  222.     {
  223.         //Nachricht nach Grund formatieren
  224.         case 0: format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat den Server verlassen. [Grund: Timeout/Crash]",playerid,name);
  225.         case 1: format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat den Server verlassen. [Grund: Quit]",playerid,name);
  226.         case 2: format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat den Server verlassen. [Grund: Kick/Ban]",playerid,name);
  227.     }
  228.     IRC_GroupSay(GruppenID,IRC_CHANNEL,msg); //Nachricht an den IRC Channel schicken
  229.     SendClientMessageToAll(blau,msg); //Nachricht an alle schicken
  230.     GetPlayerPos(playerid,zPos[0],zPos[1],zPos[2]);
  231.     format(msg,sizeof(msg),"UPDATE `Accounts` SET `Adminlevel`='%d',`Viplevel`='%d',`Score`='%d',`Money`='%d',`Skin`='%d',`PosX`='%f',`PosY`='%f',`PosZ`='%f' WHERE `Name`='%s'",pInfo[playerid][Adminlevel],pInfo[playerid][Viplevel],GetPlayerScore(playerid),pInfo[playerid][Money],GetPlayerSkin(playerid),zPos[0],zPos[1],zPos[2],DB_Escape(name));
  232.     db_query(database,msg);
  233.     pInfo[playerid][Adminlevel]=0;
  234.     pInfo[playerid][Viplevel]=0;
  235.     pInfo[playerid][Money]=0;
  236.     pInfo[playerid][Skin]=0;
  237.     pInfo[playerid][PosX]=0;
  238.     pInfo[playerid][PosY]=0;
  239.     pInfo[playerid][PosZ]=0;
  240.     pInfo[playerid][LoggedIn]=0;
  241.     pInfo[playerid][NewRegistered]=0;
  242.     return 1;
  243. }
  244.  
  245. public OnPlayerSpawn(playerid)
  246. {
  247.     new msg[128],name[MAX_PLAYER_NAME+1];
  248.     GetPlayerName(playerid,name,sizeof(name));
  249.     if(pInfo[playerid][NewRegistered]==0)
  250.     {
  251.         if(pInfo[playerid][LoggedIn]==0)
  252.         {
  253.             SetPlayerPos(playerid,pInfo[playerid][PosX],pInfo[playerid][PosY],pInfo[playerid][PosZ]);
  254.             SetCameraBehindPlayer(playerid);
  255.             pInfo[playerid][LoggedIn]=1;
  256.             if(pInfo[playerid][Adminlevel]>0&&pInfo[playerid][Viplevel]==0)
  257.             {
  258.                 format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s [Admin: %d] hat sich erfollgreich eingeloggt!",playerid,name,pInfo[playerid][Adminlevel]);
  259.             }
  260.             if(pInfo[playerid][Adminlevel]>0&&pInfo[playerid][Viplevel]>0)
  261.             {
  262.                 format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s [Admin: %d ||Vip: %d] hat sich erfollgreich eingeloggt!",playerid,name,pInfo[playerid][Adminlevel],pInfo[playerid][Viplevel]);
  263.             }
  264.             if(pInfo[playerid][Adminlevel]==0&&pInfo[playerid][Viplevel]>0)
  265.             {
  266.                 format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s [Vip: %d] hat sich erfollgreich eingeloggt!",playerid,name,pInfo[playerid][Viplevel]);
  267.             }
  268.             if(pInfo[playerid][Adminlevel]==0&&pInfo[playerid][Viplevel]==0)
  269.             {
  270.                 format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat sich erfollgreich eingeloggt!",playerid,name);
  271.             }
  272.         }
  273.     }
  274.     else
  275.     {
  276.         if(pInfo[playerid][LoggedIn]==0)
  277.         {
  278.             SetPlayerPos(playerid,SPAWNPOS);
  279.             SetCameraBehindPlayer(playerid);
  280.             pInfo[playerid][LoggedIn]=1;
  281.             format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat sich erfollgreich registriert!",playerid,name);
  282.         }
  283.     }
  284.     IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  285.     SendClientMessageToAll(gelb,msg);
  286.     return 1;
  287. }
  288.  
  289. public OnPlayerText(playerid, text[])
  290. {
  291.     new msg[128],name[MAX_PLAYER_NAME+1]; //Variablen erstellen
  292.     GetPlayerName(playerid,name,sizeof(name)); //Name des Spielers bekommen
  293.     format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s: %s",playerid,name,text); //Nachricht formatieren
  294.     IRC_GroupSay(GruppenID,IRC_CHANNEL,msg); //Nachricht an den IRC Channel schicken
  295.     return 1;
  296. }
  297.  
  298. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  299. {
  300.     new msg[256],DBResult:Result,hashpass[129],name[MAX_PLAYER_NAME+1];
  301.     GetPlayerName(playerid,name,sizeof(name));
  302.     switch(dialogid)
  303.     {
  304.         case REGISTER:
  305.         {
  306.             WP_Hash(hashpass,sizeof(hashpass),inputtext);
  307.             if(!response)
  308.             {
  309.                 format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat den registrier Vorgang abgebrochen!",playerid,name);
  310.                 SendClientMessageToAll(rot,msg);
  311.                 IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  312.                 SetTimerEx("KickTimer",500,0,"i",playerid);
  313.             }
  314.             if(response)
  315.             {
  316.                 format(msg,sizeof(msg),"INSERT INTO `Accounts`(`Name`,`Passwort`)VALUES('%s','%s')",DB_Escape(name),hashpass);
  317.                 db_query(database,msg);
  318.                 pInfo[playerid][NewRegistered]=1;
  319.                 SetTimerEx("SpawnTimer",500,0,"i",playerid);
  320.             }
  321.         }
  322.         case LOGIN:
  323.         {
  324.             if(!response)
  325.             {
  326.                 format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat den login Vorgang abgebrochen!",playerid,name);
  327.                 SendClientMessageToAll(rot,msg);
  328.                 IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  329.                 SetTimerEx("KickTimer",500,0,"i",playerid);
  330.             }
  331.             if(response)
  332.             {
  333.                 WP_Hash(hashpass,sizeof(hashpass),inputtext);
  334.                 format(msg,sizeof(msg),"SELECT * FROM `Accounts` WHERE `Name`='%s' AND `Passwort`='%s'",DB_Escape(name),hashpass);
  335.                 Result=db_query(database,msg);
  336.                 if(db_num_rows(Result)>0)
  337.                 {
  338.                     db_get_field_assoc(Result,"Adminlevel",msg,sizeof(msg));
  339.                     pInfo[playerid][Adminlevel]=strval(msg);
  340.                     db_get_field_assoc(Result,"Viplevel",msg,sizeof(msg));
  341.                     pInfo[playerid][Viplevel]=strval(msg);
  342.                     db_get_field_assoc(Result,"Score",msg,sizeof(msg));
  343.                     SetPlayerScore(playerid,strval(msg));
  344.                     db_get_field_assoc(Result,"Money",msg,sizeof(msg));
  345.                     pInfo[playerid][Money]=strval(msg);
  346.                     GivePlayerMoney(playerid,pInfo[playerid][Money]);
  347.                     db_get_field_assoc(Result,"Skin",msg,sizeof(msg));
  348.                     SetPlayerSkin(playerid,strval(msg));
  349.                     db_get_field_assoc(Result,"PosX",msg,sizeof(msg));
  350.                     pInfo[playerid][PosX]=floatstr(msg);
  351.                     db_get_field_assoc(Result,"PosY",msg,sizeof(msg));
  352.                     pInfo[playerid][PosY]=floatstr(msg);
  353.                     db_get_field_assoc(Result,"PosZ",msg,sizeof(msg));
  354.                     pInfo[playerid][PosZ]=floatstr(msg);
  355.                     SetTimerEx("SpawnTimer",500,0,"i",playerid);
  356.                 }
  357.                 else
  358.                 {
  359.                     ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_PASSWORD,""#SERVERNAME" Login Bereich","Gebe bitte nun dein Passwort ein um dich einzuloggen!","Login","Kick");
  360.                     SendClientMessage(playerid,rot,"Das angegebene Passwort war falsch!");
  361.                 }
  362.                 db_free_result(Result);
  363.             }
  364.         }
  365.     }
  366.     return 1;
  367. }
  368.  
  369. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  370. {
  371.     return 1;
  372. }
  373.  
  374. public KickTimer(playerid)
  375. {
  376.     Kick(playerid);
  377.     return 1;
  378. }
  379.  
  380. public SpawnTimer(playerid)
  381. {
  382.     SpawnPlayer(playerid);
  383.     return 1;
  384. }
  385.  
  386. /*==============================================================================
  387.                                     BEFEHLE
  388. ==============================================================================*/
  389.  
  390. //Adminbefehle
  391.  
  392. CMD:setskin(playerid,params[])
  393. {
  394.     new skinid,user,msg[128],name[MAX_PLAYER_NAME+1];
  395.     if(pInfo[playerid][Adminlevel]<1) return SendClientMessage(playerid,rot,"Du bist nicht befugt diesen Befehl zu nutzen!");
  396.     {
  397.         if(sscanf(params,"ud",user,skinid)) return SendClientMessage(playerid,rot,"[NUTZUNG]: /setskin <playerid/part-of-name/name> <Skin ID>");
  398.         if(skinid<0||skinid>299) return SendClientMessage(playerid,rot,"Skin ID's zwischen 0 und 299!");
  399.         {
  400.             GetPlayerName(playerid,name,sizeof(name));
  401.             SetPlayerSkin(user,skinid);
  402.             format(msg,sizeof(msg),"Admin %s hat deinen Skin gewechselt!",name);
  403.             SendClientMessage(user,gelb,msg);
  404.         }
  405.     }
  406.     return 1;
  407. }
  408.  
  409. CMD:kick(playerid,params[])
  410. {
  411.     new user,msg[128],reason[56],name[MAX_PLAYER_NAME+1],uname[MAX_PLAYER_NAME+1];
  412.     if(pInfo[playerid][Adminlevel]<2) return SendClientMessage(playerid,rot,"Du bist nicht befugt diesen Befehl zu nutzen!");
  413.     {
  414.         if(sscanf(params,"us[56]",user,reason)) return SendClientMessage(playerid,rot,"[NUTZUNG] /kick <playerid/part-of-name/name> <Grund>");
  415.         {
  416.             GetPlayerName(playerid,name,sizeof(name));
  417.             GetPlayerName(playerid,uname,sizeof(uname));
  418.             format(msg,sizeof(msg),"%s hat dich gekickt. [Grund: %s]",name,reason);
  419.             SendClientMessage(user,rot,msg);
  420.             format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat %s gekickt. [Grund: %s]",playerid,name,uname,reason);
  421.             SendClientMessageToAll(rot,msg);
  422.             IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  423.             SetTimerEx("KickTimer",500,0,"i",user);
  424.         }
  425.     }
  426.     return 1;
  427. }
  428.  
  429. CMD:ban(playerid,params[])
  430. {
  431.     new user,msg[256],reason[56],name[MAX_PLAYER_NAME+1],uname[MAX_PLAYER_NAME+1],year,month,day,date[11];
  432.     if(pInfo[playerid][Adminlevel]<2) return SendClientMessage(playerid,rot,"Du bist nicht befugt diesen Befehl zu nutzen!");
  433.     {
  434.         if(sscanf(params,"us[56]",user,reason)) return SendClientMessage(playerid,rot,"[NUTZUNG]: /ban <playerid/part-of-name/name> <Grund>");
  435.         if(strlen(reason)<4||strlen(reason)>56) return SendClientMessage(playerid,rot,"Der Grund muss mindestens 4 Zeichen und maximal 56 Zeichen besitzen!");
  436.         {
  437.             getdate(year,month,day);
  438.             format(date,sizeof(date),"%02d.%02d.%d",day,month,year);
  439.             GetPlayerName(playerid,name,sizeof(name));
  440.             GetPlayerName(user,uname,sizeof(uname));
  441.             format(msg,sizeof(msg),"INSERT INTO `Bans`(`Name`,`Date`,`Admin`,`Reason`,`Banned`)VALUES('%s','%s','%s','%s','1')",DB_Escape(uname),date,DB_Escape(name),reason);
  442.             db_query(database,msg);
  443.             format(msg,sizeof(msg),"Du wurdest von %s gebannt. [Grund: %s]",name,reason);
  444.             SendClientMessage(playerid,rot,msg);
  445.             format(msg,sizeof(msg),"["#SERVERNAME"]: [%i] %s hat %s gebannt. [Grund: %s]",playerid,name,uname,reason);
  446.             SendClientMessageToAll(rot,msg);
  447.             IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  448.             SetTimerEx("KickTimer",500,0,"i",user);
  449.         }
  450.     }
  451.     return 1;
  452. }
  453.  
  454. CMD:unban(playerid,params[])
  455. {
  456.     new user[25],DBResult:Result,msg[128],name[MAX_PLAYER_NAME+1];
  457.     if(pInfo[playerid][Adminlevel]<3) return SendClientMessage(playerid,rot,"Du bist nicht befugt diesen Befehl zu nutzen!");
  458.     {
  459.         if(sscanf(params,"s[25]",user)) return SendClientMessage(playerid,rot,"[NUTZUNG]: /unban <Name>");
  460.         {
  461.             format(msg,sizeof(msg),"SELECT * FROM `Bans` WHERE `Name` ='%s' AND `Banned`='1'",DB_Escape(user));
  462.             Result=db_query(database,msg);
  463.             if(db_num_rows(Result)>0)
  464.             {
  465.                 format(msg,sizeof(msg),"UPDATE `Bans` SET `Banned`='0' WHERE `Name`='%s'",user);
  466.                 printf("%s",msg);
  467.                 db_query(database,msg);
  468.                 format(msg,sizeof(msg),"Du hast %s erfollgreich entbannt!",user);
  469.                 SendClientMessage(playerid,gelb,msg);
  470.                 GetPlayerName(playerid,name,sizeof(name));
  471.                 format(msg,sizeof(msg),"["#SERVERNAME"]: %s wurde erfollgreich von %s [%i] entbannt!",user,name,playerid);
  472.                 SendClientMessageToAll(gelb,msg);
  473.                 IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  474.             }
  475.             else
  476.             {
  477.                 SendClientMessage(playerid,rot,"Dieser Spieler ist nicht in der Datenbank gebannt!");
  478.             }
  479.             db_free_result(Result);
  480.         }
  481.     }
  482.     return 1;
  483. }
  484.  
  485. /*==============================================================================
  486.                             IRC RELATED CALLBACLS
  487. ==============================================================================*/
  488.  
  489. public IRC_OnConnect(botid, ip[], port)
  490. {
  491.     printf("IRC Connection: Bot %d hat den IRC Server %s:%d betretten", botid, ip, port); //Nachricht an die Konsole wenn ein Bot gejoint hat
  492.     IRC_JoinChannel(botid, IRC_CHANNEL); //Bot zum Channel connecten
  493.     IRC_AddToGroup(GruppenID, botid); //Bot zur Gruppen ID hinzuf�gen
  494.     return 1;
  495. }
  496.  
  497. public IRC_OnDisconnect(botid, ip[], port, reason[])
  498. {
  499.     printf("IRC Connection: Bot %d hat den IRC Server %s:%d verlassen! [Grund:%s]", botid, ip, port, reason); //Nachricht wenn ein Bot vom Server geht mit Grund
  500.     IRC_RemoveFromGroup(GruppenID, botid); //Bot von der Gruppe entfernen
  501.     return 1;
  502. }
  503.  
  504. public IRC_OnConnectAttempt(botid, ip[], port)
  505. {
  506.     if(IRCAttemps[botid]!=MAX_IRC_ATTEMPS) //Sollten die Maximalen Versuche noch nicht erreicht sein einen Versuch starten
  507.     {
  508.         printf("IRC Connection: Bot %d versucht auf den IRC Server %s:%d zu joinen", botid, ip, port); //Versuch des Bots printen
  509.         printf("Versuch: %d/%d",IRCAttemps[botid],MAX_IRC_ATTEMPS); //Anzahl der Versuche printen
  510.     }
  511.     else //Sollten maximalle Versuche erreicht sein
  512.     {
  513.         IRC_Quit(botid,"IRC Bot konnte nicht auf den Server connecten!"); //Soll der Bot den Server verlassen
  514.     }
  515.     return 1;
  516. }
  517.  
  518. public IRC_OnConnectAttemptFail(botid, ip[], port, reason[])
  519. {
  520.     printf("IRC Connection: Bot %d konnte auf den IRC Server %s:%d nicht joinen! [Grund: %s]", botid, ip, port, reason); //Sollte er nicht connecten k�nnen eine Nachricht printen mit dem Grund
  521.     IRCAttemps[botid]++; //Versuche um eins erh�hen
  522.     return 1;
  523. }
  524.  
  525. public IRC_OnJoinChannel(botid, channel[])
  526. {
  527.     printf("IRC Connection: Bot %d hat erfollgreich auf Channel %s gejoint!", botid, channel); //Bot konnte erfollgreich auf den IRC Server connecten
  528.     IRCAttemps[botid]=0;
  529.     return 1;
  530. }
  531.  
  532. public IRC_OnLeaveChannel(botid, channel[], message[])
  533. {
  534.     printf("IRC Connection: Bot %d hat den Channel %s verlassen [Grund:%s]", botid, channel, message); //Bot hat den IRC Channel verlassen
  535.     return 1;
  536. }
  537.  
  538. public IRC_OnUserJoinChannel(botid, channel[], user[], host[])
  539. {
  540.     new msg[128]; //Neue Variable erstellen
  541.     format(msg,sizeof(msg),"{FF6400}[IRC] {FFFFFF}%s hat den IRC Channel betretten!",user); //Fromatieren der Nachricht
  542.     SendClientMessageToAll(blau,msg); //An alle Spieler InGame die Nachricht senden dass jemand den Channel verlassen hat
  543.     return 1;
  544. }
  545.  
  546. public IRC_OnUserLeaveChannel(botid, channel[], user[], host[], message[])
  547. {
  548.     new msg[128]; //Neue Variable erstellen
  549.     format(msg,sizeof(msg),"{FF6400}[IRC] {FFFFFF}%s hat den IRC Channel verlassen!",user); //Fromatieren der Nachricht
  550.     SendClientMessageToAll(blau,msg); //An alle Spieler InGame die Nachricht senden dass jemand den Channel verlassen hat
  551.     return 1;
  552. }
  553.  
  554. public IRC_OnUserSay(botid, recipient[], user[], host[], message[])
  555. {
  556.     new msg[128]; //Neue Variable ertellen
  557.     format(msg,sizeof(msg),"{FF6400}[IRC] {FFFFFF}%s: %s",user,message); //Formatieren des Textes welcher um Channel geschrieben wird
  558.     SendClientMessageToAll(-1,msg);//An alle Spieler die Nachricht schicken
  559.     return 1;
  560. }
  561.  
  562. public IRC_OnUserNickChange(botid, oldnick[], newnick[], host[])
  563. {
  564.     new msg[128]; //Neue Variable ertellen
  565.     format(msg,sizeof(msg),"{FF6400}[IRC] {FFFFFF}%s hat seinen Namen zu %s ge�ndert!",oldnick,newnick);
  566.     SendClientMessageToAll(blau,msg);
  567.     return 1;
  568. }
  569.  
  570. /*==============================================================================
  571.                                    IRC BEFEHLE
  572. ==============================================================================*/
  573.  
  574. IRCCMD:kick(botid, channel[], user[], host[], params[])
  575. {
  576.     if(IRC_IsOp(botid, channel, user))
  577.     {
  578.         new pID,reason[56],msg[128];
  579.         if(sscanf(params,"us[56]",pID,reason)) return IRC_Say(botid,user,"[NUTZUNG]: !kick <playerid/part-of-name/name> <Grund>");
  580.         {
  581.             format(msg,sizeof(msg),"Du wurdest von %s �ber IRC gekickt. [Grund: %s]",pID,reason);
  582.             SendClientMessage(pID,rot,msg);
  583.             format(msg,sizeof(msg),"{FF6400}[IRC] {FFFFFF}[%i] %s wurde von %s �ber den IRC Chat gekickt. [Grund: %s]",pID,pID,user,reason);
  584.             SendClientMessageToAll(rot,msg);
  585.             IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  586.             SetTimerEx("KickTimer",500,0,"i",user);
  587.         }
  588.     }
  589.     return 0;
  590. }
  591.  
  592. IRCCMD:ban(botid, channel[], user[], host[], params[])
  593. {
  594.     if(IRC_IsAdmin(botid, channel, user))
  595.     {
  596.         new pID,reason[56],msg[128],date[11],year,month,day,uname[MAX_PLAYER_NAME+1];
  597.         if(sscanf(params,"us[56]",pID,reason)) return IRC_Say(botid,user,"[NUTZUNG]: !ban <playerid/part-of-name/name> <Grund>");
  598.         if(strlen(reason)<4||strlen(reason)>56) return IRC_Say(botid,user,"Der Grund muss mindestens 4 Zeichen und maximal 56 Zeichen besitzen!");
  599.         {
  600.             getdate(year,month,day);
  601.             format(date,sizeof(date),"%02d.%02d.%d",day,month,year);
  602.             GetPlayerName(pID,uname,sizeof(uname));
  603.             format(msg,sizeof(msg),"INSERT INTO `Bans`(`Name`,`Date`,`Admin`,`Reason`,`Banned`)VALUES('%s','%s','%s','%s','1')",DB_Escape(uname),date,DB_Escape(user),reason);
  604.             db_query(database,msg);
  605.             format(msg,sizeof(msg),"Du wurdest von %s gebannt. [Grund: %s]",user,reason);
  606.             SendClientMessage(pID,rot,msg);
  607.             format(msg,sizeof(msg),"{FF6400}[IRC] {FFFFFF}%s hat %s gebannt. [Grund: %s]",user,uname,reason);
  608.             SendClientMessageToAll(rot,msg);
  609.             IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  610.             SetTimerEx("KickTimer",500,0,"i",user);
  611.         }
  612.     }
  613.     return 0;
  614. }
  615.  
  616. IRCCMD:unban(botid, channel[], user[], host[], params[])
  617. {
  618.     new pID[25],DBResult:Result,msg[128];
  619.     if(IRC_IsAdmin(botid, channel, user))
  620.     {
  621.         if(sscanf(params,"s[25]",pID)) return IRC_Say(botid,user,"[NUTZUNG]: /unban <Name>");
  622.         {
  623.             format(msg,sizeof(msg),"SELECT * FROM `Bans` WHERE `Name` ='%s' AND `Banned`='1'",DB_Escape(pID));
  624.             Result=db_query(database,msg);
  625.             if(db_num_rows(Result)>0)
  626.             {
  627.                 format(msg,sizeof(msg),"UPDATE `Bans` SET `Banned`='0' WHERE `Name`='%s'",pID);
  628.                 db_query(database,msg);
  629.                 format(msg,sizeof(msg),"Du hast %s erfollgreich entbannt!",pID);
  630.                 IRC_Say(botid,user,msg);
  631.                 format(msg,sizeof(msg),"{FF6400}[IRC] {FFFFFF}%s wurde erfollgreich von %s entbannt!",pID,user);
  632.                 SendClientMessageToAll(gelb,msg);
  633.                 IRC_GroupSay(GruppenID,IRC_CHANNEL,msg);
  634.             }
  635.             else
  636.             {
  637.                 IRC_Say(botid,user,"Dieser Spieler ist nicht in der Datenbank gebannt!");
  638.             }
  639.             db_free_result(Result);
  640.         }
  641.     }
  642.     return 0;
  643. }
Advertisement
Add Comment
Please, Sign In to add comment