Показать сообщение отдельно
Старый 03.07.2009, 16:20   #2223
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2Vicont:
Сначаля я пробовал взять за основу скриптовую болванку, но при компиляции возникла куча ошибок типа переменные не опреднлены и у функций нету значений...

потом взял за основу оригинальные скрипты от Акеллы - *Редактируются и компилируются успешно. Только в них много "лишнего" из Г2 с аддоном. например папка "story"
- Какие лишние скрипты можно удалить без последствий?
На мод.вог.ру, была готовая скриптовая болванка для новых не сюжетных модов от камрада WSA, качай ее и прописывай что тебе нужно. (
если не найдешь стукни мне в аск, скину если найду у себя на винтах
)


И ещё вопрос:
- Если я создаю новый мир, допустим test.zen, как конкретно прописать чтобы этот загружался при начале "новой игры"?

Смотрел Startup.d, там func void startup_global и func void init_global во всех модах одинаковые, а дальше всё в перемешку, а если исходные параметры я заменяю своими, то он ругается на неизвестный идентификатор...
Здесь немного по другому, ошибку "неизвестного идентификатора" дает от того, что игра не знает мира, для этого нужно его зарегистрировать в файле:
...\_Intern\Constants.d

В котором находим строки(
в самом низу файла
):
Cпойлер(щелкните, чтобы прочесть):
Код:
const int NEWWORLD_ZEN = 1;const int OldWorld_Zen = 2;const int DRAGONISLAND_ZEN = 3;const int ADDONWORLD_ZEN = 4;
И ниже дописываем, например:
Код:
const int MY_WOWLD_ZEN =5;
сохраняем файл.

Затем, открываем файл:
...\Story\Startup.d

Здесь рассовываем непесей по локациии, для вейпоинтов и фрипоинтов, лучше использовать сокращения от названия мира и части локации, стороения и т.д., например:

MY_WORLD = MW,
Мир, а часть локации под названием лагерь на руинах будет как - Ruins Camp, также указываем номера, для сети вай/фри поинтов, вида _01 ... 22 ..., и т.д.
В итоге имеем что-то, типа: MW_RUINS_CAMP_01.

Если же есть какое либо квестовое жилище задействованное в миссиях, то и его можно добавить, например дом для Бронко:
MW_RUINS_CAMP_HOUSE_BRONCO_01.., и т.д...

ВАЖНО: Вей/фрипоинты всегда писать заглавными буквами как в спейсере так и в скриптах.

Также желательно, чтобы всегда написание названия вашего зена совпадало с скриптовыми инстанциями и глобальными переменными.
Например, ваш мир назван - MY_WORLD.ZEN
В файле Constants.d он должен быть назван как:
MY_WORLD_ZEN

В файле Startup.d, то-же самое, только с префиксом (STARTUP_ или INIT_) от названия функций в которых он используется.

Теперь в конце файла дописываем:
Код:
func void STARTUP_MY_WOWLD_ZEN(){ * *Wld_InsertNpc(Инстанция Нпс/монстрик,"MW_RUINS_CAMP_01."); * *Wld_InsertNpc(Инстанция Нпс/монстрик,"MW_RUINS_CAMP_HOUSE_BRONCO_01"); * *Wld_InsertNpc(Инстанция Нпс/монстрик,"MW_RUINS_CAMP_HOUSE_BRONCO_09");};
и после нее:
Код:
func void INIT_MY_WOWLD_ZEN(){ * *B_InitMonsterAttitudes(); * *B_InitGuildAttitudes(); * *CurrentLevel = MY_WOWLD_ZEN; * *B_InitNpcGlobals();};
Теперь, если в мире проставлен СтартПоинт для Гг, и мир уже скомпилирован, сохраняем и компилируем скрипты.
Запускаем свой мод и тестируем в игре. *:)


Ps. Вот еще что, в конце файла Startup.d, после последней закрывающейся фигурной скобки:
};

не забудь пробить один раз клавишу RETURN, (
нажать ЕНТЕР
) ;)

Вроде все...   :)

Отправить личное сообщение для Ответить с цитированием