|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
запись собственых параметров в ентити
|
|
marikcool | Дата: Вторник, 03.04.2007, 13:02:12 | Сообщение # 1 |
Подполковник
Группа: Пользователи
Сообщений: 139
Статус: Не в сети
| хотел записать собственые значения параметров в ентити, чтобы в дальнейшем, со прикосновением с данным ентити считать эти параметры и с ними уже работать. но мне 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
Статус: Не в сети
| Максимальное количество 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
Статус: Не в сети
| спасиб за ответ. какие посоветуете еще поля использовать? мне надо записать 6 параметров. *user* их всего 4. думаю использовать *water*, помоему в них само ниче не запишется.
|
|
| |
VEN | Дата: Вторник, 03.04.2007, 14:13:44 | Сообщение # 4 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Например, euser(1,2,3,4) и iuser(3,4)
Сообщение отредактировал VEN - Вторник, 03.04.2007, 14:15:24 |
|
| |
slogic | Дата: Вторник, 03.04.2007, 14:16:32 | Сообщение # 5 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Есть модуль 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.
Сообщение отредактировал slogic - Вторник, 03.04.2007, 14:22:43 |
|
| |
VEN | Дата: Вторник, 03.04.2007, 14:26:57 | Сообщение # 6 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Этот модуль в данной ситуации не помощник. Я имел ввиду, что массив невозможно привязать к entity. Т.е. если другой плагин удлаит entity и создаст взамен нее новую, основная pev структура будет отлична, в то время как псевдо-параметры в нашем массиве останутся нетронутыми, поэтому нужно делать привязку основной pev структуры к массиву, опять-таки, через один из pev параметров. В общем, способ неэффективный.
Сообщение отредактировал VEN - Вторник, 03.04.2007, 14:45:08 |
|
| |
slogic | Дата: Вторник, 03.04.2007, 15:03:17 | Сообщение # 7 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| 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
Статус: Не в сети
| Quote | Пусть перегрузит FM_RemoveEntity | Чего?
|
|
| |
slogic | Дата: Вторник, 03.04.2007, 17:38:00 | Сообщение # 9 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Навесит хук.
|
|
| |
VEN | Дата: Вторник, 03.04.2007, 18:58:12 | Сообщение # 10 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Уж не думаешь ли ты что call, если он был выполнен из плагина, можно хукать?
|
|
| |
slogic | Дата: Среда, 04.04.2007, 10:29:07 | Сообщение # 11 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Нельзя, конечно. Пусть тогда использует любое редкоиспользуемое свойство entity, которое будет содержать ключ из своей структуры с доп. атрибутами. Т.о. ему понадобится использовать всего одно свойство entity. pev_message, к примеру.
|
|
| |
VEN | Дата: Среда, 04.04.2007, 18:51:36 | Сообщение # 12 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote | поэтому нужно делать привязку основной pev структуры к массиву, опять-таки, через один из pev параметров | Именно на это я и "намекал".
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |