Перейти к содержанию

[Tools] Утилиты для модификации игр Fallout 1/2


Рекомендуемые сообщения

Всем привет! Подскажите пожалуйста как пользоваться dat2 от Anchorite. Документации не нашел, а хэлп не совсем понятен. Если кто знает, поделитесь примерами использования (или всеми параметрами с описанием на русском). Заранее спасибо! :)

Ссылка на комментарий

Всем привет! Подскажите пожалуйста как пользоваться dat2 от Anchorite. Документации не нашел, а хэлп не совсем понятен. Если кто знает, поделитесь примерами использования (или всеми параметрами с описанием на русском). Заранее спасибо! :)

Привет. Приехали)

Ты ведь сам ей пользовался... (в том же наборе F2 tools она есть).

Это упаковка файлов в dat контейнер. dat2 + dat2frame и получаем...

3A.jpg

Fallout 2Путеводитель по модам | FAQ | Перевод модов | Путеводитель по RP

Nevada Band: Путеводитель по играм серииFAQ

Fallout Tactics: Путеводитель по модам | FAQ

База Данных: YD\YD\MF

Помогая другим, не забывай о себе =) 

Ссылка на комментарий

Вроде переводится без проблем.

<command> [options] [-t dir] [-d dir] dat-file


  1. Команды
      a: добавьте файлы в DAT-файл. Создать новый, если DAT-файл не существует
      x: извлечение файлов из dat-файла
      d: удаление файлов из dat-файла (только информацию о файлах)
      l: список файлов в DAT-файле
      k: термоусадка DAT-файл (т.e. удаляет неиспользованные данные от файлов в DAT)
     
    Опции
      -s: создать Fallout 1 dat-файл
      -r: рекурсия в каталоги
      -0..9: метод сжатия
             (Fallout1: 0-нет, другие номера-сжатие (по умолчанию)
             (Fallout2: 0-нет, 1-лучшая скорость, 9 - лучшее сжатие (по умолчанию)
      -p: извлечение без путей
      -d: извлечение файлов в указанный каталог
      -t: добавление файлов в указанную директорию dat-файла

Паковать файлы(много и разом, создавая новый дат) через батник по нормальному не получится, там какая-то баговина есть, которую обходным путем обходит GUI (делает всю рутинную работу по прописыванию всех файлов)

паковать по одному файлу проблем нет

пример:

dat2.exe a example.dat ваш-файл-для-упаковки

Ссылка на комментарий

Mr.Stalin

Спасибо за информацию! Мне вот это непонятно как использовать: list | @response-file

Внешний файл со списком файлов, которые нужно запаковать/распаковать

я использую это так в редакторе

dat2.exe x -d extract_folder MasterDAT @iProto.lst

 

list - список файлов, которые непосредственно указываешь в командной строке 

Ссылка на комментарий

Понятно, я думал что можно создать список файлов и папок и скормить в dat2, оказывается фигли :(
Кстати, попробовал распаковать/запаковать master.dat из русской версии и ты знаешь, получилось и размер ~ на 10mb меньше :)

@echo off
color 0a
title Fallout DAT Tool
dat2 a -s MASTER.DAT ART\BACKGRND\*
dat2 a -s MASTER.DAT ART\CUTS\*
dat2 a -s MASTER.DAT ART\HEADS\*
dat2 a -s MASTER.DAT ART\INTRFACE\*
dat2 a -s MASTER.DAT ART\INVEN\*
dat2 a -s MASTER.DAT ART\ITEMS\*
dat2 a -s MASTER.DAT ART\MISC\*
dat2 a -s MASTER.DAT ART\SCENERY\*
dat2 a -s MASTER.DAT ART\SKILLDEX\*
dat2 a -s MASTER.DAT ART\SPLASH\*
dat2 a -s MASTER.DAT ART\TILES\*
dat2 a -s MASTER.DAT ART\WALLS\*
dat2 a -s MASTER.DAT DATA\*
dat2 a -s MASTER.DAT MAPS\*
dat2 a -s MASTER.DAT PREMADE\*
dat2 a -s MASTER.DAT PROTO\CRITTERS\*
dat2 a -s MASTER.DAT PROTO\ITEMS\*
dat2 a -s MASTER.DAT PROTO\MISC\*
dat2 a -s MASTER.DAT PROTO\SCENERY\*
dat2 a -s MASTER.DAT PROTO\TILES\PATTERNS\*
dat2 a -s MASTER.DAT PROTO\TILES\*
dat2 a -s MASTER.DAT PROTO\WALLS\*
dat2 a -s MASTER.DAT SCRIPTS\*
dat2 a -s MASTER.DAT SOUND\SFX\*
dat2 a -s MASTER.DAT SOUND\SPEECH\ARDSH\*
dat2 a -s MASTER.DAT SOUND\SPEECH\BUTCH\*
dat2 a -s MASTER.DAT SOUND\SPEECH\CABBT\*
dat2 a -s MASTER.DAT SOUND\SPEECH\DEKKR\*
dat2 a -s MASTER.DAT SOUND\SPEECH\GIZMO\*
dat2 a -s MASTER.DAT SOUND\SPEECH\HARLD\*
dat2 a -s MASTER.DAT SOUND\SPEECH\HARRY\*
dat2 a -s MASTER.DAT SOUND\SPEECH\JAINN\*
dat2 a -s MASTER.DAT SOUND\SPEECH\KILLN\*
dat2 a -s MASTER.DAT SOUND\SPEECH\LAURA\*
dat2 a -s MASTER.DAT SOUND\SPEECH\LIEUT\*
dat2 a -s MASTER.DAT SOUND\SPEECH\LOXLY\*
dat2 a -s MASTER.DAT SOUND\SPEECH\MASTR\*
dat2 a -s MASTER.DAT SOUND\SPEECH\MAXSN\*
dat2 a -s MASTER.DAT SOUND\SPEECH\MORPH\*
dat2 a -s MASTER.DAT SOUND\SPEECH\NARRATOR\*
dat2 a -s MASTER.DAT SOUND\SPEECH\NICOL\*
dat2 a -s MASTER.DAT SOUND\SPEECH\OVRSR\*
dat2 a -s MASTER.DAT SOUND\SPEECH\RHOMB\*
dat2 a -s MASTER.DAT SOUND\SPEECH\SETTT\*
dat2 a -s MASTER.DAT SOUND\SPEECH\TANDI\*
dat2 a -s MASTER.DAT SOUND\SPEECH\VVREE\*
dat2 a -s MASTER.DAT TEXT\ENGLISH\CUTS\*
dat2 a -s MASTER.DAT TEXT\ENGLISH\DIALOG\*
dat2 a -s MASTER.DAT TEXT\ENGLISH\GAME\*
dat2 a -s MASTER.DAT TEXT\ENGLISH\CREDITS.TXT
dat2 a -s MASTER.DAT TEXT\ENGLISH\QUOTES.TXT
dat2 a -s MASTER.DAT COLOR.PAL
dat2 a -s MASTER.DAT FONT0.AAF
dat2 a -s MASTER.DAT FONT0.FON
dat2 a -s MASTER.DAT FONT1.AAF
dat2 a -s MASTER.DAT FONT1.FON
dat2 a -s MASTER.DAT FONT2.AAF
dat2 a -s MASTER.DAT FONT2.FON
dat2 a -s MASTER.DAT FONT3.AAF
dat2 a -s MASTER.DAT FONT3.FON
dat2 a -s MASTER.DAT FONT4.AAF
dat2 a -s MASTER.DAT FONT5.FON

Там фокус в том, что dat2 нужно запускать из корневой папки. Допустим, если master.dat распаковать в папку master, туда скопировать dat2 и бантик (если есть), тогда пакуется на ура. А DAT2Frame как то это обходит и позволяет создать файл из содержимого любой папки. Единственное ограничение, папка как и создаваемый файл должны находиться на диске C.

P.S. Еще хотел уточнить по поводу команд k: термоусадка DAT-файл (т.e. удаляет неиспользованные данные от файлов в DAT) и -0..9: метод сжатия, обязательно ли их использовать и какая от них польза. И еще вопрос, запаковал патчи от TeamX для первого фолача в dat, но игра их не видит. А если без запаковки в dat, то все норм. Или фол1 не понимает patch000.dat?

Ссылка на комментарий

Понятно, я думал что можно создать список файлов и папок и скормить в dat2, оказывается фигли :(

Кстати, попробовал распаковать/запаковать master.dat из русской версии и ты знаешь, получилось и размер ~ на 10mb меньше :)

@echo off

DAT2Frame как то это обходит и позволяет создать файл из содержимого любой папки. Единственное ограничение, папка как и создаваемый файл должны находиться на диске C.

Фол1 не понимает patch000.dat?

На сколько помню, dat2frame с любого диска ест папки...

Не понимает движок патчи, все в data или паковать в master.dat

Fallout 2Путеводитель по модам | FAQ | Перевод модов | Путеводитель по RP

Nevada Band: Путеводитель по играм серииFAQ

Fallout Tactics: Путеводитель по модам | FAQ

База Данных: YD\YD\MF

Помогая другим, не забывай о себе =) 

Ссылка на комментарий

P.S. Еще хотел уточнить по поводу команд k: термоусадка DAT-файл (т.e. удаляет неиспользованные данные от файлов в DAT)

Опция К - к примеру ты упаковал файл который уже существует в дат, то первый существующий файл не удаляется и от него остается неиспользованные данные.

Так же при удалении файла нужно применить опцию чтобы уменьшить размер дат.

Ссылка на комментарий

Mr.Сталин

Где можно почитать информацию о обозначениях script_action == для F1. Многие в скриптах нашел, но не все. Например (script_action == 15) это я так понял procedure map_enter_p_proc

Ссылка на комментарий

Крафти писал что это уже неиспользуется в f1, устарело. Система такая же как в f2.

Почитать о номерах там >> https://github.com/FakelsHub/ecco_ssl/blob/f5470e3ecf583f89128f93f6247e03a48bf4a893/_pbs_main/define_lite.h#L43

Ссылка на комментарий

Mr.Сталин

Спасибо за ссылку.

Я при правки скриптов и переделываю их в нормальные процедуры, а то иногда все в start засунуто. Реально нужно только script_action == 3

Ссылка на комментарий

Mr.Сталин

Спасибо за ссылку.

Я при правки скриптов и переделываю их в нормальные процедуры, а то иногда все в start засунуто. Реально нужно только script_action == 3

Даже 3 не надо там просто другое название. Потом напишу.
Ссылка на комментарий

Крафти писал что это уже неиспользуется в f1, устарело. Система такая же как в f2

Нет, все таки есть косяки. К примеру убрал из start в скрипте карты пещеры убежища 13

   if (script_action == 15) then begin
      call map_enter_p_proc();
   end
И при начале игры игрок появляется не в том месте, хотя в процедуре map_enter_p_proc все условия есть.
Ссылка на комментарий

Поизучал вопрос, для карт нужно оставлять script_action

https://www.nma-fallout.com/threads/fallout-1-in-fallout-2.217892/page-2#post-4334877

 

Надо наверно эти сообщения из утилит в тему моддинга перенести, вдруг кому пригодится.

 

P.S.

После редактирования форума, я долго искал свою сборку F2 и тему по анимациям)))

