Семь Футов под Килем
Форма входа
 
Приветствуем тебя, корсар Юнга!

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!
Логин:
Пароль:


Купить игры
 




Чат
 
500


Статистика
 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Страница 1 из 11
Модератор форума: NikK 
Форум » Ад-доны для игр серии Корсары » FAQ по модам - "Сделай мод сам" » Урок №8. Создание личного файла для кода
Урок №8. Создание личного файла для кода
The_JokerДата: Суббота, 30.04.2011, 21:51 | Сообщение # 1
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
Урок №9 Создание личного файла для кода

Глядя на примеры великих мастеров Igorek-96 и Корсары4а решил поступить их великому примеру и разместить свои скромные, но претендующие на славу treas1 уроки=)
Итак, сегодня мы рассмотрим как сделать свой файл для личного кода. Что я имею ввиду? Я имею ввиду чтобы создать свой файл типо quest_reaction . Это делается для удобства, что кодировать там свои квесты и не путать их с оригинальной игрой. Итак, хватит лиризма, перейдём к делу, непосредственно=)
Итак, для начала создадим файл .c в папке quest. Создали. Открываем файл(советую пользоваться Notepad++)
В начале мы должны прописать кое какие функции, необходимые для того, чтобы то что вы пишите в файле, воспринималось Штормом.
Итак, открываем файл, и начинаем.
Для начала прописываем вот это:
Код
void AragonLineQuestComplete(string sQuestName, string qname)
{
      // boal -->
      ref sld, npchar;
      aref arOldMapPos, arAll, arPass;
      int     iTemp, i, ShipType, Rank; // нужно для вычислений любых целых (нации)
         float locx, locy, locz, fTemp;
         string  attrName, Model, Blade, Gun, sTemp, Ship, sld1; // любые строки для вычислений

      bool   bOk;
      if (bQuestLogShow)
         {
          Log_Info("Quest completed : " + sQuestName + "  param = " + qname);
       trace("Quest completed : " + sQuestName + "  param = " + qname + " " + GetQuestBookDataDigit());
      }
      // boal <--
 


void AragonLineQuestComplete(string sQuestName, string qname) - необходимая часть, так как потом это надо будет прописывать в других файлах.
В целом не нужно зацикливаться над этим. Прописали то что я написал, не будем вдаватся в подробности.
После того когда прописали это пишите:
Код
switch(sQuestName)
      {

и начинаете писать свой код. В самом конце не забудьте поставить скобки:
Код
    }

}


Итак, файл создан. Но перед нами такая проблема, файл пока не воспринимается игрой, тоесть пишите что хотите Шторм не обидится=))
Итак, продолжаем. Заходим в файл quest.c (он находится в папке quest, а папка quest находится в папке PROGRAM=) Зашли, и видим ужооос!=))) шутка. Находим такие функции в самом начале:
Код
#include "quests\quests_abordage.c"
#include "quests\quests_check.c"
#include "quests\quests_movie.c"
#include "quests\characters_task.c"
#include "quests\quests_scenes.c"
#include "quests\quests_reaction.c"
#include "quests\aragon_quests.c"
#include "quests\reaction_functions.c"

Дальше я буду приводить пример с своего файла. Я создал свой файл в папке quest, и как вы поняли он называется aragon_quests, и вот функция:
Код
#include "quests\aragon_quests.c"

Тоже самое и вам нужно сделать, только вместо aragon_quest.c пишите название своего файла.
С этим разобрались. Идём дальше. В этом же файле ищем такие функции:
Код
void CompleteQuestName(string sQuestName, string qname)
{
      if( CheckAttribute(&objQuestScene,"list."+sQuestName+".chrIdx") )
      {
       Event("qprocTaskEnd","a",GetCharacter(sti(objQuestScene.list.(sQuestName).chrIdx)));
      }
      else
      {
       QuestComplete(sQuestName, qname);
       AragonLineQuestComplete(sQuestName, qname);
      }
}


опять для примера берём мой файл. Теперь вы видите для чего нужно было в начале своего файла прописать void AragonLineQuestComplete(string sQuestName, string qname).
На ряду с другими функциями вставляйте свою. Кстати QuestComplete обязателен!!!
Двигаемся дальше!
Идём в quests/quests_check.c ищем функции:
void OnQuestComplete(aref quest, string sQuestname)
Код
void OnQuestComplete(aref quest, string sQuestname)
{
      if(!CheckAttribute(quest,"over") && CheckAttribute(quest,"win_condition"))
      {
       if(!CheckAttribute(quest,"again")) // boal 04.04.04  не заканчиваем прерывание, а вешаем на всегда, снять можно присвоением over = yes
             {
                 quest.over = "yes";
             }
       QuestComplete(quest.win_condition, sQuestName);
       AragonLineQuestComplete(quest.win_condition, sQuestName);
      }
}

Теперь опять вводим уже всем знакомое AragonLineQuestComplete(quest.win_condition, sQuestName); опять же, вставляете вместо AragonLine своё название.
Ниже ищем такие функции:
Код
void OnQuestFailed(aref quest, string sQuestName)
{
      if(CheckAttribute(quest,"fail_condition"))
      {
       quest.over = "yes";
       QuestComplete(quest.fail_condition, sQuestName);
       AragonLineQuestComplete(quest.fail_condition, sQuestName);
      }
}

Опять вводим AragonLineQuestComplete , только в скобках теперь указываете (quest.fail_condition, sQuestName);.
Итак с этим разобрались. Идём дальше.
Заходим в папку battle_interface и находим файл utils.c и ищем функцию (в самом конце) void procTimerTimeOut().
Код
void procTimerTimeOut()
{
      QuestComplete(objTimerInterface.questtype, objTimerInterface.questname);
      AragonLineQuestComplete(objTimerInterface.questtype, objTimerInterface.questname);

Опять добавляем AragonLineQuestComplete (напоминаю вставляете свою надпись, которую вы прописывали в своём файле) и в скобках пишем (objTimerInterface.questtype, objTimerInterface.questname);
Всё, вы добавили свой файл, и он есть в игре. Теперь вы объявили войну Шторму=) Если не правильно будут прописаны функции, сами знаете Шторм какой капризный=) Название говорит само за себя=)
Итак, урок окончен, если будут вопросы, пишите в этой теме.




Vitek5Дата: Суббота, 30.04.2011, 23:39 | Сообщение # 2
Матрос
Группа: Корсар
Сообщений: 58
Награды: 3
Репутация: 3
Статус: В открытом море
Репу тебе за урок..
Джин-БейнДата: Понедельник, 15.08.2011, 14:03 | Сообщение # 3
Капитан I ранга
Группа: Команда Аддона
Сообщений: 1024
Награды: 38
Репутация: 174
Статус: В открытом море
А что нужно зделать, чтоб после кодинга не начинать новую игру, например если предмет новый добавил, через скрипты?

The_JokerДата: Понедельник, 15.08.2011, 14:25 | Сообщение # 4
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
Quote (Джин-Бейн)
А что нужно зделать, чтоб после кодинга не начинать новую игру, например если предмет новый добавил, через скрипты?

ничего нельзя сделать. Такова специффика Шторма. Только если сделал правку в диалоге, то можно не начинать новую игру. А если в коде чтото поменял, нужно начинать новую игру, потому что всё завязано на сейве, а сейв не получил ту информацию которую ты изменил. Так что, всегда надо начинать новую игру. (это меня тоже иногда очень достаёт, но что поделаешь)




Джин-БейнДата: Понедельник, 15.08.2011, 14:55 | Сообщение # 5
Капитан I ранга
Группа: Команда Аддона
Сообщений: 1024
Награды: 38
Репутация: 174
Статус: В открытом море
Quote (Aragon)
...потому что всё завязано на сейве, а сейв не получил ту информацию которую ты изменил.

Что-то в этом роде я и предпологал. Тоскливо. Спосибо за ответ. -give_rose- Корсарыч тоже самое говорил.

Добавлено (15.08.2011, 14:55)
---------------------------------------------
Еще вопрос. Есть почти готовый скрипт. Что зделать чтоб он заработал у тех, у кого закрыты скрипты? т.е нету папки "Програм".




Сообщение отредактировал Джин-Бейн - Понедельник, 15.08.2011, 14:55
РейдерДата: Воскресенье, 20.11.2011, 22:07 | Сообщение # 6
Мичман
Группа: Корсар
Сообщений: 170
Награды: 7
Репутация: 9
Статус: В открытом море
Quote (Watson)
ничего нельзя сделать. Такова специффика Шторма. Только если сделал правку в диалоге, то можно не начинать новую игру. А если в коде чтото поменял, нужно начинать новую игру, потому что всё завязано на сейве, а сейв не получил ту информацию которую ты изменил. Так что, всегда надо начинать новую игру. (это меня тоже иногда очень достаёт, но что поделаешь)

