|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Операции над weaponbox / armoury_entity
|
|
| He_npeT | Дата: Вторник, 18.03.2008, 17:51:44 | Сообщение # 1 |
 Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Как наставить, "weaponbox" и "armoury_entity" entery так, чтобы это были мною выбраные гранаты или оружия с мною наставленым clip'ом, ammo'ом и burst/silend'ом?
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
| |
|
|
| VEN | Дата: Вторник, 18.03.2008, 22:57:55 | Сообщение # 2 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| С weaponbox дело обстоит не очень просто. Чтобы сменить тип, нужно правильно отлинковать weapon_* entity, затем прилинковать другую с заданными параметрами. Пока никто этого на практике не осуществлял, т.к. техника сего метода находится на грани хакинга памяти. Чтобы сменить clip ammo, нужно найти прилинкованную weapon_* entity, а затем, например, с помощью cstrike модуля изменить данное значение (cs_set_weapon_ammo - см. cstrike.inc для деталей). Метод смены bpammo weaponbox'a был открыт мной совсем недавно, я осветил его на официальном форуме: http://forums.alliedmods.net/showpost.php?p=593425&postcount=7 - там же приведены и два метода (FM и HS) нахождения прилинкованной weapon_* entity. armoury_entity можно установить тип, например, с помощью cstrike модуля (cs_set_armoury_type - см. cstrike.inc для деталей) или с помощью fakemeta (установка значения соответствующего оффсета - см. тему про pvPrivateData оффсеты в подразделе полезной информации). Насчет clip ammo/burst - исходного кода armoury_entity у меня нет (ибо "closed source"), но если я правильно помню, эта entity сама по себе не имеет данных значений. Если я не ошибаюсь, она просто дает оружие данного типа игроку с параметрами по умолчанию, которые уже выставлены в weapon_* entity, создающейся в момент "триггинга" armoury_entity. Поэтому в момент создания такой weapon_* entity, можно просто выставить ей clip ammo/burst непосредсвенно с помощью, например, cstrike модуля (cs_set_weapon_ammo, cs_set_weapon_burst - см. cstrike.inc для деталей).
|
| |
|
|
| He_npeT | Дата: Среда, 19.03.2008, 10:59:41 | Сообщение # 3 |
 Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Довольно интересно. То-есть для смены ammo твой код идеально подойдет. Для смены clip и burst/silen выходит ещё лехче чем я думал. Ещё несколько вопросов. Для линукса этот код тоже подойдёт? Ища помощь по этой теме до этого я сталкнулся с ещё 1 больше не проблемой, с странастью - weaponbox'ы сами ищезают на pev_nextthink hal-life время? И установив данное на 0.0 мы их оставим до NewRound. Это правда?
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Среда, 19.03.2008, 13:09:24 |
| |
|
|
| slogic | Дата: Среда, 19.03.2008, 14:12:53 | Сообщение # 4 |
|
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Замечу, что ты кашу из темы делаешь уже. Quote (He_npeT) И установив данное на 0.0 мы их оставим до NewRound. Нет, это корректное удаление weaponbox.
|
| |
|
|
| He_npeT | Дата: Среда, 19.03.2008, 17:28:01 | Сообщение # 5 |
 Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Странно, но не удалятся почемуто (я земетил что по стандару и есть 0.0). Но не важно в общем. А возможно создать токо ammo от опредеённой пушки в weaponbox'e? И если создать свой weaponbox, то он удалится на новом raund'e? Offtopic: Тему я вобщето создал, чтобы обсудить и узнать всю возможную инормацию о weaponbox & armoury_entity - как модифицировать данные, создать свои собственные, удалить... // edit: К стате когда weaponbox ичезает, то тот weapon entery у которого owner тот weaponbox тоже исчезает, или его надо убрать в ручную (если я создал свой entery с owner'ом weaponbox)?
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Среда, 19.03.2008, 18:10:11 |
| |
|
|
| VEN | Дата: Среда, 19.03.2008, 19:23:09 | Сообщение # 6 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote Для линукса этот код тоже подойдёт? Если ты про cs_set_weaponbox_bpammo(), то, скорее всего, не подойдет для linux платформы. Возможно, поможет добавление еще одного дополнительного параметра (со значением, равным 4) во все используемые *_pdata_* функции. Quote А возможно создать токо ammo от опредеённой пушки в weaponbox'e? Думаю, да, но по-хорошему нужны исходники CS, чтобы посмотреть, как правильно происходит создание и линковка. В CS эта техника отличается от общепринятой, освещенной в HLSDK. Конечно, можно поэксперементировать и в конце-концов с помощью логики и результатов тестов угадать методы, также можно декомпилировать/дизассемблировать dll мода и заглянуть туда, еще можно методом хакинга хукнуть необходимые функции, как это сделано в Ham Sandwich модуле. Quote Тему я вобщето создал, чтобы обсудить и узнать всю возможную инормацию о weaponbox & armoury_entity - как модифицировать данные, создать свои собственные, удалить... Ну, тогда предлагаю переименовать тему, дав ей более подходящее название. Quote И если создать свой weaponbox, то он удалится на новом raund'e? Ты для начала его создай, а удалится ли он или нет - это уже проще простого проверить... ;] Quote когда weaponbox ичезает, то тот weapon entery у которого owner тот weaponbox тоже исчезает, или его надо убрать в ручную (если я создал свой entery с owner'ом weaponbox)? Давай не будем гадать на кофейной гуще. Для начала создай то, о чем ты говоришь, а потом уж разберемся, что к чему. Исходников мода-то нет, поэтому все нужно делать руками и проверять на практике.
|
| |
|
|
| slogic | Дата: Среда, 19.03.2008, 20:30:12 | Сообщение # 7 |
|
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (He_npeT) Странно, но не удалятся почемуто (я земетил что по стандару и есть 0.0). Хм, сейчас в плагин глянул, удаление делается так: DF_Think(pentTouched). Но предварительно надо считать pev_flags и проверить, не стоит ли там бит FL_KILLME. Удаляться должен как weaponbox, так и подчиненная ему сущность weapon_*. И еще, pev_owner от weaponbox может содержать индекс игрока - это значит что он его выборосил.
|
| |
|
|
| VEN | Дата: Среда, 19.03.2008, 21:21:48 | Сообщение # 8 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Для информации: в nextthink pev weaponbox содержит gametime время, в которое будет удалена данная entity. В CS по-умолчанию время "жизни" weaponbox равно 300 секунд. Отсюда и получается, что если выставить значение nextthink pev <= текущему времени, weaponbox "подумает" (Think) и автоматически удалится.
|
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |