Кодинг квестов
Myth Дата: Суббота, 15.10.2011, 15:47 | Сообщение # 101
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Как можно сделать: 1) Пока у ГГ нет сабли нельзя взять квест? А как сабля любая появилась, и тогда появился персонаж который дает квест. 2) Ночью одну музыку днем другая для городов и т.д?? 3) Что бы ГГ снял и саблю, и пистолет, но в предметах они остались? Заранее благодарю! И еще вопрос: в спойлере код моего квеста, точнее того момента, где есть косяки. Не работает смерть ГГ и солдаты не убирают оружие. в ид персов ошибок нет проверено....
case "Solder_dead": LAi_RemoveCheckMinHP(pchar); DoQuestCheckDelay("Solders", 1.5); break; case "Solders": LAi_SetFightMode(characterFromID("substitution_sold0"), false); LAi_SetFightMode(characterFromID("substitution_sold1"), false); LAi_SetFightMode(characterFromID("substitution_sold2"), false); LAi_SetFightMode(characterFromID("substitution_sold3"), false); LAi_SetFightMode(characterFromID("substitution_sold4"), false); LAi_SetFightMode(characterFromID("substitution_sold5"), false); LAi_SetFightMode(pchar, false); DoQuestCheckDelay("Solders2", 1.5); break; case "Solders2": sld=characterFromID("substitution_sold0"); sld.Dialog.CurrentNode = "Kill GG"; Lai_SetActorType(sld); LAi_ActorDialog(sld, pchar, "", -1, -1); break; case "Solder_dead2": LAi_SetFightMode(characterFromID("substitution_sold0"), true); LAi_SetFightMode(characterFromID("substitution_sold1"), true); LAi_SetImmortal("substitution_sold1", true); LAi_SetFightMode(characterFromID("substitution_sold2"), true); LAi_SetImmortal("substitution_sold2", true); LAi_SetFightMode(characterFromID("substitution_sold3"), true); LAi_SetImmortal("substitution_sold3", true); LAi_SetFightMode(characterFromID("substitution_sold4"), true); LAi_SetImmortal("substitution_sold4", true); LAi_SetFightMode(characterFromID("substitution_sold5"), true); LAi_SetImmortal("substitution_sold5", true); LAi_SetFightMode(pchar, false); LAi_SetCheckMinHP(pchar, 1, true, "Dialogs_before_dead"); break; case "Dialogs_before_dead": LAi_SetFightMode(characterFromID("substitution_sold0"), false); LAi_SetFightMode(characterFromID("substitution_sold1"), false); LAi_SetFightMode(characterFromID("substitution_sold2"), false); LAi_SetFightMode(characterFromID("substitution_sold3"), false); LAi_SetFightMode(characterFromID("substitution_sold4"), false); LAi_SetFightMode(characterFromID("substitution_sold5"), false); DoQuestCheckDelay("Blaze3", 1.0); break; case "Blaze3": LAi_SetActorType(pchar); SetCharacterTask_Dead(pchar); DoQuestCheckDelay("Dialogs_before_dead2", 1.0); break; case "Dialogs_before_dead2": LAi_SetPlayerType(pchar); DoQuestCheckDelay("Dialogs_before_dead3", 1.0); break; case "Dialogs_before_dead3": sld=characterFromID("Cumana_Mayor"); Lai_SetActorType(sld); LAi_CharacterDisableDialog(sld); LAi_ActorDialog(sld, pchar, "", -1, -1); DoQuestCheckDelay("Dialogs_before_dead4", 1.0); break; case "Dialogs_before_dead4": sld=characterFromID("Cumana_Mayor"); LAi_CharacterEnableDialog(sld); sld.Dialog.CurrentNode = "Bad_quest_end"; Lai_SetActorType(sld); LAi_ActorDialogNow(sld, pchar,"", -1); break; case "Dead_pchar": sld=characterFromID("substitution_sold0"); sld.Dialog.CurrentNode = "Bad_quest_end2"; Lai_SetActorType(sld); LAi_ActorDialogNow(sld, pchar,"", -1); break; case "Dead_pchar2": sld=characterFromID("substitution_sold0"); LAi_SetFightMode(sld, true); LAi_SetActorTypeNoGroup(sld); LAi_ActorTurnToCharacter(sld, pchar); LAi_ActorAnimation(sld, "Shot", "Dead_pchar3", 1.5); break; case "Dead_pchar3": LAi_KillCharacter(pchar); break;
И на всякий случай второй спойлер с кодом солдат...
makeref(ch,Characters[n]); // Солдат-актер1 (Подмена) ch.id = "substitution_sold1"; ch.name = "Хулио"; ch.lastname = "Чейзер"; ch.model = "sold_spa_2"; ch.sex = "man"; ch.location = "Cumana_jungle_02"; ch.location.group = "goto"; ch.location.locator = "goto9"; ch.nation = Spain; ch.greeting = "spain_man"; ch.rank = 4; SetSelfSkill(ch, 10, 1, 17, 10, 6); SetShipSkill(ch, 11, 14, 17, 1, 7, 1, 1, 1, 1); GiveItem2Character(ch, "blade10"); EquipCharacterByItem(ch, "blade10"); LAi_SetLoginTime(ch, 0.0, 24.0); LAi_NoRebirthEnable(ch); LAi_SetWarriorType(ch); LAi_CharacterDisableDialog(ch); LAi_SetHP(ch, 38.0, 38.0); n = n + 1; makeref(ch,Characters[n]); // Солдат-актер2 (Подмена) ch.id = "substitution_sold2"; ch.name = "Горацио"; ch.lastname = "Чейзер"; ch.model = "sold_spa_2"; ch.sex = "man"; ch.location = "Cumana_jungle_02"; ch.location.group = "goto"; ch.location.locator = "goto10"; ch.nation = Spain; ch.greeting = "spain_man"; ch.rank = 7; SetSelfSkill(ch, 10, 1, 17, 19, 16); SetShipSkill(ch, 11, 14, 17, 10, 7, 11, 13, 1, 1); GiveItem2Character(ch, "blade7"); EquipCharacterbyItem(ch, "blade7"); LAi_SetLoginTime(ch, 0.0, 24.0); LAi_NoRebirthEnable(ch); LAi_SetWarriorType(ch); LAi_CharacterDisableDialog(ch); LAi_SetHP(ch, 58.0, 58.0); n = n + 1; makeref(ch,Characters[n]); // Солдат-актер3 (Подмена) ch.id = "substitution_sold3"; ch.name = "Филипп"; ch.lastname = "Вовр"; ch.model = "spa_mush_2"; ch.model.animation = "mushketer"; ch.sex = "man"; ch.location = "Cumana_jungle_02"; ch.location.group = "officers"; ch.location.locator = "reloadW_3"; ch.nation = Spain; ch.greeting = "spain_man"; ch.rank = 4; SetSelfSkill(ch, 10, 1, 17, 10, 6); SetShipSkill(ch, 11, 14, 17, 1, 7, 1, 1, 1, 1); GiveItem2Character(ch, "mushket"); EquipCharacterbyItem(ch, "mushket"); LAi_SetLoginTime(ch, 0.0, 24.0); LAi_NoRebirthEnable(ch); LAi_SetWarriorType(ch); LAi_CharacterDisableDialog(ch); LAi_SetHP(ch, 58.0, 58.0); n = n + 1; makeref(ch,Characters[n]); // Солдат-актер4 (Подмена) ch.id = "substitution_sold4"; ch.name = "Рауль"; ch.lastname = "Скорре"; ch.model = "spa_mush_2"; ch.model.animation = "mushketer"; ch.sex = "man"; ch.location = "Cumana_jungle_02"; ch.location.group = "officers"; ch.location.locator = "reloadW_1"; ch.nation = Spain; ch.greeting = "spain_man"; ch.rank = 4; SetSelfSkill(ch, 10, 16, 17, 10, 26); SetShipSkill(ch, 11, 14, 17, 14, 27, 1, 14, 16, 1); GiveItem2Character(ch, "mushket"); EquipCharacterbyItem(ch, "mushket"); LAi_SetLoginTime(ch, 0.0, 24.0); LAi_NoRebirthEnable(ch); LAi_SetWarriorType(ch); LAi_CharacterDisableDialog(ch); LAi_SetHP(ch, 68.0, 68.0); n = n + 1; makeref(ch,Characters[n]); // Солдат-актер5 (Подмена) ch.id = "substitution_sold5"; ch.name = "Ян"; ch.lastname = "Кейз"; ch.model = "sold_spa_2"; ch.sex = "man"; ch.location = "Cumana_jungle_02"; ch.location.group = "officers"; ch.location.locator = "reloadW_2"; ch.nation = Spain; ch.greeting = "spain_man"; ch.rank = 4; SetSelfSkill(ch, 10, 1, 17, 10, 6); SetShipSkill(ch, 11, 14, 17, 1, 7, 1, 1, 1, 1); GiveItem2Character(ch, "blade1"); EquipCharacterByItem(ch, "blade1"); LAi_SetLoginTime(ch, 0.0, 24.0); LAi_NoRebirthEnable(ch); LAi_SetWarriorType(ch); LAi_CharacterDisableDialog(ch); LAi_SetHP(ch, 88.0, 88.0); n = n + 1; // Снова квестовые персонажи... Точнее, персонаж: Генри Донато. Написан без локаторов, т.к он может быть и в бухте, и в тюрьме. makeref(ch,Characters[n]); ch.id = "Genri_Donato"; ch.name = "Генри"; ch.lastname = "Донато"; ch.model = "officer_17"; ch.sex = "man"; ch.location = ""; ch.location.group = ""; ch.location.locator = ""; ch.Dialog.Filename = "Myth_Quest\substitution.c" ch.nation = Spain; ch.greeting = "spain_man"; ch.rank = 4; SetSelfSkill(ch, 21, 14, 10, 19, 10); SetShipSkill(ch, 10, 14, 17, 10, 29, 16, 21, 10, 10); GiveItem2Character(ch, "blade5"); EquipCharacterByItem(ch, "blade5"); LAi_SetLoginTime(ch, 0.0, 24.0); LAi_NoRebirthEnable(ch); LAi_SetCitizenType(sld); LAi_SetHP(ch, 33.0, 33.0); n = n + 1;
Кто найдет ошибку, тому буду безумно благодарен!
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Суббота, 15.10.2011, 17:04
Dolphin Дата: Суббота, 15.10.2011, 20:12 | Сообщение # 102
Мичман
Группа: Пират
Сообщений: 92
Награды:
6
Репутация:
12
Статус: В открытом море
Герой не умирает, потому что он у тебя бессмертный... Ну а смена боевого режима... Проще просто мирить и ссорить группы после и перед поединком.
Myth Дата: Суббота, 15.10.2011, 21:16 | Сообщение # 103
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Dolphin , спасибо про драки помогло, но как тогда убрать бессмертие для ГГ? Как я понял вот так должно быть: case "Dead_pchar3": LAi_SetImmortal(pchar, false); LAi_KillCharacter(pchar); break; Да? И если не трудно ответь на вопросы 1 3 перед кодом квеста. Буду очень благодарен!
Myth: Make Your Thought Heard
Dolphin Дата: Суббота, 15.10.2011, 22:58 | Сообщение # 104
Мичман
Группа: Пират
Сообщений: 92
Награды:
6
Репутация:
12
Статус: В открытом море
Quote (Myth )
Как я понял вот так должно быть:
Да, так. Quote (Myth )
И если не трудно ответь на вопросы 1 3 перед кодом квеста.
1: GetCharacterEquipByGroup(ref chref, string groupID) - функция возвращает ID предмета по ID группы (в твоем случае группа BLADE_ITEM_TYPE) 3: Посмотри как это происходит при снятии/одевании оружия на ГГ в интерфейсе.
Myth Дата: Воскресенье, 16.10.2011, 18:30 | Сообщение # 105
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Dolphin , все равно не работает и функцию на оружие по вопросу номер 3 не нашел.... Поясни подробней пожалуйста.... F2 блочится, но экран смерти не появляется.
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Воскресенье, 16.10.2011, 19:30
Dolphin Дата: Воскресенье, 16.10.2011, 21:31 | Сообщение # 106
Мичман
Группа: Пират
Сообщений: 92
Награды:
6
Репутация:
12
Статус: В открытом море
Значит ты что-то накрутил с кодом. Только что проверил, LAi_KillCharacter(pchar) работает на 100% - смерть -> заставка -> главное меню. Попробуй так: // убрать все, что до этого было выставлено на 100% LAi_RemoveCheckMinHP(pchar); LAi_SetPlayerType(pchar); LAi_SetImmotral(pchar, false); // Убить ГГ LAi_KillCharacter(pchar); --- 3: RemoveCharacterEquip(chref, BLADE_ITEM_TYPE); - для сабли RemoveCharacterEquip(chref, GUN_ITEM_TYPE); - для пистолета
Сообщение отредактировал Dolphin - Воскресенье, 16.10.2011, 21:35
Myth Дата: Вторник, 18.10.2011, 19:10 | Сообщение # 107
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Добавлено (24.10.2011 г в 22:13) 1) Как на время убрать из джунглей патрули, бандитов и т.д.? 2) Где прописан красная обводка экрана в морском бое? Хочется в один квест такую же прописать, но черную. 3) Как редактировать у моделей места для сабли и пистолета? 4) Вопрос про музыку выше тоже интересен! Заранее спасибо!
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Понедельник, 24.10.2011, 22:14
CaptainBleikk Дата: Воскресенье, 30.10.2011, 11:24 | Сообщение # 108
Капитан I ранга
Группа: Корсар
Сообщений: 1190
Награды:
81
Репутация:
511
Статус: В открытом море
а продолжение игровых квестов можно писать? Напиример написать продолжение линейки капитана Блада?
Сообщение отредактировал CaptainBleikk - Воскресенье, 30.10.2011, 11:25
Myth Дата: Вторник, 01.11.2011, 21:11 | Сообщение # 109
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
CaptainBleikk , конечно можно. А теперь помогите мне прощу: по квесту генерировал мартышек, они появились, но на ГГ не нападают. Проблема в том, что весь остальной кейс работает! Но не драка.
case "monkeys": for (i=1; i<=3; i++) { sld=GetCharacter(NPC_GenerateCharacter("quest_Monkey_"+i, "Monkey", "monkey", "Monkey", rand(3)+1, Pirate, 1, false)); ChangeCharacterAddressGroup(sld, "FernandaDiffIndoor", "goto", "goto"+(rand(1)+1)); LAi_SetMonkeyType(sld); } DoQuestCheckDelay("monkey_war", 1.0); break; case "monkey_war": pchar.quest.monkeys_war.win_condition.l1 = "Location"; pchar.quest.monkeys_war.win_condition.l1.location = "FernandaDiffIndoor"; pchar.quest.monkeys_war.win_condition = "Monkeys2"; break; case "Monkeys2": chrDisableReloadToLocation = true; bDisableFastReload = true; for (i=1; i<=3; i++) { sld=characterFromID("quest_Monkey_"+i); LAi_SetWarriorType(sld); LAi_group_MoveCharacter(sld, "MQ_Grp"); } LAi_group_FightGroups("MQ_Grp", LAI_GROUP_PLAYER, true); LAi_SetFightMode(pchar, true); LAi_group_SetCheck("MQ_Grp", "Monkeys_dead"); break;
Myth: Make Your Thought Heard
The_Joker Дата: Вторник, 01.11.2011, 21:37 | Сообщение # 110
Профессор-Икс
Группа: Корсар
Сообщений: 1532
Награды:
51
Репутация:
177
Статус: В открытом море
Myth , дай угадаю... кодируешь на почве ТДМ2 ? Чтож, огорчу тебя, в ТДМ2 они не доработаны.. тоесть пока не приспособлены. Так что повремени когда Наварра в них разберётся. В нашем аддоне я их уже приспособил, всё работает без глюков, но там очень много править надо, и муторное это дело.
Myth Дата: Вторник, 01.11.2011, 22:06 | Сообщение # 111
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
На других моделях все работает. И еще вопрос какой функцией отключать боевую тревогу для ГГ? А то не пойму как ее отключить. После смерти врагов она какое-то время еще работает. Ватсон глянул я модели мартышек. Есть идея как самому поправить.
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Четверг, 03.11.2011, 11:01
Bab Дата: Четверг, 03.11.2011, 19:44 | Сообщение # 112
Мичман
Группа: Пират
Сообщений: 89
Награды:
7
Репутация:
12
Статус: В открытом море
Quote (Myth )
1) Как на время убрать из джунглей патрули, бандитов и т.д.?
Эти патрули и т.д. голимый рандом не связанный со временем, проще в нужной локации прописать их отсутствие.
Myth Дата: Вторник, 08.11.2011, 16:21 | Сообщение # 113
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Bab , я имел ввиду на нужный мне период. Я уже это сделал давно. Сейчас пытаюсь адаптировать мартышек из ПКМ. Такое чувство, что у них ломаются кости. Добавлено (08.11.2011, 16:21) --------------------------------------------- Возник вопрос: к типу монстров относятся только скелеты? То есть если я поставлю запрет на генерацию монстров в локации, это будет только скелеты или кто то еще? И все таки ответьте как сделать так, что бы после смерти всех врагов тревога для ГГ сама вырубится?
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Вторник, 08.11.2011, 16:22
Волк777 Дата: Среда, 09.11.2011, 11:01 | Сообщение # 114
Мичман
Группа: Пират
Сообщений: 85
Награды:
3
Репутация:
-2
Статус: В открытом море
Вот такой вопрос, сделал код на смену анимации на мушкетерскую, но он НЕХРЕНА не работает, помогите, вот код: //взятие мушкета if (_itemId == "mushket2") bDisableFastReload = true; pchar.model = "mushketer_5"; pchar.model.animation = "mushketer"; { LoginShotgunGuards(); } } Вопрос второй куда его ложить????
Лучше быть последним из волков, чем первым из шакалов...
Myth Дата: Воскресенье, 20.11.2011, 19:15 | Сообщение # 115
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Как сделать так что бы ГГ мог взять квест лишь после 10 уровня?
Myth: Make Your Thought Heard
Сообщение отредактировал Myth - Понедельник, 21.11.2011, 18:41
Jack-sparrow Дата: Понедельник, 21.11.2011, 22:03 | Сообщение # 116
Мичман
Группа: Корсар
Сообщений: 168
Награды:
4
Репутация:
10
Статус: В открытом море
А как сделать так, что бы второй стандартный герой (ян стейс), не смог сменить нацию, и как добавить чисто ему корабль, деньги, предметы, начальную лакацию изменить...
Волк777 Дата: Вторник, 22.11.2011, 11:59 | Сообщение # 117
Мичман
Группа: Пират
Сообщений: 85
Награды:
3
Репутация:
-2
Статус: В открытом море
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 = "Чёрная Жемчужина"; } В PROGRAM\characters RPGUtilite перед бладом иначе работать не будет
Лучше быть последним из волков, чем первым из шакалов...
Myth Дата: Вторник, 22.11.2011, 18:22 | Сообщение # 118
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Все я разобрался с рангом ГГ. Спасибо за гробовое молчание....
Myth: Make Your Thought Heard
korsary4 Дата: Вторник, 22.11.2011, 18:30 | Сообщение # 119
Адмирал
Группа: Администратор
Сообщений: 5204
Награды:
496
Репутация:
1935
Статус: В открытом море
Quote (Myth )
Все я разобрался с рангом ГГ.
вот видишь как хорошо, когда сам в этом разобрался. На самом деле там то не сложно, править только в quests_check.c
Единственное, что можно сказать об удаче с уверенностью — она изменит. --------
Myth Дата: Вторник, 22.11.2011, 19:05 | Сообщение # 120
Мичман
Группа: Пират
Сообщений: 146
Награды:
8
Репутация:
-13
Статус: В открытом море
Я именно не правильно кодировал квест. У меня было так: case "power_start0": if(pchar.rank > 5) { PChar.quest.power_start0.win_condition.l1 = "location"; PChar.quest.power_start0.win_condition.l1.location = "SanJuan_tavern_upstairs"; PChar.quest.power_start0.win_condition = "power_1"; } break; А нужно было вот так: case "power_start0": PChar.quest.power_start0.win_condition.l1 = "location"; PChar.quest.power_start0.win_condition.l1.location = "SanJuan_tavern_upstairs"; PChar.quest.power_start0.win_condition = "power_1"; break; case "power_1": if(pchar.rank >= 5) { bDisableFastReload = true; sld=characterFromID("Manuel_power"); FreeSitLocator("SanJuan_tavern", "sit10"); ChangeCharacterAddressGroup(sld, "SanJuan_tavern", "sit", "sit10"); LAi_SetSitType(sld); DoQuestCheckDelay("power_start2", 1); } else { DoQuestCheckDelay("power_no_level", 1); } break; case "power_no_level": PChar.quest.power_no_level.win_condition.l1 = "location"; PChar.quest.power_no_level.win_condition.l1.location = "SanJuan_tavern"; PChar.quest.power_no_level.win_condition = "power_start0"; break; case "power_start2": PChar.quest.power_start2.win_condition.l1 = "location"; PChar.quest.power_start2.win_condition.l1.location = "SanJuan_tavern"; PChar.quest.power_start2.win_condition = "power_2"; break;
Myth: Make Your Thought Heard