Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 02 дек 2022, 22:34

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 18 фев 2021, 20:39 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
02 дек 2022, 17:08
Сообщения: 228
Откуда: Иркутск
Всем привет!
Пытаюсь сделать такую фишку для очередной вундервафли: если во время стрельбы рядом с игроком находится тимейт - темп стрельбы увеличивается в 2 раза. Написал такую ф-ю для нахождения тимейтов поблизости, но когда она вызывается при стрельбе - сервер просто крашится. Началось такое после добавления проверки на длину строки имени команды (strlen), ибо без него условие "тимейт рядом" выполнялось всегда (даже когда ты один на сервере, даже несмотря на все проверки). Код функции прилагаю ниже

Код:
public Find(pId)
{   
new team1[32]
 new team2[32  ]
             
    new result = 0;
    new id = 1;
    while (id < 33){
         if(is_user_connected(pId)&& is_user_connected(id)){
       if (is_user_alive(pId)&& is_user_alive(id)){
         //DISTANCE - максимально допустимо расстояние между игроками
            if (DISTANCE >=get_entity_distance(id, pId)){   
                        get_user_team(id,team1)
            get_user_team(pId,team2)       
            if(equal(team1,team2,3) && strlen(team1)>0) {
               result = 1;                                                   
                }
                else {
                result = 0
                }
                }   
            }
            }
       if(result==1) {
       break;
       } 
    }
    return result;
}         

Получается следующее: либо массивы всегда пусты, либо при добавлении проверки (как тут strlen) сервер падает. Может тимейтов можно искать как-то поэффективней?

_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 19 фев 2021, 12:40 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
02 дек 2022, 17:08
Сообщения: 228
Откуда: Иркутск
Нашёл решение. Работает как швейцарские часы

Код:
new Float:coords[3]   
        pev(iPlayer, pev_origin, coords)
        new player = -1
        //val вместо return'a
        new val = 0;
        while((player = engfunc(EngFunc_FindEntityInSphere, player, coords, 100.0))){
        if(! is_user_alive(player))
        {
        continue;
        }                                                                                         
        if (get_user_team(player) == get_user_team(iPlayer)&&player!=iPlayer){ 
        new name[32]
        get_user_name(player,name,10)           
        client_print(iPlayer,print_chat,name)
        val = 1;                   
        break;                                   
        }
        }   

_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB