|
|
08.08.2006, 18:46
|
#841
|
|
Re: М:Декомпилятор скриптов Готики
Уважаемый Vam. Заинтересовался твоей программой, достал версию 3.00, но не нашел при ней файла Readme – инструкция по применению (или так и должно быть?). Единственное что удалось найти, это следующее: Несколько советов по работе с программой: Директория Gothic Projects предназначена для работы с проектами Готики. Работу начинаем с создания нового решения New Solution, в окне New project необходимо заполнить следующие поля: Solution name – любое имя решения (это может быть имя вашего мода) Location – путь к рабочей директории (например, Gothic Projects) Platforms – Выбор игры Готика или Готика 2 Empty Project – не рекомендуется выбирать начинающим First compile action – создание проекта для компиляции скриптов, исходные данные – src файл и файлы скриптов. First decompile action – создание проекта первоначально для декомпиляции скриптов, исходные данные – dat файл. При нажатии кнопки OK будет создан проект. Данная инструкция не полностью описывает все возможности программы. Поэтому у меня просьба – выложи Readme на форуме. Ещё у меня возникла такая проблема: декомпилировал файл Gothic.dat, а когда стал компилировать обратно (при эьом ничего не менея), то прога выдала ошибку «Story\B_Content\B_Addon_PiratesGoHome.d(93): Error: Unknown identifier: ELSE, а если перейти к ошибке, то прога указывает на Else (выделен красным) func int C_TowerBanditsDead() { var C_Npc TowerBandit1; var C_Npc TowerBandit2; var C_Npc TowerBandit3; TowerBandit1 = Hlp_GetNpc(BDT_10100_Addon_TowerBandit); TowerBandit2 = Hlp_GetNpc(BDT_10101_Addon_TowerBandit); TowerBandit3 = Hlp_GetNpc(BDT_10102_Addon_TowerBandit); if(Npc_IsDead(TowerBandit1) && Npc_IsDead(TowerBandit2) && Npc_IsDead(TowerBandit3)) { return TRUE; }; TowerBanditsDead = TRUE; else { return FALSE; }; }; Если убрать этот отрезок TowerBanditsDead = TRUE; else { return FALSE; то ошибка исчезает, но появляется следующая:Story\Dialoge\DIA_Sld_807_Bullco.d(155) : Error: Expected «;», а при переходе на ошибку появляется этот фрагмент: B_GetDayPlus(); AI_StopProcessInfos(self)Bullco_Leave_Day == ; B_Attack(self,other,AR_NONE,1); };
instance DIA_Bullco_WontLeave(C_Info) { npc = Sld_807_Bullco; nr = 5; condition = DIA_Bullco_WontLeave_Condition; information = DIA_Bullco_WontLeave_Info; permanent = FALSE; description = "Я НЕ СОБИРАЮСЬ уходить отсюда!"; };
func int DIA_Bullco_WontLeave_Condition() { if(Bullco_scharf == TRUE) и как его исправить я не знаю. Подскажи, заранее благодарен. Да, ещё просьба, так как я новичок в программировании, не мог бы ты сделать краткий обзор (эдакое обобщение) ошибок в файлах и как их устранять. Буду очень признателен.
|
|
|
08.08.2006, 22:03
|
#842
|
|
Re: М:Декомпилятор скриптов Готики
2VIF:
Поэтому *у *меня *просьба – выложи *Readme *на *форуме.
|
К сожалению readme к этой версии не писал, т.к. она первая пробная с графическим интерфейсом, есть описание к следующей версии, но её релиз ещё не готов.
[pre]if(Npc_IsDead(TowerBandit1) && Npc_IsDead(TowerBandit2) && Npc_IsDead(TowerBandit3)) * * { * * * * * return TRUE; * * }; * * TowerBanditsDead = TRUE; * * else * * { * * * * * return FALSE; * * };[/pre]
|
Исправляется таким способом: [pre]if(Npc_IsDead(TowerBandit1) && Npc_IsDead(TowerBandit2) && Npc_IsDead(TowerBandit3)) { * * *TowerBanditsDead = TRUE; * * *return TRUE; } else { * * *return FALSE; };[/pre]
[pre]B_GetDayPlus(); * * AI_StopProcessInfos(self)Bullco_Leave_Day == ; * * B_Attack(self,other,AR_NONE,1);[/pre]
|
Исправляется так: [pre]Bullco_Leave_Day = B_GetDayPlus(); AI_StopProcessInfos(self); B_Attack(self,other,AR_NONE,1);[/pre] Приведённые тобой ошибки присутствуют в dat файле, поэтому программа не способна правильно декомпилировать ошибочные места, но информация вся восстановлена (слова не пропадают), остается только правильно записать их.
Да, ещё *просьба, так *как *я *новичок *в *программировании, не *мог *бы *ты *сделать *краткий *обзор *(эдакое *обобщение) * *ошибок *в *файлах и *как *их *устранять.
|
Практически все ошибки и методы их устранения уже по несколько раз описывались в этой теме.
|
|
|
09.08.2006, 17:29
|
#844
|
|
Re: М:Декомпилятор скриптов Готики
2VIF:
хочется спросить: если удалить эти строчки, не возникнут косяки в игре?
|
Ты забыл стереть ';' в предыдущей строке перед else, посмотри как я написал.
И с Булко теже проблемы. Story\Dialoge\DIA_Sld_807_Bullco.d(156): Error: Expected «;»,
|
У меня написано все правильно, обращай внимание на ';'
|
|
|
10.08.2006, 18:14
|
#845
|
|
Re: М:Декомпилятор скриптов Готики
Vam’у. Ещё раз спасибо за подсказку. В этот раз программа не остановилась на этих строчках. У меня вопрос относительно «;», какова их функция?, у меня есть предположение, что данный символ разделяет строки и скобки, чтоб программа не считала строчки и скобки (в которые помещаются строки) продолжением друг друга, или же его значение в чем-то другом? И ещё один вопрос по устранению ошибок. Сама ошибка заключается в следующем: Строчка : story\Dialoge\DIA_Sld_810_Dar.d(244): Error: Unknown identifier : TRUESELF.AIVAR, при переходе возникает данный фрагмент:
{ TRUEself.aivar[AIV_LastFightComment] == FALSE; }; };
func void DIA_Dar_Kameradenschwein_Info() { AI_Output(self,other,"DIA_Dar_Kameradenschwein_03 _00"); //Трепач! Ты сказал Сиферу, что я взял его траву! if(Npc_KnowsInfo(other,DIA_Dar_WannaJoin) && (other.guild == GIL_NONE)) { AI_Output(self,other,"DIA_Dar_Kameradenschwein_03 _01"); //Я ни за что не проголосую за тебя. }; };
instance DIA_Dar_Pilztabak(C_Info) { npc = Sld_810_Dar; nr = 6; condition = DIA_Dar_Pilztabak_Condition;
Сначала я думал, что дело в точке, которая находится между TRUEself и aivar, но после ее удаления ошибка осталась, когда я удалил TRUE и оставил self , ошибка исчезла, больше ошибок программа не нашла, однако в конце компиляции в правом нижнем окне появились следующие строчки (привожу последние 4): Story\B_Story\B_Enter_DragonIsland.d Story\Startup.d Process stopped… 34 error(s), 3283 warning(s) Вопрос следующий (вернее их несколько): 1) правильно ли я исправил новую ошибку и 2) можно ли считать процесс компиляции завершенным (причем успешно), если же нет, то почему?
|
|
|
10.08.2006, 18:49
|
#846
|
|
Re: М:Декомпилятор скриптов Готики
2VIF:
У меня вопрос относительно «;», какова их функция?
|
Завершение фразы синтаксиса языка Daedalus.
TRUEself.aivar[AIV_LastFightComment] == FALSE;
|
1) правильно ли я исправил новую ошибку
|
Нет, неправильно, нужно вот так: self.aivar[AIV_LastFightComment] = FALSE; return TRUE; Это тоже ошибка датника, у всех этих ошибок один стиль - стековый, поясню в общих чертах: фраза на которой возникла ошибка ставится в конец строки, эту фразу нужно оттуда взять и состыковать (логически) со строкой выше, если это имеет место, в противном случае исправить в этой фразе ошибку и записать строкой выше. Первую часть строки необходимо саму по себе привести (логически) к правильному виду. ;)
2) можно ли считать процесс компиляции завершенным (причем успешно), если же нет, то почему?
|
Пока программа выдает ошибки процесс создания dat файла не закончен. Все ошибки нужно правильно устранить.
|
|
|
10.08.2006, 20:21
|
#847
|
|
Re: М:Декомпилятор скриптов Готики
Vam’у Значит, до тех пор, пока не будут устранены все ошибки программа не закончит компиляцию. Это понятно, чтож похоже у меня нашлось дело на выходные, займусь этим. Но тогда возникает другой вопрос. На некоторых ошибках программа сама останавливается, и после правильного исправления не задерживается на них, но после декомпиляции есть и другие ошибки выделенные красным, на них программа не останавливается, как мне узнать, правильно ли я исправил ошибку или нет? Я напомню, что я не программист, и ошибки пытаюсь устранить используя интуицию. Чтоб было понятнее куда я клоню, я приведу пример: допустим я нашел строку красного цвета, перешел к фрагменту с ошибкой, исправил то, что мне6 показалось неправильным. А дальше? Мне придется каждый раз после исправления компилировать обратно все файлы в Gothic.dat, а если компиляция не завершена, опять искать ту строчку и исправлять все по новой. Приведя этот пример, я хочу спросить: может ли программа подсказать мне, правильно ли я исправил ошибку или хотя бы исправлена ли ошибка не прибегая к повторной компиляции? Если непонятно выразился, скажи об этом (вернее напиши), попробую выразиться по другому (боле понятно).
|
|
|
10.08.2006, 20:47
|
#848
|
|
Re: М:Декомпилятор скриптов Готики
2VIF:
может ли программа подсказать мне, правильно ли я исправил ошибку или хотя бы исправлена ли ошибка не прибегая к повторной компиляции?
|
Нет, только повторная компиляция приведет к правильному результату, но выполнять её после каждой ошибки нет смысла. Есть критические ошибки, после которых происходит останов компиляции, т.к. дальнейшая компиляция скрипта без устранения этой ошибки невозможна. Здесь выход такой - исправил, повторно компилим. Есть ошибки не критические, которые к останову компиляции не приводят, но линковщик, который создает dat файл не запустится, пока они не будут устранены. Здесь выход такой - исправляем все "красные" ошибки и повторно компилим скрипты, и так до тех пор, пока ошибок не будет. Но это не значит, что скрипты их не содержат в любом виде, устранены только грамматические и синтаксические ошибки, логические же ошибки всегда могут остаться. В следующей версии программы введено облегчение работы с ошибками, на них можно будет проверять каждый отдельный файл скрипта, не прибегая к общей компиляции.
|
|
|
13.08.2006, 16:11
|
#849
|
|
Re: М:Декомпилятор скриптов Готики
Vam’у. Всю субботу и воскресенье разбирался с ошибками. Но смог разобраться только с одной: AI\Magic\C_CanNPCCollideWithSpell.d(210): error: Unexpected return : COLL_APPLYDOUBLEDAMAGE; (добавил return, и ошибка исчезла) }; return COLL_DOEVERYTHING; }; if(spellType == SPL_Fear) { if((self.guild != GIL_FIREGOLEM) && (self.guild != GIL_ICEGOLEM) && (self.guild != GIL_STONEGOLEM) && (self.guild != GIL_SUMMONED_GOLEM) && (self.guild != GIL_SWAMPSHARK) && (self.guild != GIL_TROLL) && !C_NpcIsEvil(self) && (C_NpcIsGateGuard(self) == FALSE)) { return COLL_DOEVERYTHING; }; return COLL_DONOTHING; }; if(spellType == SPL_DestroyUndead) { if(C_NpcIsUndead(self) && (self.attribute[ATR_HITPOINTS_MAX] <= SPL_Damage_DESTROYUNDEAD)) {
А в остальных так и не разобрался. Пытался следовать твоему совету: фраза на которой возникла ошибка ставится в конец строки, эту фразу нужно оттуда взять и состыковать (логически) со строкой выше, если это имеет место, в противном случае исправить в этой фразе ошибку и записать строкой выше. Первую часть строки необходимо саму по себе привести (логически) к правильному виду. Но в некоторых случаях в строчке, где ошибка помещена только такая скобка }, и как мне её состыковывать со строкой выше, или что мне нужно исправить в этом случае (для наглядности привожу пример):
AI\Monster\B_Monster\B_MM_DeSynchronize.d(6): error: Function should return value Сам фрагмент: func int B_MM_DeSynchronize() { var int msec; msec = Hlp_Random(1000); AI_Waitms(self,msec); }; (напротив этой скобки появляется маленькая красная стрелка, которая по идее указывает на строчку с ошибкой во всех местах, где есть ошибки, я прав?)
А в целом все ошибки можно разбить на 3 группы: к 1 группе я отнес все ошибки, которые отмечены строкой error: Function should return value (пример см выше, таких ошибок большинство)
ко 2 - story\dialoge\dia_pc_thief_nw.d(284): cannot convert from type int to instance (пример прилагается): else if(Npc_HasItems(other,ItMi_Gold < DiegosTreasure)) { AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _02"); //Но здесь не все! Ты что, не доверяешь мне? Мне нужна вся сумма. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _03"); //Если мой план сработает, золота останется достаточно и для тебя. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _04"); //Так что, пожалуйста, принеси всю сумму. Это очень важно! } else { B_GiveInvItems(other,self,ItMi_Gold,DiegosTreasur e); b_diegonw_diegosrevenge(); DiegosRevenge = TRUE; }; if((Npc_IsDead(Gerbrandt) == FALSE) && (DiegosRevenge == TRUE)) { AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _06"); //Послушай, я все еще не договорился со стражей. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _07"); //Я хочу, чтобы ты отнес это письмо Гербрандту. Это один из торговцев в верхнем квартале. AI_Output(self,other,"DIA_DiegoNW_HaveYourGold_11 _08"); //Передай ему привет от меня. А затем встретимся перед домом Гербрандта. CreateInvItems(self,ItWr_DiegosLetter_MIS,1); B_GiveInvItems(self,other,ItWr_DiegosLetter_MIS,1 ); B_StartOtherRoutine(Gerbrandt,"WaitForDiego") ; MIS_HelpDiegoNW = LOG_SUCCESS;
К 3 - story\dialoge\dia_vld_413_bosper.d(834): comparison is possible only in «if» expression Bosper_TrollFurSold == TRUE; } else { AI_Output(self,other,"DIA_Bosper_SellFur_11_0 9"); //Еще одна шкура огромного тролля... ты что, охотишься на них? AI_Output(other,self,"DIA_Bosper_SellFur_15_1 0"); //Когда я натыкаюсь на одного из них, я не упускаю такой возможности... }; if(Npc_HasItems(other,ItAt_TrollFur) > 0) { B_GiveInvItems(self,other,ItMi_Gold,Npc_HasItems( other,ItAt_TrollFur) * Value_TrollFur); B_GiveInvItems(other,self,ItAt_TrollFur,Npc_HasIt ems(other,ItAt_TrollFur)); }; if(Npc_HasItems(other,ItAt_TrollBlackFur) > 0) { AI_Output(self,other,"DIA_Bosper_SellFur_11_1 1"); //И шкура черного тролля, надо же! B_GiveInvItems(self,other,ItMi_Gold,Npc_HasItems( other,ItAt_TrollBlackFur) * Value_TrollBlackFur); B_GiveInvItems(other,self,ItAt_TrollBlackFur,Npc_ HasItems(other,ItAt_TrollBlackFur)); }; }; AI_Output(self,other,"DIA_Bosper_SellFur_11_1 2"); //Отличная работа. Заходи ко мне еще, когда у тебя будут шкуры... }
У меня просьба - объясни, что означают эти ошибки и как их исправить, а остальные однотипные ошибки я попытаюсь исправить сам, используя твои объяснения. Заранее благодарен.
|
|
|
13.08.2006, 18:47
|
#850
|
|
Re: М:Декомпилятор скриптов Готики
2VIF:
COLL_APPLYDOUBLEDAMAGE; (добавил *return, *и *ошибка *исчезла)
|
Это правильно.
А *в *остальных *так *и *не *разобрался. Пытался *следовать *твоему *совету: фраза на которой возникла ошибка ставится в конец строки, эту фразу нужно оттуда взять и состыковать (логически) со строкой выше, если это имеет место, в противном случае исправить в этой фразе ошибку и записать строкой выше. Первую часть строки необходимо саму по себе привести (логически) к правильному виду.
|
Невнимательно читал, это относится только к ошибкам датника, т.е. тем, которые появляются на стадии декомпиляции.
AI\Monster\B_Monster\B_MM_DeSynchronize.d(6): error: Function should return value Сам *фрагмент: func int B_MM_DeSynchronize() { * * var int msec; * * msec = Hlp_Random(1000); * * AI_Waitms(self,msec); }; (напротив *этой *скобки *появляется *маленькая *красная *стрелка, которая *по *идее *указывает *на *строчку *с *ошибкой *во *всех *местах, где *есть *ошибки, я *прав?)
|
В данном случае неправ, если функция должна возвращать значение, т.е. в конце блока (блоком называется часть текста между {}; ) должен быть return xxx;, а его нет, то курсор ошибки всегда показывает на закрывающую скобку блока. Здесь два выхода: 1. Функция объявлена ошибочно с возвращаемым типом, она ничего не должна возвращать и её тип должен быть void. 2. Функция действительно должна возвратить значение, тогда перед закрывающей скобкой блока пишем return xxx;, значение xxx необходимо подобрать по смыслу. В твоем случае функция func int B_MM_DeSynchronize() объявлена ошибочно с возвращаемым значением, значит исправляем так func void B_MM_DeSynchronize().
к *1 *группе *я *отнес *все *ошибки, которые *отмечены *строкой *error: Function should return value (пример *см *выше, таких *ошибок *большинство)
|
Как исправлять большинство этих ошибок - см. пост #833 на этой странице.
ко *2 - story\dialoge\dia_pc_thief_nw.d(284): cannot convert from type int to instance (пример *прилагается): else if(Npc_HasItems(other,ItMi_Gold < DiegosTreasure))
|
Здесь поставлена не там скобка, должно быть так else if(Npc_HasItems(other,ItMi_Gold) < DiegosTreasure)
К *3 - story\dialoge\dia_vld_413_bosper.d(834): comparison is possible only in «if» expression * * * * * * * * Bosper_TrollFurSold == TRUE;
|
Но здесь то вообще просто - стоит операция сравнения ==, а условия if нет, значит опечатка, должно быть Bosper_TrollFurSold = TRUE;
|
|
|
16.08.2006, 21:14
|
#854
|
|
Re: М:Декомпилятор скриптов Готики
2VIF:
Ещё я пытался добавить return в конец (опять же по совету из поста № 833), но не получается её исправить. Подскажи как её исправить?
|
Всю функцию можно было и не приводить, достаточно только названия. В конец функции нужно записать return SPL_SENDSTOP;
|
|
|
19.08.2006, 08:24
|
#855
|
|
Re: М:Декомпилятор скриптов Готики
Надеюсь в этой ветке мне ответят на мой вопрос, чёрт возьми :) Вопрос непосредственно к VAM'y и тем, кто понимает о чём идёт речь. Опишу всё по порядку. После декомпиляции dat и bin файлов у меня в папке GothicProject появляются скрипты с расширением *d. После внесённых мною изменений, я нажимаю на кнопку compile на вкладке build и жду компиляции. Что характерно, компиляция проходит очень быстро, и судя по всему не все скрипты в итоге собираются в единый файл. Хрен знает. После компиляции в папке SolGothic (что в GothicProject) появляются новые Gothic.dat и Ou.bin Хотя как мне кажется, они появились сразу же после декомпиляции. Почему - не знаю. Было и такое. Вобщем, заменяю оригинальные файлы полученными и запускаю игру. Начинаю с самого начала. Для пробы я в скриптах изменял диалоги Ксардаса. Ни-че-го не получилось! Что за чёрт возьми?! Как были диалоги изначально, так и остались. Вот тебе и делай после этого русификатор! И так сто раз! Кстати, файл VDFS.dmp я удалил на всякий случай. Есть ещё какие варианты?
|
|
|
19.08.2006, 08:52
|
#856
|
|
Re: М:Декомпилятор скриптов Готики
2Wirtus:
После внесённых мною изменений, я нажимаю на кнопку compile на вкладке build и жду компиляции. Что характерно, компиляция проходит очень быстро, и судя по всему не все скрипты в итоге собираются в единый файл.
|
Если есть ошибки в скриптах, то бинарные файлы компилятором не будут созданы, ошибки сначала нужно исправить. В окне Message Window можно видеть: - процесс компиляции нормально завершен, присутствуют записи о создании dat и bin файлов, только при условии, что в последней строке - errors(xxx), warnings(xxx), кол-во ошибок равно 0. - все ошибки, это строки выделенные красным цветом. Во всех dat файлах Готики есть ошибки, после декомпиляции они выявляются, новая компиляция сразу никогда не проходит, нужно исправить все ошибки. Советы по исправлению ошибок - последние несколько страниц этой темы.
|
|
|
19.08.2006, 09:11
|
#858
|
|
Re: М:Декомпилятор скриптов Готики
Есть ошибки какие-то...В основном expected!
|
Читаем последние страницы темы, только потом, если что не ясно - спрашиваем, и конкретно - с приведением сообщения об ошибке, а не таким образом
Запятые чтоли надо кое-где расставить или чё...
|
, на такой вопрос есть только один ответ - учите скриптинг.
|
|
|
20.08.2006, 00:28
|
#860
|
|
Re: М:Декомпилятор скриптов Готики
Цитата:
Сообщение от Wirtus link=board=gothic&t=1095241429&start=850#858 date=08/19/06, в 09:18:42
После декомпиляции было выдано 3 ошибки, после компиляции 1ошибка: Story\Log_Entries\LOG_Constants_Hoshi.d(23): Error: Expected';'
|
Что это такое? (((( Обращается к "ингридиентам для руны Смерч"
|
Кстати, недавно описывалась эта проблема. Но как понять "замени вложенные кавычки на апострофы '"
|
Дааа... до чего лень то доходит... Мало того, что разжуй... Мож еще и проглотить? Для чего "расширенный поиск" существует? Я для эксперимента набрал запрос "кавычки", искать в этом форуме. Вот набери, и посмотри! PS ИМХО, я бы посоветовал не пытаться сразу управлять истребителем, а использовать GothicSourcerV2_30 или GothicSourcerV2_40
|
|
|
20.08.2006, 14:37
|
#861
|
|
Re: М:Декомпилятор скриптов Готики
Vam’у. Vam, хочу спросить: можно ли через твою программу работать с квестами, создавать новые способы решения задач, новые условия и т. д? Допустим, я хочу прописать возможность, при которой игрок может стать и магом воды и некромантом (во второй Готике), то есть, чтобы стать некромантом достаточно принести «Коготь Белиара» Ксардасу и в диалоговом окне прописать строчку, в которой Игрок в лице ГГ изъявляет желание обучаться у Ксардаса магии, либо другая ситуация: когда игрок выполняет квест Ватраса по поиску пропавших людей, то в диалоге можно прописать строчку, в которой игрок желает вступить в ряды магов воды, после чего Ватрас направляет игрока к Сатурасу, который попричитав, присваивает ГГ статус мага воды.Теперь игрок может изучать все имеющиеся руны. Должен отметить, что эти гильдии должны быть дополнительными как например гильдия воров, то есть, всупить в эти гильдии может любой игрок независимо от того за кого он играет (за паладина, за наемника, за мага огня). Ещё одна идея: если посмотреть на сюжет игры, то нужно отметить, что ГГ рядовой. Что это означает. ГГ дают задания, и он их выполняет. Немного скучно. Я предлагаю внести следующие изменения. Допустим, игрок играет за ополчение, после выполнения заданий Андре, либо сам Андре, либо Хаген присваивают ГГ статус командира ополчения. Теперь игрок может подходить к любому ополченцу и отдавать команды: следовать за ГГ (при выполнении какого-нибудь задания), охранять предмет, либо точку, атаковать всех врагов в поле видимости, либо какого-нибудь конкретного врага, оставаться на месте и что-нибудь в этом роде. А став паладином, Хаген может сделать ГГ своей правой рукой, тогда игрок может командовать не только ополченцами, но и паладинами. Тоже касается и наемников и магов огня (есть идеи и для этих гильдий), а в Яркендаре можно стать главарем бандитов после смерти Ворона. У меня полно идей по изменению Готики (как первой так и второй). Проблема в недостатке знаний, как их реализовать. Если знаешь как их реализовать то объясни (желательно на примерах). Если объём материала будет слишком большим, то в ответе напиши, чтобы я тебе сообщил свой адрес почтовый, пошли мне письмо, чтоб ветку не засорять. С уважением VIF..
|
|
|
20.08.2006, 15:43
|
#862
|
|
Re: М:Декомпилятор скриптов Готики
Дааа... до чего лень то доходит... Мало того, что разжуй... Мож еще и проглотить? Для чего "расширенный поиск" существует? Я для эксперимента набрал запрос "кавычки", искать в этом форуме. Вот набери, и посмотри!
|
Хоть на этом спасибо! А вообще... Полистал я последние страницы темы и понял, что ошибки в-основном у всех типичные, стандартные. VAМ, не прочь было бы написать в руководстве к след. версии ГотикСоурса небольшую заметку, как справляться с этими ошибками дабы процесс компиляции проходил плавно, без эксцесов. ;)) имхо, было б не плохо. Добавление от 08/20/06, в 16:03:31
Вот, столкнулся с ошибкой: AI\Magic\C_CanNpcCollideWithSpell.d(15): Error:Expected';' Привожу кусок кода: func void C_CanNpcCollideWithSpell(var int spellType) { if(spellType == SPL_Whirlwind) { if(C_NpcIsDown(self) || C_BodyStateContains(self,BS_SWIM) || C_BodyStateContains(self,BS_DIVE) || (self.guild == GIL_STONEGOLEM) || (self.guild == GIL_ICEGOLEM) || (self.guild == GIL_FIREGOLEM) || (self.guild == GIL_SUMMONED_GOLEM) || (self.guild == GIL_DEMON) || (self.guild == GIL_SUMMONED_DEMON) || (self.guild == GIL_TROLL) || (self.guild == GIL_SUMMONED_GOLEM) || (self.guild == GIL_DRAGON) || (self.guild == GIL_Stoneguardian) || (self.flags == NPC_FLAG_IMMORTAL) || (self.guild == GIL_SHADOWBEAST) || (self.guild == GIL_Gargoyle)) { return COLL_DONOTHING; (ВОТ ЗДЕСЬ ОШИБКА!!!) }; if(C_NpcIsGateGuard(self) == TRUE) { return COLL_APPLYDAMAGE; }; return COLL_DOEVERYTHING; }; Что делать?
|
|
|
20.08.2006, 17:22
|
#863
|
|
Re: М:Декомпилятор скриптов Готики
2Wirtus:
Полистал я последние страницы темы и понял, что ошибки в-основном у всех типичные, стандартные. VAМ, не прочь было бы написать в руководстве к след. версии ГотикСоурса небольшую заметку, как справляться с этими ошибками дабы процесс компиляции проходил плавно, без эксцесов. ) имхо, было б не плохо.
|
Это всё, конечно так, но каждый, кто хоть один раз исправил все все ошибки может это сделать (написать заметку). Она нужна только новичкам, кто первый раз компилирует скрипты. Можешь и сам помочь, исправишь ошибки и напишешь заметку. ;)
Привожу кусок кода: func void C_CanNpcCollideWithSpell(var int spellType) {
|
Ну, это уже твоя ошибка, ты здесь перемудрил, если функция возвращает значения return COLL_ххх, то зачем её тип исправлять на void, должно быть func int C_CanNpcCollideWithSpell(var int spellType), а ошибку ищи в другом месте. 2VIF:
можно ли через твою программу работать с квестами, создавать новые способы решения задач, новые условия и т. д?
|
Да, всё это делать можно, как и в любом текстовом редакторе, только в специализированной программе это делать проще. Но сначала нужно хорошо изучить скриптинг. Рекомендую прочитать все Уроки скриптологии, если отсутствуют навыки в написании скриптов, походить по другим сайтам, почитать руководства по созданию диалогов, НПС, предметов и т.д. Пробовать что-то делать самому, опыт приобретается постепенно, здесь я тебе ничем помочь не могу.
|
|
|
20.08.2006, 18:09
|
#864
|
|
Re: М:Декомпилятор скриптов Готики
Цитата:
Сообщение от Vam link=board=gothic&t=1095241429&start=850#862 date=08/20/06, в 17:22:18
ты здесь перемудрил, если функция возвращает значения return COLL_ххх, то зачем её тип исправлять на void, должно быть func int C_CanNpcCollideWithSpell(var int spellType), а ошибку ищи в другом месте.
|
[quote] 2VIF: Спасибо, VAM! ;) Если будут ещё какие-то траблы, непременно напишу. Но для начала, попробую во всём разобраться сам.
|
|
|
23.08.2006, 22:24
|
#869
|
|
Re: М:Декомпилятор скриптов Готики
2Vаgrаnt:
B_PlayerFindItem(6750,Lennar_picklock_amount);
|
Что такое 6750? Здесь должно быть имя инстанции предмета. 2Bleidd:
надо сначала название предмета, а затем количество:
|
Здесь ты прав
B_PlayerFindItem(Lennar_picklock_amount,6750);
|
А здесь неправ, Lennar_picklock_amount и есть кол-во. :)
|
|
|
24.08.2006, 15:06
|
#870
|
|
Re: М:Декомпилятор скриптов Готики
Пасиб, исправил. У меня таких ошибок было большинство. Особенно с картами и в диалогах где ГГ передавал или ему что-то передавали. Пример:
instance ItWr_Map_AddonWorld(C_Item) { name = "Забытая долина Строителей"; mainflag = ITEM_KAT_DOCS; flags = ITEM_MISSION | ITEM_MULTI; value = 250; visual = "ItWr_Map_01.3DS"; material = MAT_LEATHER; scemeName = "MAP"; on_state[0] = Use_Map_AddonWorld; description = name; text[0] = ""; text[1] = ""; text[5] = NAME_Value; count[5] = value; };
func void Use_Map_AddonWorld() { var int Document; if(Npc_IsPlayer(self)) { B_SetPlayerMap(6422); }; Document = Doc_CreateMap(); Doc_SetPages(Document,1); Doc_SetPage(Document,0,"Map_AddonWorld.tga",TRUE) ; Doc_SetLevel(Document,"Addon\AddonWorld.zen") ; Doc_SetLevelCoords(Document,-47783,36300,43949,-32300); Doc_Show(Document); };
Исправляю строку B_SetPlayerMap(6422); на B_SetPlayerMap(ItWr_Map_AddonWorld); и ошибка исчезает.
Ну всё, закомпилировал. Пойду проверять.
Добавление от 08/24/06, в 15:26:23 Vam'у. У меня версия 3.0, заметил такое. Хочу подредактировать диалоги, ставлю точку и компилятор зависает. От раскладки не зависит.
|
|
|
24.08.2006, 17:23
|
#872
|
|
Re: М:Декомпилятор скриптов Готики
2Vаgrаnt:
Исправляю строку B_SetPlayerMap(6422); на B_SetPlayerMap(ItWr_Map_AddonWorld); и ошибка исчезает.
|
Таких ошибок быть не должно, они возникают при декомпиляции, если папка System программы находится не в одной директории с экзешником.
У меня версия 3.0, заметил такое. Хочу подредактировать диалоги, ставлю точку и компилятор зависает. От раскладки не зависит
|
Неоднократно писал (разве трудно прочитать несколько страниц после поста анонса V3.00), это баг программы, отключи функцию Tools -> Options -> Auto Complete и можно работать. Добавление от 08/24/06, в 17:25:42 2MaGoth:
Подскажите пожалуйста ссылочку на декомпилированные скрипты Готики от Акеллы. Пятый день лохмачу ветки форума, а найти - немогу.
|
Вот здесь есть что-то.
|
|
|
24.08.2006, 21:58
|
#873
|
|
|
|
|
A.G.F.C.
Регистрация: 02.09.2005
Сообщений: 6
|
|
|
|
|
|
Re: М:Декомпилятор скриптов Готики
Еще советую вот эту ссылку. Это скриптовая болванка от WSA (команда mm-tart) - в ней как раз есть все комменты мегачеловека Vam'а. В "просто декомпилированных" скриптах, что сделал немногоуважемый :) маразмус, комментов нет :)
|
|
|
28.08.2006, 11:04
|
#874
|
|
Re: М:Декомпилятор скриптов Готики
Тестирование новой версии программы GothicSourcer v3.10 завершено.
Большое спасибо всем, кто принимал в нём участие. По результатам тестирования были устранены в программе все найденные ошибки. Большинство ваших пожеланий реализовано, но не все, т.к. для реализации всех пожеланий требуется до полугода работы. Релиз программы намечается на середину сентября. 15 сентября 2006 года проекту GothicSourcer исполняется два года.
Вот полный список всех исправлений и дополнений к программе относительно версии 3.00:
Устраненные ошибки:
1. * * *Окно BuildOptions теперь активно только в открытом проекте. 2. * * *Исправлена ошибка с окном Поиск. 3. * * *Сделана запись в конфигурационный xml файл любых символов, следовательно, возможны Custom меню на разных языках. 4. * * *Функция Auto Complete теперь работает правильно. 5. * * *Исправлена ошибка при сохранении стилей для новых файлов. 6. * * *Декомпиляция уже откомпилированного проекта теперь выполняется корректно. 7. * * *При активном Class View проект теперь загружается нормально. 8. * * *При декомпиляции скриптов в числах с плавающей точкой в качестве разделителя целой и дробной части используется точка. 9. * * *Создание списка переменных в окне Class View выполняется корректно, если скрипт содержит ошибку, то ошибочная часть файла (от ошибки до конца файла) игнорируется без вылета программы. 10. * * *При нарушенном регистре символов в имени функции всплывающая подсказка по аргументам функции работает корректно. 11. * * *На ошибках при линковке осуществляется корректный переход к строке скрипта с ошибкой. 12. * * * Custom настройки меню и панелей инструментов корректно сохраняются в отдельных xml файлах для разных языков программы. 13. * * * Пункт меню Window -> New удалён из программы. 14. * * * Функция Auto Hide Window теперь работает корректно. 15. * * * Панель Class View теперь корректно отслеживает смену проекта. 16. * * * Подсветка синтаксиса скриптов при открытии нового файла теперь работает корректно. 17. * * * Устранена ошибка при декомпиляции файла guilds.d, индексы гильдий теперь отображаются именами. 18. * * * Исправлена ошибка в записи формата с плавающей точкой, буква ‘Е’ в формате теперь обрабатывается корректно. 19. * * * Нумерация строк и колонок в редакторе скриптов теперь начинается с 1.
Дополнения к программе:
1. * * *Регистрация ассоциаций *.d файлов в системе. 2. * * *Разные наборы файлов скриптов для разных проектов в окне MDI. В связи с этим добавился файл конфигурации проекта *.gpc, поэтому старые проекты (v3.00) загрузить невозможно, нужно создавать их заново. 3. * * *Добавлено локальное меню Tab панелей файлов: Close, Selection Color для своих и «чужих» файлов, Options по выбору цветов панели. Закрытие Tab панели средней клавишей мыши с запросом на запись файла, если необходимо. 4. * * *Дополнено локальное меню редактора функциями и «горячими» клавишами: List Members (Ctrl + Space), Type Info (Ctrl + T) и Parameter Info (Ctrl + Shift + Space). 5. * * *Добавлена автозапись файлов скриптов после n минут (настраивается). 6. * * *Запись любых изменений проектов выполняется интеллектуально – автоматически или с запросом на запись. 7. * * * Добавлена функция Toggle Wrap в редактор скриптов, два программируемых режима работы – постоянный и временный, активация через локальное меню файла или (Ctrl + W). 8. * * *При создании проекта теперь автоматически снимается с файлов скриптов атрибут только для чтения. 9. * * *Добавлены локальные меню в Solution Explorer – для файлов Delete и Rename, для проекта и директории – Delete. 10. * * * Реализована функция отслеживания модификации файлов скриптов не из программы и проверка при загрузке проекта на присутствие в нём всех файлов скриптов. 11. * * * Добавлен индикатор прогресса на процессы компиляция и декомпиляция. 12. * * * При загрузке или создании нового проекта в строку статуса выводятся основные фазы процесса в дополнение к курсору – Ждите. 13. * * * Опция First Compile Action в окне создания нового проекта сделана активной по умолчанию. 14. * * * Мультиязыковая поддержка, реализовано три языка – русский, английский и немецкий. 15. * * * Встроенные конвертер, компилятор и декомпилятор моделей. 16. * * * В диалоговом окне «Файл зарегистрирован, но отсутствует в проекте» добавлена кнопка Cancel, при нажатии которой пропускаются все последующие сообщения этого типа. 17. * * * В локальное меню редактора скриптов добавлены функции Find и Replace. 18. * * * Позиция файла скрипта в SRC файле выбирается автоматически, в алфавитном порядке. 19. * * * Реализована возможность добавления файла в проект, если он уже находится в нужной папке проекта. 20. * * * Список предыдущих файлов увеличен до 10. 21. * * * При удалении файла скрипта из проекта в панели Solution Explorer опционально предлагается удалить файл с диска. 22. * * * Окно Message Window автоматически открывается при завершении процесса компиляции или декомпиляции, если оно было закрыто или спрятано. 23. * * * В редактор скриптов добавлена панель номеров строк текста. 24. * * * В редакторе скриптов реализована функция Go to Line. 25. * * * Реализована функция Replace in Files. 26. * * * В редактор скриптов добавлена функция подсветки скобок. 27. * * * Реализована функция проверки отдельного файла скрипта на ошибки. 28. * * * Реализован механизм безопасного копирования созданных двоичных файлов в директории Готики. 29. * * * Декомпилированные файлы моделей (asc) теперь раскладываются по «своим» папкам. 30. * * * При конвертации моделей в результирующей папке теперь создаются все файлы, требуемые для модели. 31. * * * Компиляцию динамических моделей можно выполнять частично, как и движком Готики. 32. * * * Реализована система навигации по ошибкам и вниманиям в окне Message Window. 33. * * * В компиляторе скриптов реализована функция проверки строковых аргументов функций на верхний регистр, опционально возможна их автоматическая коррекция. 34. * * * В компилятор добавлены функции получения значений строковых переменных и переменных с плавающей точкой из массивов. Функция скриптов теперь может возвращать значение переменной с плавающей точкой. Все эти изменения корректно обрабатываются движком Готик. 35. * * * В компиляторе скриптов убраны все внимания типа «Possible error, function should return value» из функций проверки условия диалога при следующем её написании: - * * *имя функции завершается словом “_Condition”; - * * *в конце функции есть блок if *и в конце блока присутствует выражение return TRUE; Все оставшиеся внимания значимы и могут приводить к потенциальным ошибкам. 36. * * * Добавлена опция прерывания процесса компиляции или декомпиляции пользователем. 37. * * * В окне Class View комментарии к встроенным функциям скриптов выдаются на разных языках. 38. * * * В редакторе скриптов реализована функция перехода на декларацию переменной и обратного возврата.
P.S.: Список может быть неполным, очень сложно отследить все изменения.
|
|
|
14.09.2006, 09:23
|
#875
|
|
Re: М:Декомпилятор скриптов Готики
Вышла в свет новая версия инструмента Готического скриптёра и модельера: Графическая среда разработки скриптов и моделей [glow=red,2,300]GothicSourcer V3.10[/glow] *для платформ Готики и Готики 2. Качать о тсюда. Успешного и продуктивного применения. *:)
|
|
|
18.09.2006, 01:46
|
#877
|
|
Re: М:Декомпилятор скриптов Готики
Перешел с версии 2.40 и сразу заметил пару приятных фишек, одна из которых помогла выявить страшные скриптовые баги (Неправильный регистр в Waypoints и Freepoints), возникшие вследствие чрезмерного реплесинга :) Также понравилась фишка с переносом компилированных файлов.
Все же выработалась привычка работы в UltraEdit, до того ужасная, что взглянув на вроде бы более информативный внутренний редактор программы, долго не мог разобраться в собственных скриптах, отсюда просьба-пожелание - добавить в контекстное меню помимо функций "Открыть", "Удалить", "Переименовать", функцию типа "Открыть с помощью" ассоциированной программы.
|
|
|
18.09.2006, 18:25
|
#879
|
|
|
|
|
A.G.F.C.
Регистрация: 04.09.2006
Сообщений: 20
|
|
|
|
|
|
Re: М:Декомпилятор скриптов Готики
Vam'u: У меня были маленькие проблеммы с VGS'om 3.10, поначалу было непонятно, каспер зараза начал ругаться на оболочку инсталятора,(указаваю, не на прогу а на сам инсталятор.
Проверял на VGS не жалуется а стоит зайти в папку со скаченным VGS'om 3.10, или в папку с деинсталятором, эта зараза начинает орать!), это происходило у меня на работе, а дома хоть бы хны. :-/ Не пойму в чем дело :-[, *сегодня попробовал еще раз на работе в папку VGS'a зайти, зашел ничего не произошло даже не знаю счего это :(.
По поводу работы проги, мною обнаружен незначительный глюк, незнаю это кому как, а мне иногда нужно создавать пустой новый проект(решение).
- Проблема в том что при созданом новом пустом проекте, практически невозможно создать в нем новые папки для файлов скриптов, и самих скриптов. Поясню, - В проекте все пепки и файлы первого уровня создаются, а вот при попытке создать внутри этих папок ничего создать "НЕ ВОЗМОЖНО". - Вернее, файлы создаются в ней сохраняются мною при закрытии проекта. - а при повторном его открытии, этих вложенных файлов и папок в открытом проекте нема, хотя на жестком диске все так так было создано в первый раз все файла и папки на месте. Данный глюк в обеих последних версиях. :(
========== PS. Все таки былобы лучше оставить "Проект", чем "Решение"(ИМХО).
|
|
|
19.09.2006, 10:55
|
#880
|
|
Re: М:Декомпилятор скриптов Готики
2Ukur:
добавить в контекстное меню помимо функций "Открыть", "Удалить", "Переименовать", функцию типа "Открыть с помощью" ассоциированной программы.
|
Добавить-то можно, а что дальше..., редактировать скрипт в одной программе, а навигацию по скриптам, ошибкам, декларациям, компиляцию и т.д. - осуществлять в другой программе? Кто может гарантировать синхронизацию этих процессов? Я другой программой управлять не могу. Может лучше, по возможности, настроить стиль редактора как можно ближе к UE и всё делать в одной программе? Можешь сказать те особенности UE, которые тебя привлекают и их нет в моей программе. 2SubZero[X]:
Может ты скорректируешь размер окна в соответствии с разрешением?
|
Интересно, какое-же у тебя разрешение экрана, если это окно в него не помещается?. В обычном диалоговом окне менять размер окна и его всех элементов в соответствии с разрешением экрана невозможно. Могу сделать это окно только меньше и, если необходимо, добавить горизонтальный скроллинг. 2MaGoth:
- Проблема в том что при созданом новом пустом проекте, практически невозможно создать в нем новые папки для файлов скриптов, и самих скриптов.
|
Исправлено, ожидай в следующей версии, а пока.... :(
|
|
|
Здесь присутствуют: 8 (пользователей: 0 , гостей: 8)
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 04:55. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|