Ссылка на комментарий

Воть бантики для распаковки/запаковки *dat файлов. Для утилиты dat2 от Anchorite ;)

 

@echo off
title Fallout DAT UnPacker
color 0a
:: unpack DAT files in folder name!
dat2 x -d CRITTER CRITTER.DAT
dat2 x -d MASTER MASTER.DAT

 

 

@echo off
title Fallout DAT Packer
color 0a
pushd CRITTER

:: pack files in CRITTER.DAT!
..\dat2 a ..\CRITTER.DAT art\critters\*
popd
pushd MASTER

:: pack files in MASTER.DAT!
..\dat2 a ..\MASTER.DAT art\backgrnd\*
..\dat2 a ..\MASTER.DAT art\cuts\*
..\dat2 a ..\MASTER.DAT art\heads\*
..\dat2 a ..\MASTER.DAT art\intrface\*
..\dat2 a ..\MASTER.DAT art\inven\*
..\dat2 a ..\MASTER.DAT art\items\*
..\dat2 a ..\MASTER.DAT art\misc\*
..\dat2 a ..\MASTER.DAT art\scenery\*
..\dat2 a ..\MASTER.DAT art\skilldex\*
..\dat2 a ..\MASTER.DAT art\splash\*
..\dat2 a ..\MASTER.DAT art\tiles\*
..\dat2 a ..\MASTER.DAT art\walls\*
..\dat2 a ..\MASTER.DAT data\*
..\dat2 a ..\MASTER.DAT maps\*
..\dat2 a ..\MASTER.DAT premade\*
..\dat2 a ..\MASTER.DAT proto\CRITTERS\*
..\dat2 a ..\MASTER.DAT proto\ITEMS\*
..\dat2 a ..\MASTER.DAT proto\MISC\*
..\dat2 a ..\MASTER.DAT proto\SCENERY\*
..\dat2 a ..\MASTER.DAT proto\TILES\PATTERNS\*
..\dat2 a ..\MASTER.DAT proto\TILES\*
..\dat2 a ..\MASTER.DAT proto\WALLS\*
..\dat2 a ..\MASTER.DAT scripts\*
..\dat2 a ..\MASTER.DAT sound\SFX\*
..\dat2 a ..\MASTER.DAT sound\Speech\BOSSS\*
..\dat2 a ..\MASTER.DAT sound\Speech\ELDER\*
..\dat2 a ..\MASTER.DAT sound\Speech\HAKU2\*
..\dat2 a ..\MASTER.DAT sound\Speech\HAKUN\*
..\dat2 a ..\MASTER.DAT sound\Speech\HRLD2\*
..\dat2 a ..\MASTER.DAT sound\Speech\LYNET\*
..\dat2 a ..\MASTER.DAT sound\Speech\MRCUS\*
..\dat2 a ..\MASTER.DAT sound\Speech\MYRON\*
..\dat2 a ..\MASTER.DAT sound\Speech\narrator\*
..\dat2 a ..\MASTER.DAT sound\Speech\POWER\*
..\dat2 a ..\MASTER.DAT sound\Speech\PRESI\*
..\dat2 a ..\MASTER.DAT sound\Speech\SULIK\*
..\dat2 a ..\MASTER.DAT sound\Speech\TNDI2\*
..\dat2 a ..\MASTER.DAT text\english\cuts\*
..\dat2 a ..\MASTER.DAT text\english\dialog\*
..\dat2 a ..\MASTER.DAT text\english\game\*
..\dat2 a ..\MASTER.DAT text\english\CREDITS.TXT
..\dat2 a ..\MASTER.DAT text\english\QUOTES.TXT
..\dat2 a ..\MASTER.DAT color.pal
..\dat2 a ..\MASTER.DAT font0.aaf
..\dat2 a ..\MASTER.DAT FONT0.FON
..\dat2 a ..\MASTER.DAT FONT1.AAF
..\dat2 a ..\MASTER.DAT FONT1.FON
..\dat2 a ..\MASTER.DAT FONT2.AAF
..\dat2 a ..\MASTER.DAT FONT2.FON
..\dat2 a ..\MASTER.DAT FONT3.AAF
..\dat2 a ..\MASTER.DAT FONT3.FON
..\dat2 a ..\MASTER.DAT FONT4.AAF
..\dat2 a ..\MASTER.DAT FONT5.FON

 

