Перенесення скриптів з першого фолу в другій

Та не особливо багато підводних каменів. Всі скрипти першого фолу перенесені, зараз тільки є деякі нестиковки і баги спливають а так все працює. Може вам просто скрипти потрібні першого фолу? Або ви хочете їх сам перенести? Або саме пояснити як переносити скрипти? Якщо що це скрипти першого фолу більш-менш приведені до вихідного коду, тобто як в ф2, відновлені scripts.h, maps.h, global.h і т.д

Все легко робиться. Беремо декомпіліруем скрипт. Прописуємо його в scripts.lst і scrname.msg.
Потім Компільо скрипт компілятором для ф2. Якщо вискочила помилка (таке буває в деяких
скриптах НЕ декомпілюються деякі функції, це потрібно правити вручну),
скомпілювали відмінно переносимо в папку scripts і в маппера створюємо персонаж, прив'язуючи
прошнік і наш скрипт. І все. Але ось від сюди то і починаються проблеми. Гварі не ті, номер
скрипта не той і т.д.

Що робити знаходити номери гвар і скриптів і виправляти на свої, тобто заміна.
Можна робити в блокноті знайти і замінити. Але цим я користувався недовго набридло, зробив
половину скриптів замінивши номера на дефін заміну що б легше було керувати.

Але потім до цієї справи я прикрутив препроцесор, беремо препроцесор і скрипт.
Робимо h файл і в ньому пишемо

message_str (Номер скрипта, номер рядка)

#define message_str (x1, x2) message_str (SCRIPT_NUMBER_ x1, x2)

Після препроцесора в скрипті буде такий вид


message_str (SCRIPT_NUMBER_ 567, 345)

Потім беремо програму для заміни слів в файлах.

Замінюємо SCRIPT_NUMBER_ (з пропуском) на SCRIPT_NUMBER_ (без пробілу)

І скрипт буде такого виду

Після чого створюємо ще файл h і підключаємо до скрипту

#define SCRIPT_NUMBER_567 SCRIPT_імяскріпат (приклад) SCRIPT_ARADESH

І знову запускаємо препрцессор і ось тепер можна змінювати номер скрипта правлячи один
файл scripts.h

У файлі scripts.h додаємо таку строчку


#define SCRIPT_ARADESH (Номер скрипта з scripts.lst)

І так далі що потрібно замінити. І ось так сообственно я і приводив скрипти для перенесення
в ф2.

У мене десь повинні бути всі ці h фали, але невпевнений подивлюся може залишилися.

І якщо що то незрозуміло пиши.

Взагалі можу написати хелп як деомпіліровать для дальгнейшей модифікації. З скріншот і з повним описом. Думаю знадобиться. Наприклад хтось не хоче викладати вихідні мода або вихідні загубилися всяке може бути, а ми прочитавши статейку самі декомпільнулі відновили скрипти, звичайно це буде код не як в бісовскіх скриптах але все таки краще ніж просто декомпільовану скрипт.

Ееее Я може туплю, але у мене є кілька питань.

так точно ступив, перше питання відпало.

2. Ось ти писав - "Потім Компільо скрипт компілятором для ф2." але у Ф1 дещо інша структура, там же все через start працює, а в Ф2 він тільки один раз викликається і все, або це не так? Як тоді він буде працювати то? Навіть якщо все гварі і Мвар переписати. Чет не зрозуміло. А режим діалогу там через SEY режим зроблений. У Ф2 у нього то-же трохи інший вид роботи, як мені здається.

але у Ф1 дещо інша структура, там же все через start працює, а в Ф2 він тільки один раз викликається і все, або це не так?


Я теж спочатку думав що тільки один раз викликається а немає при кожному зверненні скрипта.
Подивися вихідні скриптів від першого фолу відразу стане все зрозуміло. Якщо все викликається через старт то не можна додавати процедуру над процедурою старий, тому що процедура старт не зарустіться, в таких скриптах де все викликається через старт, найперша процедура повинна бути start.

А режим діалогу там через SEY режим зроблений.


Демо версія ф1 зроблена через сай режим, а ф1 так само як ф2.

У Ф2 у нього то-же трохи інший вид роботи, як мені здається.


Чесно я особливо не копався в сай режимі ф1. Але я думаю не особливо відрізнятися повинен.

Приклад скрипта де все викликається через старт

procedure start
begin
Таже процедура talk_p_proc тільки викликається через старт і script_action
if (script_action == talk_proc) then begin

start_gdialog (SCRIPT_ARADESH, self_obj, 4, -1, -1);
gsay_start;
call Node001;
gsay_end;
end_dialogue;
end

І сюди так само додавати
це look_at_p_proc
if (script_action == look_at_proc) then begin
script_overrides;
display_msg (message_str (NAME, 100));
end
end