Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: /byplayer (DC_CMD)

  1. #1
    Аватар для Alanchick
    Пользователь

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

    /byplayer (DC_CMD)

    Как то раз ко мне ВКонтакте обратился человек с помощью.
    Он попросил, чтобы я помог ему написать команду, с помощью которой администратор будет писать от лица игрока.
    Я ему помог. (Подтолкнул его на правильный путь)
    Сегодня решил доработать и выложить эту команду на Pro-Pawn.Ru.
    Ну что-ж, для чего команда нужна и как она работает, я думаю, вы уже поняли, по этому перейдем к коду:
    Если нету этого макроса, то добавляем:
    PHP код:
    #define SCM SendClientMessage 
    В public OnPlayerConnect:
    PHP код:
    SetPVarInt(playerid"Logged"0); 
    В public OnPlayerSpawn:
    PHP код:
    SetPVarInt(playerid"Logged"1); 
    Сама команда:
    PHP код:
    CMD:byplayer(playeridparams[])
    {
        new 
    string[180],
            
    player,
            
    text;
        if(
    GetPVarInt(playerid"Logged") == 0) return true;   // Проверка на авторизацию
        
    if(PlayerInfo[playerid][pAdmin] <= 4) return true;  // Проверка на админ-уровень (с 5 админ-уровня)
        
    if(sscanf(params"ds[144]"playertext)) return
            
    SCM(playerid, -1"Введите: /byplayer [id игрока] [текст]"); // Если игрок не ввел какое либо значение
         
    if(GetPVarInt(id"Logged") == 0) return
             
    SCM(playerid, -1"Игрок не авторизован!"); // Если игрок, id которого ввели, не авторизован
        
    if(PlayerInfo[playerid][pName] == PlayerInfo[player][pName]) return
            
    SCM(playerid, -1"Вы не можете указать свой ID!"); // Если игрок указал свой ID
        
    if(PlayerInfo[id][pAdmin] > 0) return
            
    SCM(playerid, -1"Вы не можете что то сказать от имени администраторa!"); // Если указанный игрок - администратор
        
    format(stringsizeof(string), "<< All >> %s сказал: %s"PlayerInfo[player][pName],text); // форматируем текст
        
    SendClientMessageToAll(-1string);
        return 
    1;

    Получается: "<< All >> Nick_Name сказал: Добро пожаловать на Pro-Pawn.Ru :)".
    (Чат глобальный)

    Моя первая команда для публики :)
    Жду адекватной критики, спасибо.
    Спасибо за помощь Untonyst :)
    Последний раз редактировалось Alanchick; 05.01.2016 в 22:57.
    Команды:
    [CMD]/byplayer
    [CMD] /virtmir
    [CMD] /hp
    Функции:
    [FUNCTION] SetPlayerTimeSkin

    Код:
    Хочешь спрятать дерево — спрячь его в лесу // Конан Дойл, «Записки о Шерлоке Холмсе»

  2. 2 пользователя(ей) сказали cпасибо:
    #enotik (05.01.2016) Desulaid (05.01.2016)
  3. #2
    Аватар для #enotik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.11.2015
    Сообщений
    8
    Репутация:
    0 ±
    А что она вообще делает?
    По коду нихрена не понял толком)
    Весь-весь-весь приличный люд, превратился в сброд, не-не-не унять народ, здравствуй Новый Год.

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

    Статус
    Оффлайн
    Регистрация
    05.01.2016
    Сообщений
    15
    Репутация:
    9 ±
    Цитата Сообщение от #enotik Посмотреть сообщение
    А что она вообще делает?
    По коду нихрена не понял толком)
    Выше написано.
    Админ пишет /byplayer 0 123 и от игрока с id'ом 0 отправится сообщение 123 в глобальный чат.
    В общем позволяет писать администратору от имени обычного игрока.
    Команды:
    [CMD]/byplayer
    [CMD] /virtmir
    [CMD] /hp
    Функции:
    [FUNCTION] SetPlayerTimeSkin

    Код:
    Хочешь спрятать дерево — спрячь его в лесу // Конан Дойл, «Записки о Шерлоке Холмсе»

  5. #4
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Чет идея ввода id игрока и отправка сообща в чат под чужим именем не очень. Представим себе, что на сервер заходит OKStyle и вводит id Daniel_Cortez и всем в чат пишется "<< All >> Daniel_Cortez сказал: признаю, анимлист OKStyle лучше моего". Согласись, глупо. Кроме того меня смущает название команды и то, что ты в переменную text хочешь сохранить строку. Держи мой вариант.

    PHP код:
    COMMAND:byplayer(playeridparams[]) 

        if (
    sscanf(params"s[116]"params)) // как остаток от лимита чата (144) 
            
    return SendClientMessage(playerid, -1"Введите /byplayer  <сообщение>"); 
        
        static const 
            
    msg[] = "<< All >> %s сказал: %s";
        new  
            
    name[MAX_PLAYER_NAME], fmt_msg[sizeof(msg) + (-2*2) + 116]; 
        
        
    GetPlayerName(playeridnameMAX_PLAYER_NAME); 
        
    format(fmt_msgsizeof(fmt_msg), msgnameparams);
        
    SendClientMessageToAll(-1fmt_msg); 
        return 
    1

    Последний раз редактировалось Desulaid; 05.01.2016 в 23:03.

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

    Статус
    Оффлайн
    Регистрация
    05.01.2016
    Сообщений
    15
    Репутация:
    9 ±
    Это у тебя уже команда /o(oc).
    А задача была сделать команду, чтобы администратор мог писать от имени игрока.
    И на счет твоего примера с OKStyle и Daniel_Cortez:
    Писать может только администратор.
    Я думаю основатели серверов отнесутся к этой команде с умом.
    И вообще идея не моя, меня попросили - я написал.
    Я даже сейчас не понимаю смысл этой команды. К себе в мод вставлять не стал бы :)
    Команды:
    [CMD]/byplayer
    [CMD] /virtmir
    [CMD] /hp
    Функции:
    [FUNCTION] SetPlayerTimeSkin

    Код:
    Хочешь спрятать дерево — спрячь его в лесу // Конан Дойл, «Записки о Шерлоке Холмсе»

  7. #6
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Alanchick Посмотреть сообщение
    Это у тебя уже команда /o(oc).
    А задача была сделать команду, чтобы администратор мог писать от имени игрока.
    И на счет твоего примера с OKStyle и Daniel_Cortez:
    Писать может только администратор.
    Я думаю основатели серверов отнесутся к этой команде с умом.
    И вообще идея не моя, меня попросили - я написал.
    Я даже сейчас не понимаю смысл этой команды. К себе в мод вставлять не стал бы :)
    Лол, я совершенно и окончательно запутался :D

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

    Статус
    Оффлайн
    Регистрация
    16.11.2015
    Сообщений
    8
    Репутация:
    0 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Лол, я совершенно и окончательно запутался :D
    Крч, типо /o(oc)
    Только ты пишешь не от своего имени, а от имени того, чей id ввел..(как пример взял твой ник и свой)
    Так бы вышло: EnotiK сказал(а): тип лол
    А от этой кмд выйдет: Untonyst сказал(а): тип лол
    Весь-весь-весь приличный люд, превратился в сброд, не-не-не унять народ, здравствуй Новый Год.

  9. #8
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от #enotik Посмотреть сообщение
    Крч, типо /o(oc)
    Только ты пишешь не от своего имени, а от имени того, чей id ввел..(как пример взял твой ник и свой)
    Так бы вышло: EnotiK сказал(а): тип лол
    А от этой кмд выйдет: Untonyst сказал(а): тип лол
    Ну так можно много поставных сообщений писать, особенно от лица администрации, да только ссору может разжечь! По мне дак бесполезно 0))

  10. #9
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Не то, чтобы я одобряю идею этой команды, но... что мешает просто вызвать OnPlayerText с указанным игроком и текстом? Заодно и не пришлось бы подстраивать вывод сообщений точь-в-точь, как в OnPlayerText.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  11. #10
    Аватар для Alanchick
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.01.2016
    Сообщений
    15
    Репутация:
    9 ±
    Чем плох мой вариант?
    Команды:
    [CMD]/byplayer
    [CMD] /virtmir
    [CMD] /hp
    Функции:
    [FUNCTION] SetPlayerTimeSkin

    Код:
    Хочешь спрятать дерево — спрячь его в лесу // Конан Дойл, «Записки о Шерлоке Холмсе»

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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