|
|
20.09.2005, 12:28
|
#921
|
|
Re: Скриптинг в Готике
2Finsternis:
Обьясните пожалуйста, что означаю перфиксы "B_" и "C_" в названиях функций, и какое между ними различие.
|
Моё мнение: прификсы указывают на тип функции, присвоенный ей разработчиком, а именно: С_ - функции сравнения (сокращенное Compare), B_ - базовые функции (сокращенное Base), evt_ - функции событий (сокращенное Event), G_ - глобальные функции (сокращенное Global), хотя могу и ошибаться
|
|
|
20.09.2005, 15:23
|
#922
|
|
Re: Скриптинг в Готике
2dixie:
невозможно точно определить в кого попадет заклинание - может попасться кто-то на линии огня. А это значит - непонятно от какого NPC рисовать следующую молнию - и.т.п.
|
Но ведь для этого как раз и существуют некоторые ункции в классах! Сегдня не в состоянии что-либо смотреть, потому что днюха у меня... А завтра обязательно заного просмотрю и ыпишу се функции. Кому не лень, просмотрите уроки скриптологии, Вам там оч. хорошо всё описал. Респект ему за это :)) Добавление от 09/20/05, в 14:25:33
Прошу прщению, у меня "В" западает...
|
|
|
22.09.2005, 22:33
|
#926
|
|
Re: Скриптинг в Готике
2Finsternis:
Я пытался уже сделать амулет, который превращает ГГ в монстра. Я пытался провернуть это дело с элитой орков, но у меня к сожалению ничего не вышло - ГГ превращался в нечто... Орк с головой и правой рукой - больше ничего небыло видно! Если найдешь способ - сообщи!
|
Такой эффект наблюдается, если перед преврещением в орка ГГ не снял доспехи, просто исправь в функции, что бы при одевании сначало снимались доспехи, а затем превращение. Удачи!
|
|
|
23.09.2005, 19:22
|
#928
|
|
Re: Скриптинг в Готике
2TSYLin: Спасибо, не знал... ;) 2DarkEvil90:С зомби у меня все получилось.
C зомби у меня получалось, но после превращения нельзя было открыть инвентарь и снять амулет.
|
А ты не меняй Humans.mds на Zombie.mds, а просто поменяй текстурку!
И пока оружие не достанешь никто не нападает.
|
Дык, надо гильдию изменить на зомбейскую. ::) Тогда все, кто должен, будут нападать! А при снятии амулета опять установи гильдию ГГ, которая была до этого. Удачи ;)
|
|
|
23.09.2005, 19:54
|
#930
|
|
Re: Скриптинг в Готике
2DarkEvil90:
Подскажи как сделать кольцо невидимости, так чтобы ни НПС ни монстры ГГ не видели.
|
На 100% не уверен, в правильности синтаксиса. Скриптов под рукой нет, поэтому помогу указаниями. Опиши глобальную переменную-флаг, для проверки одето ли кольцо на ГГ; var int Player_Equipped_ShadowRing; Сделай само кольцо: 1) В функции, вызываемой при одевании кольца, on_equip установи для NPC Self флаг призрака, как у Квархадрона и установи Player_Equipped_ShadowRing = True.2) В функции, вызываемой при снятии кольца, on_unequip установи для NPC Self флаг равным 0 и установи Player_Equipped_ShadowRing = False.Все, само кольцо готово. Теперь во все обработчики восприятий (обычно начинаются на B_Assess у людей и B_MM_Assess у монстров) пихни следующее: 1) Если функция описана как Int * if (Player_Equipped_ShadowRing == True) * { * * *return false; * };2) Если функция описана как Void * if (Player_Equipped_ShadowRing == True) * { * * *return; * };По идее должно работать, точно не уверен. Если что, спрашивай. Удачи! ;)
|
|
|
24.09.2005, 14:14
|
#932
|
|
Re: Скриптинг в Готике
2DarkEvil90:
if(Player_Equipped_ShadowRing == True);
|
В выражениях if (если), нужно ставить не знак присвоения ( ==), а знак равенства ( =). Попробуй от так!
if(Player_Equipped_ShadowRing = True);
|
|
|
|
24.09.2005, 14:25
|
#933
|
|
|
|
|
A.G.F.C.
Регистрация: 02.09.2005
Сообщений: 6
|
|
|
|
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от Ukur link=board=gothic&t=1105030050&start=925#931 date=09/24/05, в 13:14:53
2DarkEvil90: В выражениях if (если), нужно ставить не знак присвоения (==), а знак равенства (=). Попробуй от так!
|
Все-таки в скриптах готик присвоение - это "одинарный" =, а в сравнениях, и тем более в конструкции if применяется ==. А ошибка, скорее всего, в том, что здесь [pre]if(Player_Equipped_ShadowRing == True) ;[/pre] стоит сразу точка с запятой, а нужно [pre]if(Player_Equipped_ShadowRing == True) { ...какой-то код ... };[/pre]
|
|
|
24.09.2005, 14:42
|
#934
|
|
Re: Скриптинг в Готике
2marazmus:
Все-таки в скриптах готик присвоение - это "одинарный" =, а в сравнениях, и тем более в конструкции if применяется ==.
|
Блин, точно... Чет я глючу помаленьку... Нужно было спать по ночам, а не... :)
стоит сразу точка с запятой, а нужно
|
Да, действительно.
|
|
|
24.09.2005, 15:16
|
#938
|
|
Re: Скриптинг в Готике
2DarkEvil90:
if(Player_Equipped_ShadowRing == True);
|
Я же вроде бы писал вот как: if (Player_Equipped_ShadowRing == True) { return false; };Как ты поставил ";" в конце условия? И приведи кусок скрипта строк в 20 - 10 до ошибки и 10 после - будет понятней.
|
|
|
24.09.2005, 15:22
|
#940
|
|
Re: Скриптинг в Готике
2DarkEvil90:
if (Player_Equipped_ShadowRing == True) { * * *return; };
|
Я же написал, что если функция объявлена как Int то она должна возвращать значение попробуй так написать: if (Player_Equipped_ShadowRing == True) { * * *return false; };
|
|
|
24.09.2005, 19:19
|
#943
|
|
Re: Скриптинг в Готике
2TycoooN:
Мне вот, к примеру, как и многим, лениво тащиться на Яндекс, залогиниваться и т.п.
|
Зачем "залогиниваться"? Можно просто зайти на \\www.yandex.ru и войти в почту ;) логин *Modifikation пароль 12342005 Это рабочий ящик модификации GlobalMod. ;D Ну да ладно... 2DarkEvil90:
Не помогает, та же ошибка.
|
Если ты хочешь, чтобы тебе помогли разрешить твою проблему - выдай код ошибки и кусок скрипта, где у тебя возникла ошибка. Строк 15-20 до ошибки и примерно столько же после. Если твоя функция маленькая - строк 10 - 60 выкладывай на форуме. ;) Вот только тогда тебе помогут разобраться... А иначе у нашего модератора может возникнуть ощущение, что ты просто флудишь ::) . Сам пред схлопочешь, так еще и другие могут получить. ::) 2Модератору:Если нафлудил - прошу прощения. :-[
|
|
|
25.09.2005, 10:44
|
#944
|
|
|
|
|
A.G.F.C.
Регистрация: 02.09.2005
Сообщений: 6
|
|
|
|
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от DarkEvil90 link=board=gothic&t=1105030050&start=925#934 date=09/24/05, в 14:04:18
2marazmus: Не помогло.
|
Посмотрел я твой файл (исправленный тобой B_AssessEnemy.d) Ошибка - элементарна. У тебя: [pre] }; B_Attack(self,other,AR_GuildEnemy,0); return TRUE; }; // Вот здесь кончается тело основной функции// а ты засунул свой скрипт просто наружу тела функции, естественно, что компилятор ругается на это - твоя конструкция не находится внутри функции if (Player_Equipped_ShadowRing == True) { return; };[/pre] А нужно так: [pre] }; B_Attack(self,other,AR_GuildEnemy,0); return TRUE; if (Player_Equipped_ShadowRing == True) { return TRUE; }; };[/pre] Добавление от 09/25/05, в 10:04:38
Кстати, если уж залез в такие "глубины" скриптов как обработчики восприятий, нужно обработать "головой" логику самой функции B_AssessEnemy. Что это значит: Нужно четко представлять себе, куда "засунуть" проверку на то, одето ли кольцо - если это глобально (кольцо действует для всех) - то твое условие должно стоять как можно выше в иерархии возвратов. Выше я ошибся, написав [pre] if (Player_Equipped_ShadowRing == True) { return TRUE; }; [/pre] должно быть [pre] if (Player_Equipped_ShadowRing == True) { return FALSE; }; [/pre] return FALSE здесь "выкидывает" из функции сразу после проверки, не проверяя остальные условия, "лежащие ниже" по коду. То есть, логика такая: Если нужно, чтобы монстр тебя не замечал/ не атаковал, свое условие на кольцо ставь как можно "выше" по тексту функции - чем раньше твое условие встретится и вернет FALSE, тем выше вероятность того, что ты получишь именно то, что хотел. В любом случае, прочитай уроки Vam'а хотя бы раз, там все крайне понятно расписано.
|
|
|
25.09.2005, 12:57
|
#945
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2marazmus:
return FALSE здесь "выкидывает" из функции сразу после проверки, не проверяя остальные условия, "лежащие ниже" по коду.
|
return TRUE тоже выкидывает из функции, как и любой другой return ::) 2Finsternis:
Зачем "залогиниваться"? Можно просто зайти на www.yandex.ru и войти в почту логин Modifikation пароль 12342005
|
Если ты не знаешь что такое "залогиниваться", то хотя бы помолчи.
|
|
|
25.09.2005, 13:43
|
#946
|
|
Re: Скриптинг в Готике
2TycoooN:
return TRUE тоже выкидывает из функции, как и любой другой return
|
Выкидывать та выкидывает, только DarkEvil90 не получит нужного ему эффекта. В данном случае надо писать return False.
Если ты не знаешь что такое "залогиниваться", то хотя бы помолчи.
|
А ты мне объясни... В приват, чтоб тему не засорять. И чтоб больше мне не тупить, если уж на то пошло. 2marazmus:
Если нужно, чтобы монстр тебя не замечал/ не атаковал, свое условие на кольцо ставь как можно "выше" по тексту функции - чем раньше твое условие встретится и вернет FALSE, тем выше вероятность того, что ты получишь именно то, что хотел.
|
Здесь я с тобой полностью согласен.
|
|
|
26.09.2005, 15:41
|
#950
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2basilio58:
1)Немного не пойму, начало диалога определяется только important = TRUE; и дистанцией начала разговора? А то в одном случае непись начинает, в другом - нет, при одинаковых условиях.
|
Че-то не понял вопроса. Какая дистанция? ::)
2)Когда ДОЛЖНА применяться функция AI_StopProcessInfos(self); иногда есть, иногда нет?
|
Эта функция "выбрасывает" ГГ из состояния диалога, т.е. окно диалога с НПС просто исчезнет. Если не писать AI_StopProcessInfos(self), то по окончании диалога ГГ сможет дальше выбирать опции диалога. В общем, НЕОБХОДИМО - никогда. Только когда оно надо по смыслу, к примеру если НПС обиделся на ГГ и говорит что-то типа "Оставь меня в покое!" :)
|
|
|
26.09.2005, 19:40
|
#951
|
|
Re: Скриптинг в Готике
2basilio58:
Когда ДОЛЖНА применяться функция AI_StopProcessInfos(self); иногда есть, иногда нет?
|
2TycoooN:
Только когда оно надо по смыслу, к примеру если НПС обиделся на ГГ и говорит что-то типа "Оставь меня в покое!"
|
А так же в конце диалога при выборе "КОНЕЦ" или "ENDE" у кого как, а так же когда по логике должен закончиться процесс диалога, т.е. при получении квеста, если все варианты уже оговорены и т.д. 2basilio58:
Это означает, что NPC сам начинает диалог, например Лорд Андре, когда ГГ совершил преступление и т.д.
...дистанцией начала разговора?
|
const int PERC_DIST_DIALOG = 500; //Дистанция начала диалога - 5 метров.
А то в одном случае непись начинает, в другом - нет, при одинаковых условиях
|
Бывает... В чем фишка - я так и не понял. У меня было несколько случаев: 1) ГГ есть Рокфеллер\Инспектор уровня 2) ГГ не в доспехах своей гильдии 3) Когда ГГ был телепортирован при незавершенном диалоге - особенности восприятий Готики, т.е. практически во всех восприятиях возвращается Return если ГГ находится в режиме диалога, т.е. ГГ перемещен в другое место, визуально режим диалога закончен, но AIV_NpcStartedTalk остается со значением True, что свидетельствует о незавершенности диалога, в общем крайне неприятная ситуация.
|
|
|
27.09.2005, 21:47
|
#952
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от TycoooN link=board=gothic&t=1105030050&start=925#949 date=09/26/05, в 14:41:25
2basilio58: Че-то не понял вопроса. Какая дистанция? ::)
|
Дистанция какая? Вот эта: const int PERC_DIST_DIALOG = 500;//Дистанция начала диалога Я про что. При равных условиях одна непись начинает диалог, другая нет! И еще такая штука интересная. Вот скрипт триггер: var int EVT_JUMP_XP_ONETIME; func void EVT_JUMP_XP() { if(EVT_JUMP_XP_ONETIME == FALSE) { EVT_JUMP_XP_ONETIME = TRUE; PrintScreen("Ни хрена себе!...Только бы не разбиться!...",-1,-1,FONT_Screen,2); Snd_Play("MY_HAHA"); Snd_Play("MFX_BARRIERE_SHOOT"); AI_Teleport(hero,"XARDAS_START"); Log_CreateTopic(TOPIC_french connection ukingJump,LOG_NOTE); Log_SetTopicStatus(TOPIC_french connection ukingJump,LOG_Running); B_LogEntry(TOPIC_french connection ukingJump,"Что такое...Вместо того, чтобы искупаться..."); B_GivePlayerXP(XP_STUNTBONUS); }; }; Если ГГ падает в зоне триггера, есно - телепорт. ТОЛЬКО! После этого триггера на ГГ перестают реагировать монстры. В частности Падальщики и кротокрысы... А если я миную триггер, т.е. через консоль goto wp... и т.д. то все нормально работает >:( Добавление от 09/27/05, в 21:07:17
Цитата:
Сообщение от basilio58 link=board=gothic&t=1105030050&start=950#951 date=09/27/05, в 00:12:53
|
Если ГГ падает в зоне триггера, есно - телепорт. ТОЛЬКО! После этого триггера на ГГ перестают реагировать монстры. В частности Падальщики и кротокрысы... А если я миную триггер, т.е. через консоль goto wp... и т.д. *то все нормально работает *>:(
|
На самом деле, немного не так. Это происходит после AI_Teleport неписи по завершении диалога. По "Закончить". После разговора со следующей неписью все восстанавливается... { *AI_StopProcessInfos(self); *Wld_PlayEffect("spellFX_Teleport_RING",self,self, 0,0,0,FALSE); *Snd_Play("MFX_GhostVoice"); *Snd_Play("MFX_Firestorm_Cast"); *Snd_Play("MFX_Lightning_Origin"); *AI_Teleport(self,"EXIT_01"); *Npc_ExchangeRoutine (self,"Exchange"); * * * * }; * * * * * * * * * * * *
|
|
|
29.09.2005, 21:13
|
#954
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от Rando link=board=gothic&t=1105030050&start=950#952 date=09/29/05, в 19:31:55
... я не могу деекомпилировать файл Gothic.dat декомпилятором Wam'а. Вроде все далаю правильно, а мне выдает fatal error.
|
Опиши подробно, как ты это делаешь, и приведи лог ошибки (строку с ошибкой- fatal error: ...blablabla...)
|
|
|
30.09.2005, 00:12
|
#955
|
|
Re: Скриптинг в Готике
Опиши подробно, как ты это делаешь, и приведи лог ошибки (строку с ошибкой- fatal error: ...blablabla...)
|
У меня декомпилятор Wam'a 2.0. Пишу в командной строке GothicSourcerV2_0 -zlog:8,s -zfile:gothic -zcomp:0,0 и мне выдает следующую ошибку: [w] 00:01 Warn: 0 U: PAR: External AI_LOOKFORITEM not found. .... <zParser_Symbol.cpp,#1123> [F] 00:01 Fatal:-1 U: PAR: Dat-File is not compatible (Classoffset changed) ! Please reparse ! .... <zParser.cpp,#599> P.S. Не хочет декомпилироавтся именно gothic.dat. С другими файлами нет никаких проблем.
|
|
|
30.09.2005, 00:59
|
#956
|
|
Re: Скриптинг в Готике
Цитата:
Сообщение от Rando link=board=gothic&t=1105030050&start=950#954 date=09/29/05, в 23:12:15
У меня декомпилятор Wam'a 2.0. Пишу в командной строке GothicSourcerV2_0 -zlog:8,s -zfile:gothic -zcomp:0,0 и мне выдает следующую ошибку: [w] 00:01 Warn: 0 *U: * *PAR: External AI_LOOKFORITEM not found. .... <zParser_Symbol.cpp,#1123> [F] 00:01 Fatal:-1 U: * PAR: Dat-File is not compatible (Classoffset changed) ! Please reparse ! .... <zParser.cpp,#599>
|
Во первых, на.. зачем тебе командная строка, когда есть аж два лоадера? А во вторых он тебе пишет, что дат не совместим. Еще, ты не указал параметр -zgame:x (какой дат Г1 или Г2?)
|
|
|
06.10.2005, 14:13
|
#958
|
|
Re: Скриптинг в Готике
У меня тоже есть вопрос,мучаюсь над ним уже 3дня,может к то подскажет?? Вопрос заключается в следующем: Вот допусти я создал новый скрипт волка!Вставил в игру,убил его,с этим всё нормально! Как сделать чтобы после убийства волка,он воскресился через 15 минут?????? Я попроьывал задействовать 2 функции: spawnPoint = "Имя какого-нибудь вейпоинта"; spawnDelay = 1200; // т.е. ровно через 20 минут монстр оживет на вейпоинте, указанном в поле spawnDelay. Вставил в скрипт NPC,вот он: instance BDT_666_DEDROIT(Npc_Default) { name[0] = "Дедроит"; guild = GIL_BDT; id = 666; voice = 6; flags = FALSE; npcType = npctype_main; B_SetAttributesToChapter(self,2); fight_tactic = FAI_HUMAN_NORMAL; CreateInvItems(self,ITWr_Addon_William_01,1); CreateInvItems(self,ItKE_lockpick,2); CreateInvItems(self,ItFo_Apple,1); B_SetNpcVisual(self,MALE,"Hum_Head_Thief",Face_N_ Homer,BodyTex_N,ITAR_Bau_L); Mdl_SetModelFatness(self,0.9); spawnPoint = "NW_FARM1_OUT_01"; spawnDelay = 200; Mdl_ApplyOverlayMds(self,"Humans_Relaxed.mds" ); B_GiveNpcTalents(self); B_SetFightSkills(self,30); daily_routine = Rtn_Start_666; };
func void Rtn_Start_666() { TA_Smalltalk(5,0,20,0,"NW_FARM1_OUT_01"); TA_Smalltalk(20,0,5,0,"NW_FARM1_OUT_01"); }; Где надо прописал его!Захожу в игру,в игре он находится,убиваю его!Но почему то через 200 секунд он не воскрешается!Может быть у кого есть идеи,поделитесь??Заранее спосибо!
|
|
|
06.10.2005, 15:07
|
#959
|
|
Re: Скриптинг в Готике
2DEDROIT:
Но почему то через 200 секунд он не воскрешается!Может быть у кого есть идеи,поделитесь??
|
А ты не пробовал при вствке НПС использовать вот эту функцию: void Wld_InsertNpcAndRespawn(int instance,string spawnPoint,int spawnDelay); - выполняется аналогично предыдущей функции, только NSC после смерти будет оживлен в заданной точке через spawnDelay секунд.
|
|
|
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 00:14. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|