Кодинг квестов
Милош Дата: Воскресенье, 17.03.2013, 09:28 | Сообщение # 301
Капитан I ранга
Группа: Заблокированные
Сообщений: 1072
Награды:
0
Репутация:
0
Статус: В открытом море
Mett , я не разбираюсь в скриптах, и вряд ли бы нашел ошибку. А ты молодец! Помог человеку!
Muv by Redline
Кор$@R Дата: Понедельник, 18.03.2013, 13:47 | Сообщение # 302
Матрос
Группа: Пират
Сообщений: 29
Награды:
0
Репутация:
0
Статус: В открытом море
Цитата (Mett )
sld - должно заработать
Я понимаю вы мне помогаете! Спасибо! НО только фигня это все, даже заменил ее все равно. вот скину остальную часть законченную
case "Proklatie20": StartQuestMovie(true, true, true); PChar.quest.Proklatie = "14"; sld = LAi_CreateFantomCharacter("pirate_" + (rand(9)+1), "goto", "goto9"); sld.id = "ProklatieLandPirate 1"; sld.rank = 15; SetSelfSkill(sld, 60, 50, 50, 50, 30); sld.nation = PIRATE; sld.Dialog.Filename = "ProklatieLandPirate_dialog.c"; LAi_NPC_Equip(sld, 25, true, true); LAi_SetHP(sld, 400.0, 400.0); Lai_CharacterChangeEnergy(sld, 100.0); sld = LAi_CreateFantomCharacter("pirate_" + (rand(9)+1), "goto", "goto8"); sld.id = "ProklatieLandPirate 2"; sld.rank = 17; SetSelfSkill(sld, 60, 40, 40, 40, 30); sld.nation = PIRATE; LAi_NPC_Equip(sld, 25, true, true); LAi_SetHP(sld, 400.0, 400.0); Lai_CharacterChangeEnergy(sld, 100.0); LAi_SetWarriorType(sld); sld = LAi_CreateFantomCharacter("pirate_" + (rand(9)+1), "goto", "goto7"); sld.id = "ProklatiePirate 3"; sld.rank = 20; SetSelfSkill(sld, 30, 30, 50, 60, 30); sld.nation = PIRATE; LAi_NPC_Equip(sld, 25, true, true); LAi_SetHP(sld, 400.0, 400.0); Lai_CharacterChangeEnergy(sld, 100.0); LAi_SetWarriorType(sld); sld = LAi_CreateFantomCharacter("pirate_" + (rand(9)+1), "goto", "goto2"); sld.id = "ProklatieLandPirate 4"; sld.rank = 18; SetSelfSkill(sld, 60, 50, 50, 50, 30); sld.nation = PIRATE; LAi_NPC_Equip(sld, 25, true, true); LAi_SetHP(sld, 400.0, 400.0); Lai_CharacterChangeEnergy(sld, 100.0); LAi_SetWarriorType(sld); LAi_SetActorType(characterFromID("ProklatieLandPirate 1")); LAi_ActorDialog(characterFromID("ProklatieLandPirate 1"), Pchar, "", 2.0, 1.0); ChangeCharacterAddressGroup(CharacterFromID("Resc_9"), "Terks_Shore57", "goto", "goto3"); break; case "Proklatie21": EndQuestMovie(); InterfaceStates.Buttons.Save.enable = true; PlayStereoSound("notebook"); Log_SetStringToLog("Николас Грей перешёл на сторону врага."); RemovePassenger(Pchar, CharacterFromID("Resc_9")); LAi_SetWarriorType(characterFromID("ProklatieLandPirate 1")); LAi_group_MoveCharacter(characterFromID("ProklatieLandPirate 1"), "Proklatie_LAND_PIRATES"); LAi_group_MoveCharacter(characterFromID("ProklatieLandPirate 2"), "Proklatie_LAND_PIRATES"); LAi_group_MoveCharacter(characterFromID("ProklatieLandPirate 3"), "Proklatie_LAND_PIRATES"); LAi_group_MoveCharacter(characterFromID("ProklatieLandPirate 4"), "Proklatie_LAND_PIRATES"); LAi_group_MoveCharacter(characterFromID("Resc_9"), "Proklatie_LAND_PIRATES"); LAi_group_SetRelation("Proklatie_LAND_PIRATES", LAI_GROUP_PLAYER, LAI_GROUP_ENEMY); LAi_group_FightGroups("Proklatie_LAND_PIRATES", LAI_GROUP_PLAYER, true); Pchar.quest.Proklatie22.win_condition.l1 = "NPC_Death"; Pchar.quest.Proklatie22.win_condition.l1.character = "ProklatieLandPirate 1"; Pchar.quest.Proklatie22.win_condition.l2 = "NPC_Death"; Pchar.quest.Proklatie22.win_condition.l2.character = "ProklatieLandPirate 2"; Pchar.quest.Proklatie22.win_condition.l3 = "NPC_Death"; Pchar.quest.Proklatie22.win_condition.l3.character = "ProklatieLandPirate 3"; Pchar.quest.Proklatie22.win_condition.l4 = "NPC_Death"; Pchar.quest.Proklatie22.win_condition.l4.character = "ProklatieLandPirate 4"; Pchar.quest.Proklatie22.win_condition = "Proklatie22"; Pchar.quest.Proklatie_22_1.win_condition.l1 = "NPC_Death"; Pchar.quest.Proklatie_22_1.win_condition.l1.character = "Resc_9"; Pchar.quest.Proklatie_22_1.win_condition = "Proklatie_22"; break; case "Proklatie22": Locations[FindLocation(PChar.location)].reload.l1.disable = false; PChar.quest.Proklatie23.win_condition.l1 = "location"; PChar.quest.Proklatie23.win_condition.l1.location = "Terks_Grot"; PChar.quest.Proklatie23.win_condition = "Proklatie23"; break; case "Proklatie23": PChar.quest.Proklatie = "findedtreasures"; bQuestDisableMapEnter = false; Island_SetReloadEnableLocal("Terks", "reload_1", true); Locations[FindLocation("Terks_Shore57")].reload.l2.disable = false; PlayStereoSound("notebook"); Log_SetStringToLog("Вы у цели! Клад должен быть непременно в этом проклятом мерзком месте!"); Locations[FindLocation("Terks_Grot")].box1.money = 150000; Locations[FindLocation("Terks_Grot")].box1.items.Blade20 = 1; Locations[FindLocation("Terks_Grot")].box1.items.pistol6 = 1; Locations[FindLocation("Terks_Grot")].box1.items.blade23 = 1; Locations[FindLocation("Terks_Grot")].box1.items.Map_Best = 1; Locations[FindLocation("Terks_Grot")].box1.items.jewelry3 = 49; Locations[FindLocation("Terks_Grot")].box1.items.jewelry2 = 20; Locations[FindLocation("Terks_Grot")].box1.items.jewelry4 = 18; Locations[FindLocation("Terks_Grot")].box1.items.map_full = 1; map_full = 1; locations[FindLocation("Terks_Grot")].box1 = Items_MakeTime(0, 0, 1, 2007); ChangeCharacterAddressGroup(CharacterFromID("Tomas"), "Bridgetown_town", "goto", "goto23"); PChar.quest.Proklatie.win_condition.l1 = "location"; PChar.quest.Proklatie.win_condition.l1.location = "Bridgetown_town"; PChar.quest.Proklatie.win_condition = "Proklatie24"; break; case "Proklatie24": StartQuestMovie(true, true, true); PChar.BuildingMarieGalante = true; LAi_SetActorType(characterFromID("Tomas")); LAi_ActorDialog(characterFromID("Tomas"), Pchar, "", 2.0, 1.0); break; case "Proklatie25": EndQuestMovie(); InterfaceStates.Buttons.Save.enable = true; ChangeCharacterAddressGroup(CharacterFromID("Tomas"), "Bridgetown_Shore5", "goto", "citiz_8"); DoQuestReloadToLocation("Bridgetown_Shore5", "goto", "citiz_8", "Proklatie26"); break; case "Proklatie26": StartQuestMovie(true, true, true); Characters[GetCharacterIndex("Tomas")].Dialog.CurrentNode = "Alisia"; LAi_ActorDialogNow(characterFromID("Tomas"), Pchar, "", -1); break; case "Proklatie27": EndQuestMovie(); InterfaceStates.Buttons.Save.enable = true; Locations[FindLocation(PChar.location)].reload.l1.disable = true; Locations[FindLocation(PChar.location)].reload.l2.disable = true; LAi_SetWarriorType(characterFromID("Tomas")); LAi_group_MoveCharacter(characterFromID("Tomas"), "TOMAS"); LAi_group_SetRelation("TOMAS", LAI_GROUP_PLAYER, LAI_GROUP_ENEMY); LAi_group_FightGroups("TOMAS", LAI_GROUP_PLAYER, true); Pchar.quest.Proklatie.win_condition.l1 = "NPC_Death"; Pchar.quest.Proklatie.win_condition.l1.character = "Tomas"; Pchar.quest.Proklatie28.win_condition = "Proklatie28"; break; case "Proklatie28": Locations[FindLocation(PChar.location)].reload.l1.disable = false; Locations[FindLocation(PChar.location)].reload.l2.disable = false; ChangeCharacterAddress(CharacterFromID("Tomas"), "None", ""); TakeNItems(PChar, "map_full", -1); GiveItem2Character(PChar, "map_full"); PChar.quest.Proklatie.win_condition.l1 = "location"; PChar.quest.Proklatie.win_condition.l1.location = "Curacao_cave"; PChar.quest.Proklatie.win_condition = "Proklatie29"; break; case "Proklatie29": TakeItemFromCharacter(PChar, "map_full"); Locations[FindLocation("Curacao_Cave")].box1.money = 100000 + rand(50000); Locations[FindLocation("Curacao_Cave")].box1.items.jewelry1 = rand(10)+1; Locations[FindLocation("Curacao_Cave")].box1.items.jewelry2 = rand(10)+1; Locations[FindLocation("Curacao_Cave")].box1.items.jewelry3 = rand(10)+1; Locations[FindLocation("Curacao_Cave")].box1.items.jewelry4 = rand(10)+1; Locations[FindLocation("Curacao_Cave")].box1 = Items_MakeTime(0, 0, 1, 2007); CloseQuestHeader("Proklatie"); break;
ЧТо впринципе я если сотру 20 игра пашет, как воткну то фигушки!
Мы славные Морские волки
Mett Дата: Понедельник, 18.03.2013, 14:55 | Сообщение # 303
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды:
91
Репутация:
565
Статус: В открытом море
Кор$@R , так-с, проверь что пишет error --- вот счас вставил себе и игру и кажись нашел твою ошибочку: Locations[FindLocation("Terks_Grot")].box1.items.map_full = 1; map_full = 1; <--- че этот тут делает? я у себя удалил это и игра запустилась
Что толку, если не можешь сделать мир лучше.
Сообщение отредактировал Mett - Понедельник, 18.03.2013, 15:00
Кор$@R Дата: Пятница, 29.03.2013, 09:04 | Сообщение # 304
Матрос
Группа: Пират
Сообщений: 29
Награды:
0
Репутация:
0
Статус: В открытом море
Цитата (Mett )
я у себя удалил это и игра запустилась
Да этот квест я потом им займусь! Как сделать чтобы после выхода из таверны к тебе подходили люди (2 пирата), диалог а потом нападали? Заранее Спасибо!
Мы славные Морские волки
Милош Дата: Среда, 10.04.2013, 14:41 | Сообщение # 305
Капитан I ранга
Группа: Заблокированные
Сообщений: 1072
Награды:
0
Репутация:
0
Статус: В открытом море
korsary4, Mett, помогите! Скодировал я квест, а при запуске игры вылезает ошибка! Что делать? Код
//////////////////////////////////////////////////////////////// ///////////////Квест Ром Начало////////////////////// //////////////////////////////////////////////////////////////// Case“rom_1”: SetQuestHeader("rom"); AddQuestRecord("rom", "1"); ChangeCharacterAddressGroup(characterFromID("azzy"), "PortRoyal_town", "goto", LAi_FindNearestFreeLocator("goto", locx, locy, locz)); Characters[GetCharacterIndex("azzy")].Dialog.CurrentNode = "rom_2"; break; Case“rom_2”: AddQuestRecord("rom", "2"); Break; //////////////////////////////////////////////////////////////// ///////////////Квест Ром Конец////////////////////// ////////////////////////////////////////////////////////////////
Что я не так сделал?
Muv by Redline
Loisomer Дата: Среда, 10.04.2013, 15:45 | Сообщение # 306
Пороховая обезьяна
Группа: Пират
Сообщений: 10
Награды:
0
Репутация:
-2
Статус: В открытом море
Милош , держи. case "rom_1": SetQuestHeader("rom"); AddQuestRecord("rom", "1"); ChangeCharacterAddressGroup(characterFromID("azzy"), "PortRoyal_town", "goto", LAi_FindNearestFreeLocator("goto", locx, locy, locz)); Characters[GetCharacterIndex("azzy")].Dialog.CurrentNode = "rom_2"; break; case "rom_2": AddQuestRecord("rom", "2"); break; //////////////////////////////////////////////////////////////// ///////////////Квест Ром Конец////////////////////// ////////////////////////////////////////////////////////////////
Милош Дата: Среда, 10.04.2013, 16:25 | Сообщение # 307
Капитан I ранга
Группа: Заблокированные
Сообщений: 1072
Награды:
0
Репутация:
0
Статус: В открытом море
Loisomer , Ура, заработало!
Muv by Redline
Андреевич Дата: Суббота, 18.05.2013, 10:50 | Сообщение # 308
Пороховая обезьяна
Группа: Пират
Сообщений: 16
Награды:
0
Репутация:
0
Статус: В открытом море
Пытался сделать квест по уроку, но почему-то в этом квесте не меняется ветка диалога персонажа и он просто молчит и выйти нельзя из диалога. Вот сам персонаж Код
makeref(ch,Characters[n]); //Шарль де Мор ch.id = "Sharl"; ch.model = "Blad_4"; ch.name = "Шарль"; ch.lastname = "де Мор"; ch.sex = "man"; ch.nation = FRANCE; ch.Dialog.Filename = "Quest\ForAll_dialog.c"; LAi_group_MoveCharacter(ch, "FRANCE_CITIZENS"); n = n + 1;
Вот квест где я этого персонажа создаю: Код
//////////////////////////////////////////////////////////////// ///////////////Начало первого квеста линейки за Мэри Каспер.//// //////////////////////////////////////////////////////////////// case "OriginMary": SetQuestHeader("OriginMary"); AddQuestRecord("OriginMary", "1"); sld = characterFromID("Sharl"); ChangeCharacterAddressGroup(sld, "PortRoyal_town", "goto", "goto1"); LAi_SetCitizenType(sld); sld.dialog.currentnode = "OrangeMary_1"; break;
Персонаж спавнится в заданной точке и ходит по городу, а вот диалог, который я назначаю не работает. А если не назначать диалог то срабатывает стандартный, но мне нужно сам диалог под названием OrangeMary_1. И скажите в чём у меня тут ошибка. Хотя в квесте должно присваивать данному персонажу ветку с диалогом который я указал Но он почему то не присваивается А вот сам диалог, в файле Quest\ForAll_dialog.c Код
case "OrangeMary_1": pchar.money + 100000; dialog.text = "Держи свои деньги"; link.l1 = "Спасибо"; link.l1.go = "exit"; EndQuestMovie("OriginMary"); break;
Очень прошу помощи, так мучаюсь второй день уже. Заранее спасибо
Nathaniel Дата: Суббота, 18.05.2013, 16:24 | Сообщение # 309
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды:
347
Репутация:
1845
Статус: В открытом море
Цитата (Андреевич )
Код
case "OrangeMary_1": pchar.money + 100000; dialog.text = "Держи свои деньги"; link.l1 = "Спасибо"; link.l1.go = "exit"; EndQuestMovie("OriginMary"); break;
Оформление кейса - явная ошибка. Инкремент работает неправильно... Нужно писать: AddMoneyToCharacter(pchar, 100000);
Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Сообщение отредактировал Nathaniel - Суббота, 18.05.2013, 16:34
Андреевич Дата: Суббота, 18.05.2013, 17:03 | Сообщение # 310
Пороховая обезьяна
Группа: Пират
Сообщений: 16
Награды:
0
Репутация:
0
Статус: В открытом море
Nathaniel , да не в этом проблема, проблема в присвоении диалога через квест. Просто из другого квеста я могу назначить этот диалог а из квеста нет
Mett Дата: Суббота, 18.05.2013, 17:28 | Сообщение # 311
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды:
91
Репутация:
565
Статус: В открытом море
Андреевич , а вы установили стартовое прерывание на запуск квеста?
Что толку, если не можешь сделать мир лучше.
Андреевич Дата: Суббота, 18.05.2013, 17:45 | Сообщение # 312
Пороховая обезьяна
Группа: Пират
Сообщений: 16
Награды:
0
Репутация:
0
Статус: В открытом море
Mett , а это как?=)
Mett Дата: Суббота, 18.05.2013, 17:55 | Сообщение # 313
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды:
91
Репутация:
565
Статус: В открытом море
Андреевич , короче мне взаадло объяснять, но я попытаюсь) итак: прерывания на запуск квеста - это его старт, это задается такой структурой (в твоем случае, как я понимаю, тебе нужно чтоб квеста стартовал в Порт Рояле): Код
pchar.quest.название прерывания.win_condition.l1 = "location"; pchar.quest.название прерывания.win_condition.l1.location = "ID локации"; pchar.quest.название прерывания.win_condition = "название нужного кейса";
пример (сразу готовое прерывание тебе скину): Код
pchar.quest.OriginMaryStart.win_condition.l1 = "location"; pchar.quest.OriginMaryStart.win_condition.l1.location = "PortRoyal_town"; pchar.quest.OriginMaryStart.win_condition = "OriginMary";
в оригинале ГПК все квестовы прерывания задаются в файле PROGRAM\characters\LSC_Q2Utilite.с думаю, дальше сам разберешься ;)
Что толку, если не можешь сделать мир лучше.
Андреевич Дата: Суббота, 18.05.2013, 18:05 | Сообщение # 314
Пороховая обезьяна
Группа: Пират
Сообщений: 16
Награды:
0
Репутация:
0
Статус: В открытом море
Mett , не помогло всё равно все вот высвечивает. Картинка в прикреплении
Nathaniel Дата: Суббота, 18.05.2013, 18:10 | Сообщение # 315
Контр-адмирал
Группа: Капитан
Сообщений: 8036
Награды:
347
Репутация:
1845
Статус: В открытом море
Цитата (Андреевич )
не в этом проблема
И в этом тоже. Ибо если в скрипте есть хоть одна ошибка, он обрабатываться вообще не будет и возникнет баг!..
Я был на краю земли, на краю бескрайних озёр, за горизонтом и на вершинах самых высоких гор. Но я не нашёл там никого, кто не был бы моим другом!
Андреевич Дата: Суббота, 18.05.2013, 18:12 | Сообщение # 316
Пороховая обезьяна
Группа: Пират
Сообщений: 16
Награды:
0
Репутация:
0
Статус: В открытом море
Nathaniel , ну это я уже убрал. Но главная проблема в том что персонажу не назначается диалог через квест
Mett Дата: Воскресенье, 19.05.2013, 01:26 | Сообщение # 317
Капитан I ранга
Группа: Корсар
Сообщений: 586
Награды:
91
Репутация:
565
Статус: В открытом море
еще раз присмотрелся - шо это: EndQuestMovie("OriginMary"); ?? удаляй, или блочь, дальше, как писал Nathaniel , заменяешь pchar.money + 100000; на AddMoneyToCharacter(pchar, 100000); и проверяшь в игре ;)
Что толку, если не можешь сделать мир лучше.
Андреевич Дата: Воскресенье, 19.05.2013, 09:00 | Сообщение # 318
Пороховая обезьяна
Группа: Пират
Сообщений: 16
Награды:
0
Репутация:
0
Статус: В открытом море
Mett , Да я говорю пока что не в этом проблема. Я уже и простой диалог сделал, но он тоже не присваивается персонажу через кейс квеста Код
case "OrangeMary_1": dialog.text = "Testing"; link.l1 = "Стой куда-же ты."; link.l1.go = "exit"; break;
Если этот диалог из другого диалога, тоесть вот так, то он работает Код
case "First time": dialog.text = "Нам неочем разговаривать."; link.l1 = "Извините..."; link.l1.go = "exit"; NextDiag.TempNode = "OrangeMary_1"; break;
Но мне надо что в кейсе квеста ставился тот диалог который мне нужен Код
case "OriginMary": SetQuestHeader("OriginMary"); AddQuestRecord("OriginMary", "1"); sld = characterFromID("Sharl"); ChangeCharacterAddressGroup(sld, "PortRoyal_town", "goto", "goto1"); //sld.dialog.currentnode = "OrangeMary_1";// ВОТ В ЭТОМ ПРОБЛЕМА //Characters[GetCharacterIndex("Sharl")].Dialog.CurrentNode = "OrangeMary_1";//Тоже не работает break;
Kappanfil Дата: Среда, 22.05.2013, 11:36 | Сообщение # 319
Пороховая обезьяна
Группа: Пират
Сообщений: 11
Награды:
1
Репутация:
4
Статус: В открытом море
подскажите, можно ли редактировать квесты в ККС? хочу изменить условия для квеста Голландский гамбит
korsary4 Дата: Среда, 22.05.2013, 11:49 | Сообщение # 320
Адмирал
Группа: Администратор
Сообщений: 5204
Награды:
496
Репутация:
1935
Статус: В открытом море
Цитата (Kappanfil )
подскажите, можно ли редактировать квесты в ККС?
Нельзя, скрипты закрыты.
Единственное, что можно сказать об удаче с уверенностью — она изменит. --------