P.S. Для F1 нужно подправить бантик!

Ссылка на комментарий

Вот данные. Остальное фигня.

 

 

  /*******************************************************************************

        Name: Арадеш
        Location: Шэйди Сэндс
        Description: Глава Шэйди Сэндс
        Updated: Foxx
*******************************************************************************/
procedure start;
procedure look_at_p_proc;
procedure critter_p_proc;
procedure damage_p_proc;
procedure destroy_p_proc;
procedure pickup_p_proc;
procedure talk_p_proc;
procedure aradeshend;
procedure aradesh01;
procedure aradesh01_2;
procedure aradesh01_3;
procedure aradesh02;
procedure aradesh02_2;
procedure aradesh02_4;
procedure aradesh02_5;
procedure aradesh03;
procedure aradesh04;
procedure aradesh05;
procedure aradesh06;
procedure aradesh07;
procedure aradesh08;
procedure aradesh08a;
procedure aradesh08b;
procedure aradesh09;
procedure aradesh09a;
procedure aradesh10;
procedure aradesh11;
procedure aradesh11a;
procedure aradesh11b;
procedure aradesh12;
procedure aradesh13;
procedure aradesh14;
procedure aradesh15;
procedure aradesh16_2;
procedure aradesh17;
procedure aradesh17_2;
procedure aradesh17_3;
procedure aradesh18;
procedure aradesh19;
procedure aradesh20;
procedure aradesh21;
procedure aradesh22;
procedure aradesh23;
procedure aradesh23_2;
procedure aradesh24;
procedure aradesh24a;
procedure aradesh24b;
procedure aradesh24c;
procedure aradesh25;
procedure aradesh26;
procedure aradesh27;
procedure aradesh28;
procedure aradesh28a;
procedure aradesh28b;
procedure aradesh28c;
procedure aradesh29;
procedure aradesh30;
procedure aradesh30a;
procedure aradesh30b;
procedure aradesh31;
procedure aradesh32;
procedure aradesh33;
procedure aradesh35;
procedure aradesh36;
procedure aradesh37;
procedure aradesh37a;
procedure aradesh38;
procedure aradesh39;
procedure aradesh39a;
procedure aradesh39b;
procedure aradesh39c;
procedure aradesh40;
procedure aradesh40a;
procedure aradesh41;
procedure aradesh42;
procedure aradesh43;
procedure aradesh44;
procedure aradesh45;
procedure aradesh46;
procedure aradesh48;
procedure aradeshx;
procedure aradeshx1;
procedure aradeshx2;
procedure aradeshx3;
procedure aradeshx5;
procedure get_reaction;
procedure ReactToLevel;
procedure UpReact;
procedure DownReact;
procedure TopReact;
procedure BigDownReact;
 
