|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
В прошнике нету. Вроде и не может быть. Попытался почитать описание *.map формата - там тоже нету, для криттеров определены только CurrentHP, CurrentRL, CurrentPL плюс несколько неизвестных флагов. Так вот, subj, где?
----- hit me, nail me, make me god
|
Отправлено: 0:13 - 22 Марта, 2006
|
|
Anchorite
Пользователь
Откуда: Не здесь Регистрация: Янв. 2003
Всего: 283 сообщения
|
В флаге предмета выставляется специальные флажки, определющие положение этого предмета в инвентаре криттера.
|
Отправлено: 5:59 - 22 Марта, 2006 | ИСПРАВЛЕНО: Anchorite - 6:01 - 22 Марта, 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Имеется в виду эти флаги зашиты внутри *.map файла? 5.3. Дополнительные поля для оружия (Weapon) Смещение Размер Описание 0x0054 4 Некие дополнительные флаги (в движке: updated_flags). 0x0058 4 Количество заряженных патронов. 0x005C 4 PID (Proto ID) патронов. То есть броню "по-челоечески" может носить только сам чузен?
----- hit me, nail me, make me god
|
Отправлено: 17:31 - 22 Марта, 2006 | ИСПРАВЛЕНО: Alan Killenger - 18:33 - 22 Марта, 2006
|
|
Anchorite
Пользователь
Откуда: Не здесь Регистрация: Янв. 2003
Всего: 283 сообщения
|
Ну не "зашиты", а скорее выставлены. А надеть броню и вложить в руки оружие ты можешь для в принципе для любого криттера. Во всякм случае для большинства гуманоидов.
|
Отправлено: 22:12 - 22 Марта, 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Цитата: А надеть броню и вложить в руки оружие ты можешь для в принципе для любого криттера. Во всякм случае для большинства гуманоидов.
Хм... в том то и дело, разве можно?
Код:
5. Область объектов 5.1. Размер объектов 5.2. Общая для всех объектов часть 5.3. Дополнительные поля для оружия (Weapon) 5.4. Дополнительные поля для патронов (Ammo) 5.5. Дополнительные поля для прочих предметов (Misc) 5.6. Дополнительные поля для ключей (Key) 5.7. Дополнительные поля для существ (Critters) 5.8. Дополнительные поля для порталов (Portal) 5.9. Дополнительные поля для лестниц (Stairs) 5.10. Дополнительные поля для лифтов (Elevators) 5.11. Дополнительные поля основания лестницы (Ladder Bottom) 5.12. Дополнительные поля вершины лестницы (Ladder Top) 5.13. Дополнительные поля для зон выхода (Exit Grids)
О броне тут ни слова, хотя есть и об оружии, и о патронах. Да... я конечно назойлив, но все-таки: 1. Как мне надеть броню на одного конкретного криттера? 2. Какой скриптовой функцией мне можно нормально надеть броню на криттера или вложить ему в руки оружие? Причем нужно, чтобы это оружие и броня вроде как действительно были (после смерти криттера они оставались). Я сызнова прошелся по этой доке о функциях... не нашел.
----- hit me, nail me, make me god
|
Отправлено: 0:54 - 23 Марта, 2006 | ИСПРАВЛЕНО: Alan Killenger - 1:55 - 23 Марта, 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
1. Только подменой прошника. "Одеть" броню на криттера нельзя. 2. void wield_obj_critter(ObjectPtr who, ObjectPtr obj) - "дать в руки" оружие. ЗЫ Вообще-то я никогда не пробовала "подсунуть" функции wield_obj_critter указатель на броник. Однако, сильно сомневаюсь, что криттер в этом случае оденет броню. Скорее просто возьмёт её "в руку" (активный слот).
|
Отправлено: 9:21 - 23 Марта, 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Собственно, почему я и сказал что ничего подходящего не нашел: void wield_obj_critter(pointer soldier, pointer equpment) Часть 1. equpment - указатель на броню. Функция соответствующим броне образом изменяет данные всех криттеров на карте, имеющих PID такой же, как и у soldier и только у них. Причем эти изменения нигде не фиксируются. Если мы уйдем с карты и вернемся на нее или сохранимся и загрузимся, то прошники вернутся в нормальное состояние (т.е. каким они были до вызова этой функции). Тестировалось в самой игре. Часть 2. equipment - указатель на оружие (я брал копье). Функция дает в ркуи soldier и только ему одному виртуальное копье. Мы его видим, но когда мы убиваем soldier и обыскиваем его труп - копья нету. Еще раз протестировал. Брал SMG 10 mm (AI NCR Rangers).
Цитата: wield_obj_critter(self_obj, create_object_sid(PID_10MM_SMG, 0, 0, -1));
Функция дает в ркуи soldier и только ему одному (т.е. не всем криттерам с тем же прошником) виртуальную пушку (криттер выглядит как криттер с пушкой, и думает он так же, но никакой пушки нет). При выходе с карты эффект сохранялся. Пушкой этой он воспользоваться не может. Во время боя soldier просто нервно проигрывает, анимацию вытаскивания ствола. Начинаются глюки когда пытаешься в него (soldier) целиться. Если посмотреть на него с "осведомленностью", то будет выдана инфоа, как будто бы он без ствола. ИМХО, функция к использованию непригодна. Помимо этой функции, никак иначе нельзя вложить оружие в руки криттеру? Не считая варианта засунуть в маппере или засунуть в инвентарь и надеятся, что криттер догадается вытащить пушку.
----- hit me, nail me, make me god
|
Отправлено: 11:12 - 23 Марта, 2006 | ИСПРАВЛЕНО: Alan Killenger - 13:15 - 23 Марта, 2006
|
|
Anchorite
Пользователь
Откуда: Не здесь Регистрация: Янв. 2003
Всего: 283 сообщения
|
Надеть броню на криттера однозначно можно. Вопрос только в том найдет ли движок нужный ФРМ для того чтобы его нарисать. В BIS-овом маппере я благополучно надел обычный Pоwer Armor на Enclave Patrol. Но картинка криттера как была с APA, так в ней и осталась. Если попробовать пошмонать у такого криттера в корманах, то брони вы там не найдете. А сняв ее - она появится.
|
Отправлено: 12:54 - 23 Марта, 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Анхорит, я немного не о том . Одеть броньку в маппере можно. Только ФРМ не изменится. Кстати, на всех криттерах в Ф1 броня "одета" именно этим способом. На ФРМ и характеристики не влияет, зато после смерти остаётся. А вот скриптово её одеть нельзя. wield_obj_critter - штука полезная. Я ей пользовалась и глюков не замечала, если сначала оружие создавать, а потом "давать в руки". А броня на игроке и НПС, скорее всего, обрабатывается движком "узкоспециально", так что облачение криттера в броню динамически тебе всё равно ничего не даст.
|
Отправлено: 13:10 - 23 Марта, 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Цитата: Quote: from Wasteland Ghost on 9:21 - 23 Марта, 2006 1. Только подменой прошника. "Одеть" броню на криттера нельзя. 2. void wield_obj_critter(ObjectPtr who, ObjectPtr obj) - "дать в руки" оружие. ЗЫ Вообще-то я никогда не пробовала "подсунуть" функции wield_obj_critter указатель на броник. Однако, сильно сомневаюсь, что криттер в этом случае оденет броню. Скорее просто возьмёт её "в руку" (активный слот).
Вообще то, при скриптовой замене брони на партийцах, я использовал именно wield_obj и всё замечательно работало. Так что подтверждаю - да, если wield_obj(ARMOR_PID), то криттер оденет броню.
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 14:20 - 23 Марта, 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Ууу... шаманы.
Цитата: А броня на игроке и НПС, скорее всего, обрабатывается движком "узкоспециально", так что облачение криттера в броню динамически тебе всё равно ничего не даст.
Люди, вы о чем? Какое облачение? FRM'ку криттера wield_obj_critter при указателе на броню не меняет. Она меняет именно свойства всех криттеров на карте с тем же PID. Или я так запудрил всем мозги? Причем меняет свойства хоть и только до ухода с карты, но убить криттера с такой броней становиться действительно тяжелее (я это проверял).
Цитата: wield_obj_critter - штука полезная. Я ей пользовалась и глюков не замечала, если сначала оружие создавать, а потом "давать в руки".
Это как? Можно хотя бы условно набросать кусочек кода? Как вооружить криттера не виртуальным оружием? Как, разве есть еще какая-нибудь функция, чтобы "давать в руки"?
----- hit me, nail me, make me god
|
Отправлено: 18:35 - 23 Марта, 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Цитата: wield_obj(ARMOR_PID)
Таки ПИД или указатель? Алан, извини, времени нет копать целенаправленно. Однако, что-то у тебя в последнее время призраков много развелось . Может, не призраки это вовсе, а жуки? Для примера посмотри сырца НВ, ферму Дженнингсов. ЗЫ Кстати, на партийцах бронька может по-другому обрабатываться...
|
Отправлено: 20:33 - 23 Марта, 2006
|
|
Pavel
Модератор
Откуда: Одесса Украина Регистрация: Май 2004
Всего: 368 сообщений
|
Действительно, партийцы и обычные криттеры - абсолютно разные вещи. На партийцах, броня сразу становится активной (появляются все её характеристики), а на криттерах нужно менять прошник. Но можно действовать по другому. Если я понял проблему, то её можно решить так: приписать еще одного партийца, и этому криттеру в скрипте создать оружие, броню и все что еще захочется. При таком раскладе появится еще один плюс - можно приписать нормальное поведение (как у обычного партийца), даже если он против чуза.
----- В жизни нельзя быть уверенным на 100%, ведь никогда не знаешь когда...
|
Отправлено: 22:32 - 23 Марта, 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Цитата: Если я понял проблему, то её можно решить так: приписать еще одного партийца, и этому криттеру в скрипте создать оружие, броню и все что еще захочется. При таком раскладе появится еще один плюс - можно приписать нормальное поведение (как у обычного партийца), даже если он против чуза.
Тоже думал об этом. Заранее отверг этот вариант так как там вроде бы не вызывается функция из скрипта, а функция связана с обработчиком кнопочки "лучшее оружие" или "лучшая броня". Или я не все знаю. Человек без жуков как человек без мыслей . А насчет wield_obj(ARMOR_PID) - там, наверное, binyan имел в виду один популярный макрос от нашей же функции. Вот сейчас посмотрю сырцы, тогда держитесь .
----- hit me, nail me, make me god
|
Отправлено: 22:41 - 23 Марта, 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Цитата: приписать еще одного партийца, и этому криттеру в скрипте создать оружие, броню и все что еще захочется.
Да, но несколько таких криттеров = +несколько партийцев
Цитата: А насчет wield_obj(ARMOR_PID) - там, наверное, binyan имел в виду один популярный макрос от нашей же функции
Ага, именно его. Только не помню действительно что там - ПИД или ПТР
Цитата: Тоже думал об этом. Заранее отверг этот вариант так как там вроде бы не вызывается функция из скрипта, а функция связана с обработчиком кнопочки "лучшее оружие" или "лучшая броня". Или я не все знаю.
Да, но функцию лучшее оружие/броня можно сделать самому В скрипте.
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 22:42 - 23 Марта, 2006 | ИСПРАВЛЕНО: binyan - 22:48 - 23 Марта, 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Цитата: Да, но функцию лучшее оружие/броня можно сделать самому В скрипте.
В том то и дело, что нет! Народ, либо у меня тут на самом деле голова тараканами переполнена, либо меня весьма конкретно не понимают. В этом и вся тема. Как заставить криттера именно взять в активную руку нужное оружие (броню)? P.S. WG на будующее, это была очень информативная ссылка на ферму Дженнингсов. Ведь для того, чтобы посмотреть как именно это все работает в игре мне теперь весь мод НВ прийдется проходить вплоть до этой фермы? Нет, исходники я сейчас конечно читаю, но как мне хотя бы узнать у какого криттера что-либо должно "вкладываться в руки"?
----- hit me, nail me, make me god
|
Отправлено: 23:50 - 23 Марта, 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Цитата: В том то и дело, что нет! Народ, либо у меня тут на самом деле голова тараканами переполнена, либо меня весьма конкретно не понимают. В этом и вся тема. Как заставить криттера именно взять в активную руку нужное оружие (броню)?
Как это нельзя? У меня есть скрипт с функциями лучшее оружие/броня(кстати, там ещё реализован выбор оружия из диалога )...И всё работает. Причем криттер не партиец. Если хочешь пошлю на мыло. А реализовывается это с помощью wield_obj. Или я опять чего то не понял?
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 23:58 - 23 Марта, 2006
|
|
Alan Killenger
Пользователь
Откуда: Россия, Ижевск Регистрация: Июль 2004
Всего: 404 сообщения
|
Так. Кхм... вкладывать нормальное оружие в прямо руки криттеров все-таки можно. Делается это с помощью макроса give_obj_weapon (command.h), который в свою очередь тоже опирается на функцию wield_obj_critter. Тем не менее, оружие, выданное этим макросом является весьма реальным. Видимо, тут есть некоторые узкие моменты, о которых могли знать только создатели движка. Это как раз тот несчастливы случай. Немного о макросе give_obj_weapon, который я сейчас и начал исследовать. 1. Одетая таким образом броня: не видна при попытке украсть, но появляется на трупе; эффект защиты криттера присутствует (т.е. криттера с такой броней убить сложнее), но длится этот эффект только до выхода с карты или save/load'а, хотя и после этого сама броня будет доступна с трупа, но не будет доступна при воровстве. 2. Взятое таким макаром оружие: первый образец кладется в активную руку, все остальные - стопкой в инвентарь; оружие никуда не пропадает, даже после ухода с карты ничего не меняется. Глюки у этого макроса все-таки есть, но они не слишком фатальные (хехе, как сказал). Тут я пытался сам собрать то, что делает этот макрос. Не получилось, какие-то костыли и особенности в реализации этих функций, в частности wield_obj_critter. Будем разбираться :/.
----- hit me, nail me, make me god
|
Отправлено: 2:00 - 24 Марта, 2006
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Цитата: приписать еще одного партийца
Скажешь как сделать полноценный экземпляр - подарю пирожок . Там ещё столько вопросов осталось... 2Алан А контекстный поиск на что? Сделай поиск wield_obj по всем исходникам, и будет тебе "щастье" . Ещё 2Алан. У меня есть стойкое подозрение, что ты не кладёшь созданный объект в инвентарь перед тем как вызвать wield_obj. А надо бы . Т.е. сначала создаёшь объект, потом помещаешь в инвентарь, потом "напяливаешь".
|
Отправлено: 7:05 - 24 Марта, 2006
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Очень правильное подозрение Судя по всему так оно и есть
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 13:29 - 24 Марта, 2006
|
|
|
|