|
Кодинг квестов
| |
Myth | Дата: Понедельник, 02.01.2012, 13:49 | Сообщение # 141 |
Мичман
Группа: Пират
Сообщений: 146
Награды: 8
Репутация: -13
Статус: В открытом море
| Знающие скриптеры нужны ваши подсказки:
1) Можно ли делать проверку на тип офицера и если да, то как она выглядит? 2) Можно ли делать проверку на то, что если в городе есть церковь, то выполнится определенное действие, что бы не нужно было указывать каждый город с церковью отдельно? 3) Нужно прописать корабль около Аматики, но как не пойму. Функцию нашел, но локаторы у вод Аматики не видны, и я не знаю, что туда писать......
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Понедельник, 02.01.2012, 17:40 |
|
| |
korsary4 | Дата: Понедельник, 02.01.2012, 18:47 | Сообщение # 142 |
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
| Quote (Myth) 1) Можно ли делать проверку на тип офицера и если да, то как она выглядит? стандартной вроде никакой нет. Проверяй параметр у нпс Npchar.quest.officertype. Там хранится название должности. Типа boatswain, cannoner. Остальное смотри в файле PROGRAM\scripts\officers.c
Quote (Myth) Можно ли делать проверку на то, что если в городе есть церковь, то выполнится определенное действие, что бы не нужно было указывать каждый город с церковью отдельно? Только если указывать конкретный город. По умолчанию в ГПК все церкви на одном локаторе висят во всех городах. Поэтому, думаю, будет работать такая конструкция: Code if (Locations[FindLocation("Havana_town")].reload.l7.label == "Church") { Log_Info("Церковь в Havana_town есть."); } Попробуй, я не проверял, других идей по этому поводу нет.
Quote (Myth) 3) Нужно прописать корабль около Аматики, но как не пойму. Функцию нашел, но локаторы у вод Аматики не видны, и я не знаю, что туда писать...... Смотри файл локаторов острова, в моделях лежит. Я там смотрю и потом экспериментирую. Может Watson просветит в этом вопросе. Он недавно мог такое использовать в одной линейки.
Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
|
|
| |
The_Joker | Дата: Понедельник, 02.01.2012, 18:50 | Сообщение # 143 |
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
| Quote (korsary4) Я там смотрю и потом экспериментирую. мог бы ко мне обратится) Я знаю как включать локаторы в море) Но это долгая и муторная тема. Миф, насчет этогов в ЛС отвечу.
Quote (korsary4) Он недавно мог такое использовать в одной линейки. я везде это использую) Волшебство ребята)
|
|
| |
Myth | Дата: Понедельник, 02.01.2012, 18:56 | Сообщение # 144 |
Мичман
Группа: Пират
Сообщений: 146
Награды: 8
Репутация: -13
Статус: В открытом море
| Спасибо обоим, про офицеров не понял лишь одно: где прописаны их типы. А так все понятно.
Myth: Make Your Thought Heard
|
|
| |
korsary4 | Дата: Понедельник, 02.01.2012, 18:58 | Сообщение # 145 |
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
| Quote (Myth) где прописаны их типы. А так все понятно. В файле PROGRAM\scripts\officers.c найди где прописано SetOfficerParam. Там все типы офицеров.
Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
|
|
| |
Myth | Дата: Воскресенье, 08.01.2012, 14:30 | Сообщение # 146 |
Мичман
Группа: Пират
Сообщений: 146
Награды: 8
Репутация: -13
Статус: В открытом море
| korsary4, понял теперь. Благодарю!
Добавлено (08.01.2012, 14:30) --------------------------------------------- Снова вопрос по прописыванию корабля:
FantomMakeCoolSailor(sld, SHIP_SLOOP, "", CANNON_TYPE_CANNON_LBS12, 60, 60, 60);
За что отвечают последние 3 цифры?
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Воскресенье, 08.01.2012, 14:32 |
|
| |
The_Joker | Дата: Воскресенье, 08.01.2012, 18:21 | Сообщение # 147 |
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
| Myth, найди исходник функции, и посмотри. Я бы помог, просто не с своего компа сижу. У брата на полчасика стырил ноут. =)
|
|
| |
Myth | Дата: Суббота, 21.01.2012, 17:19 | Сообщение # 148 |
Мичман
Группа: Пират
Сообщений: 146
Награды: 8
Репутация: -13
Статус: В открытом море
| Уважаемые форумчане! Хочу поделиться с вами еще одним моим программным изменением для "Корсаров". Урок под эту тему писать нет смысла, он очень короткий. Поэтому пишу в теме по кодированию, если не в тему, то прощу перенести сообщение в нужный раздел.
Меня уже давно бесила кнопка F12, та самая что при нажатии на нее выводит информацию о ближайшем к ГГ персонаже. Смысла в обычном, не тестовом режиме игры, я в ней не вижу. Решил попробовать сделать так, что бы она работала только в режиме бета теста.
Нам нужно открыть файл "Debuger.c", расположен он в PROGRAM. И строки:
Превратить в:
Все, теперь при обычном режиме игры F12 не работает!Добавлено (21.01.2012, 17:19) ---------------------------------------------
Quote (Watson) после убийства закрываешь выходы из локации, и ставишь условие:
PChar.quest.Robert101.win_condition.l1 = "item"; PChar.quest.Robert101.win_condition.l1.item = "money"; PChar.quest.Robert101.condition = "Robert101";
вот когда ГГ заберёт деньги, выполнится кайс Robert101, в нём уже открываешь выходы из локации.
Watson, тут ты ошибся, не работает эта функция под деньги.
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Среда, 11.01.2012, 11:34 |
|
| |
The_Joker | Дата: Суббота, 21.01.2012, 22:03 | Сообщение # 149 |
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
| Quote (Myth) тут ты ошибся, не работает эта функция под деньги. ошибся может быть ты. У меня работает. Несколько раз использовал, и работает без проблем - как на деньгах, так и на предметах.
|
|
| |
Myth | Дата: Среда, 25.01.2012, 21:59 | Сообщение # 150 |
Мичман
Группа: Пират
Сообщений: 146
Награды: 8
Репутация: -13
Статус: В открытом море
| Ребят вопрос даже не по коду, а по глючности шторма: взял сегодня собрал на ГПК свой пак с изменениями, перенес его на другую машину, итог: не появляется именно одна определенная запись в СЖ и определенный персонаж, хотя на других машинах эта сборка корректно работает, таких приколов там нет. Не у кого таких проблем не было?
Myth: Make Your Thought Heard
|
|
| |
korsary4 | Дата: Четверг, 26.01.2012, 13:09 | Сообщение # 151 |
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
| Quote (Myth) Watson, тут ты ошибся, не работает эта функция под деньги. нужно прописывать еще кое-что в файле PROGRAM\quests\quests_check.c так можно много условных прерываний прописать, типа ранг ГГ и т.п.
Quote (Myth) Ребят вопрос даже не по коду, а по глючности шторма: взял сегодня собрал на ГПК свой пак с изменениями, перенес его на другую машину, итог: не появляется именно одна определенная запись в СЖ и определенный персонаж, хотя на других машинах эта сборка корректно работает, таких приколов там нет. Не у кого таких проблем не было? У меня нормально, частенько приходится переносить файлы с компа на ноут, и в обратном порядке. Всегда все нормально работает.
Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
|
|
| |
The_Joker | Дата: Четверг, 26.01.2012, 19:54 | Сообщение # 152 |
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды: 51
Репутация: 177
Статус: В открытом море
| Quote (Myth) Ребят вопрос даже не по коду, а по глючности шторма: взял сегодня собрал на ГПК свой пак с изменениями, перенес его на другую машину, итог: не появляется именно одна определенная запись в СЖ и определенный персонаж, хотя на других машинах эта сборка корректно работает, таких приколов там нет. Не у кого таких проблем не было? значит чтото не правильно перенёс.
|
|
| |
Myth | Дата: Четверг, 26.01.2012, 20:01 | Сообщение # 153 |
Мичман
Группа: Пират
Сообщений: 146
Награды: 8
Репутация: -13
Статус: В открытом море
| Watson, там у меня архив распаковывающийся сам ошибки быть не может..
Myth: Make Your Thought Heard
|
|
| |
korsary4 | Дата: Четверг, 26.01.2012, 20:36 | Сообщение # 154 |
Адмирал
Группа: Администратор
Сообщений: 5204
Награды: 496
Репутация: 1935
Статус: В открытом море
| Myth, если не сверхсекретная информация, хочешь мне можешь скинуть, проверю у себя.
Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
|
|
| |
Myth | Дата: Понедельник, 06.02.2012, 14:18 | Сообщение # 155 |
Мичман
Группа: Пират
Сообщений: 146
Награды: 8
Репутация: -13
Статус: В открытом море
| korsary4, благодарю, но решение уже нашлось в виде целой папки PROGRAM....
Добавлено (04.02.2012, 12:24) --------------------------------------------- По квесту нужно, чтобы корабль был побит на 50% по корпусу, на 75 по парусам и команде. Все прописал, но повреждения лишь на корпусе появились, помогите пожалуйста.
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Понедельник, 06.02.2012, 14:24 |
|
| |
Хуал-Девис | Дата: Вторник, 27.03.2012, 13:15 | Сообщение # 156 |
Пороховая обезьяна
Группа: Пират
Сообщений: 3
Награды: 0
Репутация: 0
Статус: В открытом море
| Народ можете помочь, я хочу убрать линейку Блада, и отправить ГГ в другую локацию, как это сделать?
|
|
| |
Vitek5 | Дата: Вторник, 27.03.2012, 18:36 | Сообщение # 157 |
Матрос
Группа: Корсар
Сообщений: 58
Награды: 3
Репутация: 4
Статус: В открытом море
| Вот небольшой список функций для создания квестов в игре Корсары: ГПК
Меняем нацию города: SetCaptureTownByNation("ID Города", Нация);
Вызвать квест по окончанию диалога: AddDialogExitQuestFunction("-------------");
Забираем корабль у ГГ: DeleteAttribute(Pchar, "ship"); DeleteAttribute(Pchar, "ShipSails.gerald_name"); Pchar.ship.type = SHIP_NOTUSED;
Забираем предметы у ГГ. (Совсем все): DeleteAttribute(Pchar, "items"); RemoveCharacterEquip(pchar, BLADE_ITEM_TYPE); RemoveCharacterEquip(pchar, GUN_ITEM_TYPE); RemoveCharacterEquip(pchar, SPYGLASS_ITEM_TYPE); RemoveCharacterEquip(pchar, PATENT_ITEM_TYPE); RemoveCharacterEquip(pchar, CIRASS_ITEM_TYPE); RemoveCharacterEquip(pchar, MAPS_ITEM_TYPE);
Добавим NPC в пассажиры: AddPassenger(pchar, characterFromID("ID NPC "), false);
Удалим NPC из пассажиров: RemovePassenger(Pchar,CharacterFromID("ID NPC "));
Добавляет квест: SetQuestHeader("Quest_Name");
Добавляет первую запись: AddQuestRecord("Quest_Name", "1");
Перемещяет квест в Архив событий: CloseQuestHeader(Quest_Name);
Установка отношений между нациями: SetNationRelationBoth(Nation, Nation, Relation)
Где Nation: Англия = 0. Франция = 1. Испания = 2. Голландия = 3. Пираты = 4.
Relation: Дружеские = 0. Торговые = 1. Вражеские = 2.
Спавн NPC: sld = CharacterFromID("ID NPC"); LAI_SetStayType(sld); ChangeCharacterAddressGroup(sld,"Локация", "Группа локатора", "Локатор");
Проверка на наличие предмета: if (GetCharacterItem(Pchar, "ID Предмера")>=Кол-во предметов(1))
Проверка на наличие денег: if (sti(pchar.money) >= Кол-Во Денег)
Проверка на кол-во человек в команде: bOk = (GetPartyCrewQuantity(Pchar, true) >= 90) || bBettaTestMode; if (sti(Pchar.Ship.Type) != SHIP_NOTUSED && bOk)
Забираем у ГГ деньги: AddMoneyToCharacter(pchar, -Число);
Смена начальной ветки диалога с NPC: Characters[GetCharacterIndex("ID NPC")].Dialog.CurrentNode = "SecondTime";
Прописываем NPC тип Actor: LAi_SetActorType(characterFromID("ID NPC"));
Прописываем NPC тип Война: LAi_SetWarriorType(CharacterFromID("ID NPC"));
Помещаем NPC в группу Враги: LAi_group_MoveCharacter(CharacterFromID("ID NPC"), "Enemy");
Бой между группой Враги и группой ГГ: LAi_group_FightGroups("Enemy", LAI_GROUP_PLAYER, true);
Боевой режим для ГГ: LAi_SetFightMode(pchar, true);
Запуск следующего Кейса через секунду: LAi_QuestDelay("Кейс", 1.0);
Заставляем NPC бежать к указанному локатору: LAi_ActorRunToLocator(characterFromID("ID NPC"), "Группа локатора", "Локатор", "Следующий кейс", -1);
Делаем радиус локатора Goto_Quest большим: Locations[FindLocation("Локация")].locators_radius.goto.goto_quest = 3.0;
Начать диалог с ГГ: LAi_ActorDialog(characterFromID("ID NPC"),Pchar , "", 0, 0.1);
Добавить перк: SetCharacterPerk(sld, "Название Перка");
Делаем табличку "Прошло сорок минут": В файл Reaction_functions.c прописываем:
void Ro_1() { SetLaunchFrameFormParam("Прошло сорок минут.", "Ro_2", 0, 3); LaunchFrameForm(); WaitDate("", 0, 0, 0, 0, 40); RecalculateJumpTable(); }
А в файле с диалогом прописываем эту строчку в нужный кейс: AddDialogExitQuestFunction("Ro_1"); И ещё прописываем кейс Ro_2
|
|
| |
Хуал-Девис | Дата: Четверг, 29.03.2012, 11:05 | Сообщение # 158 |
Пороховая обезьяна
Группа: Пират
Сообщений: 3
Награды: 0
Репутация: 0
Статус: В открытом море
| Волк777ЗQuote (Волк777) Jack-sparrow, Дать предметы куда проще, а блокировать нацию ни как. Я пробывал но не фига не удовалось только одному гг а блокировка стоит на бладе. Насчёт дать предметы пропиши if(startHeroType == 2) { ch.skill.freeskill = 0; ch.Skill.FreeSPECIAL = 0; sGlobalTemp = "Flag" + NationShortName(sti(pchar.nation)); SetCharacterPerk(pchar, sGlobalTemp); // перк флага нации SetCharacterPerk(pchar, "FlagPir"); SetCharacterPerk(pchar, "Energaiser"); // скрытый перк дает 1.5 к приросту энергии, дается ГГ и боссам уровней // раздаём предметы GiveItem2Character(Pchar, "blade62"); EquipCharacterbyItem(Pchar, "blade62"); GiveItem2Character(Pchar, "pistol10"); EquipCharacterbyItem(Pchar, "Pistol10"); TakeNItems(Pchar, "Jacks_compass", 1); // начальные скилы задать InitStartParam(pchar); SetEnergyToCharacter(pchar); initMainCharacterItem(); DeleteAttribute(pchar, "Ship"); pchar.Ship.Type = SHIP_Black_pearl; SetBaseShipData(pchar); pchar.Ship.Name = "Чёрная Жемчужина"; } Фаил RPGUtilite
if(startHeroType == 2) { ch.skill.freeskill = 0; ch.Skill.FreeSPECIAL = 0; sGlobalTemp = "Flag" + NationShortName(sti(pchar.nation)); SetCharacterPerk(pchar, sGlobalTemp); SetCharacterPerk(pchar, "FlagPir"); SetCharacterPerk(pchar, "Energaiser"); GiveItem2Character(Pchar, "blade2"); EquipCharacterbyItem(Pchar, "blade2"); GiveItem2Character(Pchar, "pistol2"); EquipCharacterbyItem(Pchar, "Pistol2"); InitStartParam(pchar); SetEnergyToCharacter(pchar); initMainCharacterItem(); DeleteAttribute(pchar, "Ship"); pchar.Ship.Type = SHIP_Barque; SetBaseShipData(pchar); pchar.Ship.Name = "Санта-Моника"; } я сделал вот таким образом, но при этом у ГГ появился не барк, а варшип где команда 400 человек и корпус 400 тысяч. + Когда задал оружие и экипировал он выдал оружие по уровню сложности, а то что я задал, просто в инвентарь положил, как это исправить? И попутно ещё вопрос, как мне ГГ к примеру в порт Ла веги отправить, с новым диологом и НПС (временным).
Сообщение отредактировал Хуал-Девис - Четверг, 29.03.2012, 20:58 |
|
| |
revival | Дата: Четверг, 05.04.2012, 19:45 | Сообщение # 159 |
Матрос
Группа: Пират
Сообщений: 44
Награды: 1
Репутация: 9
Статус: В открытом море
| Так я непонял можно ли какому то ГГ, кроме Блада заблокировать нацию или нет? И как? Добавлено (05.04.2012, 19:45) --------------------------------------------- Все снял первому ГГ блок на нацию.
|
|
| |
Mett | Дата: Суббота, 07.04.2012, 16:25 | Сообщение # 160 |
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды: 91
Репутация: 565
Статус: В открытом море
| revival, можно конечно.. посмотри в characters\RPGUtilite
кстати, может кто не знает, но так делаются сбитые мачты: персонаж_id.ship.masts.mast1 = 1.0; персонаж_id.ship.masts.mast2 = 1.0; персонаж_id.ship.masts.mast3 = 1.0;
Что толку, если не можешь сделать мир лучше.
|
|
| |
|