AMX MOD X
Понедельник, 29.04.2024, 17:33:36



Приветствую Вас Гость | RSS
[ Главная ] [ запись собственых параметров в ентити - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » запись собственых параметров в ентити
запись собственых параметров в ентити
marikcoolДата: Вторник, 03.04.2007, 13:02:12 | Сообщение # 1
Подполковник
Группа: Пользователи
Сообщений: 139
Репутация: 1
Статус: Не в сети
хотел записать собственые значения параметров в ентити, чтобы в дальнейшем, со прикосновением с данным ентити считать эти параметры и с ними уже работать. но мне slogic написал что этого лучше не делать.

получается надо создать массив например
new entity[200][3] //вроде макс ентити 200? ну и например 3 параметра для каждой ентити.
entity[200][0] = id предмета
entity[200][1] = param 1
entity[200][2] = param 2

это решение, но все же хочется сделать через:

//запись параметров
entity_set_int(ent , EV_INT_IUSER1 , param1)
entity_set_int(ent , EV_INT_IUSER2 , param2)

//считывание
entity_get_int(ent_id,EV_INT_IUSER1)
entity_get_int(ent_id,EV_INT_IUSER2)

есть ли модульс помощью которого можно создасть свои флаги: (типо EV_INT_PARAM1) ?

 
VENДата: Вторник, 03.04.2007, 13:22:17 | Сообщение # 2
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Максимальное количество entit'ей: 1365. Модуля нет, необходимо править engine модуль. Такие вещи, можно реализовать с помощью dynamic native функции через отдельный плагин. Только имя native функции нельзя задать такое же. Хотя, если не использовать engine инклуды, можно сделать в обход через fakemeta модуль (без engine) обертки для entity_*et_* функций, включая дополнительную функциональность, предоставляемую созданными dynamic native функциями.

Хотя, все это не надежно, т.к. массив статический. Entity могут удалить/заменить другой без твоего ведома, а параметры в массиве остануться прежними. Поэтому, если используешь нестандартный classname для своей entity, я бы рекомендовал стандартные *user* entity pev поля все-таки использовать.

Сообщение отредактировал VEN - Вторник, 03.04.2007, 13:31:38
 
marikcoolДата: Вторник, 03.04.2007, 13:54:27 | Сообщение # 3
Подполковник
Группа: Пользователи
Сообщений: 139
Репутация: 1
Статус: Не в сети
спасиб за ответ.
какие посоветуете еще поля использовать? мне надо записать 6 параметров.
*user* их всего 4. думаю использовать *water*, помоему в них само ниче не запишется.
 
VENДата: Вторник, 03.04.2007, 14:13:44 | Сообщение # 4
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Например, euser(1,2,3,4) и iuser(3,4)

Сообщение отредактировал VEN - Вторник, 03.04.2007, 14:15:24
 
slogicДата: Вторник, 03.04.2007, 14:16:32 | Сообщение # 5
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Есть модуль MemoryX, там есть структура vector - это и есть динамический массив. Но вот что там написано:
Quote
// Vectors are dynamic arrays; they can be resized, but work just like is_static arrays.
// Unfortunately, PAWN doesn't allow me to overload [], so its a bit harder to use my vectors.

// Vector creation / destruction
// Remember: If the is_static flag isn't set, these are dynamically allocated; you must delete them manually.
// is_static flagged creations don't need to be deleted, but be careful with them.

native Vector:vector_create ( Vector:cpy = Vector:0, is_static = 0 )
native vector_destroy ( Vector:me )


Ясно одно - с ними довольно сложно работать. Но я не понял, что значит, что они могут менять размер, но ведут себя как статические. Неэффективная реализация получается?

Там есть и другие структуры: очереди, стэки.

ЗЫ. А хотя скорее всего это была жалоба, что в PAWN нельзя с динамическим вектором работать через операцию [], т.е. придется через функции. А так все ok.

Прикрепления: 19784680.zip (209.6 Kb)


Сообщение отредактировал slogic - Вторник, 03.04.2007, 14:22:43
 
VENДата: Вторник, 03.04.2007, 14:26:57 | Сообщение # 6
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Этот модуль в данной ситуации не помощник. Я имел ввиду, что массив невозможно привязать к entity. Т.е. если другой плагин удлаит entity и создаст взамен нее новую, основная pev структура будет отлична, в то время как псевдо-параметры в нашем массиве останутся нетронутыми, поэтому нужно делать привязку основной pev структуры к массиву, опять-таки, через один из pev параметров. В общем, способ неэффективный.

Сообщение отредактировал VEN - Вторник, 03.04.2007, 14:45:08
 
slogicДата: Вторник, 03.04.2007, 15:03:17 | Сообщение # 7
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (VEN)
Т.е. если другой плагин удлаит entity и создаст взамен нее новую, основная pev структура будет отлична

Пусть перегрузит FM_RemoveEntity. Я все равно считаю что engine свойства менять нельзя, если программируешь под CS.

PS. Если кто-то сделал модуль, в котором релизована структура map/хэш/словарь, то это идеальный для него вариант.

Сообщение отредактировал slogic - Вторник, 03.04.2007, 15:06:06
 
VENДата: Вторник, 03.04.2007, 15:06:58 | Сообщение # 8
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
Пусть перегрузит FM_RemoveEntity
Чего?
 
slogicДата: Вторник, 03.04.2007, 17:38:00 | Сообщение # 9
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Навесит хук.
 
VENДата: Вторник, 03.04.2007, 18:58:12 | Сообщение # 10
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Уж не думаешь ли ты что call, если он был выполнен из плагина, можно хукать?
 
slogicДата: Среда, 04.04.2007, 10:29:07 | Сообщение # 11
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Нельзя, конечно. Пусть тогда использует любое редкоиспользуемое свойство entity, которое будет содержать ключ из своей структуры с доп. атрибутами. Т.о. ему понадобится использовать всего одно свойство entity. pev_message, к примеру.
 
VENДата: Среда, 04.04.2007, 18:51:36 | Сообщение # 12
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
поэтому нужно делать привязку основной pev структуры к массиву, опять-таки, через один из pev параметров
Именно на это я и "намекал".
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » запись собственых параметров в ентити
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024