PDA

Просмотр полной версии : [Вопрос] Система снятия админа



kala4iks
04.09.2016, 15:53
Добрый день помогите пожалуйста сделал такую систему снятие с админки через команду /unmakeadmin Ник игрока но почему-то не срабатывает.

И не получается реализовать если аккаунт в базе данных не найден чтоб писало аккаунт не найден. И если у игрока нет админки чтоб писало игрок не админ.


CMD:unmakeadmin(playerid,params[])
{
new name[24],string[128];
if(sscanf(params,"s[24]",name))return send(playerid,0x00BFFFAA,"[КОМАНДЫ] {FFFFFF}/unmakeadmin [Ник игрока].");
mysql_format(dbHandle,string,sizeof(string),"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE `name` = '%s'",name);
mysql_tquery(dbHandle,string,"SetUnAdmin","is",playerid,name);
return 1;
}


forward SetUnAdmin(playerid,name[]);
public SetUnAdmin(playerid,name[])
{
new rows,fields,string[63];
cache_get_data(rows,fields);
if(!rows)return SendClientMessage(playerid, COLOR_GRAD1, "Не найдено совпадений!");
if(GetPlayerID(name) != INVALID_PLAYER_ID) PI[GetPlayerID(name)][pAdmin] = 0;
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM "T_ADMIN" WHERE `name`='%s'", name);
mysql_tquery(dbHandle, string, "", "");
format(query,256,"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1",name);
mysql_tquery(dbHandle,string,"","");
f(string,"Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, string);
f(string,"%s снял %s с должности администратора",GetName(playerid),name);
return 1;
}

Saibot
04.09.2016, 17:21
CMD:unmakeadmin(playerid, params[])
{
if(sscanf(params,"s[24]",params))
return SendClientMessage(playerid, -1, !"[КОМАНДЫ] /unmakeadmin [Ник игрока].");

new mysql_str[65+ MAX_PLAYER_NAME];

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"SELECT * FROM `"T_ACCOUNTS"` WHERE `name` = '%s' AND `admin` > '0'", params);
mysql_tquery(connects, mysql_str, true, "SetUnAdmin", "is", playerid, params);
return 1;
}
//-------
forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Не найдено совпадений!");

new mysql_str[70 + MAX_PLAYER_NAME];
mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"DELETE FROM "T_ADMIN" WHERE `name`='%s'", name);
mysql_pquery(dbHandle, mysql_str);

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1", name);
mysql_pquery(dbHandle, mysql_str);

f(mysql_str, "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, mysql_str);
return 1;
}

kala4iks
04.09.2016, 18:42
CMD:unmakeadmin(playerid, params[])
{
if(sscanf(params,"s[24]",params))
return SendClientMessage(playerid, -1, !"[КОМАНДЫ] /unmakeadmin [Ник игрока].");

new mysql_str[65+ MAX_PLAYER_NAME];

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"SELECT * FROM `"T_ACCOUNTS"` WHERE `name` = '%s' AND `admin` > '0'", params);
mysql_tquery(connects, mysql_str, true, "SetUnAdmin", "is", playerid, params);
return 1;
}
//-------
forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Не найдено совпадений!");

new mysql_str[70 + MAX_PLAYER_NAME];
mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"DELETE FROM "T_ADMIN" WHERE `name`='%s'", name);
mysql_pquery(dbHandle, mysql_str);

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1", name);
mysql_pquery(dbHandle, mysql_str);

f(mysql_str, "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, mysql_str);
return 1;
}

Вообще не чего не происходит.

Saibot
04.09.2016, 19:01
1

CMD:unmakeadmin(playerid, params[])
{
if(sscanf(params,"s[24]",params))
return SendClientMessage(playerid, -1, !"[КОМАНДЫ] /unmakeadmin [Ник игрока].");

new mysql_str[80+ MAX_PLAYER_NAME];

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"SELECT * FROM `"T_ACCOUNTS"` WHERE `name` = '%s'", params);
mysql_tquery(dbHandle, mysql_str, true, "SetUnAdmin", "is", playerid, params);
return 1;
}
//-------
forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Не найдено совпадений!");

if(!cache_get_field_content_int(0, "admin", dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Игрок не администратор!");

new mysql_str[80 + MAX_PLAYER_NAME];
mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"DELETE FROM "T_ADMIN" WHERE `name`='%s'", name);
mysql_pquery(dbHandle, mysql_str);

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1", name);
mysql_pquery(dbHandle, mysql_str);

f(mysql_str, "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, mysql_str);
return 1;
}

2

CMD:unmakeadmin(playerid, params[])
{
if(sscanf(params,"s[24]",params))
return SendClientMessage(playerid, -1, !"[КОМАНДЫ] /unmakeadmin [Ник игрока].");

new mysql_str[80 + MAX_PLAYER_NAME];

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"SELECT * FROM `"T_ACCOUNTS"` WHERE `name` = '%s' AND `admin` > '0'", params);
mysql_tquery(dbHandle, mysql_str, true, "SetUnAdmin", "is", playerid, params);
return 1;
}
//-------
forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Не найдено совпадений!");

new mysql_str[80 + MAX_PLAYER_NAME];
mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"DELETE FROM "T_ADMIN" WHERE `name`='%s'", name);
mysql_pquery(dbHandle, mysql_str);

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1", name);
mysql_pquery(dbHandle, mysql_str);

f(mysql_str, "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, mysql_str);
return 1;
}

Blood
04.09.2016, 19:59
CMD:unmakeadmin(playerid, params[])
{
if(isnull(params))
return SendClientMessage(playerid, -1, !"[КОМАНДЫ] /unmakeadmin [Ник игрока].");
new string[100];
mysql_format(dbHandle, string, sizeof(string),"SELECT `admin` FROM `"T_ACCOUNTS"` WHERE `name` = '%s'", params);
new Cache:result = mysql_query(dbHandle, string);
if(cache_num_rows() == 0)
return SendClientMessage(playerid, COLOR_GRAD1, !"Не найдено совпадений!"),cache_delete(result);
if(!cache_get_field_content_int(0, "admin", dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Игрок не администратор!");
mysql_format(dbHandle, string, sizeof(string),"DELETE FROM "T_ADMIN" WHERE `name`='%s'", params);
mysql_function_query(dbHandle, string, false, "", "");
mysql_format(dbHandle, string, sizeof(string),"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1", params);
mysql_function_query(dbHandle, string, false, "", "");
f(string, "Вы сняли %s с должности администратора", params);
SendClientMessage(playerid, COLOR_YELLOW, string);
return cache_delete(result);
}

kala4iks
04.09.2016, 20:23
1

CMD:unmakeadmin(playerid, params[])
{
if(sscanf(params,"s[24]",params))
return SendClientMessage(playerid, -1, !"[КОМАНДЫ] /unmakeadmin [Ник игрока].");

new mysql_str[80+ MAX_PLAYER_NAME];

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"SELECT * FROM `"T_ACCOUNTS"` WHERE `name` = '%s'", params);
mysql_tquery(dbHandle, mysql_str, true, "SetUnAdmin", "is", playerid, params);
return 1;
}
//-------
forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Не найдено совпадений!");

if(!cache_get_field_content_int(0, "admin", dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Игрок не администратор!");

new mysql_str[80 + MAX_PLAYER_NAME];
mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"DELETE FROM "T_ADMIN" WHERE `name`='%s'", name);
mysql_pquery(dbHandle, mysql_str);

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1", name);
mysql_pquery(dbHandle, mysql_str);

f(mysql_str, "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, mysql_str);
return 1;
}

2

CMD:unmakeadmin(playerid, params[])
{
if(sscanf(params,"s[24]",params))
return SendClientMessage(playerid, -1, !"[КОМАНДЫ] /unmakeadmin [Ник игрока].");

new mysql_str[80 + MAX_PLAYER_NAME];

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"SELECT * FROM `"T_ACCOUNTS"` WHERE `name` = '%s' AND `admin` > '0'", params);
mysql_tquery(dbHandle, mysql_str, true, "SetUnAdmin", "is", playerid, params);
return 1;
}
//-------
forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, !"Не найдено совпадений!");

new mysql_str[80 + MAX_PLAYER_NAME];
mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"DELETE FROM "T_ADMIN" WHERE `name`='%s'", name);
mysql_pquery(dbHandle, mysql_str);

mysql_format(dbHandle, mysql_str, sizeof(mysql_str),
"UPDATE "T_ACCOUNTS" SET `admin` = '0' WHERE name = '%s' LIMIT 1", name);
mysql_pquery(dbHandle, mysql_str);

f(mysql_str, "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, mysql_str);
return 1;
}

В обоих случаях на строчку ругается.


mysql_tquery(dbHandle, mysql_str, true, "SetUnAdmin", "is", playerid, params);


C:\Users\Владелец\Desktop\Motion RP\gamemodes\motiongm.pwn(19057) : error 035: argument type mismatch (argument 3)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

Sp1ke
04.09.2016, 20:29
В обоих случаях на строчку ругается.


mysql_tquery(dbHandle, mysql_str, true, "SetUnAdmin", "is", playerid, params);


C:\Users\Владелец\Desktop\Motion RP\gamemodes\motiongm.pwn(19057) : error 035: argument type mismatch (argument 3)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.



mysql_tquery(dbHandle, mysql_str, "SetUnAdmin", "is", playerid, params);

kala4iks
05.09.2016, 10:35
mysql_tquery(dbHandle, mysql_str, "SetUnAdmin", "is", playerid, params);

Не срабатывает почему-то.

DeimoS
05.09.2016, 12:23
Определись уже с стилем кода. То ты используешь send и f, то пишешь нормальные SendClientMessage и format. В запросах то format, то mysql_format. Это не есть хорошо


CMD:unmakeadmin(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, 0x00BFFFAA,"[КОМАНДЫ] {FFFFFF}/unmakeadmin [Ник игрока].");
new string[45+MAX_PLAYER_NAME];
mysql_format(dbHandle, string, sizeof(string), "SELECT `admin` FROM "T_ACCOUNTS" WHERE name = '%s'", params);
mysql_tquery(dbHandle, string, "SetUnAdmin", "is", playerid, params);
return 1;
}


forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, "Не найдено совпадений!");

if(GetPlayerID(name) != INVALID_PLAYER_ID) PI[GetPlayerID(name)][pAdmin] = 0;

new string[55+MAX_PLAYER_NAME];
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM "T_ADMIN" WHERE name = '%s'", name);
mysql_tquery(dbHandle, string, "", "");

mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ACCOUNTS" SET admin = 0 WHERE name = '%s' LIMIT 1", name);
mysql_tquery(dbHandle, string, "", "");

format(string, sizeof(string), "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}

kala4iks
05.09.2016, 13:25
Определись уже с стилем кода. То ты используешь send и f, то пишешь нормальные SendClientMessage и format. В запросах то format, то mysql_format. Это не есть хорошо


CMD:unmakeadmin(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, 0x00BFFFAA,"[КОМАНДЫ] {FFFFFF}/unmakeadmin [Ник игрока].");
new string[45+MAX_PLAYER_NAME];
mysql_format(dbHandle, string, sizeof(string), "SELECT `admin` FROM "T_ACCOUNTS" WHERE name = '%s'", params);
mysql_tquery(dbHandle, string, "SetUnAdmin", "is", playerid, params);
return 1;
}


forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(mysql_connect_ID))
return SendClientMessage(playerid, COLOR_GRAD1, "Не найдено совпадений!");

if(GetPlayerID(name) != INVALID_PLAYER_ID) PI[GetPlayerID(name)][pAdmin] = 0;

new string[55+MAX_PLAYER_NAME];
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM "T_ADMIN" WHERE name = '%s'", name);
mysql_tquery(dbHandle, string, "", "");

mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ACCOUNTS" SET admin = 0 WHERE name = '%s' LIMIT 1", name);
mysql_tquery(dbHandle, string, "", "");

format(string, sizeof(string), "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}

Спасибо, работает а как можно сделать чтоб если у игрока пытающегося снять 11уровень админки чтоб писало что его нельзя снять.?

DeimoS
05.09.2016, 17:34
forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, "Не найдено совпадений!");

if(cache_get_field_content_int(0, "admin", dbHandle) == 11)
{
SendClientMessage(playerid, 0xFF0000FF, "11 уровень низя");
return 1;
}

if(GetPlayerID(name) != INVALID_PLAYER_ID) PI[GetPlayerID(name)][pAdmin] = 0;

new string[55+MAX_PLAYER_NAME];
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM "T_ADMIN" WHERE name = '%s'", name);
mysql_tquery(dbHandle, string, "", "");

mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ACCOUNTS" SET admin = 0 WHERE name = '%s' LIMIT 1", name);
mysql_tquery(dbHandle, string, "", "");

format(string, sizeof(string), "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}


forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, "Не найдено совпадений!");

switch(cache_get_field_content_int(0, "admin", dbHandle))
{
case 9, 10, 11://Тут перечисляй все уровни, которые нельзя снять
{
SendClientMessage(playerid, 0xFF0000FF, "9, 10 и 11 уровни низя");
return 1;
}
}

if(GetPlayerID(name) != INVALID_PLAYER_ID) PI[GetPlayerID(name)][pAdmin] = 0;

new string[55+MAX_PLAYER_NAME];
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM "T_ADMIN" WHERE name = '%s'", name);
mysql_tquery(dbHandle, string, "", "");

mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ACCOUNTS" SET admin = 0 WHERE name = '%s' LIMIT 1", name);
mysql_tquery(dbHandle, string, "", "");

format(string, sizeof(string), "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}

kala4iks
07.09.2016, 13:58
А еще такой вопрос как сделать чтоб если игрок 10 уровня попытался снять 10 и ему написало что 10 уровень не может снимать. Чтоб получается 10 уровень мог снимать всех до 10 уровня а 11 уровень мог снимать все уровни.

Nash_Brigers
07.09.2016, 14:15
А еще такой вопрос как сделать чтоб если игрок 10 уровня попытался снять 10 и ему написало что 10 уровень не может снимать. Чтоб получается 10 уровень мог снимать всех до 10 уровня а 11 уровень мог снимать все уровни.


forward SetUnAdmin(playerid, name[]);
public SetUnAdmin(playerid, name[])
{
if(!cache_get_row_count(dbHandle))
return SendClientMessage(playerid, COLOR_GRAD1, "Не найдено совпадений!");

if(cache_get_field_content_int(0, "admin", dbHandle) >= PI[playerid][pAdmin])
return SendClientMessage(playerid, 0xFF0000FF, "низя");

if(GetPlayerID(name) != INVALID_PLAYER_ID) PI[GetPlayerID(name)][pAdmin] = 0;

new string[55+MAX_PLAYER_NAME];
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM "T_ADMIN" WHERE name = '%s'", name);
mysql_tquery(dbHandle, string, "", "");

mysql_format(dbHandle, string, sizeof(string), "UPDATE "T_ACCOUNTS" SET admin = 0 WHERE name = '%s' LIMIT 1", name);
mysql_tquery(dbHandle, string, "", "");

format(string, sizeof(string), "Вы сняли %s с должности администратора", name);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
} Так можно будет снимать всех, кто младше по уровню.

TheMallard
07.09.2016, 14:50
kala4iks, может стоит подучить основы языка? Или на информатику походить? Нельзя написать мод постоянно прося помощи на форумах.

kala4iks
07.09.2016, 16:14
kala4iks, может стоит подучить основы языка? Или на информатику походить? Нельзя написать мод постоянно прося помощи на форумах.

А кто сказал что я постоянно прошу помощи?