Русское сообщество по скриптингу

Как перебрать циклом все entity на карте зная только имя  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Как перебрать циклом все entity на карте зная только имя

Сообщение OtherWorld » 12 сен 2017, 12:00

Пните как перебрать циклом все ентики на карте зная только classname :(
Аватара пользователя
OtherWorld
 
Сообщения: 30
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение ALIK » 12 сен 2017, 12:25

OtherWorld, конечная цель какая? Все энтити - это ты что имел в веду?
Аватара пользователя
ALIK
 
Сообщения: 201
Зарегистрирован: 01 июн 2010, 23:05
Благодарил (а): 110 раз.
Поблагодарили: 43 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение OtherWorld » 12 сен 2017, 12:43

Конечная цель - вывести в чат список всех ID найденных ентити с данным именем

Все - это те которые я поставил на карте при помощи create_entity
Аватара пользователя
OtherWorld
 
Сообщения: 30
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как перебрать циклом все entity на карте зная только имя  [Решено]

Сообщение RevCrew » 12 сен 2017, 12:52

OtherWorld,
Код: Выделить всё
ent  = -1;
while( 
ent find_ent_by_owner(...) )
{
 
pev(entpev_classnameclassnamecharsmax(classname))
 if(
equal(classname,"classname"))
{

}

Не помню аргументы для find_ent_by_owner
Skype revcrew77
https://vk.com/cssuite
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1354
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 240 раз.
Поблагодарили: 276 раз.
Языки программирования: Unkown

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение OtherWorld » 12 сен 2017, 13:39

Код: Выделить всё
                    new eID = -1;
                    
                    while
(eID = find_ent_by_owner(-1,entity_infect_name,pID))
                    {

                            new Float:ent_origin[3];
                            
                            pev
(eID,pev_origin,ent_origin);
                            ent_origin[2] += 30.0;
                            showsprite(pID,ent_origin,reg_sprite_id_trap_infect,20);
                    }
 


зависает серв :(

Добавлено спустя 10 минут 2 секунды:
А и ошибка при компиляции warning 211: possibly unintended assignment
Аватара пользователя
OtherWorld
 
Сообщения: 30
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение Doc Batcon » 12 сен 2017, 13:48

Почему бы не использовать find_ent_by_class ?
Код: Выделить всё
find_ent_by_class ( StartEntity, Classname[] )
Аватара пользователя
Doc Batcon
 
Сообщения: 9
Зарегистрирован: 18 сен 2016, 12:36
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Опыт программирования: Меньше недели
Языки программирования: Pawn
C++

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение OtherWorld » 12 сен 2017, 13:49

Doc Batcon писал(а):Почему бы не использовать find_ent_by_class ?
Код: Выделить всё
find_ent_by_class ( StartEntity, Classname[] 


по тому же принципу только с find_ent_by_class... результат одинаковый
Аватара пользователя
OtherWorld
 
Сообщения: 30
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение NEoMASTERR » 12 сен 2017, 14:16

Поэтому и зависает, у вас -1 тут
Код: Выделить всё
while(eID find_ent_by_owner(-1,entity_infect_name,pID)) 

Надое eID подставлять
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 186 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение OtherWorld » 12 сен 2017, 14:25

NEoMASTERR писал(а):Поэтому и зависает, у вас -1 тут
Код: Выделить всё
while(eID = find_ent_by_owner(-1,entity_infect_name,pID)) 

Надое eID подставлять


Вот только написать хотел))

ну слепой что поделать :(

Добавлено спустя 2 минуты 26 секунд:
В целом как-то так)

Код: Выделить всё

new eID 
= -1;

while((
eID = find_ent_by_own(eID,entity_infect_name,pID)))
{
  client_print(0,print_chat,"Ид ентити %d",eID)
}
 


Добавлено спустя 3 минуты 16 секунд:
Код: Выделить всё

stock find_ent_by_own
(startIndex, szClass[], iOwner)
{
    new maxEntities = get_global_int(GL_maxEntities);

    new i, classname[32];
    for(i=startIndex+1;i<maxEntities;i++)
    {
        if(!is_valid_ent(i))
            continue;

        entity_get_string(i,EV_SZ_classname,classname,31);

        if(equali(classname,szClass) && entity_get_edict(i,EV_ENT_owner) == iOwner)
            return i;
    }
    return 0;
}


Добавлено спустя 46 секунд:
Какова нагрузка от такого кода если вызывать его каждую секунду +-??
Аватара пользователя
OtherWorld
 
Сообщения: 30
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 16 раз.
Поблагодарили: 0 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как перебрать циклом все entity на карте зная только имя

Сообщение NEoMASTERR » 12 сен 2017, 15:02

Зачем их постоянно искать?
Одного раза достаточно, если изменяется их количество/качество лучше в функцию создания добавить то что надо
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 186 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

След.

Вернуться в Скриптинг

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

Сейчас этот форум просматривают: Bing [Bot], Yahoo [Bot] и гости: 6