Advertisement
kaZax

[FS] kAdmin - Admins System [MySQL][ENG]

Dec 18th, 2013
933
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 22.13 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_mysql>
  3.  
  4. /*
  5. >> Filterscript: kAdmin System [MySQL]
  6. >> Author: kaZax
  7. >> Version: 0.2
  8. >> DataBase: MySQL BlueG Plugin R8
  9. >> Commands:
  10. - /goto [id]
  11. - /get [id]
  12. - /chat
  13. - /admins
  14. - /setadmin [id] [lvl]
  15. - /kick [id] [reason]
  16. - /ban [id] [reason]
  17. - /mute [id] [reason]
  18. - /unmute [id]
  19. - /freeze [id] [reason]
  20. - /unfreeze [id]
  21. - /mystats
  22. - /cage [id] [reason]
  23. - /uncage [id]
  24. */
  25.  
  26. #define white           0xFFFFFFFF
  27. #define green           0x00FF00FF
  28. #define red             0xFF0000FF
  29. #define skyblue         0x00BFFFFF
  30. #define yellow          0xFFFF00FF
  31.  
  32. #define D_REGISTER      0
  33. #define D_LOGIN         1
  34. #define D_ADMINS        2
  35. #define D_INFO          3
  36.  
  37. #define SQL_DEBUG       1
  38. #define SQL_HOST        "db4free.net"   // Free MySQL Host
  39. #define SQL_DB          "basename"
  40. #define SQL_USER        "user"
  41. #define SQL_PASS        "user"
  42. #define SQL_TABLE       "CREATE TABLE IF NOT EXISTS `users` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(24) NOT NULL,`pass` varchar(48) NOT NULL,`admin` int(11) NOT NULL,`heal` float NOT NULL, `armour` float NOT NULL,`kills` int(11) NOT NULL,`deaths` int(11) NOT NULL,`money` int(11) NOT NULL,`mute` int(1) NOT NULL,`ban` int(1) NOT NULL,`freeze` int(1) NOT NULL,`regdate` varchar(24) NOT NULL, `lastip` varchar(24) NOT NULL, `skinid` int(3) NOT NULL, PRIMARY KEY (`id`))"
  43.  
  44. enum STRUCT
  45. {
  46.     id,
  47.     pass[48],
  48.     admin,
  49.     Float:heal,
  50.     Float:armour,
  51.     kills,
  52.     deaths,
  53.     money,
  54.     mute,
  55.     ban,
  56.     freeze,
  57.     regdate[24],
  58.     skinid,
  59.     bool:logged,
  60.     cage[4],
  61.     bool:caged
  62. };
  63.  
  64. new data[MAX_PLAYERS][STRUCT];
  65. new handle;
  66. new bool:chaton = true;
  67.  
  68. forward OnPlayerConnectResponse(playerid);
  69. forward CreateAccount(playerid);
  70. forward SendQuery();
  71. forward AccountsCount();
  72.  
  73. public OnFilterScriptInit()
  74. {
  75.     new count = GetTickCount();
  76.     print(">> kA: Updates check on the SAMP-RU.ORG");
  77.     print(">> kA: kAdmin System Loading ...");
  78.     mysql_debug(SQL_DEBUG);
  79.     handle = mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);
  80.     mysql_function_query(handle,SQL_TABLE, false, "SendQuery", "");
  81.     mysql_function_query(handle,"SELECT * FROM `users`", true, "AccountsCount","");
  82.     mysql_function_query(handle,"SET NAMES 'cp1251'", false, "SendQuery","");
  83.     mysql_function_query(handle,"SET CHARACTER SET 'cp1251'", false, "SendQuery","");
  84.     printf(">> kA: kAdmin System loaded in %d ms.", GetTickCount() - count);
  85.     return 1;
  86. }
  87. public OnFilterScriptExit()
  88. {
  89.     mysql_close(handle);
  90.     return 1;
  91. }
  92. public OnPlayerConnect(playerid)
  93. {
  94.     ClearPlayerVariables(playerid);
  95.     new query[128];
  96.     format(query,sizeof(query),"SELECT * FROM `users` WHERE name = '%s'",gn(playerid));
  97.     mysql_function_query(handle,query, true, "OnPlayerConnectResponse","d", playerid);
  98.     SetPVarInt(playerid, "ChangeSkin", 1)
  99.     TogglePlayerSpectating(playerid, 1);
  100.     return 1;
  101. }
  102. public OnPlayerDisconnect(playerid,reason)
  103. {
  104.     SavePlayerVariables(playerid);
  105.     ClearPlayerVariables(playerid);
  106.     return 1;
  107. }
  108. public OnPlayerConnectResponse(playerid)
  109. {
  110.     if(IsPlayerConnected(playerid))
  111.     {
  112.         new rows, fields;
  113.         cache_get_data(rows, fields, handle);
  114.         if(rows)
  115.         {
  116.             data[playerid][id] = cache_get_row_int(0,0,handle);
  117.             cache_get_row(0, 2, data[playerid][pass], handle, 48);
  118.             data[playerid][admin] = cache_get_row_int(0,3,handle);
  119.             data[playerid][heal] = cache_get_row_float(0, 4, handle);
  120.             data[playerid][armour] = cache_get_row_float(0, 5, handle);
  121.             data[playerid][kills] = cache_get_row_int(0, 6,handle);
  122.             data[playerid][deaths] = cache_get_row_int(0, 7,handle);
  123.             data[playerid][money] = cache_get_row_int(0, 8,handle);
  124.             data[playerid][mute] = cache_get_row_int(0, 9,handle);
  125.             data[playerid][ban] = cache_get_row_int(0, 10,handle);
  126.             data[playerid][freeze] = cache_get_row_int(0, 11,handle);
  127.             cache_get_row(0, 12, data[playerid][regdate], handle, 24);
  128.             data[playerid][skinid] = cache_get_row_int(0, 14,handle);
  129.             ShowLoginDialog(playerid);
  130.         }
  131.         else ShowRegisterDialog(playerid);
  132.     }
  133.     return 1;
  134. }
  135. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  136. {
  137.     if(dialogid == D_REGISTER)
  138.     {
  139.         if(!response)
  140.         {
  141.             SendClientMessage(playerid,red,"Server requires registration!");
  142.             ShowRegisterDialog(playerid);
  143.             return 0;
  144.         }
  145.         if(strlen(inputtext) < 4)
  146.         {
  147.             SendClientMessage(playerid,white,"Password at least 4 characters!");
  148.             ShowRegisterDialog(playerid);
  149.             return 0;
  150.         }
  151.         format(data[playerid][pass],48,"%s",inputtext);
  152.         data[playerid][heal] = 100.0;
  153.         data[playerid][armour] = 100.0;
  154.         data[playerid][logged] = true;
  155.         new query[384],Year, Month, Day;
  156.         getdate(Year, Month, Day);
  157.         format(data[playerid][regdate],24,"%02d/%02d/%d", Day, Month, Year);
  158.         format(query,sizeof(query),"INSERT INTO `users`(name,admin,heal,armour,kills,deaths,money,mute,ban,freeze,pass,regdate,lastip,skinid) VALUES (\'%s\',\'%d\',\'%f\',\'%f\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%s\',\'%s\',\'%s\',\'%d\')",
  159.         gn(playerid),data[playerid][admin],data[playerid][heal],data[playerid][armour],data[playerid][kills],data[playerid][deaths],data[playerid][money],data[playerid][mute],data[playerid][ban],data[playerid][freeze],data[playerid][pass],data[playerid][regdate],ip(playerid),data[playerid][skinid]);
  160.         mysql_function_query(handle,query, false, "CreateAccount","d", playerid);
  161.         format(query,sizeof(query),">> Successful registration! Name: %s || Password: %s",gn(playerid),data[playerid][pass]);
  162.         SendClientMessage(playerid,green,query);
  163.         Login(playerid);
  164.         return 1;
  165.     }
  166.     if(dialogid == D_LOGIN)
  167.     {
  168.         if(!response)return KickEx(playerid,"Password");
  169.         if(strcmp(data[playerid][pass], inputtext, true))return ShowLoginDialog(playerid,true), 0;
  170.         Login(playerid);
  171.     }
  172.     if(data[playerid][logged] == false)return 0;
  173.     return 0;
  174. }
  175. public CreateAccount(playerid)
  176. {
  177.     data[playerid][id] = mysql_insert_id();
  178.     return 1;
  179. }
  180. public SendQuery()
  181. {
  182.     return 1;
  183. }
  184. public AccountsCount()
  185. {
  186.     new rows, fields;
  187.     cache_get_data(rows, fields, handle);
  188.     printf(">> kA: Аккаунтов всего: %d", rows);
  189.     return 1;
  190. }
  191. public OnPlayerText(playerid, text[])
  192. {
  193.     if(data[playerid][logged] == false)return 0;
  194.     if(data[playerid][mute])return SendClientMessage(playerid,red,">> You can not write to the chat!"),0;
  195.     if(chaton == false && data[playerid][admin] == 0)return SendClientMessage(playerid,red,">> Chat is disabled by administrator!"),0;
  196.     return 1;
  197. }
  198. public OnPlayerCommandText(playerid, cmdtext[])
  199. {
  200.     if(data[playerid][logged] == false)return 0;
  201.     new p[2][128], cmd[128], idx;
  202.     cmd = strtok(cmdtext, idx);
  203.     //CagePlayer(playerid);
  204.     if(!strcmp(cmd, "/uncage", true))
  205.     {
  206.         if(data[playerid][admin] < 2)return SendClientMessage(playerid,red,">> You need 3 lvl admin!");
  207.         p[0] = strtok(cmdtext,idx);
  208.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /uncage [id]");
  209.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  210.         if(data[playerid][caged] == false)return SendClientMessage(playerid,red,">> Player not caged!");
  211.         UnCagePlayer(strval(p[0]));
  212.         return 1;
  213.     }
  214.     if(!strcmp(cmd, "/cage", true))
  215.     {
  216.         if(data[playerid][admin] < 2)return SendClientMessage(playerid,red,">> You need 3 lvl admin!");
  217.         p[0] = strtok(cmdtext,idx);
  218.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /cage [id] [reason]");
  219.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  220.         p[1] = strtok(cmdtext,idx);
  221.         if(!strlen(p[1]))return SendClientMessage(playerid,red,">> /cage [id] [reason]");
  222.         CagePlayer(strval(p[0]));
  223.         new str[256];
  224.         format(str,sizeof str,"Admin caged %s[id: %d] Reason: %s",gn(strval(p[0])),strval(p[0]),p[1]);
  225.         SendClientMessageToAll(yellow,str);
  226.         return 1;
  227.     }
  228.     if(!strcmp(cmd, "/goto", true))
  229.     {
  230.         if(data[playerid][admin] < 2)return SendClientMessage(playerid,red,">> You need 3 lvl admin!");
  231.         p[0] = strtok(cmdtext,idx);
  232.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /goto [id]");
  233.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  234.         new Float:pos[3],str[256];
  235.         GetPlayerPos(strval(p[0]),pos[0],pos[1],pos[2]);
  236.         if(IsPlayerInAnyVehicle(playerid))
  237.         {
  238.             SetVehiclePos(GetPlayerVehicleID(playerid),pos[0],pos[1],pos[2]);
  239.             LinkVehicleToInterior(GetPlayerVehicleID(playerid), GetPlayerInterior(strval(p[0])));
  240.             SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), GetPlayerVirtualWorld(strval(p[0])));
  241.         }
  242.         else
  243.         {
  244.             SetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  245.             SetPlayerInterior(playerid,GetPlayerInterior(strval(p[0])));
  246.             SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(strval(p[0])));
  247.         }
  248.         format(str,sizeof str,"You teleported to %s[id: %d]",gn(strval(p[0])),strval(p[0]));
  249.         SendClientMessage(playerid,white,str);
  250.         format(str,sizeof str,"To you teleported administrator %s[id: %d]",gn(playerid),playerid);
  251.         SendClientMessage(strval(p[0]),white,str);
  252.         return 1;
  253.     }
  254.     if(!strcmp(cmd, "/get", true))
  255.     {
  256.         if(data[playerid][admin] < 2)return SendClientMessage(playerid,red,">> You need 3 lvl admin!");
  257.         p[0] = strtok(cmdtext,idx);
  258.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /get [id]");
  259.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  260.         if(data[strval(p[0])][admin] > data[playerid][admin])return SendClientMessage(playerid,red,">> You can not teleport you to the highest level administrator!");
  261.         new Float:pos[3],str[256];
  262.         GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  263.         if(IsPlayerInAnyVehicle(strval(p[0])))
  264.         {
  265.             SetVehiclePos(GetPlayerVehicleID(strval(p[0])),pos[0],pos[1],pos[2]);
  266.             LinkVehicleToInterior(GetPlayerVehicleID(strval(p[0])), GetPlayerInterior(playerid));
  267.             SetVehicleVirtualWorld(GetPlayerVehicleID(strval(p[0])), GetPlayerVirtualWorld(playerid));
  268.         }
  269.         else
  270.         {
  271.             SetPlayerPos(strval(p[0]),pos[0],pos[1],pos[2]);
  272.             SetPlayerInterior(strval(p[0]),GetPlayerInterior(playerid));
  273.             SetPlayerVirtualWorld(strval(p[0]),GetPlayerVirtualWorld(playerid));
  274.         }
  275.         format(str,sizeof str,"Admin %s[id: %d] teleported you to your.",gn(playerid),playerid);
  276.         SendClientMessage(strval(p[0]),white,str);
  277.         format(str,sizeof str,"You teleported Player %s[id: %d].",gn(strval(p[0])),strval(p[0]));
  278.         SendClientMessage(playerid,white,str);
  279.         return 1;
  280.     }
  281.     if(!strcmp(cmdtext, "/chat", true))
  282.     {
  283.         if(data[playerid][admin] < 3)return SendClientMessage(playerid,red,">> You need 4 lvl admin!");
  284.         new str[256];
  285.         if(chaton)
  286.         {
  287.             chaton = false;
  288.             format(str,sizeof str,"{FFFF00}Admin %s[id: %d] disabled chat.",gn(playerid),playerid);
  289.             SendClientMessage(playerid,white,">> On chat: /chat");
  290.         }
  291.         else
  292.         {
  293.             chaton = true;
  294.             format(str,sizeof str,"Admin %s[id: %d] enabled chat.",gn(playerid),playerid);
  295.         }
  296.         SendClientMessageToAll(green,str);
  297.         return 1;
  298.     }
  299.     if(!strcmp(cmdtext, "/mystats", true))
  300.     {
  301.         new info[1024],muted[12],freezed[12];
  302.         if(data[playerid][mute])format(muted,sizeof muted,"Yes");
  303.         else format(muted,sizeof muted,"No");
  304.         if(data[playerid][freeze])format(freezed,sizeof freezed,"Yes");
  305.         else format(freezed,sizeof freezed,"No");
  306.         format(info,sizeof info,">> IP: \t\t\t%s\n\
  307.                                 >> Name: \t\t%s\n\
  308.                                 >> Player #: \t\t%d\n\
  309.                                 >> Money: \t\t%d\n\
  310.                                 >> Deaths: \t\t%d\n\
  311.                                 >> Muted: \t\t%s\n\
  312.                                 >> Kills: \t\t%d\n\
  313.                                 >> Skin ID: \t\t%d\n\
  314.                                 >> Freezed: \t\t%s\n\
  315.                                 >> Admin LVL: \t\t%d\n\
  316.                                 >> Registered: \t\t%s",ip(playerid),gn(playerid),data[playerid][id],GetPlayerMoney(playerid),data[playerid][deaths],muted,data[playerid][kills],GetPlayerSkin(playerid),freezed,data[playerid][admin],data[playerid][regdate]);
  317.         ShowPlayerDialog(playerid,D_INFO,DIALOG_STYLE_MSGBOX,"Information",info,"okay","");
  318.         return 1;
  319.     }
  320.     if(!strcmp(cmd, "/unfreeze", true))
  321.     {
  322.         if(data[playerid][admin] < 3)return SendClientMessage(playerid,red,">> You need 4 lvl admin!");
  323.         p[0] = strtok(cmdtext,idx);
  324.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /unfreeze [id]");
  325.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  326.         if(!data[strval(p[0])][freeze])return SendClientMessage(playerid,red,">> The player is not frozen!");
  327.         new str[384];
  328.         format(str,sizeof(str),">> Admin %s[id: %d] unfreezed %s[id: %d].",gn(playerid),playerid,gn(strval(p[0])),strval(p[0]));
  329.         SendClientMessageToAll(red,str);
  330.         print(str);
  331.         data[playerid][freeze] = 0;
  332.         TogglePlayerControllable(playerid,1);
  333.         return 1;
  334.     }
  335.     if(!strcmp(cmd, "/freeze", true))
  336.     {
  337.         if(data[playerid][admin] < 3)return SendClientMessage(playerid,red,">> You need 4 lvl admin!");
  338.         p[0] = strtok(cmdtext,idx);
  339.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /freeze [id] [reason]");
  340.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  341.         p[1] = strtok(cmdtext, idx);
  342.         if(!strlen(p[1]))return SendClientMessage(playerid,red,">> /freeze [id] [reason]");
  343.         new str[384];
  344.         format(str,sizeof(str),">> Admin %s[id: %d] freezed %s[id: %d]. reason: %s",gn(playerid),playerid,gn(strval(p[0])),strval(p[0]),p[1]);
  345.         SendClientMessageToAll(red,str);
  346.         print(str);
  347.         data[playerid][freeze] = 1;
  348.         TogglePlayerControllable(playerid,0);
  349.         return 1;
  350.     }
  351.     if(!strcmp(cmd, "/unmute", true))
  352.     {
  353.         if(data[playerid][admin] < 3)return SendClientMessage(playerid,red,">> You need 4 lvl admin!");
  354.         p[0] = strtok(cmdtext,idx);
  355.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /unmute [id]");
  356.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  357.         if(!data[strval(p[0])][mute])return SendClientMessage(playerid,red,">> The player is not muted!");
  358.         new str[384];
  359.         format(str,sizeof(str),">> Admin %s[id: %d] unmuted %s[id: %d].",gn(playerid),playerid,gn(strval(p[0])),strval(p[0]));
  360.         SendClientMessageToAll(red,str);
  361.         print(str);
  362.         data[playerid][mute] = 0;
  363.         return 1;
  364.     }
  365.     if(!strcmp(cmd, "/mute", true))
  366.     {
  367.         if(data[playerid][admin] < 3)return SendClientMessage(playerid,red,">> You need 4 lvl admin!");
  368.         p[0] = strtok(cmdtext,idx);
  369.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /mute [id] [reason]");
  370.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  371.         p[1] = strtok(cmdtext, idx);
  372.         if(!strlen(p[1]))return SendClientMessage(playerid,red,">> /mute [id] [reason]");
  373.         new str[384];
  374.         format(str,sizeof(str),">> Admin %s[id: %d] muted %s[id: %d]. reason: %s",gn(playerid),playerid,gn(strval(p[0])),strval(p[0]),p[1]);
  375.         SendClientMessageToAll(red,str);
  376.         print(str);
  377.         data[playerid][mute] = 1;
  378.         return 1;
  379.     }
  380.     if(!strcmp(cmd, "/ban", true))
  381.     {
  382.         if(data[playerid][admin] < 4)return SendClientMessage(playerid,red,">> You need 5 lvl admin!");
  383.         p[0] = strtok(cmdtext,idx);
  384.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /ban [id] [reason]");
  385.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  386.         p[1] = strtok(cmdtext, idx);
  387.         if(!strlen(p[1]))return SendClientMessage(playerid,red,">> /ban [id] [reason]");
  388.         new str[384];
  389.         format(str,sizeof(str),">> Admin %s[id: %d] banned %s[id: %d]. Reason: %s",gn(playerid),playerid,gn(strval(p[0])),strval(p[0]),p[1]);
  390.         SendClientMessageToAll(red,str);
  391.         print(str);
  392.         BanEx(playerid,str);
  393.         return 1;
  394.     }
  395.     if(!strcmp(cmd, "/kick", true))
  396.     {
  397.         if(data[playerid][admin] < 4)return SendClientMessage(playerid,red,">> You need 5 lvl admin!");
  398.         p[0] = strtok(cmdtext,idx);
  399.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /kick [id] [reason]");
  400.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  401.         p[1] = strtok(cmdtext, idx);
  402.         if(!strlen(p[1]))return SendClientMessage(playerid,red,">> /kick [id] [reason]");
  403.         new str[384];
  404.         format(str,sizeof(str),">> Admin %s[id: %d] kicked %s[id: %d]. Reason: %s",gn(playerid),playerid,gn(strval(p[0])),strval(p[0]),p[1]);
  405.         SendClientMessageToAll(red,str);
  406.         print(str);
  407.         Kick(playerid);
  408.         return 1;
  409.     }
  410.     if(!strcmp(cmd, "/setadmin", true))
  411.     {
  412.         if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,red,">> You are not an administrator Rcon!");
  413.         p[0] = strtok(cmdtext, idx);
  414.         if(!strlen(p[0]))return SendClientMessage(playerid,red,">> /setadmin [id] [lvl]");
  415.         if(!IsPlayerConnected(strval(p[0])))return SendClientMessage(playerid,red,">> Player not connected!");
  416.         p[1] = strtok(cmdtext, idx);
  417.         if(!strlen(p[1]))return SendClientMessage(playerid,red,">> /setadmin [id] [lvl]");
  418.         if(strval(p[1]) > 5 || strval(p[1]) < 0)return SendClientMessage(playerid,red,">> LVL 0..5");
  419.         data[strval(p[0])][admin] = strval(p[1]);
  420.         new str[256];
  421.         format(str,sizeof(str),">> Player %s[id: %d] have %d lvl of Admin",gn(strval(p[0])),strval(p[0]),strval(p[1]));
  422.         SendClientMessageToAll(skyblue,str);
  423.         return 1;
  424.     }
  425.     if(!strcmp(cmdtext, "/admins", true))
  426.     {
  427.         new admins[1024],str[100];
  428.         for(new i;i<MAX_PLAYERS;i++)
  429.         {
  430.             if(IsPlayerConnected(i) && data[i][admin])
  431.             {
  432.                 format(str,sizeof(str),"{ffffff}ID: {00ff00}%d{ffffff} | {00ff00}%s{ffffff} | LVL: {00ff00}%d\n",i,gn(i),data[i][admin]);
  433.                 strcat(admins,str);
  434.             }
  435.         }
  436.         if(!strlen(admins))format(admins,sizeof(admins),"{ff0000}.: All admins OFFLINE :.");
  437.         ShowPlayerDialog(playerid, D_ADMINS, DIALOG_STYLE_MSGBOX, "ADMINS ONLINE", admins, "oKay", "");
  438.         return 1;
  439.     }
  440.     return 0;
  441. }
  442. public OnPlayerDeath(playerid, killerid, reason)
  443. {
  444.     data[playerid][deaths]++;
  445.     return 1;
  446. }
  447. public OnPlayerRequestClass(playerid,classid)
  448. {
  449.     if(GetPVarInt(playerid, "ChangeSkin"))
  450.     {
  451.         SetPlayerSkin(playerid,data[playerid][skinid]);
  452.         DeletePVar(playerid,"ChangeSkin");
  453.     }
  454.     return 1;
  455. }
  456.  
  457. SavePlayerVariables(playerid)
  458. {
  459.     if(data[playerid][logged])
  460.     {
  461.         GetPlayerArmour(playerid, data[playerid][armour]);
  462.         GetPlayerHealth(playerid, data[playerid][heal]);
  463.         new query[384];
  464.         format(query,sizeof(query),"UPDATE `users` SET pass='%s',admin='%d',heal='%.1f',armour='%.1f',kills='%d',deaths='%d',money='%d',mute='%d',ban='%d',freeze='%d',lastip='%s',skinid='%d' WHERE id='%d'",
  465.         data[playerid][pass],data[playerid][admin],data[playerid][heal],data[playerid][armour],GetPlayerScore(playerid),data[playerid][deaths],GetPlayerMoney(playerid),data[playerid][mute],data[playerid][ban],data[playerid][freeze],ip(playerid),GetPlayerSkin(playerid),data[playerid][id]);
  466.         mysql_function_query(handle,query, false, "SendQuery","");
  467.     }
  468. }
  469. Login(playerid)
  470. {
  471.     TogglePlayerSpectating(playerid, 0);
  472.     if(data[playerid][ban])
  473.     {
  474.         SendClientMessage(playerid,red,">> Account is banned");
  475.         BanEx(playerid,"Account is banned");
  476.         return 0;
  477.     }
  478.     if(data[playerid][freeze])TogglePlayerControllable(playerid,0);
  479.     SetPlayerHealth(playerid,data[playerid][heal]);
  480.     SetPlayerArmour(playerid,data[playerid][armour]);
  481.     SetPlayerScore(playerid, data[playerid][kills]);
  482.     ResetPlayerMoney(playerid);
  483.     GivePlayerMoney(playerid, data[playerid][money]);
  484.     data[playerid][logged] = true;
  485.     SendClientMessage(playerid,green,">> Successfully logged into your account! Statistics can learn to: /mystats");
  486.     return 1;
  487. }
  488. ShowRegisterDialog(playerid)
  489. {
  490.     new msgbox[256];  
  491.     format(msgbox,sizeof(msgbox),"{00BFFF}Welcome to the server!\n\
  492.                                      {00BFFF}Your account is not registered.\n\
  493.                                      {00FF00}>>{00BFFF}Ping: {ffffff}%d\n\
  494.                                      {00FF00}>>{00BFFF}Nick: {ffffff}%s\n\
  495.                                      {00FF00}>>{00BFFF}IP: {ffffff}\t%s\n\
  496.                                      {00BFFF}Enter your password:",GetPlayerPing(playerid),gn(playerid),ip(playerid));
  497.     ShowPlayerDialog(playerid,D_REGISTER,DIALOG_STYLE_INPUT,"Account",msgbox,"Enter","Close");
  498. }
  499. ShowLoginDialog(playerid,bool:warning = false)
  500. {
  501.     new msgbox[256];
  502.     if(warning)
  503.     {
  504.         format(msgbox,sizeof(msgbox),"{00BFFF}Welcome to the server!\n\
  505.                                      {00BFFF}Your account is registered.\n\
  506.                                      {00FF00}>>{00BFFF}Ping: {ffffff}%d\n\
  507.                                      {00FF00}>>{00BFFF}Nick: {ffffff}%s\n\
  508.                                      {00FF00}>>{00BFFF}IP: {ffffff}\t%s\n\
  509.                                      {00BFFF}Enter your password:\n\
  510.                                      {ff0000}Wrong password!",GetPlayerPing(playerid),gn(playerid),ip(playerid));
  511.     }
  512.     else
  513.     {
  514.         format(msgbox,sizeof(msgbox),"{00BFFF}Welcome to the server!\n\
  515.                                      {00BFFF}Your account is registered.\n\
  516.                                      {00FF00}>>{00BFFF}Ping: {ffffff}%d\n\
  517.                                      {00FF00}>>{00BFFF}Nick: {ffffff}%s\n\
  518.                                      {00FF00}>>{00BFFF}IP: {ffffff}\t%s\n\
  519.                                      {00BFFF}Enter your password:",GetPlayerPing(playerid),gn(playerid),ip(playerid));
  520.     }
  521.     ShowPlayerDialog(playerid,D_LOGIN, DIALOG_STYLE_INPUT, "Account", msgbox, "Enter", "Close");
  522.     return 0;
  523. }
  524. ClearPlayerVariables(playerid)
  525. {
  526.     format(data[playerid][pass],48,"");
  527.     data[playerid][admin] = 0;
  528.     data[playerid][heal] = 0.0;
  529.     data[playerid][armour] = 0.0;
  530.     data[playerid][kills] = 0;
  531.     data[playerid][deaths] = 0;
  532.     data[playerid][money] = 0;
  533.     data[playerid][mute] = 0;
  534.     data[playerid][ban] = 0;
  535.     data[playerid][freeze] = 0;
  536.     format(data[playerid][regdate],24,"");
  537.     data[playerid][logged] = false;
  538. }
  539. KickEx(playerid,reason[])
  540. {
  541.     new msg[256];
  542.     format(msg,sizeof(msg),"{FF0000}Player {FF69B4}%s[id: %d]{FF0000} has been kicked. Reason: {FF69B4}%s",gn(playerid),reason);
  543.     SendClientMessageToAll(0,msg);
  544.     Kick(playerid);
  545.     return 1;
  546. }
  547. gn(playerid)
  548. {
  549.     new var[24];
  550.     GetPlayerName(playerid,var,24);
  551.     return var;
  552. }
  553. ip(playerid)
  554. {
  555.     new plrIP[24];
  556.     GetPlayerIp(playerid, plrIP, sizeof(plrIP));
  557.     return plrIP;
  558. }
  559. CagePlayer(playerid)
  560. {
  561.     new Float:pp[3];
  562.     GetPlayerPos(playerid, pp[0], pp[1], pp[2]);
  563.     data[playerid][cage][0] = CreateObject(985, pp[0], pp[1]+4, pp[2], 0.0, 0.0, 0.0);
  564.     data[playerid][cage][1] = CreateObject(985, pp[0]+4, pp[1], pp[2], 0.0, 0.0, 90.0);
  565.     data[playerid][cage][2] = CreateObject(985, pp[0]-4, pp[1], pp[2], 0.0, 0.0, 270.0);
  566.     data[playerid][cage][3] = CreateObject(985, pp[0], pp[1]-4, pp[2], 0.0, 0.0, 180.0);
  567.     data[playerid][caged] = true;
  568. }
  569. UnCagePlayer(playerid)
  570. {
  571.     data[playerid][caged] = false;
  572.     for(new i;i<4;i++){
  573.         DestroyObject(data[playerid][cage][i]);
  574.     }
  575. }
  576. strtok(const string[], &index)
  577. {
  578.     new length = strlen(string);
  579.     while ((index < length) && (string[index] <= ' '))
  580.     {
  581.         index++;
  582.     }
  583.  
  584.     new offset = index;
  585.     new result[20];
  586.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  587.     {
  588.         result[index - offset] = string[index];
  589.         index++;
  590.     }
  591.     result[index - offset] = EOS;
  592.     return result;
  593. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement