» TeamX (Архив Форума)«


Форум TeamX » Тех. поддержка » Скрипты (Все вопросы по скриптингу - сюда)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения

 
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
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com