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

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

    Команда /ban

    При логине сервер проверяет переменную игрока pInfo[pBan]. Если она ровняется 1, то его кикает.
    Код:
    if (pInfo[playerid][pBan] == 1)
      {
      SendClientMessage(playerid,0xAA3333AA, "Âû çàáàíåíû íà ñåðâåðå");
      Kick(playerid);
      
      }
    Подскажите как мне сделать команду /ban? Я пытаюсь сделать так:

    Код:
    	if (strcmp("/ban", cmdtext, true, 10) == 0)
    	{
           if(pInfo[playerid][pAdm] != 0)
    
    		{
    
    	// что сюда написать чтобы указанному игроку изменяло его переменную pInfo [pBan] на 1?
    		
    		}
    
    
    		return 1;
    	}
    Не злитесь. Я всего лишь учусь скриптить

  2. #2
    Аватар для BaBuIIIkaDrifteR
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.03.2014
    Адрес
    Ямайка
    Сообщений
    303
    Репутация:
    8 ±
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result)) return SCM(playerid, COLOR_RED, "{00FF66}Energy Drift™: {ffffff}/ban [id/Playerid] [Причина]");
    new baniso[526];
    new year, month,day;
    getdate(year, month, day);
    format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
    if(Player[giveplayerid][Bann] == 1) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
    else if(Player[giveplayerid][Bann] == 2) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));

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

    Свои переменные только подставь
    ip adress: В разработке:7777
    My Skype: Skype Phone
    [В]контакте: Рома Уруру
    Разработка: EnergyDRIFT©|2015

  3. #3
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Цитата Сообщение от BaBuIIIkaDrifteR Посмотреть сообщение
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result)) return SCM(playerid, COLOR_RED, "{00FF66}Energy Drift™: {ffffff}/ban [id/Playerid] [Причина]");
    new baniso[526];
    new year, month,day;
    getdate(year, month, day);
    format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
    if(Player[giveplayerid][Bann] == 1) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));
    else if(Player[giveplayerid][Bann] == 2) format(baniso, sizeof(baniso), "{00FF66}Energy Drift: {ffffff}Администратор {FF9900}'%s[%d]' забанил '%s[%d]'. {ffffff}Причина: %s.", sendername, playerid, giveplayer, giveplayerid, (result));

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

    Свои переменные только подставь
    Вы меня простите. Но я не нашёл где тут изменяет значение переменной игрока pBan на 1. Я такой большой и сложный код боюсь копировать. Мне не нужно лишнего. Покажите пожалуйста что нужно скопировать чтобы просто присвоилось значение этой переменной указанному игроку если уровень pAdm не равен нулю. Мне даже не нужно чтобы в чат что-то писало. Максимально просто пожалуйста опишите. Чтобы я разобрался и сам научился делать команды подобные и усложнять их. Темболее у меня система проверки игрока на бан без првоерки на то на какое время он забанен. Просто забанен или нет.
    Не злитесь. Я всего лишь учусь скриптить

  4. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    И что вы ему скинули? Ошибок куча будет даже из-за неизвестных переменных.

    Albert, вот здесь можно посмотреть как верно сделана команда. Если конечно вы используете плагин sscanf.

    Если не используете, вот от меня набросок команды небольшой:
    PHP код:
    if (strcmp(cmdtext"/ban"true4) == 0) {
        if (
    cmdtext[4] == '\0')    
            return 
    SendClientMessage(playerid, -1"Используйте: /ban [targetid]");    

        new
            
    targetid strval(cmdtext[5]);

        if (!
    IsPlayerConnected(targetid))
            return 
    SendClientMessage(playerid, -1"Указанного игрока нет на сервере.");

        
    pInfo[targetid][pBan] = 1// вот здесь!

        
    return Ban(targetid);


  5. Пользователь сказал cпасибо:
    Albert (05.01.2015)
  6. #5
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    И что вы ему скинули? Ошибок куча будет даже из-за неизвестных переменных.

    Albert, вот здесь можно посмотреть как верно сделана команда. Если конечно вы используете плагин sscanf.

    Если не используете, вот от меня набросок команды небольшой:
    PHP код:
    if (strcmp(cmdtext"/ban"true4) == 0) {
        if (
    cmdtext[4] == '\0')    
            return 
    SendClientMessage(playerid, -1"Используйте: /ban [targetid]");    

        new
            
    targetid strval(cmdtext[5]);

        if (!
    IsPlayerConnected(targetid))
            return 
    SendClientMessage(playerid, -1"Указанного игрока нет на сервере.");

        
    pInfo[targetid][pBan] = 1// вот здесь!

        
    return Ban(targetid);

    И словить не доход msg до игрока :D

  7. #6
    Аватар для Albert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2014
    Сообщений
    109
    Репутация:
    0 ±
    Огромное спасибо. Проблема решена. Ваш ник будет в титрах сервера за бескорыстную помощь
    Не злитесь. Я всего лишь учусь скриптить

 

 

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

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

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

Ваши права

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