Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 38

Тема: /do

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

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    162
    Репутация:
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Вот эту проверку
    PHP код:
    if(== IsPlayerConnected(i)) 
                continue; 
    тоже стоит внести в "#if defined foreach ", не? Точнее, в "#if !defined foreach "
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

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

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Как-то так, короч
    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;

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    162
    Репутация:
    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,035
    Репутация:
    702 ±
    Ты ещё кое-что упустил.

    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
    Сообщений
    162
    Репутация:
    8 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Ты ещё кое-что упустил.
    Обновил шапку

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

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

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

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

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


  11. #10
    Аватар для untonyst
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    663
    Репутация:
    234 ±
    А может скреплять строки, а не форматировать?
    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

 

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

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

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

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

Ваши права

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