|
Вопросы по созданию модификаций
| |
Mett | Дата: Пятница, 15.02.2013, 00:11 | Сообщение # 841 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| CorsairAarrgg, счас объясню подробнее.. все квестовые записи в ГПК хранятся в файлах quest_book_an1 и quest_book_an2 (рассмотрим на примере из quest_book_an1) SetQuestHeader("название квеста"); - эта функция открывает лог квеста в СЖ. название квеста - это вот такая штука: т.е. если строка будет выглядеть так SetQuestHeader("GhostShipQuest"); то откроется квест про ЛГ, но без какой либо записи, просто колонка с квестом.
AddQuestRecord("название квеста", "название квестовой записи"); - эта функция добавляет запись в лог квеста из СЖ. с названием квеста уже ясно. теперь перейдем к этому - название квестовой записи например (возьмем тот же квес про ЛГ):Код #TEXT 1 В таверне я услышал байку про корабль-призрак, который уже много лет бороздит воды архипелага. #TEXT 1 - это название, а не номер! можно назвать, допустим так: #TEXT first_logbook_mark и суть не измениться, но тогда функция добавления записи по квесту будет выглядеть, например, так: Код AddQuestRecord("GhostShipQuest", "first_logbook_mark"); числами называют номера записей исключительно для удобства - на работу скриптов это никак не вляет.
подведем итог: ты должен прописать свои квестовые записи в одном из файлов, где им место (quest_book_an1 и quest_book_an2). потом находишь нужную функцию (на прошлой странице писал уже) и прописываешь там добавление записи в СЖ.
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Пятница, 15.02.2013, 00:14 |
|
| |
CorsairAarrgg | Дата: Пятница, 15.02.2013, 00:23 | Сообщение # 842 |
Матрос
Группа: Пират
Сообщений: 33
Награды: 0
Репутация: 0
Статус: В открытом море
| ясн. вот я добавил квест OldTimes в quest_book_an2
#Quest OldTimes Старые Времена #TEXT 1 Вот и я прыбил на карыбах
в time_events в разделе tut_startgame в конце перед } добавил
SetQuestHeader("OldTimes"); AddQuestRecord("OldTimes", "1");
в quest_reaction добавил
============================Квест Старые Времена============================
case "OldTimes": // запись в журнал SetQuestHeader("OldTimes"); AddQuestRecord("OldTimes", "1"); break;
начинаю новую игру иду на берег квеста нету.. в чем проблема?
С таким как ты говорит мой клинок.
Сообщение отредактировал CorsairAarrgg - Пятница, 15.02.2013, 00:25 |
|
| |
Mett | Дата: Пятница, 15.02.2013, 00:32 | Сообщение # 843 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| Цитата иду на берег квеста нету надо чтоб он на берегу стартовал?
просто понимаешь, люди, которые только начинают править скрипты, часто задают откровенно тупые вопросы и нечетко сформулированые вопросы. подробнее, пожалуйста, что ты именно хочешь сделать.
Что толку, если не можешь сделать мир лучше.
|
|
| |
CorsairAarrgg | Дата: Пятница, 15.02.2013, 00:36 | Сообщение # 844 |
Матрос
Группа: Пират
Сообщений: 33
Награды: 0
Репутация: 0
Статус: В открытом море
| Привет всем.
В отделе Судовой Журнали отзыв не было.. поетому спрошу здесь..
Может ктот сказать как вставить запись про квесте сразу когда начинаеш новую игру.
Пож дайте ответ..
Спасибо заранее
Mett, вот мой пост на 42 странице. да я хочу сразу после стартовки..Добавлено (15.02.2013, 00:36) --------------------------------------------- да, когда сойдеш на берег после диалога на корабле с помошником.
С таким как ты говорит мой клинок.
|
|
| |
Mett | Дата: Пятница, 15.02.2013, 01:07 | Сообщение # 845 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| CorsairAarrgg, вешаешь прерывание
Код pchar.quest.your_new_quest.win_condition.l1 = "Location_Type"; pchar.quest.your_new_quest.win_condition.l1.location_type = "тип локации"; - в твоем случае это "town" pchar.quest.your_new_quest.win_condition = "название кейса"; - в твоем случае это OldTimes
вешаешь прерывание в диалог, когда говоришь с матросом на палубе, кейс "Finish_2"
Код case "Finish_2": DoQuestFunctionDelay("Tut_locCamera_2", 0.1); NextDiag.CurrentNode = NextDiag.TempNode; DialogExit(); LAi_RemoveCheckMinHP(Pchar); // снимем проверки LAi_SetImmortal(pchar, false); LAi_SetPlayerType(pchar); InterfaceStates.Buttons.Save.enable = true; DoReloadCharacterToLocation(Pchar.HeroParam.Location, Pchar.HeroParam.Group, Pchar.HeroParam.Locator);
//вот сюда, допустим pchar.quest.your_new_quest.win_condition.l1 = "Location_Type"; pchar.quest.your_new_quest.win_condition.l1.location_type = "town"; pchar.quest.your_new_quest.win_condition = "OldTimes"; //вот сюда, допустим
break;
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Пятница, 15.02.2013, 01:08 |
|
| |
CorsairAarrgg | Дата: Пятница, 15.02.2013, 01:42 | Сообщение # 846 |
Матрос
Группа: Пират
Сообщений: 33
Награды: 0
Репутация: 0
Статус: В открытом море
| хорошо если я не надоел задам еше 2 тупой вопрос.
1. где найти етот диалог фаил. 2. а указать "1" где то не надо? я про етот #TEXT 1 который создал в quest_book_an2Добавлено (15.02.2013, 01:42) --------------------------------------------- фаил ето time_events но "Finish_2" кеис не могу найдти
С таким как ты говорит мой клинок.
|
|
| |
Mett | Дата: Пятница, 15.02.2013, 01:48 | Сообщение # 847 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| 1. PROGRAM\dialogs\russian\Quest\StartGame_dialog.с 2. объясняю: у тебя есть кейс OldTimes Код case "OldTimes": // запись в журнал SetQuestHeader("OldTimes"); AddQuestRecord("OldTimes", "1"); break; и он запускается при первом появлении в локации типа "town" (все города имеют тип town) Цитата pchar.quest.your_new_quest.win_condition.l1 = "Location_Type"; pchar.quest.your_new_quest.win_condition.l1.location_type = "town"; pchar.quest.your_new_quest.win_condition = "OldTimes"; т.е. при первом появлении в городе должен сработать твой кейс OldTimes и должна появится запись в СЖ. Цитата а указать "1" где то не надо? а это у тебя уже указано в кейсе OldTimes
из этого следует, что: первое появление в городской локации - условие; срабатывает кейс OldTimes - следствие; логическая цепочка. по этому принципу строятся все квесты. условие --> следствие
Что толку, если не можешь сделать мир лучше.
|
|
| |
CorsairAarrgg | Дата: Пятница, 15.02.2013, 01:59 | Сообщение # 848 |
Матрос
Группа: Пират
Сообщений: 33
Награды: 0
Репутация: 0
Статус: В открытом море
| ехх.. изменил точка в точку как ты сказал и запустил игру и вылет сразу.. Добавлено (15.02.2013, 01:59) --------------------------------------------- хах прикол игру испортил я )) забыл сделать копию Start_dialog.c
короч огромное спасибо тебе Mett, что помог. завтро игру переустоновлю и сделаю все заного..
С таким как ты говорит мой клинок.
|
|
| |
Mett | Дата: Пятница, 15.02.2013, 02:39 | Сообщение # 849 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| CorsairAarrgg, значит где-то что-то не так изменил. скинь мне в ЛС файлы, я гляну.
Что толку, если не можешь сделать мир лучше.
|
|
| |
korsar01 | Дата: Пятница, 15.02.2013, 06:38 | Сообщение # 850 |
Мичман
Группа: Корсар
Сообщений: 186
Награды: 6
Репутация: 46
Статус: В открытом море
| Mett, если ГГ захватил себе город. Желательно, чтобы сам город в проверке указывался.
Сообщение отредактировал korsar01 - Пятница, 15.02.2013, 06:41 |
|
| |
Mett | Дата: Пятница, 15.02.2013, 15:32 | Сообщение # 851 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| korsar01, вот так: Код if(colonies[FindColony("id нужной колонии")].HeroOwn == true)
Что толку, если не можешь сделать мир лучше.
|
|
| |
CorsairAarrgg | Дата: Пятница, 15.02.2013, 22:12 | Сообщение # 852 |
Матрос
Группа: Пират
Сообщений: 33
Награды: 0
Репутация: 0
Статус: В открытом море
| Привет ето еше я с том же проблемом
Mett, игру переустоновил добавил в quests_reaction
Код case "OldTimes": SetQuestHeader("OldTimes"); AddQuestRecord("OldTimes", "1"); break; добавил в quest_book_an2
Код #QUEST OldTimes Старые Времена #TEXT 1 Вот и я прыбил на карыбах
StartGame_dialog так Код case "Finish_2": DoQuestFunctionDelay("Tut_locCamera_2", 0.1); NextDiag.CurrentNode = NextDiag.TempNode; DialogExit(); LAi_RemoveCheckMinHP(Pchar); // снимем проверки LAi_SetImmortal(pchar, false); LAi_SetPlayerType(pchar); InterfaceStates.Buttons.Save.enable = true; DoReloadCharacterToLocation(Pchar.HeroParam.Location, Pchar.HeroParam.Group, Pchar.HeroParam.Locator); pchar.quest.your_new_quest.win_condition.l1 = "Location_Type"; pchar.quest.your_new_quest.win_condition.l1.location_type = "town"; pchar.quest.your_new_quest.win_condition = "OldTimes";
break;
где проблема ? когда иду на берег квеста нету
С таким как ты говорит мой клинок.
|
|
| |
Nathaniel | Дата: Пятница, 15.02.2013, 23:37 | Сообщение # 853 |
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды: 347
Репутация: 1845
Статус: В открытом море
| Цитата (CorsairAarrgg) игру переустоновил Зачем всю игру переустанавливать?!? Чтобы ENGIGE.EXE запустился после ошибки в скриптах, достаточно обычно просто удалить проблемный скрипт...
Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
|
|
| |
Kodex | Дата: Суббота, 16.02.2013, 17:50 | Сообщение # 854 |
Матрос
Группа: Пират
Сообщений: 25
Награды: 0
Репутация: 0
Статус: В открытом море
| Цитата Все по орудиям делается тут ===>> Program\CANNONS\ [/size] Занялсся я правкой орудий. Поправил Цитата [size=8]Корсары Город Потерянных Кораблей\PROGRAM\cannons cannons_init.c [/size] все просто замечательно работает. Как я понимаю, Цитата [size=8]Корсары Город Потерянных Кораблей\PROGRAM\net\Common Cannons.c для ситевой игры?! Откуда в Корсарах сетевая игра?! В общем тут не правил. Цитата Корсары Город Потерянных Кораблей\PROGRAM\scripts ShipsUtilites.c Тут вроде файл, отвичающий за генерацию нового калибра на кораблях. Но вот тут проблема. Прописываю по образцу, как там, но в игре часто перестает отображатся макс. калибр, да и генерится неправильно. Помогите пажалуйста разобратся с этим ShipsUtilites.c.Добавлено (16.02.2013, 17:50) --------------------------------------------- Да, точно. Щас проверил, на всех мановарах стал генерится маленький калибр. Я ведь добавил новый, а там какаето привязка к iCaliber. Раньше было iCaliber=4 это 32 фунта, а я то расписал по-порядку и iCaliber=4 стал 16 фунтов.
|
|
| |
Mett | Дата: Суббота, 16.02.2013, 18:09 | Сообщение # 855 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| Цитата но в игре часто перестает отображатся макс. калибр видимо в common.ini не прописал названия орудий.
Цитата там какаето привязка к iCaliber это вообще-то переменная Цитата iCaliber=4 это 32 фунта вообще-то iCaliber это.. Код int iCaliber = sti(rRealShip.MaxCaliber); ты просто запорол весь генератор калибра ;)
Цитата Откуда в Корсарах сетевая игра?! еще со времен К3 есть сетевая игра, просто в нее никто не играет, а можно было бы сделать на базе ГПК онлайн игру, но это никому не нужно ;)
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Суббота, 16.02.2013, 18:13 |
|
| |
Kodex | Дата: Суббота, 16.02.2013, 18:15 | Сообщение # 856 |
Матрос
Группа: Пират
Сообщений: 25
Награды: 0
Репутация: 0
Статус: В открытом море
| Цитата (Mett) ты просто запорол весь генератор калибра ;) А как не запороть?
|
|
| |
Mett | Дата: Суббота, 16.02.2013, 18:22 | Сообщение # 857 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| изучи внимательно логику генератора, и правь потом. там, впринципе, не сложно, если вникнуть в суть дела.
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Суббота, 16.02.2013, 18:58 |
|
| |
Kodex | Дата: Воскресенье, 17.02.2013, 10:42 | Сообщение # 858 |
Матрос
Группа: Пират
Сообщений: 25
Награды: 0
Репутация: 0
Статус: В открытом море
| Цитата (Mett) изучи внимательно логику генератора, и правь потом. там, впринципе, не сложно, если вникнуть в суть дела.
Пробую изучать. Несколько моментов не понятно. Код int iCaliber = sti(rRealShip.MaxCaliber); Что-за sti ? Код iCaliber = iCaliber + rand(2) - 1; Что-то с рендомом, но что именно?Добавлено (17.02.2013, 10:42) --------------------------------------------- Этот рендом означает, что генерится -1 или 0?
Если так, то я разобрался в этом куске программы.
|
|
| |
korsar01 | Дата: Воскресенье, 17.02.2013, 11:56 | Сообщение # 859 |
Мичман
Группа: Корсар
Сообщений: 186
Награды: 6
Репутация: 46
Статус: В открытом море
| Возможно ли модели из К2: ПКМ подогнать под анимацию man?
|
|
| |
Kodex | Дата: Воскресенье, 17.02.2013, 12:41 | Сообщение # 860 |
Матрос
Группа: Пират
Сообщений: 25
Награды: 0
Репутация: 0
Статус: В открытом море
| Цитата (korsar01) Возможно ли модели из К2: ПКМ подогнать под анимацию man? Проще взять анимацию оригинальную и прописать ее к данному персу.
|
|
| |
|