variable hostile;
variable initialized;
variable pickup_attempt;
 
 
procedure start begin
   if (initialized == 0) then begin
      initialized := 1;
      critter_add_trait(self_obj, 1, 6, 2);
      critter_add_trait(self_obj, 1, 5, 25);
   end
end
 
procedure look_at_p_proc begin
   script_overrides;
   display_msg(message_str(33, 100));
end
 
procedure critter_p_proc begin
   if (obj_can_see_obj(self_obj, dude_obj)) then begin
      if (global_var(246) == 1) then begin
         hostile := 1;
      end
   end
   if (hostile) then begin
      hostile := 0;
      attack_complex(dude_obj, 0, 1, 0, 0, 30000, 0, 0);
   end
end
 
procedure damage_p_proc begin
   if (source_obj == dude_obj) then begin
      set_global_var(246, 1);
      hostile := 1;
   end
end
 
procedure destroy_p_proc begin
   set_global_var(604, 1);
   if (source_obj == dude_obj) then begin
      if (((global_var(160) + global_var(159)) >= 25) and ((global_var(159) > (2 * global_var(160))) or (global_var(156) == 1))) then begin
         set_global_var(156, 1);
         set_global_var(157, 0);
      end
      if (((global_var(160) + global_var(159)) >= 25) and ((global_var(160) > (3 * global_var(159))) or (global_var(157) == 1))) then begin
         set_global_var(157, 1);
         set_global_var(156, 0);
      end
      set_global_var(159, global_var(159) + 1);
      if ((global_var(159) % 2) == 0) then begin
         set_global_var(155, global_var(155) - 1);
      end
   end
end
 
procedure pickup_p_proc begin
   pickup_attempt := 1;
   dialogue_system_enter;
end
 
procedure talk_p_proc begin
   variable LVar0 := 0;
   call get_reaction();
   if (pickup_attempt) then begin
      pickup_attempt := 0;
      LVar0 := random(1, 2);
      if (LVar0 == 1) then begin
         call aradesh45();
      end
      else begin
         call aradesh46();
      end
   end
   else begin
      if (global_var(246) == 1) then begin
         float_msg(self_obj, message_str(33, 277), 2);
         hostile := 1;
      end
      else begin
         if ((local_var(9) > 2) or hostile) then begin
            display_msg(message_str(766, 170));
         end
         else begin
            start_gdialog(33, self_obj, 4, 13, 9);
            gsay_start;
            if (global_var(26) == 1) then begin
               set_local_var(4, 1);
               if (global_var(103) == 0) then begin
                  call aradesh39();
               end
               else begin
                  call aradesh37();
               end
            end
            else begin
               if ((game_time_hour >= 2100) or (game_time_hour < 600)) then begin
                  call aradesh48();
               end
               else begin
                  if (local_var(4) == 1) then begin
                     if (local_var(5) == 1) then begin
                        call aradesh46();
                     end
                     else begin
                        if ((global_var(26) == 2) and (local_var(8) == 0)) then begin
                           call aradesh43();
                        end
                        else begin
                           if ((global_var(43) == 2) and (local_var(10) == 0)) then begin
                              set_local_var(10, 1);
                              call aradesh31();
                           end
                           else begin
                              if (global_var(26) == 1) then begin
                                 if (global_var(103) == 0) then begin
                                    call aradesh39();
                                 end
                                 else begin
                                    call aradesh37();
                                 end
                              end
                              else begin
                                 if ((global_var(26) == 2) and (global_var(43) != 2)) then begin
                                    call aradesh30a();
                                 end
                                 else begin
                                    if (global_var(26) == 2) then begin
                                       call aradesh35();
                                    end
                                    else begin
                                       if (local_var(1) < 3) then begin
                                          call aradesh18();
                                       end
                                       else begin
                                          call aradesh17();
                                       end
                                    end
                                 end
                              end
                           end
                        end
                     end
                  end
                  else begin
                     set_local_var(4, 1);
                     call aradesh01();
                  end
               end
            end
            gsay_end;
            end_dialogue;
         end
      end
   end
   if (local_var(7) == 1) then begin
      animate_move_obj_to_tile(self_obj, 32945, 0);
   end
end
 
procedure aradeshend begin
end
 
procedure aradesh01 begin
   if (local_var(1) >= 2) then begin
      if (local_var(1) >= 3) then begin
         gsay_reply(33, 101);
      end
      else begin
         gsay_reply(33, 102);
      end
   end
   else begin
      gsay_reply(33, 103);
   end
   giq_option(5, 33, 104, aradesh02, 50);
   giq_option(4, 33, 105, aradesh01_2, 51);
   giq_option(4, 33, 106, aradesh10, 51);
   giq_option(4, 33, 107, aradesh01_3, 50);
   giq_option(4, 33, 108, aradesh14, 51);
   giq_option(5, 33, 109, aradesh07, 51);
   giq_option(-3, 33, 110, aradesh15, 50);
end
 
procedure aradesh01_2 begin
   set_local_var(9, local_var(9) + 1);
   call DownReact();
   if (local_var(1) >= 2) then begin
      call aradesh05();
   end
   else begin
      call aradesh06();
   end
end
 
procedure aradesh01_3 begin
   if (local_var(1) >= 2) then begin
      call aradesh13();
   end
   else begin
      call aradesh11();
   end
end
 
procedure aradesh02 begin
   gsay_reply(33, 111);
   giq_option(4, 33, 112, aradesh02_2, 50);
   giq_option(4, 33, 113, aradesh01_2, 51);
   giq_option(5, 33, 114, aradesh02_4, 51);
   giq_option(5, 33, 115, aradesh02_5, 50);
end
 
procedure aradesh02_2 begin
   if (local_var(1) >= 2) then begin
      call aradesh03();
   end
   else begin
      call aradesh08();
   end
end
 
procedure aradesh02_4 begin
   if (local_var(1) >= 2) then begin
      call aradesh09();
   end
   else begin
      call aradesh06();
   end
end
 
procedure aradesh02_5 begin
   if (local_var(1) >= 2) then begin
      call aradesh04();
   end
   else begin
      call aradesh09();
   end
end
 
procedure aradesh03 begin
   gsay_reply(33, 116);
   giq_option(4, 33, 117, aradesh04, 50);
   giq_option(4, 33, 118, aradesh01_2, 51);
   giq_option(5, 33, 119, aradesh07, 51);
   giq_option(4, 33, 120, aradesh07, 51);
end
 
procedure aradesh04 begin
   gsay_message(33, 121, 50);
   call aradeshend();
end
 
procedure aradesh05 begin
   gsay_reply(33, 122);
   giq_option(5, 33, 123, aradesh06, 51);
   giq_option(4, 33, 124, aradesh04, 50);
   giq_option(4, 33, 125, aradesh07, 51);
end
 
procedure aradesh06 begin
   set_local_var(9, local_var(9) + 1);
   gsay_message(33, 126, 51);
   call aradeshx1();
end
 
procedure aradesh07 begin
   set_local_var(9, local_var(9) + 1);
   gsay_message(33, 127, 51);
   call aradeshx2();
end
 
procedure aradesh08 begin
   gsay_reply(33, 128);
   giq_option(4, 33, 129, aradesh08a, 49);
   giq_option(5, 33, 130, aradesh08b, 51);
end
 
procedure aradesh08a begin
   if (local_var(9) > 0) then begin
      set_local_var(9, local_var(9) - 1);
   end
   call UpReact();
   call aradesh04();
end
 
procedure aradesh08b begin
   set_local_var(9, local_var(9) + 1);
   call DownReact();
   call aradesh06();
end
 
procedure aradesh09 begin
   gsay_reply(33, 131);
   giq_option(0, 33, 132, aradesh09a, 50);
end
 
procedure aradesh09a begin
   gsay_message(33, 133, 50);
   call aradeshx();
end
 
procedure aradesh10 begin
   gsay_message(33, 134, 50);
   call aradeshx();
end
 
procedure aradesh11 begin
   gsay_reply(33, 135);
   giq_option(4, 33, 136, aradesh12, 50);
   giq_option(5, 33, 137, aradesh11a, 50);
   giq_option(4, 33, 138, aradesh11b, 51);
end
 
procedure aradesh11a begin
   if (is_success(roll_vs_skill(dude_obj, 14, 0))) then begin
      call aradesh02();
   end
   else begin
      call aradesh14();
   end
end
 
procedure aradesh11b begin
   set_local_var(9, local_var(9) + 1);
   call DownReact();
   call aradesh14();
end
 
