PrintToChatAll в радиусе

Тема в разделе "Программирование / Скриптинг", создана пользователем Hejter, 2 мар 2016.

  1. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Возможно ли показывать сообщение игрокам в опр. радиусе?
    Если да, то каким образом.
     
  2. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.719
    Симпатии:
    459
    Да, можно.
    Для примера можно запускать цікл и проверять игроков находиться ли его GetClientAbsOrigin в определенных координатах , ща попробую что-то сострепать
    --- Добавлено позже ---
    Начал набрасывать, сейчас отойду на часик, попробуй разобраться
    PHP:
    CheckClientsInRadius(clientradius)
    {
        new 
    float:pos[3];
        new 
    float:clpos[MAXPLAYERS][3];
        
    GetClientAbsOrigin(clientpos);
        
    PrintToChat(client,"Your POS: %f : %f :%f"pos[0], pos[1], pos[2]);
       
        for(new 
    1<= iMaxClientsi++) 
        {
            if (
    IsPlayerAlive(i) && GetClientTeam(i) > 1)
            {
                new 
    float:diffos[3];
               
                
    GetClientAbsOrigin(iclpos[i]);
                if ((
    clpos[i][0] > pos[0])
                {
                    
    diffos clpos[i][0] - pos[0];
                }
                else 
                {
                    
    pos[0] - clpos[i][0];
               
                }
                {
                }
               
                if ((
    clpos[i][0] - pos[0]) 
            }
        }
    }
     
  3. DarklSide

    DarklSide

    Сообщения:
    684
    Симпатии:
    173
    PHP:
    #define DISTANCE 500.0 // радиус

    public Action OnClientSayCommand(int client, const char[] command, const char[] sArgs)
    {
        
    bool b_one false;
        if (
    strcmp(command"say_team"false))b_one true;
        
    char s_chats[PLATFORM_MAX_PATH];
        
    strcopy(s_chatssizeof(s_chats), sArgs);
        
    CheckDist(clientsArgsb_one);
        return 
    Plugin_Stop;
    }

    void CheckDist(int client, const char[] sChatsbool b_team)
    {
        
    float f_vector_one[3];
        
    GetEntPropVector(clientProp_Send"m_vecOrigin"f_vector_one);
        
    int i_team GetClientTeam(client);
        for (
    int i 1<= MaxClients; ++i)
        {
            if (
    IsClientInGame(i) && !IsFakeClient(i) && IsPlayerAlive(i))
            {
                if (!
    b_team || (b_team && i_team == GetClientTeam(i)))
                {
                    if (
    FDistance(if_vector_one) < DISTANCE)PrintToChat(isChats); // Игрок(i) в радиусе
                

            }
        }
    }

    float FDistance(int twofloat fOne[3])
    {
        
    float f_vector_two[3];
        
    GetEntPropVector(twoProp_Send"m_vecOrigin"f_vector_two);
        return 
    GetVectorDistance(fOnef_vector_two); // squared & DISTANCE
     
    Danyas нравится это.
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.994
    Симпатии:
    2.990
    @DarklSide, а зачем для получения позиции и дистанции отдельная ф-я?
     
  5. AS TRO

    AS TRO

    Сообщения:
    1.056
    Симпатии:
    509
    @Hejter, ты там походу "конфетку ролеплейную" хочешь смастерить :)
     
  6. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Не думаю что будет конфетка. Я же быдлокодер, да и я плохо знаю SP...
    Сейчас со многим нужна проблема. А ни кто не хочет помогать.
     
    Последнее редактирование: 3 мар 2016
  7. DarklSide

    DarklSide

    Сообщения:
    684
    Симпатии:
    173
    Для наглядности - возможного получения дистанции между двумя объектами (больше всего для игроков), где есть их перебор, относительно некоторого, принимая в аргументах второго и координаты первого.

    P.S.: для вставки, где нужна дистанция. Например добавить по функционалу (VoiceannounceEX), и если карта огромная + множество игроков - фильтровать микрофон, пропуская только ближних из них.
     
    Последнее редактирование: 3 мар 2016
    Hejter нравится это.
  8. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Как раз искал что-то подобное.