Advertisement
kaZax

[FS] kAdmin - Admins System [MySQL]

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