procedure aradesh12 begin
   gsay_reply(33, 139);
   giq_option(5, 33, 140, aradesh02, 50);
   giq_option(4, 33, 141, aradesh13, 50);
   giq_option(4, 33, 142, aradesh05, 50);
end
 
procedure aradesh13 begin
   gsay_reply(33, 143);
   giq_option(4, 33, 160, aradesh19, 50);
   giq_option(4, 33, 151, aradesh24c, 50);
   giq_option(-3, 33, 156, aradesh36, 50);
end
 
procedure aradesh14 begin
   gsay_reply(33, 144);
   giq_option(4, 33, 146, aradesh04, 50);
   giq_option(5, 33, 145, aradesh06, 51);
   giq_option(4, 33, 147, aradesh07, 51);
end
 
procedure aradesh15 begin
   gsay_message(33, 148, 50);
   call aradeshx();
end
 
procedure aradesh16_2 begin
   if (global_var(43) == 0) then begin
      call aradesh28();
   end
   else begin
      if (global_var(43) == 1) then begin
         call aradesh30a();
      end
      else begin
         if ((global_var(43) == 2) and not(global_var(26) == 2)) then begin
            call aradesh31();
         end
         else begin
            if (global_var(26) == 2) then begin
               call aradesh35();
            end
            else begin
               call aradesh26();
            end
         end
      end
   end
end
 
procedure aradesh17 begin
   gsay_reply(33, 152);
   giq_option(4, 33, 153, aradesh19, 50);
   giq_option(4, 33, 154, aradesh17_2, 50);
   giq_option(5, 33, 155, aradesh17_3, 51);
   giq_option(-3, 33, 156, aradesh36, 50);
end
 
procedure aradesh17_2 begin
   if (global_var(26) == 2) then begin
      call aradesh44();
   end
   else begin
      call aradesh20();
   end
end
 
procedure aradesh17_3 begin
   set_local_var(9, local_var(9) + 1);
   call DownReact();
   if (global_var(26) == 2) then begin
      call aradesh27();
   end
   else begin
      if (local_var(1) >= 2) then begin
         if (local_var(1) >= 3) then begin
            call aradesh27();
         end
         else begin
            call aradesh21();
         end
      end
      else begin
         call aradesh22();
      end
   end
end
 
procedure aradesh18 begin
   if (local_var(1) >= 2) then begin
      gsay_reply(33, 157);
   end
   else begin
      gsay_reply(33, 158);
   end
   giq_option(5, 33, 159, aradesh23, 50);
   giq_option(4, 33, 160, aradesh19, 50);
   giq_option(4, 33, 161, aradesh17_2, 50);
   giq_option(-3, 33, 162, aradesh36, 50);
end
 
procedure aradesh19 begin
   if (local_var(1) >= 2) then begin
      gsay_reply(33, 163);
   end
   else begin
      gsay_reply(33, 164);
   end
   giq_option(5, 33, 165, aradesh25, 50);
   giq_option(4, 33, 166, aradesh16_2, 50);
   giq_option(4, 33, 167, aradesh24c, 50);
end
 
procedure aradesh20 begin
   if (local_var(1) >= 3) then begin
      gsay_message(33, 168, 50);
   end
   else begin
      if (local_var(1) >= 2) then begin
         gsay_message(33, 169, 50);
      end
      else begin
         gsay_message(33, 170, 50);
      end
   end
   call aradeshx();
end
 
procedure aradesh21 begin
   gsay_message(33, 171, 50);
   call aradeshx();
end
 
procedure aradesh22 begin
   gsay_message(33, 172, 50);
   call aradeshx1();
end
 
procedure aradesh23 begin
   if (local_var(1) >= 2) then begin
      gsay_reply(33, 173);
   end
   else begin
      gsay_reply(33, 174);
   end
   giq_option(4, 33, 175, aradesh23_2, 50);
   giq_option(5, 33, 176, aradesh25, 50);
   giq_option(4, 33, 177, aradesh17_2, 50);
end
 
procedure aradesh23_2 begin
   if (local_var(1) >= 2) then begin
      call aradesh24();
   end
   else begin
      call aradesh24b();
   end
end
 
procedure aradesh24 begin
   gsay_reply(33, 178);
   giq_option(0, 33, 179, aradesh24a, 50);
end
 
procedure aradesh24a begin
   gsay_reply(33, 180);
   giq_option(4, 33, 181, aradesh19, 50);
   giq_option(4, 33, 182, aradesh24c, 50);
end
 
procedure aradesh24b begin
   gsay_reply(33, 183);
   giq_option(4, 33, 184, aradesh19, 50);
end
 
procedure aradesh24c begin
   if (global_var(26) == 2) then begin
      call aradesh44();
   end
   else begin
      call aradeshx();
   end
end
 
procedure aradesh25 begin
   if (local_var(0) < 2) then begin
      gsay_reply(33, 185);
   end
   else begin
      gsay_reply(33, 186);
   end
   giq_option(4, 33, 187, aradesh19, 50);
end
 
procedure aradesh26 begin
   gsay_reply(33, 188);
   giq_option(7, 33, 189, aradesh27, 50);
   giq_option(6, 33, 190, aradesh19, 50);
   giq_option(6, 33, 191, aradesh24c, 50);
end
 
procedure aradesh27 begin
   gsay_reply(33, 192);
   giq_option(8, 33, 193, aradesh25, 50);
   giq_option(5, 33, 194, aradesh16_2, 50);
   giq_option(5, 33, 195, aradesh24c, 50);
