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

Тема: /do

  1. #1
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±

    /do

    Предназначение команды думаю объяснять не нужно. Баян в моем исполнении.

    PHP код:
    CMD:do(playeridparams[])
    {
        if (
    isnull(params))
            return 
    SendClientMessage(playerid, -1, !"Введите: /do <текст>");
        new
            
    Float:PosXFloat:PosYFloat:PosZworldinterior,
            
    name[MAX_PLAYER_NAME], string[MAX_CHATBUBBLE_LENGTH+1 char];

        
    GetPlayerPos(playeridPosXPosYPosZ);
        
    GetPlayerName(playeridnamesizeof(name));

        
    world GetPlayerVirtualWorld(playerid);
        
    interior GetPlayerInterior(playerid);

        
    strcat(stringparams);
        
    strcat(string" (");
        
    strcat(stringname);
        
    strcat(string")");

        new
            
    iter GetPlayerPoolSize();
    #if defined foreach
        
    foreach(new Player)
        {
    #else
        #if defined GetPlayerPoolSize
        
    for(new = -1; ++!= iter;)
        
    #else
        
    for(new = -1; ++!= MAX_PLAYERS;)
        
    #endif
    #endif
        
    {
            if ((
    == IsPlayerConnected(i))
            ||  (
    != IsPlayerNPC(i))) continue;
            if(
    == IsPlayerInRangeOfPoint(i15.0PosXPosYPosZ)) continue;
            if((
    GetPlayerVirtualWorld(i) != world )
            || (
    GetPlayerInterior(i) != interior)) continue;

            
    SendClientMessage(i0xE600FFFFstring);
        }
        
    SetPlayerChatBubble(playeridparams0xE600FFFF30.010000);
        return 
    1;

    Автор: Иван Бубнов
    Специально для Pro-Pawn.Ru

    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Спасибо всем за советы по коду!
    Последний раз редактировалось Иван Бубнов; 19.03.2016 в 18:46. Причина: обновил (стабильная версия)

  2. Пользователь сказал cпасибо:
    VVWVV (19.03.2016)
  3. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Вот эту проверку
    PHP код:
    if(== IsPlayerConnected(i)) 
                continue; 
    тоже стоит внести в "#if defined foreach ", не? Точнее, в "#if !defined foreach "
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  4. #3
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Вот эту проверку
    PHP код:
    if(== IsPlayerConnected(i)) 
                continue; 
    тоже стоит внести в "#if defined foreach ", не? Точнее, в "#if !defined foreach "
    Не додумался чет

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Как-то так, короч
    PHP код:
    CMD:do(playeridparams[]) 

        if(
    isnull(params)) 
            return 
    SendClientMessage(playerid, -1, !"Введите: /do <текст>"); 
        new 
            
    Float:PosX
            
    Float:PosY
            
    Float:PosZ
            
    string[144 + (-MAX_PLAYER_NAME)]; 
        
    GetPlayerPos(playeridPosXPosYPosZ); 
        
    GetPlayerName(playeridstringsizeof(string)); 
        
    format(stringsizeof(string), "%s (%s)"paramsstring); 
    #if defined foreach
        
    foreach(new Player)
        {
    #else
        
    for(new GetPlayerPoolSize(); != -1i--)
        {
            if(
    == IsPlayerConnected(i))
                continue;
    #endif
            
    if(== IsPlayerInRangeOfPoint(i15.0PosXPosYPosZ))
                continue;
            if(
    GetPlayerVirtualWorld(i) != GetPlayerVirtualWorld(playerid) || GetPlayerInterior(i) != GetPlayerInterior(playerid))
                continue;
            
    SendClientMessage(i0xE600FFFFstring);
        }
        
    SetPlayerChatBubble(playeridparams0xE600FFFF30.010000);
        return 
    1;

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

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

    Steve Pavlina

  6. #5
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Как-то так, короч
    PHP код:
    CMD:do(playeridparams[]) 

        if(
    isnull(params)) 
            return 
    SendClientMessage(playerid, -1, !"Введите: /do <текст>"); 
        new 
            
    Float:PosX
            
    Float:PosY
            
    Float:PosZ
            
    string[144 + (-MAX_PLAYER_NAME)]; 
        
    GetPlayerPos(playeridPosXPosYPosZ); 
        
    GetPlayerName(playeridstringsizeof(string)); 
        
    format(stringsizeof(string), "%s (%s)"paramsstring); 
    #if defined foreach
        
    foreach(new Player)
        {
    #else
        
    for(new GetPlayerPoolSize(); != -1i--)
        {
            if(
    == IsPlayerConnected(i))
                continue;
    #endif
            
    if(== IsPlayerInRangeOfPoint(i15.0PosXPosYPosZ))
                continue;
            if(
    GetPlayerVirtualWorld(i) != GetPlayerVirtualWorld(playerid) || GetPlayerInterior(i) != GetPlayerInterior(playerid))
                continue;
            
    SendClientMessage(i0xE600FFFFstring);
        }
        
    SetPlayerChatBubble(playeridparams0xE600FFFF30.010000);
        return 
    1;

    я по другому сделал, шапку апдейт уже, но твой вариант проще

  7. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Ты ещё кое-что упустил.

    PHP код:
    CMD:do(playeridparams[])
    {
        if(
    isnull(params))
            return 
    SendClientMessage(playerid, -1, !"Введите: /do <текст>");
        new
            
    Float:PosX,
            
    Float:PosY,
            
    Float:PosZ,
            
    world,
            
    interior,
            
    string[144];
        
    GetPlayerPos(playeridPosXPosYPosZ);
        
    GetPlayerName(playeridstringsizeof(string));
        
    world GetPlayerVirtualWorld(playerid);
        
    interior GetPlayerInterior(playerid);
        
    format(stringsizeof(string), "%s (%s)"paramsstring);
    #if defined foreach
        
    foreach(new Player)
        {
    #else
        
    for(new GetPlayerPoolSize(); != -1i--)
        {
            if(
    == IsPlayerConnected(i) || != IsPlayerNPC(i))
                continue;
    #endif
            
    if(== IsPlayerInRangeOfPoint(i15.0PosXPosYPosZ))
                continue;
            if(
    GetPlayerVirtualWorld(i) != world || GetPlayerInterior(i) != interior)
                continue;
            
    SendClientMessage(i0xE600FFFFstring);
        }
        
    SetPlayerChatBubble(playeridparams0xE600FFFF30.010000);
        return 
    1;

    P.S. foreach не включает в результат ботов, а второй цикл включает, поэтому нужно добавлять условие на IsPlayerNPC.
    И больше 144 ячеек выделять смысла нет, всё равно не отобразится.
    Последний раз редактировалось ziggi; 13.03.2016 в 21:54.

  8. #7
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Ты ещё кое-что упустил.
    Обновил шапку

  9. #8
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    Обновил шапку
    Я отредактировал пост, добавив информацию о памяти. Также ты забыл об этом:
    PHP код:
    world GetPlayerVirtualWorld(playerid);
    interior GetPlayerInterior(playerid); 
    (лучше вызывать эти функции один раз)

  10. #9
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Я отредактировал пост, добавив информацию о памяти. Также ты забыл об этом:
    PHP код:
    world GetPlayerVirtualWorld(playerid);
    interior GetPlayerInterior(playerid); 
    (лучше вызывать эти функции один раз)
    Учусь

    - - - Активировано защита от Стяжкина - - -


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

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    А может скреплять строки, а не форматировать?

 

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

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

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

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

Ваши права

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