Re: Скриптинг в Готике
2Dagot_Ur: finch определенно имеет опыт в этом деле - он мне объяснил в двух словах, но лучше он сам более подробно расскажет при желании.<br><br>Раз уж ты объявился, не подскажешь, тебе что-нибудь известно про прямую функцию получения текущего времени? И второе - сейчас AI поизводит рассчет ТА НПС в очень маленьком радиусе вокруг игрока - мне нужно его существенно увеличить. Как это сделать, есть мысли?
|
Re: Скриптинг в Готике
2Mitrich:<br>
Цитата:
|
Re: Скриптинг в Готике
2Vam:
Цитата:
Цитата:
|
Re: Скриптинг в Готике
2Mitrich:<br>
Цитата:
Цитата:
|
Re: Скриптинг в Готике
Кто-нибудь скажет, как сделать, чтобы амулет один раз возрождал после смерти?<br><br>И кто-нибудь исправит ошибку в амулете регенерации?
|
Re: Скриптинг в Готике
2francisc:
Цитата:
Цитата:
Код:
B_GivePlayerXP(100) |
Re: Скриптинг в Готике
2Dagot_Ur:<br>
Цитата:
|
Re: Скриптинг в Готике
2Pa:
Цитата:
|
Re: Скриптинг в Готике
2Mitrich:<br>
Цитата:
|
Re: Скриптинг в Готике
2TycoooN: <br><br>2francisc: Где надо прописывать :<br>MIS_Rafael_problem = LOG_RUNNING;<br>и<br>MIS_Rafael_problem = LOG_SUCCESS; ?<br>В скрипте самого диалога<br><br>Нет,при компиляции мне пишет ошибку unknown indentifer MIS_Rafael_problem
|
Re: Скриптинг в Готике
2francisc: <br>нужно еще в Story_globals.d прописать что значат твои MIS_Rafael_problem = "Проблема Рафаеля"
|
Re: Скриптинг в Готике
2ZXZX:
Цитата:
|
Re: Скриптинг в Готике
2Dagot_Ur: Данные ролики делаются в Спейсере с помощью объекта zCCSCamera. Для этого объекта набираются фреймы zCCamTrj_KeyFrame. Вызывается ролик командой Wld_SendTrigger(""); скриптово. Я к сожалению пока такие ролики не делал и не исключено, что там куча вопросов при реализации возникнет.<br>2Mitrich, Vam: Расчет всех TA нерационален. Самое главное - расчет таких TA, как RunToWP и подобных, тем самым можно убрать эффект телепортирования НПСов при переходе на заданный вейпойнт. У меня пока нет идей, как это сделать.
|
Re: Скриптинг в Готике
2aleks999: <br>
Цитата:
|
Re: Скриптинг в Готике
2francisc: 2TycoooN: <br>Вот все, что нужно где-нибудь прописать:<br>const string MIS_Rafael_problem = "Проблема Рафаэля";<br>var int MIS_END_Rafael_problem;<br>B_CloseTopic(MIS_Rafael _problem,0,MIS_END_Rafael_problem,6);<br><br>И в самом диалоге:<br>При получении миссии:<br>Log_CreateTopic(MIS_Rafael_problem,LOG_MISSION );<br>Log_SetTopicStatus(MIS_Rafael_problem,LOG_Ru nning);<br>B_LogEntry(MIS_Rafael_problem,"Тут нужно написать то, что будет в журнале.");<br>И при завершении миссии:<br>MIS_END_Rafael_problem = TRUE;
|
Re: Скриптинг в Готике
2WSA:
Цитата:
Цитата:
|
Re: Скриптинг в Готике
2Mitrich:<br>
Цитата:
|
Re: Скриптинг в Готике
const string MIS_Rafael_problem = "Проблема Рафаэля";<br>var int MIS_END_Rafael_problem;<br>B_CloseTopic(MIS_Rafael _problem,0,MIS_END_Rafael_problem,6<br><br>Это как я поянл нужно в Story_globals.d.
|
Re: Скриптинг в Готике
2francisc: <br>Нет.<br>B_CloseTopic нужно прописать в Log_Entries\B_CloseTopics_***.d<br>const string MIS_Rafael_problem - в Log_Entries\LOG_Constants_***.d<br><br><br>
|
Re: Скриптинг в Готике
2Dagot_Ur:
Цитата:
Цитата:
Цитата:
|
Re: Скриптинг в Готике
2finch: Я как раз и имел в виду камеру в самой игре, а не видео-ролик "через fraps". Можно ли прогон камеры создавать через скрипты, не затрагивая спейсер? А вообще спасибо, теперь все вошло в свое русло. :)
|
Re: Скриптинг в Готике
Я тут почитал идеи регенерации с ренжачрком - это ж надо до такого додуматься. :lol: И вот что хочу спросить: где это вы откопали эту фунцию цикла в моде ManaReload? Сейчас скачал посмотреть - там точно такого нет!<br>
|
Re: Скриптинг в Готике
2Mitrich:<br>
Цитата:
|
Re: Скриптинг в Готике
2Vam:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Re: Скриптинг в Готике
2Mitrich: <br>
Цитата:
|
Re: Скриптинг в Готике
2finch: Обобщил хорошо.<br>Интересует такая вещь: как правильно писать тригер ocTriggerChangeLevel или ocTriggerScript через событие OnTouch. У меня получилось только из zcTriggerа, да и то точечного.<br>2Mitrich:
Цитата:
|
Re: Скриптинг в Готике
2Dagot_Ur:
Цитата:
Цитата:
Цитата:
|
Re: Скриптинг в Готике
Сорри за два поста подряд! Больше не буду! :)<br><br>2Dagot_Ur:
Цитата:
|
Re: Скриптинг в Готике
2finch: Да чего тут описывать-то? :) ATR_REGENERATEHP и ATR_REGENERATEMANA. Думаю, что из этого все понятно. Только есть одна проблемка - при регенерации одной жизни - мана моментально восстанавливается. Лечится добавлением Npc_ChangeAttribute(self,ATR_REGENERATEMANA,9999); .<br>Делал также через цикл - через любой готовый LOOP, например, MagicSleep. Но с этим мороки больше, да и ни к чему это... :)<br><br>2Mitrich: Точное время получить, наверное, нельзя. Можно оперировать лишь функцией Wld_IsTime(хх,хх,хх,хх);. Если вставить ее в цикл и проверять значение меняющихся переменных хх, то возможно это сделать. Или без цикла, но с проверкой каждой минуты часа, но тогда слишком громоздко получится. Пока мне надобности в этом не возникало, поэтому большего сказать не могу. Вообще-то этим ядро занимается, а доступа к нему у нас, к сожелению - нет. :)
|
Re: Скриптинг в Готике
2finch: Уточняю вопрос.<br>Ни один из тригеров не работает после того как я меняю
Цитата:
|
Re: Скриптинг в Готике
2WSA:
Цитата:
Цитата:
Цитата:
|
Re: Скриптинг в Готике
2All:<br>Вот пытаюсь разобраться в скиптах, как, что, к чему...<br>Как я понял, все скрипты заложены в файлах Ou.bin, Gothic.dat и т.д. Меня интересует вот что: как в простейшем виде вставить NPC в игру. Вот к примеру, чтобы я начал новую игру(Gothic I) и меня встречал не только Диего, а + еще какой-то стражник стоял рядом с ним. Я так понимаю, это надо создать некий "файл.d", в котором будет описан этот самый стражник. А дальше что делать с этим файлом? Или я вообще не так все понял?<br><br>P.S. Вы только поймите меня правильно, я пытаюсь разобраться что к чему. Поэтому если я что-то не так сказал, то вы уж не смейтесь ;)
|
Re: Скриптинг в Готике
|
Re: Скриптинг в Готике
2finch:<br>
Цитата:
|
Re: Скриптинг в Готике
Ответ-то я нашел, стал пробовать что-то сделать. Вышло, но не совсем. Итак, что я делал.<br><br>1. Расспаковал файл world.vdf при помощи GothicVDFS в \Gothic\_work\data\worlds<br><br>2. Запустил Spacer и создал возле входа в СЛ вайпоинт с именем "my0" и соедини его с вайпоинтами, которые были рядом. Вайпоинт создавал так: F3, нажал на горизонтальной панельке на кнопку с изображением ноги, на том месте,где я хотел создать вайпоинт клацнул правой кнопкой мыши - insert(...waypoint), зажал Shift, клачнул левой кнопкой мыши на рядом "стоЯщий" вайпоинт("OC1"), на горизонтально панельке нажал на кнопку, которая отвечает за соединение вайпоинтов. Далее, этот же вайпоинт("my0") соединил таким же образом с еще одним. Сохранил world.zen.<br><br>3. В \Gothic\_work\data\scripts\content\story\NPC создал файл NONE_3131_TIV.d Вот содержимое файла:<br><br>instance NONE_3131_Tiv (NPC_DEFAULT)<br>{<br><br> * name = * * * * * * * * * * *"Tiv";<br> * npctype = * * * * * * * * * npctype_main;<br> * guild = * * * * * * * * * * *GIL_NONE;<br> * level = * * * * * * * * * * *0;<br> * voice = * * * * * * * * * * *8;<br> * id = * * * * * * * * * * * * * *3131;<br><br> * attribute[ATR_STRENGTH] = * * * 200;<br> * attribute[ATR_DEXTERITY] = * * * 200;<br> * attribute[ATR_MANA_MAX] = * * * 100;<br> * attribute[ATR_MANA] = * * * * *100;<br> * attribute[ATR_HITPOINTS_MAX] = * *900;<br> * attribute[ATR_HITPOINTS] = * * * 900;<br><br> * Mdl_SetVisual * * * (self,"HUMANS.MDS");<br> * Mdl_ApplyOverlayMds * *(self,"Humans_Tired.mds");<br> * Mdl_SetVisualBody (self,"hum_body_Naked0",3,1,"Hum_He ad_Bald", 72, *4, GRD_ARMOR_H);<br><br> * B_Scale (self);<br> * Mdl_SetModelFatness (self, 0);<br><br> * self.aivar[AIV_IMPORTANT] = TRUE;<br><br> * fight_tactic * *= * *FAI_HUMAN_MASTER;<br><br><br> * Npc_SetTalentSkill (self, NPC_TALENT_1H,1);<br><br> * EquipItem (self, ItMw_2H_Sword_Heavy_03);<br> * CreateInvItem (self, ItMwPickaxe);<br> * CreateInvItem (self, ItFoLoaf);<br> * CreateInvItem (self, ItFoBeer);<br> * CreateInvItem (self, ItLsTorch);<br><br> * daily_routine = Rtn_Start_3131;<br>};<br> * func void Rtn_Start_3131 ()<br>{<br> *TA_Guard(09,00,24,00,"my0");<br> *TA_Guard(24,00,09,00,"my0");<br>};<br>< br>4. В файле \Gothic\_work\data\scripts\content\story\Startup.d после строчки "Wld_InsertNpc * * * * * *(Grd_217_Torwache,"OC1");//Sьdtor" прописал свою строчку:<br>Wld_InsertNpc * * * * * * * * * * *(NONE_3131_Tiv,"my0");<br><br>5. Запустил Spacer, далее World -> Reparse Script и укзал путь к \Gothic\_work\data\scripts\content\Gothic.src Ошибок Spacer не выдавал.<br><br>6. При помощи GothicVDFS запаковал world.zen в worlds.mod в папку \Gothic\data\ После этого удалил в этой же папке *файл WORLDS.VDF *и поменял расширение у файла worlds.mod на worlds.vdf<br><br>7. Запускаю GOTHIC.EXE -> New Game -> бегу к воротам СЛ - моего NPC там нет. Вот так.<br><br>P.S.<br>1. Командой insert NONE_3131_Tiv получилось вставить этого NPC.<br>2. Непонятным для меня осталось следующее:<br>Mdl_SetVisual * * * (self,"HUMANS.MDS");<br>Mdl_ApplyOverlay Mds * *(self,"Humans_Tired.mds");<br>B_Scale (self);<br>self.aivar[AIV_IMPORTANT] = TRUE;<br><br>Внимание вопрос: :)<br>Что же не так? Почему мой NPC не появляется?<br>И в каком файле можно посмотреть
Цитата:
|
Re: Скриптинг в Готике
2Vahaber: В строковых названиях вейпойнтов нужно различать регистр. Попробуй написать везде "MY0".
|
Re: Скриптинг в Готике
2Vahaber:
Цитата:
|
Re: Скриптинг в Готике
Попробуй его вставить при помоши марвина.Если не появится,то значит его нет в датнике.Если появится,то игра почему то не замечает твой вуапоинт,почему я не знаю,тк сам в этом не разобрался.
|
Re: Скриптинг в Готике
2Vahaber:
Цитата:
|
Re: Скриптинг в Готике
Так-с, наконец-то получилось. Обо всем по-порядку.<br><br>2WSA:<br>
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Текущее время: 08:03. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
AGFC: Valley of Gothic © 2004-2022