end
 
procedure aradesh28 begin
   gsay_reply(33, 196);
   giq_option(4, 33, 197, aradesh28a, 50);
end
 
procedure aradesh28a begin
   gsay_reply(33, 198);
   giq_option(4, 33, 199, aradesh29, 49);
   giq_option(4, 33, 200, aradesh28b, 51);
   giq_option(4, 33, 201, aradesh28c, 51);
end
 
procedure aradesh28b begin
   set_local_var(9, local_var(9) + 1);
   call DownReact();
   call aradesh30();
end
 
procedure aradesh28c begin
   set_local_var(9, local_var(9) + 1);
   call DownReact();
   call aradesh19();
end
 
procedure aradesh29 begin
   gsay_message(33, 202, 50);
   set_global_var(43, 1);
   call aradeshx();
end
 
procedure aradesh30 begin
   gsay_reply(33, 203);
   giq_option(5, 33, 204, aradesh30b, 49);
   giq_option(4, 33, 205, aradesh19, 50);
end
 
procedure aradesh30a begin
   gsay_message(33, 206, 50);
   call aradeshx();
end
 
procedure aradesh30b begin
   if (local_var(9) > 0) then begin
      set_local_var(9, local_var(9) - 1);
   end
   call UpReact();
   call aradesh29();
end
 
procedure aradesh31 begin
   gsay_reply(33, 207);
   giq_option(4, 33, 208, aradesh19, 50);
   if (global_var(28) == 2) then begin
      giq_option(4, 33, 209, aradesh32, 50);
   end
end
 
procedure aradesh32 begin
   gsay_reply(33, 210);
   giq_option(4, 33, 211, aradesh19, 50);
   giq_option(4, 33, 212, aradesh17_2, 50);
end
 
procedure aradesh33 begin
   gsay_message(33, 213, 50);
   set_global_var(103, 1);
   call aradeshx();
end
 
procedure aradesh35 begin
   gsay_reply(33, 214);
   giq_option(5, 33, 215, aradesh25, 50);
   giq_option(4, 33, 216, aradesh16_2, 50);
   giq_option(4, 33, 217, aradesh24c, 50);
end
 
procedure aradesh36 begin
   gsay_message(33, 218, 50);
   call aradeshx();
end
 
procedure aradesh37 begin
   gsay_reply(33, 219);
   if (global_var(26) == 3) then begin
      giq_option(5, 33, 220, aradesh38, 50);
      giq_option(4, 33, 221, aradesh37a, 50);
      giq_option(-3, 33, 222, aradesh37a, 50);
   end
   else begin
      giq_option(4, 33, 223, aradesh38, 50);
      giq_option(5, 33, 224, aradesh19, 50);
      giq_option(-3, 33, 225, aradesh38, 50);
   end
end
 
procedure aradesh37a begin
   gsay_message(33, 226, 50);
   call aradeshx5();
end
 
procedure aradesh38 begin
   gsay_message(33, 227, 50);
   call aradeshx();
end
 
procedure aradesh39 begin
   set_global_var(218, 1);
   gsay_reply(33, 228);
   giq_option(4, 33, 229, aradesh39a, 50);
   giq_option(-3, 33, 230, aradesh33, 50);
end
 
procedure aradesh39a begin
   gsay_reply(33, 231);
   giq_option(4, 33, 232, aradesh39b, 50);
   giq_option(4, 33, 233, aradesh41, 50);
   giq_option(4, 33, 234, aradesh39c, 50);
end
 
procedure aradesh39b begin
   if (local_var(9) > 0) then begin
      set_local_var(9, local_var(9) - 1);
   end
   call UpReact();
   set_global_var(103, 1);
   call aradesh40();
end
 
procedure aradesh39c begin
   set_local_var(9, local_var(9) + 1);
   call DownReact();
   call aradesh42();
end
 
procedure aradesh40 begin
   variable LVar0 := 0;
   gsay_reply(33, 235);
   set_global_var(103, 1);
   LVar0 := create_object_sid(7, 0, 0, -1);
   add_obj_to_inven(dude_obj, LVar0);
   giq_option(4, 33, 236, aradesh40a, 50);
end
 
procedure aradesh40a begin
   gsay_message(33, 237, 50);
   call aradeshx();
end
 
procedure aradesh41 begin
   gsay_reply(33, 238);
   giq_option(4, 33, 239, aradesh40, 50);
   giq_option(4, 33, 240, aradesh42, 50);
end
 
procedure aradesh42 begin
   gsay_message(33, 241, 50);
   call aradeshx3();
end
 
procedure aradesh43 begin
   variable LVar0 := 0;
   if (local_var(8) == 0) then begin
      set_local_var(8, 1);
      LVar0 := create_object_sid(41, 0, 0, -1);
      add_mult_objs_to_inven(dude_obj, LVar0, 500);
   end
   if (local_var(9) != 0) then begin
      set_local_var(9, 0);
   end
   call TopReact();
   set_global_var(103, 2);
   gsay_reply(33, 242);
   giq_option(4, 33, 243, aradesh19, 50);
   giq_option(4, 33, 244, aradesh44, 50);
end
 
procedure aradesh44 begin
   gsay_message(33, 245, 50);
   call aradeshx();
end
 
procedure aradesh45 begin
   set_local_var(9, local_var(9) + 2);
   call BigDownReact();
   float_msg(self_obj, message_str(33, 246), 7);
   call aradeshx();
end
 
procedure aradesh46 begin
   set_local_var(9, local_var(9) + 2);
   call BigDownReact();
   float_msg(self_obj, message_str(33, 247), 7);
   call aradeshx();
end
 
procedure aradesh48 begin
   gsay_message(33, 249, 50);
end
 
procedure aradeshx begin
end
 
procedure aradeshx1 begin
   world_map;
end
 
procedure aradeshx2 begin
   world_map;
end
 
procedure aradeshx3 begin
end
 
procedure aradeshx5 begin
   set_local_var(7, 1);
end
 
procedure get_reaction begin
   if (local_var(2) == 0) then begin
      set_local_var(0, 50);
      set_local_var(1, 2);
      set_local_var(2, 1);
      set_local_var(0, local_var(0) + (5 * get_critter_stat(dude_obj, 3)) - 25);
      set_local_var(0, local_var(0) + (10 * has_trait(0, dude_obj, 10)));
      if (has_trait(0, dude_obj, 39)) then begin
         if (global_var(155) > 0) then begin
            set_local_var(0, local_var(0) + global_var(155));
         end
         else begin
            set_local_var(0, local_var(0) - global_var(155));
         end
      end
      else begin
         if (local_var(3) == 1) then begin
            set_local_var(0, local_var(0) - global_var(155));
         end
         else begin
            set_local_var(0, local_var(0) + global_var(155));
         end
      end
      if (global_var(158) > 2) then begin
         set_local_var(0, local_var(0) - 30);
      end
      if (((global_var(160) + global_var(159)) >= 25) and ((global_var(160) > (3 * global_var(159))) or (global_var(157) == 1))) then begin
         set_local_var(0, local_var(0) + 20);
      end
      if (((global_var(160) + global_var(159)) >= 25) and ((global_var(159) > (2 * global_var(160))) or (global_var(156) == 1))) then begin
         set_local_var(0, local_var(0) - 20);
      end
      call ReactToLevel();
   end
end
 
procedure ReactToLevel begin
   if (local_var(0) <= 25) then begin
      set_local_var(1, 1);
   end
   else begin
      if (local_var(0) <= 75) then begin
         set_local_var(1, 2);
      end
      else begin
         set_local_var(1, 3);
      end
   end
end
 
procedure UpReact begin
   set_local_var(0, local_var(0) + 10);
   call ReactToLevel();
end
 
procedure DownReact begin
   set_local_var(0, local_var(0) - 10);
   call ReactToLevel();
end
 
procedure TopReact begin
   set_local_var(0, 100);
   set_local_var(1, 3);
end
 
procedure BigDownReact begin
   set_local_var(0, local_var(0) - 25);
   call ReactToLevel();
end

Изменено пользователем Legend
спойлер
Ссылка на комментарий

Воть бантики для распаковки/запаковки *dat файлов. Для утилиты dat2 от Anchorite ;)

Удалил нафиг FrameDat теперь буду юзать батники :)

 

Вот данные. Остальное фигня.

  /*******************************************************************************

        Name: Арадеш
        Location: Шэйди Сэндс
        Description: Глава Шэйди Сэндс
        Updated: Foxx
*******************************************************************************/

Изучаешь эти данные?

Ссылка на комментарий
Обновлена версия скрипт редактора:  4.1.5

 

 

Улучшения:
  • Добавлены описания к новым sfall функциям и их подсветка в синтаксисе.
  • Улучшена функция вызова списка AutoComplete, теперь выводится список c ключевыми словами относительно позиции курсора.
  • Переработана система подсветки процедур в тексте скрипта.
  • Добавлена подсветка текущей процедуры в правой панели процедур.
  • Добавлено переименование процедур по ссылкам на них.
  • Доработана логика выбора пути при извлечении скрипта из .dat архива.
  • Немного увеличен размер окна и размер шрифта для Headers файлов и увеличен размер окна для регистрации скриптов.
  • Добавлено сохранение свернутых процедур скрипта в отдельный конфигурационный файл.
  • Для встроенного препроцессора sfall компилятора добавлен аргумент позволяющий сделать условную компиляцию скрипта.
  • Добавлена опция для включения режима обратной совместимости скриптов для компилятора и парсера.
  • Доработан режим компиляции через пользовательский cmd файл.
  • Добавлен инструмент для настройки пользовательских диалоговых макросов (beta стадия).
  • Увеличен размер шрифта всплывающего диалогового текста для блок-схем.
  • Улучшение в построении диалоговой блок-схемы, и исправление ошибок.

Исправления:

  • Фигурные скобки были удалены из опции по парного ввода символов.
  • Исправление отображение кодировки текста при использовании путей к файлам с кириллицей.
  • Исправлено обновление списка процедур для правой панели.
  • Исправлено положение вставки декларации процедуры, когда ранее не было объявлено не одной процедуры в скрипте.
  • Исправлено выделение специального региона с текстом для аргументов функций при двойном клике по нему.
  • Исправлен порядок поиска Include файлов, теперь корневая папка приложения имеет самый низкий приоритет при поиске.
  • Исправлена функция меню RoundTrip, теперь не перезаписывает .int файл в исходной папке.

 

 

Ссылка на комментарий

Изучаешь эти данные?

Да. Не могу понять, зачем в скриптах озвученные диалоги, которые движком обрабатываются в функции "СПРОСИТЬ", ты то точно не ответишь)))

Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...