PDA

Просмотр полной версии : [Вопрос] Почему не срабатывает второе условие?



Mike World
17.01.2018, 20:19
Всем привет! С прошедшими праздниками всех!)
Я тут пишу /setmoder - выдать права администратора, да вот такая дичь вышла, что срабатывает только ПЕРВОЕ условие проверки игрока на уровень админ-прав, а не второе.
Голову ломаю, решил к вам обратиться!) Одна голова хорошо, а две еще лучше :)

Вот собственно сам код:

CMD:setmoder(playerid, params[])
{
if(strcmp(GN(playerid), ADM_DEV, true)) return SCM(playerid, COLOR_GREY, "У вас нет доступа!");
if(sscanf(params, "dd", params[0], params[1])) return SCM(playerid, COLOR_GREY, "Подсказка: /setmoder [id] [lvl]");
// if(!pLogin[params[0]]) return SCM(playerid, COLOR_GREY, "Игрок не авторизован!");
// if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, "Игрок не в сети!");
if(PlayerInfo[params[0]][Adm_level] <= 0)
{
static const fmt_str[] = "INSERT INTO `moderator` (`name`, `alevel`) VALUES ('%s', '%d')";
new query[sizeof(fmt_str)+(-2+MAX_PLAYER_NAME)+(-2+2)];
format(query, sizeof(query), fmt_str, GN(params[0]), params[1]);
mysql_tquery(dbHandle, query, "", "");

static const fmt_say[] = "Вы выдали админ-права %d-уровня игроку %s!";
new str[sizeof(fmt_say)+(-2+2)+(-2+MAX_PLAYER_NAME)];
format(str, sizeof(str), fmt_say, params[1], GN(params[0]));
SCM(playerid, -1, str);
}
else if(PlayerInfo[params[0]][Adm_level] >= 1)
{
static const fmt_str[] =
"\
UPDATE `moderator` SET `name` = '%s',\
`alevel` = '%d' LIMIT 1\
";
new query[sizeof(fmt_str)+(-2+MAX_PLAYER_NAME)+(-2+2)];
format(query, sizeof(query), fmt_str, GN(params[0]), params[1]);
mysql_tquery(dbHandle, query, "", "");

static const fmt_say[] = "Вы изменили уровень админ-прав на %d игроку %s!";
new str[sizeof(fmt_say)+(-2+2)+(-2+MAX_PLAYER_NAME)];
format(str, sizeof(str), fmt_say, params[1], GN(params[0]));
SCM(playerid, -1, str);
}
return 1;
}

Outsider
17.01.2018, 22:05
Проверил, все работает. Может у тебя значение PlayerInfo[params[0]][Adm_level] не меняется нигде?

Angeeel
17.01.2018, 23:06
if(PlayerInfo[params[0]][Adm_level] == 0)
{
....
}
else
{
...
}
Можно вот так попробовать

Mike World
17.01.2018, 23:15
Спасибо тебе большое)
Настолько замотался, что уже глаза разбегались и забыл поставить PlayerInfo[params[0]][Adm_level] = strval(params[1]);
А вот и рабочий наконец-таки код

CMD:setmoder(playerid, params[])
{
if(strcmp(GN(playerid), ADM_DEV, true)) return SCM(playerid, COLOR_GREY, "У вас нет доступа!");
if(sscanf(params, "dd", params[0], params[1])) return SCM(playerid, COLOR_GREY, "Подсказка: /setmoder [id] [lvl]");
// if(!pLogin[params[0]]) return SCM(playerid, COLOR_GREY, "Игрок не авторизован!");
// if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, "Игрок не в сети!");
if(PlayerInfo[params[0]][Adm_level] <= 0)
{
static const fmt_str[] = "INSERT INTO `moderator` (`name`, `alevel`) VALUES ('%s', '%d')";
new query[sizeof(fmt_str)+(-2+MAX_PLAYER_NAME)+(-2+2)];
format(query, sizeof(query), fmt_str, GN(params[0]), params[1]);
mysql_tquery(dbHandle, query, "", "");

static const fmt_say[] = "Вы выдали админ-права %d-уровня игроку %s!";
new str[sizeof(fmt_say)+(-2+2)+(-2+MAX_PLAYER_NAME)];
format(str, sizeof(str), fmt_say, params[1], GN(params[0]));
SCM(playerid, -1, str);

PlayerInfo[params[0]][Adm_level] = strval(params[1]);
}
else if(PlayerInfo[params[0]][Adm_level] >= 1)
{
static const fmt_str[] =
"\
UPDATE `moderator` SET `name` = '%s',\
`alevel` = '%d' LIMIT 1\
";
new query[sizeof(fmt_str)+(-2+MAX_PLAYER_NAME)+(-2+2)];
format(query, sizeof(query), fmt_str, GN(params[0]), params[1]);
mysql_tquery(dbHandle, query, "", "");

static const fmt_say[] = "Вы изменили уровень админ-прав на %d игроку %s!";
new str[sizeof(fmt_say)+(-2+2)+(-2+MAX_PLAYER_NAME)];
format(str, sizeof(str), fmt_say, params[1], GN(params[0]));
SCM(playerid, -1, str);
}
return 1;
}

- - - Добавлено - - -

Можно закрывать данную тему!