Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
OtherWorld » 12 сен 2017, 12:00
Пните как перебрать циклом все ентики на карте зная только classname
-
OtherWorld
-
- Сообщения: 78
- Зарегистрирован: 01 сен 2017, 08:41
- Благодарил (а): 39 раз.
- Поблагодарили: 1 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
ALIK » 12 сен 2017, 12:25
OtherWorld, конечная цель какая? Все энтити - это ты что имел в веду?
-
ALIK
-
- Сообщения: 227
- Зарегистрирован: 01 июн 2010, 23:05
- Благодарил (а): 116 раз.
- Поблагодарили: 55 раз.
- Опыт программирования: Меньше недели
- Языки программирования: Pawn
-
OtherWorld » 12 сен 2017, 12:43
Конечная цель - вывести в чат список всех ID найденных ентити с данным именем
Все - это те которые я поставил на карте при помощи create_entity
-
OtherWorld
-
- Сообщения: 78
- Зарегистрирован: 01 сен 2017, 08:41
- Благодарил (а): 39 раз.
- Поблагодарили: 1 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
RevCrew » 12 сен 2017, 12:52
OtherWorld,
- Код: Выделить всё
ent = -1;
while( ent = find_ent_by_owner(...) )
{
pev(ent, pev_classname, classname, charsmax(classname))
if(equal(classname,"classname"))
{
}
}
Не помню аргументы для find_ent_by_owner
-
RevCrew
-
- Сообщения: 1648
- Зарегистрирован: 15 июл 2013, 20:45
- Благодарил (а): 273 раз.
- Поблагодарили: 357 раз.
- Языки программирования: Unkown
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
-
- Сообщения: 78
- Зарегистрирован: 01 сен 2017, 08:41
- Благодарил (а): 39 раз.
- Поблагодарили: 1 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
Doc Batcon » 12 сен 2017, 13:48
Почему бы не использовать find_ent_by_class ?
- Код: Выделить всё
find_ent_by_class ( StartEntity, Classname[] )
-
Doc Batcon
-
- Сообщения: 35
- Зарегистрирован: 18 сен 2016, 12:36
- Благодарил (а): 2 раз.
- Поблагодарили: 7 раз.
- Опыт программирования: Меньше недели
- Языки программирования: Pawn
OtherWorld » 12 сен 2017, 13:49
Doc Batcon писал(а):Почему бы не использовать find_ent_by_class ?
- Код: Выделить всё
find_ent_by_class ( StartEntity, Classname[] )
по тому же принципу только с find_ent_by_class... результат одинаковый
-
OtherWorld
-
- Сообщения: 78
- Зарегистрирован: 01 сен 2017, 08:41
- Благодарил (а): 39 раз.
- Поблагодарили: 1 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
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 раз.
- Поблагодарили: 188 раз.
- Опыт программирования: Около года
- Языки программирования: Counter-Strike 1.6
-
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
-
- Сообщения: 78
- Зарегистрирован: 01 сен 2017, 08:41
- Благодарил (а): 39 раз.
- Поблагодарили: 1 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: PHP
NEoMASTERR » 12 сен 2017, 15:02
Зачем их постоянно искать?
Одного раза достаточно, если изменяется их количество/качество лучше в функцию создания добавить то что надо
-
NEoMASTERR
-
- Сообщения: 832
- Зарегистрирован: 05 янв 2015, 16:38
- Благодарил (а): 43 раз.
- Поблагодарили: 188 раз.
- Опыт программирования: Около года
- Языки программирования: Counter-Strike 1.6
-
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20