|
Dar
Пользователь
Откуда: Воронеж Регистрация: Дек. 2004
Всего: 289 сообщений
|
binyan При перекладывании брони в инвентаре в окошке можно увидеть себя в костюме 13 волта. Это раз - но это фигня. В бою: Если не жаль актион поинтов то пока они есть можно броню убрать из слота брони в инвентарь, но нельзя выбросить. - это два и боюсь не изличимо. В бою броня одевается по окончании актион поинтов на втором и третьем ходу на первом видемо (чисто гипотетически) идет учет порядка хода критеров для combat_проки. - (здесь еще можно по идее побороться на желаемый результат.)
|
Отправлено: 23:44 - 10 Фев., 2006 | ИСПРАВЛЕНО: Dar - 14:52 - 11 Фев., 2006
|
|
Keha
Пользователь Регистрация: Янв. 2006
Всего: 31 сообщение
|
Dar спасибо большое, за разъяснения. А не подскажет кто-нибудь способ проверки какая инвентарная рука в данный момент активна? Или что за вещь экипирована в активной руке? ----------------------------------------------------------- близкая ситуация есть в Ф2 на входе в НКР. Там гвард как то смотрит наличие оружия в активной руке; просит убрать если оно присутствует. При этом если в неактивной руке оружие есть, это того гварда не волнует, его волнует только активная рука. А как это реализуется? Насколько понимаю такая вещь как #define critter_is_armed(x) (((obj_item_subtype(critter_inven_obj(x,INVEN_TYPE_RIGHT_HAND))) == item_type_weapon) or \ ((obj_item_subtype(critter_inven_obj(x,INVEN_TYPE_LEFT_HAND))) == item_type_weapon)) здесь не проканывает, ведь если я правильно понимаю critter_is_armed(x) проверяет обе руки, не различая какая из них активна? Пытаюсь разобраться со скриптом этого НКРовского гварда(scgtegrd.ssl), как он смотрит именно активную руку, но пока много дыр в знаниях скриптов, и многое не понятно.
|
Отправлено: 13:21 - 11 Фев., 2006
|
|
Dar
Пользователь
Откуда: Воронеж Регистрация: Дек. 2004
Всего: 289 сообщений
|
Keha Согласно FAQ получить указатель на, неактиную руку нельзя, можно только на активную.
|
Отправлено: 14:48 - 11 Фев., 2006 | ИСПРАВЛЕНО: Dar - 14:54 - 11 Фев., 2006
|
|
Keha
Пользователь Регистрация: Янв. 2006
Всего: 31 сообщение
|
Упс, спасибо большое, проглазел этот момент.
|
Отправлено: 16:18 - 11 Фев., 2006
|
|
Dar
Пользователь
Откуда: Воронеж Регистрация: Дек. 2004
Всего: 289 сообщений
|
Вроде как это не должно работать - а работает. procedure use_skill_on_p_proc begin script_overrides; if using_skill(self_obj, 7) or using_skill(self_obj, 6) or using_skill(self_obj, 10) then begin script_overrides; display_msg("This no can"; end //чтобы на критера можно было юзать науку или ремонт нужно ставить в про флаги steal, drop и какой либо третий. if (action_being_used == 13) and (obj_pid(self_obj) == 16777819) then call talk_p_proc; if (action_being_used == 12) and (obj_pid(self_obj) == 16777819) then float_msg(self_obj, "Hi", 4); if (action_being_used == 13) and (obj_pid(self_obj) == 16777817) then float_msg(self_obj, "My car is best", 4); end
|
Отправлено: 21:45 - 18 Фев., 2006
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
И в чём же вопрос? Почему данный пример работает таки? Кстати, вот давно хотел спросить: есть ли в скриптах команды позволяющие прервать выполнение процедуры (continue, halt, etc.)?
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 22:56 - 18 Фев., 2006
|
|
Dar
Пользователь
Откуда: Воронеж Регистрация: Дек. 2004
Всего: 289 сообщений
|
>>И в чём же вопрос? Почему данный пример работает таки? Ага - просто в доке было написано что using_skill(self_obj, 7) or using_skill(self_obj, 6) не работает(со скрипта подопытного кролика оно работает). И про pro-файлы нигде вроде не было упомянуто, как разрешить применение на критера того или иного скила (науки или ремонта). Моя про это скпрашивал раньше - как бы себе и ответил. И вопрос на засыпку, вот для чего может пригодится пид дюда со скриптовой точки зрения? Что с ним полезного можно сделать чего так нельзя?
|
Отправлено: 1:40 - 19 Фев., 2006
|
|
Keha
Пользователь Регистрация: Янв. 2006
Всего: 31 сообщение
|
Для чего все это мне надо описано в разделе Проэкты\повышение реалистичности. Чюзен проводит успешную атаку по критеру нанося дамаж. 1?) Мне нужно скриптово определить скил, по которому проходит оружие, которым Чюз дамажнул критера. Как просто реализовать определение скила нанесшего домаж оружия я не нашел, может проглазел, поэтому пишу как это я делаю через жо…. - чердак: procedure combat_p_proc begin variable wip; - перем. для указателя на предмет в активной руке. if (fixed_param == 2) then begin - если combat_p_proc вызвана успешным попаданием то wip:=critter_inven_obj(self_obj,1);- присваиваю переменной wip указатель на предмет в правой руке. if wip == 0 then begin - если wip все еще равна 0(правая рука оказалась неактивной) то wip:=critter_inven_obj(self_obj,2);стало быть активна левая рука и в wip записываем указатель на предмет из нее. end Далее определять скил (по которому проходит находящееся в ативной руке оружие) хотел выдергивая данные из прошника при помощи proto_data(obj_pid(wip),х); где х номер данных из прошника. ----------------------------------------------------------------- 2?) но поглядев на то что моржно выдернуть: #define it_pid (0) #define it_name (1) #define it_description (2) #define it_fid (3) #define it_light_distance (4) #define it_light_intensity (5) #define it_flags (6) #define it_flags_ext (7) #define it_sid (8) #define it_type (9) #define it_data (10) #define it_material (11) #define it_size (12) #define it_weight (13) #define it_cost (14) #define it_inv_fid (15) #define it_weapon_range (555) похоже по этим данным четкого определения скила не выйдет - так как это не все данные из прошника оружия, тут нет например данных о типе дамажа наносимого оружием, итп. ------------------------------------------------------------------ 3?) Да и например при выдергивании инфы из it_flags_ext при помощи proto_data(obj_pid(wip), 7); получается число с которым я не разобрался. О it_flags_ext описано в формате про файлов: Flags Ext (дополнительные флаги) Item Flags (флаги предметов): 0x08000000 – Hidden Item (предмет является «скрытым») Action Flags (флаги действий): 0x00001000 – Use On Smth (объект можно использовать на что-либо) 0x00002000 – Look (объект можно осмотреть) 0x00004000 – Talk (с объектом можно поговорить) 0x00008000 – PickUp (объект можно поднять) 0x00000800 – Use (объект можно использовать) Weapon Flags (флаги оружия): 0x00000100 – Big Gun (оружие относится к классу Big Guns) 0x00000200 – 2Hnd (оружие относится к классу двуручных) Primary Attack Type (тип основной атаки): 0x00000000 – stand 0x00000001 – throw punch 0x00000002 – kick leg 0x00000003 – swing anim 0x00000004 – thrust anim 0x00000005 – throw anim 0x00000006 – fire single 0x00000007 – fire burst 0x00000008 – fire continuous Secondary Attack Type (тип дополнительной атаки): 0x00000000 – stand 0x00000010 – throw punch 0x00000020 – kick leg 0x00000030 – swing anim 0x00000040 – thrust anim 0x00000050 – throw anim 0x00000060 – fire single 0x00000070 – fire burst 0x00000080 – fire continuous У меня proto_data(obj_pid(wip), 7) выдернуло число: 41478 Это число соответствовало самомоднутому стволу у которого я выставил Primary Attack Type = fire single, Secondary Attack Type отсутствовала. Как то можно расшифровать это 41478? чтоб понять где в нем Primary, Secondary Attack, Weapon Flags и прочее ? ----------------------------------------------------------------- В итоге решил пока тупо принудительно сопоставить каждому названию оружия скил по которому оно проходит через if но правда ifов многовато получится. Для определения скила в этом случае достаточно выдернуть из прошника название оружия при помощи proto_data(obj_pid(wip), 7) и далее, через ifовую сопаставительную (название - скил) таблицу получить скилл. --------------------------------------------------------------- 4?) Но тут возникают очередные проблы. например копьем можно колоть, а можно его метать. Что должно соответствовать разным скилам (метание и холодное оружие). Может кто знает скриптовые маневры которыми можно бы было выяснить какая текущая атьака (метание или укол в случае копья) включена на оружии? ---------------------------------------------------------------- 5?) Проблема определения скила при метании. - Еше один подводный камень на который наткнулся. При метании, оружия в руке не остается, и соответственно моя система определяет скил как рукопашку. Стало быть мне надо как то организовать запоминание указателя на оружие зарание еще до атаки, и чтоб указатель исправлялся при каждой смене оружия в руке, или изменении активной руки. А как это "при каждой смене" обстряпать пока не представляю.
|
Отправлено: 16:30 - 24 Фев., 2006 | ИСПРАВЛЕНО: Keha - 16:57 - 24 Фев., 2006
|
|
Keha
Пользователь Регистрация: Янв. 2006
Всего: 31 сообщение
|
А что critter_p_proc (выполняется постоянно - несколько раз в секунду) в бою не выполняется? Чтоб что то переодично проверять в боевке (combat_p_proc) то только через timer_event ? add_timer_event(ObjectPtr obj, int time, int info) где time - задержка выполнения (в игровых тиках) Чему равен игровой тик? Хотяб приблизительно? Доли секунды, секунды, минуты?
|
Отправлено: 17:14 - 26 Фев., 2006
|
|
Strongholder
Прилипала MkII
Откуда: Nelly's Bar Регистрация: Май 2004
Всего: 393 сообщения
|
Строго AFAIR: 1) c_p_p в бою не выполняется. 2) Игровой тик = 10 мс. Т.е. 100 тиков = 1 с.
----- Живущий в стране эльфов. Несмотря ни на что.
|
Отправлено: 17:26 - 26 Фев., 2006
|
|
|
|