|
Alchemist
Модератор
Откуда: Арзамас-17 Регистрация: Дек. 2004
Всего: 298 сообщений
|
Нативный синтаксис скриптов Fallout, если что, называется Startrek Scripting Language aka SSL. К Си он отношения не имеет. А конструкция ${..........} является прямым заимствованием из Ruby, самого объектного из известных мне языков. На котором и написан Noid'ов декомпилятор. Но имей в виду, часть опкодов он всё равно понимает неправильно. На это мы с Anchorit'ом уже натолкнулись и в int2ssl пришлось вносить исправления.
----- /// What'ya be sain'? Vault 100+? We need nothing o'that!
|
Отправлено: 22:59 - 3 Окт., 2005
|
|
Fozzy
Пользователь
Откуда: Украина,Киев Регистрация: Апр. 2004
Всего: 81 сообщение
|
Как можно проверить убил ли игрок Френка? Тоисть есть ли ГВАР'а которая за это отвечает? Будете смеятся, но раньше я проверял показывалась ли концовка для Ароййо .
----- Последний патрон в поржавевшем стволе - Остаток надежды на то что бы выжить. И две банки джета в моем рюкзаке - Реальность, которой уже не увижу. (С)Fozzy
|
Отправлено: 21:21 - 5 Окт., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Вот типа ну никак скрипт Френка не изучить . В процедуре destroy_p_proc: set_global_var(GVAR_ENCLAVE_FRANK_DEAD,1); Есть ещё один способ. Для скриптоманьяков . int player_kill_count(int type) - число убитых игроком криттеров Аргументы: type - тип криттера Возвращаемое значение: число убитых игроком криттеров заданного типа Примечания: макрос от metarule3(METARULE3_GET_KILL_COUNT, type, 0, 0) Наш Френки, кажись, идёт под номером 18 (type = 18) - Большой и Страшный Босс .
|
Отправлено: 22:00 - 5 Окт., 2005
|
|
Fozzy
Пользователь
Откуда: Украина,Киев Регистрация: Апр. 2004
Всего: 81 сообщение
|
Сенк, а теперь чисто теоритический вопрос: Как лучше зделать эффект подмены карты? Убрать маркер старого города, и вместо него поставить новый, или проверять определенную ГВАРу на 0/1 и подменять карту при входе чара.
----- Последний патрон в поржавевшем стволе - Остаток надежды на то что бы выжить. И две банки джета в моем рюкзаке - Реальность, которой уже не увижу. (С)Fozzy
|
Отправлено: 18:01 - 6 Окт., 2005
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Также, как сделана "мёртвая" локация Арройо . [Area 00] ; Arroyo area_name=Arroyo world_pos=184,133 start_state=On size=Medium townmap_art_idx=156 townmap_label_art_idx=370 entrance_0=On,350,275,Arroyo Bridge,-1,-1,3 ; Etc. entrance_1=On,280,175,Arroyo Village,-1,-1,0 entrance_2=On,200,90,Arroyo Temple,-1,-1,0 entrance_3=Off,100,150,Arroyo Wilderness,-1,-1,0 entrance_4=Off,-1,-1,Arroyo Caves,-1,-1,0 [Area 22] ; Destroyed Arroyo area_name=Arroyo world_pos=184,133 start_state=Off size=Medium townmap_art_idx=-1 townmap_label_art_idx=370 entrance_0=On,345,230,Destroyed Arroyo Bridge,-1,26719,0 Вообще, прежде чем делать что-то посмотри реализацию аналогичных ситуаций.
|
Отправлено: 10:09 - 7 Окт., 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Так. Процедура смены брони для партийца: variable original_fid; //"Родной" FID Procedure start begin original_fid:=obj_art_fid(self_obj);//Эта процедура вызывается первой - start, поэтому это будет действительно Родной FID end variable ptr_armor; //Указатель на броню variable Art_fidM:=-1;//"Мужской" FID variable Art_fidF:=-1;//"Женский" FID Procedure critter_p_proc begin ptr_armor:=critter_inven_obj(self_obj,INVEN_TYPE_WORN); if (ptr_armor==0) then metarule3(107,self_obj,original_fid,0); else begin if(obj_pid(ptr_armor)==PID_LEATHER_ARMOR)OR(obj_pid(ptr_armor)==PID_CURED_LEATHER_ARMOR)OR(obj_pid(ptr_armor)==PID_LEATHER_ARMOR_MK_II)then begin Art_fidM:=FID_HMLTHR; Art_fidF:=FID_HFLTHR; end else if(obj_pid(ptr_armor)==PID_LEATHER_JACKET)then begin Art_fidM:=FID_HMMAXX; Art_fidF:=FID_HFMAXX; end else if(obj_pid(ptr_armor)==PID_PURPLE_ROBE)then begin Art_fidM:=FID_HAROBE; Art_fidF:=FID_HAROBE; end else if(obj_pid(ptr_armor)==PID_METAL_ARMOR)OR(obj_pid(ptr_armor)==PID_TESLA_ARMOR)OR(obj_pid(ptr_armor)==PID_METAL_ARMOR_MK_II)then begin Art_fidM:=FID_HMMETL; Art_fidF:=FID_HFMETL; end else if(obj_pid(ptr_armor)==PID_COMBAT_ARMOR)OR(obj_pid(ptr_armor)==PID_COMBAT_ARMOR_MK_II)then begin Art_fidM:=FID_HMCMBT; Art_fidF:=FID_HFCMBT; end else if(obj_pid(ptr_armor)==PID_POWERED_ARMOR)OR(obj_pid(ptr_armor)==PID_HARDENED_POWER_ARMOR)OR(obj_pid(ptr_armor)==PID_BROTHERHOOD_COMBAT_ARMOR)then begin Art_fidM:=FID_NAPOWR; Art_fidF:=FID_NAPOWR; end Отлично! Теперь вопросы: 1. Если сменить(т.е снять одну, и одеть другую) броню в режиме диалога, вид партийца не меняется. Т.е. Чтобы сменить броню, нужно снять броню, выйти из диалога, зайти в диалог, и одеть другую. Почему? 2. Иногда, при смене брони(выход из диалога) партиец начинает съезжать вниз по карте. ИЗ-за чего это может быть? (Добавление от 23:53 - 13 Окт., 2005.) Далее... Мне всегда не нравилось, что в режиме диалога нельзя сказать партийцу, какое точно оружие он должен взять. Выбрать тобеж. Вот: #define Weapon(Pid_Item) if(obj_carrying_pid_obj(self_obj,Pid_Item)!=0)then\ gsay_option(-1,"Я хочу, чтобы ты взял в руки"+ proto_data(Pid_Item,it_name), wield_obj(obj_carrying_pid_obj(self_obj,Pid_Item)),-1); или (тут я не знаю точно что ставить, но мне кажется что всё-таки gsay_option) #define Weapon(Pid_Item) if(obj_carrying_pid_obj(self_obj,Pid_Item)!=0)then\ SayOption("Я хочу, чтобы ты взял в руки"+proto_data(Pid_Item,it_name),wield_obj(obj_carrying_pid_obj(self_obj,Pid_Item))); Я понимаю, что вместо wield_obj(obj_carrying_pid_obj(self_obj,Pid_Item)) там должно быть указание на процедуру. Что-то вроде: SayOption("Я хочу, чтобы ты взял в руки"+proto_data(Pid_Item,it_name), Wield_Critter); Procedure Wield_Critter begin wield_obj(obj_carrying_pid_obj(self_obj,Pid_Item)); end Но как передать этой процедуре Pid_Item??? Procedure Take_Weapon begin variable Pid_Item:=4; Rep(10); Weapon(45)Weapon(94)Weapon(118)Weapon(120)Weapon(122)Weapon(143)Weapon(159) Weapon(261)Weapon(268)Weapon(270)Weapon(280)Weapon(283)Weapon(287)Weapon(296) Weapon(313)Weapon(332)Weapon(365)Weapon(421)Weapon(427)Weapon(500)Weapon(519) while((Pid_Item>=3)AND(Pid_Item<14))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=15)AND(Pid_Item<17))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=18)AND(Pid_Item<29))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=115)AND(Pid_Item<117))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=160)AND(Pid_Item<163))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=233)AND(Pid_Item<237))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=241)AND(Pid_Item<243))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=290)AND(Pid_Item<294))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=299)AND(Pid_Item<301))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=319)AND(Pid_Item<321))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=350)AND(Pid_Item<356))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=371)AND(Pid_Item<373))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=383)AND(Pid_Item<408))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=496)AND(Pid_Item<498))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End while((Pid_Item>=508)AND(Pid_Item<510))do begin Weapon(Pid_Item)Pid_Item:=Pid_Item+1;End end
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 23:47 - 13 Окт., 2005
|
|
Mynah
Модератор
Откуда: Пермь Регистрация: Окт. 2004
Всего: 469 сообщений
|
Извращаться с critter_p_proc не надо. procedure talk_p_proc begin variable previous_armor; variable current_armor; variable previous_weapon; variable current_weapon; --запоминаем текущее состояние криттера в previous'ы--- --диалог-- --если текущее состояние != предыдущему, то сменить броню, потом оружие (если не wield'ать оружие, то, после смены брони, криттер окажется с пустыми руками)-- end
----- Scio me nihil scire
|
Отправлено: 9:19 - 14 Окт., 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Ты слегка не прав. Я так пробовал, не получается. Процедуру нужно засовывать в Node999, т.е. в конец диалога. Тогда всё работает отлично. А как насчёт второй процедуры? Можешь что нибудь посоветовать?
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 23:00 - 15 Окт., 2005
|
|
Mynah
Модератор
Откуда: Пермь Регистрация: Окт. 2004
Всего: 469 сообщений
|
>>Ты слегка не прав. А может ты? ;) У меня-то всё работает. Я так делал уже ;)
----- Scio me nihil scire
|
Отправлено: 0:04 - 16 Окт., 2005
|
|
binyan
Пользователь
Откуда: Israel Регистрация: Март 2005
Всего: 292 сообщения
|
Быть может всё. Но у меня работает так как я написал =)
----- ...выражая озадаченность, граничащую с озабоченностью..
|
Отправлено: 0:30 - 16 Окт., 2005
|
|
|
|