это просто нет слов ((( спасибо за очень важную информацию


"Fifteen men on the dead man's chest--
...Yo-ho-ho, and a bottle of rum!
Drink and the devil had done for the rest--
...Yo-ho-ho, and a bottle of rum!"
псвДата: Воскресенье, 12.01.2014, 00:06 | Сообщение # 7
Пороховая обезьяна
Группа: Пират
Сообщений: 8
Награды: 0
Репутация: 0
Статус: В открытом море
Три раза прописывал всё по уроку, такая проблема после стартового корабля чорные полосы верху и в низу и все двери закрыты прописывал файл для гпк 1.2.12

psv
MettДата: Воскресенье, 12.01.2014, 01:44 | Сообщение # 8
Капитан I ранга
Группа: Корсар
Сообщений: 576
Награды: 85
Репутация: 535
Статус: В открытом море
а что error и compile пишут?
а вообще, похоже что косяк в локации, в которую выгружаешь перса, раз черный экран вылазит


Что толку, если не можешь сделать мир лучше.
псвДата: Воскресенье, 12.01.2014, 19:43 | Сообщение # 9
Пороховая обезьяна
Группа: Пират
Сообщений: 8
Награды: 0
Репутация: 0
Статус: В открытом море
-cool-

Добавлено (12.01.2014, 19:31)
---------------------------------------------
не черный экран а полосы когда гг стоит на корабле и к нему подходит пират на старте вот эти полосы и остаются

Добавлено (12.01.2014, 19:43)
---------------------------------------------
стираю код и всё нормально

Добавлено (12.01.2014, 19:43)
---------------------------------------------
стираю код и всё нормально


psv
DesBalДата: Пятница, 31.10.2014, 23:49 | Сообщение # 10
Матрос
Группа: Корсар
Сообщений: 50
Награды: 1
Репутация: 10
Статус: В открытом море
+1 такая же история с полосами...

Готовность даньки 87% (суммарно,временный фриз)

Стартовый квест 10% (Суммарно)
korsar328Дата: Воскресенье, 28.12.2014, 06:26 | Сообщение # 11
Мичман
Группа: Корсар
Сообщений: 72
Награды: 1
Репутация: 7
Статус: В открытом море
Почему то до этого всё прописывал и ничего не было, сейчас вот сделал и как у псв, чёрные полосы и все двери закрыты, плюс ещё ускорение времени не работает, что это может быть????

Жизнь - как божественная комедия...
DufreinДата: Пятница, 30.10.2015, 17:27 | Сообщение # 12
Капитан II ранга
Группа: Корсар
Сообщений: 436
Награды: 12
Репутация: 73
Статус: В открытом море
Тоже отпишусь, что появляются черные полосы сверху и снизу и все двери закрыты)


MettДата: Пятница, 30.10.2015, 23:58 | Сообщение # 13
Капитан I ранга
Группа: Корсар
Сообщений: 576
Награды: 85
Репутация: 535
Статус: В открытом море
тестовый лог error в студию
если не знаете, как подключить логи, то почитайте тему FAQ данного раздела


Что толку, если не можешь сделать мир лучше.
DufreinДата: Суббота, 31.10.2015, 00:45 | Сообщение # 14
Капитан II ранга
Группа: Корсар
Сообщений: 436
Награды: 12
Репутация: 73
Статус: В открытом море
Цитата Mett ()
тестовый лог error в студию
если не знаете, как подключить логи, то почитайте тему FAQ данного раздела


Его нет, по крайней мере у меня(всмысле не вообще нет, а в данном случае). Могу только скрин с игры прислать. В compile интересного ничего. Все дома закрыты, в море не выйти, черные полосы не исчезают.

Прикрепления: 9494051.jpg(177Kb)





Сообщение отредактировал Corss - Суббота, 31.10.2015, 00:49
MettДата: Суббота, 31.10.2015, 00:57 | Сообщение # 15
Капитан I ранга
Группа: Корсар
Сообщений: 576
Награды: 85
Репутация: 535
Статус: В открытом море
Corss, удалите вот этот код из вашего файл с квестами
Код
    if (CheckAttribute(pchar, "quest." + qname + ".function"))
      {
       string sFunction = pchar.quest.(qname).function;
       call sFunction(qname);
       return;
      }


и опишитесь про результат
т.к. у меня это код только в квест_реакшен, остальные файлы без него


Что толку, если не можешь сделать мир лучше.
DufreinДата: Суббота, 31.10.2015, 01:01 | Сообщение # 16
Капитан II ранга
Группа: Корсар
Сообщений: 436
Награды: 12
Репутация: 73
Статус: В открытом море
Во, теперь порядок. Спасибо! Надо бы исправить первый пост.


Форум » Ад-доны для игр серии Корсары » FAQ по модам - "Сделай мод сам" » Урок №8. Создание личного файла для кода
Страница 1 из 11
Поиск:

Copyright Pirates-Life.Ru © 2008-2016


Семь Футов под Килем - Бухта Корсаров и Пиратов!