Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для Angeeel
    Пользователь

    Статус
    Оффлайн
    Регистрация
    28.12.2017
    Сообщений
    15
    Репутация:
    0 ±

    команда /makeadmin

    Всем привет.

    Помогите написать команду

    Описание работы команды

    При вводе команды(/makeadmin id/name lvl), если игрок в сети выдаем админку и записываем в таблицу с админами или обновляем lvl(если lvl 0, удаляем из таблицы). Если игрок не в сети и он админ, то при вводе его ника отправляем запрос в бд, проверяем на наличие админа в таблице. Если он есть в таблице, то меняем lvl(если lvl 0 удаляем из таблицы).

    Вопрос

    Как использовать и id и ник в команде?

    Например если игрок в онлайне, то работал и id и ник, а если в оффлайне, то только ник.

    Ник нужен для запроса в бд.

    PHP код:
    CMD:makeadmin(playerid,params[]){
        if(
    PlayerLogged[playerid] == 0) return true;
        if(
    PlayerInfo[playerid][Admin] < 10 || AdminLogged[playerid] == false) return true;
        if(
    sscanf(params"ud"params[0], params[1]))
            return 
    SendClientMessage(playeridCGREY"Используйте: /makeadmin [id/ник игрока] [уровень]");
        if(
    params[1] < || params[1] > 10
            return 
    SendClientMessage(playeridCGREY"Уровень от 0 до 10");
        if(!
    IsPlayerConnected(params[0])){
                new 
    query_string[128];
                
    format(query_stringsizeof(query_string), "SELECT * FROM `admins` WHERE `admin` = '%s' LIMIT 1"params[0]);
                
    mysql_tquery(database_connectquery_string"Makeadmin""isd"playeridparams[0], params[1]);
                return 
    true;
        }else{
            if(
    params[1] == 0){
                new 
    query_string[128];
                
    format(query_stringsizeof(query_string), "DELETE FROM `admins` WHERE `admin`='%s'"PlayerInfo[params[0]][Name]);
                
    mysql_tquery(database_connectquery_string"""");
                static const 
    fmt_str[] = "{FFFFFF}Вы выдали админку i уровня игроку %s[%d]";
                new 
    string[sizeof(fmt_str)+2+MAX_PLAYER_NAME+4];
                
    format(stringsizeof(string), fmt_strparams[1], PlayerInfo[params[0]][Name], playerid);
                
    SendClientMessage(playerid, -1string);
                static const 
    fmt_str_1[] = "{FFFFFF}%s выдал Вам %i уровень администратора";
                new 
    string_1[sizeof(fmt_str_1)+MAX_PLAYER_NAME+2];
                
    format(string_1sizeof(string_1), fmt_str_1PlayerInfo[playerid][Name], params[1]);
                
    SendClientMessage(params[0], -1string_1);
                return 
    true;
            }
            if(
    PlayerInfo[params[0]][Admin] == 0){
                new 
    reg[30], ig[30], ip[16];
                
    GetPlayerIp(playeridip16);
                new 
    secminuthourdaymonthyear;
                
    gettime(hourminutsec);
                
    getdate(yearmonthday);
                new 
    data[30];
                
    format(kekesizeof(keke), "%i,%i,%i,%i,%i,%i"yearmonthdayhourminutsec);
                
    format(reg30data);
                
    format(ig30data);
                new 
    query_string[+3+MAX_PLAYER_NAME+MAX_PLAYER_NAME+30+30+16];
                
    format(query_stringsizeof(query_string), ""INSERT INTO `admins` (`lvl`, `admin`, `whoadmin`, `reg`, `ig`, `ip`) VALUES ('%d''%s''%s''%s''%s''%s')""params[1], PlayerInfo[params[0]][Name], PlayerInfo[playerid][Name], regigip);
                
    mysql_tquery(database_connectquery_string"""");
                static const 
    fmt_str[] = "{FFFFFF}Вы выдали админку %i игроку %s";
                new 
    string[sizeof(fmt_str)+2+MAX_PLAYER_NAME+4];
                
    format(stringsizeof(string), fmt_strparams[1], PlayerInfo[params[0]][Name]);
                
    SendClientMessage(playerid, -1string);
                static const 
    fmt_str_1[] = "{FFFFFF}%s выдал Вам %i уровень администратора";
                new 
    string_1[sizeof(fmt_str_1)+MAX_PLAYER_NAME+2];
                
    format(string_1sizeof(string_1), fmt_str_1PlayerInfo[playerid][Name], params[1]);
                
    SendClientMessage(params[0], -1string_1);
                
    PlayerInfo[params[0]][Admin] = params[1];
            }else{
                new 
    query_string[+2+24];
                
    format(query_stringsizeof(query_string), "UPDATE `admins` SET  `lvl` = '%d' WHERE `admin` = '%s' LIMIT 1"params[1], PlayerInfo[params[0]][Name]);
                
    mysql_tquery(database_connectquery_string"""");
                static const 
    fmt_str[] = "{FFFFFF}Вы выдали админку %i уровня игроку %s";
                new 
    string[sizeof(fmt_str)+2+MAX_PLAYER_NAME+4];
                
    format(stringsizeof(string), fmt_strparams[1], PlayerInfo[params[0]]);
                
    SendClientMessage(playerid, -1string);
                static const 
    fmt_str_1[] = "{FFFFFF}%s выдал Вам %i уровень администратора";
                new 
    string_1[sizeof(fmt_str_1)+MAX_PLAYER_NAME+2];
                
    format(string_1sizeof(string_1), fmt_str_1PlayerInfo[playerid][Name], params[1]);
                
    SendClientMessage(params[0], -1string_1);
                
    PlayerInfo[params[0]][Admin] = params[1];
            }
        }
        return 
    true;
    }

    запрос в бд

    function Makeadmin(playerid,giveplayerid[],level){
        new 
    stringer[128], lvlva[2];
        new 
    rows;
        
    cache_get_row_count(rows);
        if(!
    rows){
            
    SendClientMessage(playeridCGREY"Нет такого администратора");
        }else{
            
    cache_get_value_name(0"lvl"lvlva);
            if(
    strval(lvlva) != 0){
                 if(
    level == 0){
                    
    format(stringer128"DELETE FROM `admins` WHERE `admin`='%s'"giveplayerid);
                    
    mysql_tquery(database_connectstringer"""");
                    static const 
    fmt_str[] = "{FFFFFF}%s выдан уровень администратора: %i";
                    new 
    string[sizeof(fmt_str)-2+2-2+MAX_PLAYER_NAME-2+4];
                    
    format(stringsizeof(string), fmt_strgiveplayeridlevel);
                    
    SendClientMessage(playerid, -1string);
                 }else{
                    
    format(stringer128"UPDATE `admins` SET  `lvl` = '%d' WHERE `admin` = '%s' LIMIT 1"levelgiveplayerid);
                    
    mysql_tquery(database_connectstringer"""");
                    static const 
    fmt_str[] = "{FFFFFF}%s выдан уровень администратора: %i";
                    new 
    string[sizeof(fmt_str)-2+2-2+MAX_PLAYER_NAME-2+4];
                    
    format(stringsizeof(string), fmt_strgiveplayeridlevel);
                    
    SendClientMessage(playerid, -1string);
                 }
            }
        }
        return 
    true;

    Последний раз редактировалось Angeeel; 28.12.2017 в 23:31.

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    sscanf(params"s[24]"nickname);
    if(
    IsNumeric(nickname))
    {
        new 
    giveplayerid strval(nickname);
        if(!
    IsPlayerConnected(giveplayerid))
            return 
    SendClientMessage(playerid, -1"Игрок не найден");
        
    //Всё остальное, связанное с ID
    }
    else
    {
        
    //Всё связанное с введённым ником, что хранится в nickname

    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    Angeeel (29.12.2017)
  4. #3
    Аватар для Angeeel
    Пользователь

    Статус
    Оффлайн
    Регистрация
    28.12.2017
    Сообщений
    15
    Репутация:
    0 ±
    Все работает, спасибо)

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •