[AGFC: Valley of Gothic] М:Декомпилятор скриптов Готики

Страница 22 из 31 « Первая 121516171819202122 23242526272829 Последняя »
Поиск в этой теме:

Расширенный поиск
Старый 08.08.2006, 18:46   #841
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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:13   #843
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

   Vam. Спасибо  за  разъяснения, но  вынужден  огорчить, даже  после  тех  исправлений, которые  ты  привел, программа  все  равно  спотыкается  на  строчке  «Story\B_Content\B_Addon_PiratesGoHome.d(93): Error: Unknown identifier: ELSE
И  перестает  считать  ошибкой  только  после  того, как  я  удаляю  
 else
     {
           return FALSE;
     };
хочется  спросить: если  удалить  эти  строчки, не  возникнут  косяки  в  игре?
И  с  Булко  теже  проблемы. Story\Dialoge\DIA_Sld_807_Bullco.d(156): Error: Expected «;»,
В  прошлый  раз  было  155  в  скобках.
Может  надо  ещё  что-нибудь  исправить?
Ответить с цитированием
Старый 09.08.2006, 17:29   #844
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2VIF:
хочется  спросить: если  удалить  эти  строчки, не  возникнут  косяки  в  игре?
Ты забыл стереть ';' в предыдущей строке перед else, посмотри как я написал.
И  с  Булко  теже  проблемы. Story\Dialoge\DIA_Sld_807_Bullco.d(156): Error: Expected «;»,
У меня написано все правильно, обращай внимание на ';'
Ответить с цитированием
Старый 10.08.2006, 18:14   #845
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2VIF:
У  меня  вопрос  относительно  «;», какова  их  функция?
Завершение фразы синтаксиса языка Daedalus.
TRUEself.aivar[AIV_LastFightComment] == FALSE;
1) правильно  ли  я  исправил  новую  ошибку
Нет, неправильно, нужно вот так:
self.aivar[AIV_LastFightComment] = FALSE;
return TRUE;
Это тоже ошибка датника, у всех этих ошибок один стиль - стековый, поясню в общих чертах: фраза на которой возникла ошибка ставится в конец строки, эту фразу нужно оттуда взять и состыковать (логически) со строкой выше, если это имеет место, в противном случае исправить в этой фразе ошибку и записать строкой выше. Первую часть строки необходимо саму по себе привести (логически) к правильному виду.  ;)
2) можно  ли  считать  процесс  компиляции  завершенным (причем  успешно), если  же  нет, то  почему?
Пока программа выдает ошибки процесс создания dat файла не закончен. Все ошибки нужно правильно устранить.
Ответить с цитированием
Старый 10.08.2006, 20:21   #847
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Vam’у
Значит, до  тех  пор, пока  не  будут  устранены  все  ошибки  программа  не  закончит  компиляцию. Это  понятно, чтож  похоже  у  меня  нашлось  дело  на  выходные, займусь  этим. Но  тогда  возникает  другой  вопрос. На  некоторых  ошибках  программа  сама  останавливается, и  после  правильного  исправления  не  задерживается  на  них, но  после  декомпиляции  есть  и  другие  ошибки  выделенные  красным, на  них  программа  не  останавливается, как  мне  узнать, правильно  ли  я  исправил  ошибку  или  нет? Я  напомню, что  я  не  программист, и  ошибки  пытаюсь  устранить  используя  интуицию. Чтоб  было  понятнее  куда  я  клоню, я  приведу  пример: допустим  я  нашел  строку  красного  цвета, перешел  к  фрагменту  с  ошибкой, исправил  то, что  мне6  показалось  неправильным. А  дальше? Мне  придется  каждый  раз  после  исправления  компилировать  обратно  все  файлы  в  Gothic.dat, а  если  компиляция  не  завершена, опять  искать  ту  строчку  и  исправлять  все  по  новой. Приведя  этот  пример, я  хочу  спросить: может  ли  программа  подсказать  мне, правильно  ли  я  исправил  ошибку  или  хотя  бы  исправлена  ли  ошибка  не  прибегая  к  повторной   компиляции?  Если  непонятно  выразился, скажи  об  этом  (вернее  напиши), попробую  выразиться  по  другому (боле  понятно).
Ответить с цитированием
Старый 10.08.2006, 20:47   #848
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2VIF:
может  ли  программа  подсказать  мне, правильно  ли  я  исправил  ошибку  или  хотя  бы  исправлена  ли  ошибка  не  прибегая  к  повторной   компиляции?
Нет, только повторная компиляция приведет к правильному результату, но выполнять её после каждой ошибки нет смысла. Есть критические ошибки, после которых происходит останов компиляции, т.к. дальнейшая компиляция скрипта без устранения этой ошибки невозможна. Здесь выход такой - исправил, повторно компилим.
Есть ошибки не критические, которые к останову компиляции не приводят, но линковщик, который создает dat файл не запустится, пока они не будут устранены. Здесь выход такой - исправляем все "красные" ошибки и повторно компилим скрипты, и так до тех пор, пока ошибок не будет.
Но это не значит, что скрипты их не содержат в любом виде, устранены только грамматические и синтаксические ошибки, логические же ошибки всегда могут остаться.
В следующей версии программы введено облегчение работы с ошибками, на них можно будет проверять каждый отдельный файл скрипта, не прибегая к общей компиляции.
Ответить с цитированием
Старый 13.08.2006, 16:11   #849
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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;
Ответить с цитированием
Старый 14.08.2006, 17:17   #851
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Vam’у. Сообщение  прочитал. Большое  спасибо  за  разъяснения. Теперь  попытаюсь  исправить  остальные  ошибки. ;)
Ответить с цитированием
Старый 16.08.2006, 19:24   #852
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Vam’у. Разобрался *во *всех *ошибках *и *их *исправил за *исключением *одной. Вот *она (привожу *полностью): *
AI\magic\spell_processmana.d(317) error: Function should return value
func int Spell_ProcessMana(var int manaInvested)
{
* * *var int activeSpell;
* * *activeSpell = Npc_GetActiveSpell(self);
* * *if(activeSpell == SPL_PalLight)
* * *{
* * * * * *return Spell_Logic_PalLight(manaInvested);
* * *};
* * *if(activeSpell == SPL_PalLightHeal)
* * *{
* * * * * *return Spell_Logic_PalLightHeal(manaInvested);
* * *};
* * *if(activeSpell == SPL_PalHolyBolt)
* * *{
* * * * * *return Spell_Logic_PalHolyBolt(manaInvested);
* * *};
* * *if(activeSpell == SPL_PalMediumHeal)
* * *{
* * * * * *return Spell_Logic_PalMediumHeal(manaInvested);
* * *};
* * *if(activeSpell == SPL_PalRepelEvil)
* * *{
* * * * * *return Spell_Logic_PalRepelEvil(manaInvested);
* * *};
* * *if(activeSpell == SPL_PalFullHeal)
* * *{
* * * * * *return Spell_Logic_PalFullHeal(manaInvested);
* * *};
* * *if(activeSpell == SPL_PalDestroyEvil)
* * *{
* * * * * *return Spell_Logic_PalDestroyEvil(manaInvested);
* * *};
* * *if(activeSpell == SPL_PalTeleportSecret)
* * *{
* * * * * *return Spell_Logic_PalTeleportSecret(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportSeaport)
* * *{
* * * * * *return Spell_Logic_TeleportSeaport(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportMonastery)
* * *{
* * * * * *return Spell_Logic_TeleportMonastery(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportFarm)
* * *{
* * * * * *return Spell_Logic_TeleportFarm(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportXardas)
* * *{
* * * * * *return Spell_Logic_TeleportXardas(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportPassNW)
* * *{
* * * * * *return Spell_Logic_TeleportPassNW(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportPassOW)
* * *{
* * * * * *return Spell_Logic_TeleportPassOW(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportOC)
* * *{
* * * * * *return Spell_Logic_TeleportOC(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportOWDemonTower)
* * *{
* * * * * *return Spell_Logic_TeleportOWDemonTower(manaInvested);
* * *};
* * *if(activeSpell == SPL_TeleportTaverne)
* * *{
* * * * * *return Spell_Logic_TeleportTaverne(manaInvested);
* * *};
* * *if(activeSpell == SPL_Light)
* * *{
* * * * * *return Spell_Logic_Light(manaInvested);
* * *};
* * *if(activeSpell == SPL_Firebolt)
* * *{
* * * * * *return Spell_Logic_Firebolt(manaInvested);
* * *};
* * *if(activeSpell == SPL_Icebolt)
* * *{
* * * * * *return Spell_Logic_IceBolt(manaInvested);
* * *};
* * *if(activeSpell == SPL_Zap)
* * *{
* * * * * *return Spell_Logic_Zap(manaInvested);
* * *};
* * *if(activeSpell == SPL_LightHeal)
* * *{
* * * * * *return Spell_Logic_LightHeal(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonGoblinSkeleton)
* * *{
* * * * * *return Spell_Logic_SummonGoblinSkeleton(manaInvested);
* * *};
* * *if(activeSpell == SPL_InstantFireball)
* * *{
* * * * * *return Spell_Logic_InstantFireball(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonWolf)
* * *{
* * * * * *return Spell_Logic_SummonWolf(manaInvested);
* * *};
* * *if(activeSpell == SPL_WindFist)
* * *{
* * * * * *return Spell_Logic_WindFist(manaInvested);
* * *};
* * *if(activeSpell == SPL_Sleep)
* * *{
* * * * * *return Spell_Logic_Sleep(manaInvested);
* * *};
* * *if(activeSpell == SPL_MediumHeal)
* * *{
* * * * * *return Spell_Logic_MediumHeal(manaInvested);
* * *};
* * *if(activeSpell == SPL_LightningFlash)
* * *{
* * * * * *return Spell_Logic_LightningFlash(manaInvested);
* * *};
* * *if(activeSpell == SPL_ChargeFireball)
* * *{
* * * * * *return Spell_Logic_ChargeFireball(manaInvested);
* * *};
* * *if(activeSpell == SPL_ChargeZap)
* * *{
* * * * * *return Spell_Logic_ChargeZap(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonSkeleton)
* * *{
* * * * * *return Spell_Logic_SummonSkeleton(manaInvested);
* * *};
* * *if(activeSpell == SPL_Fear)
* * *{
* * * * * *return Spell_Logic_Fear(manaInvested);
* * *};
* * *if(activeSpell == SPL_IceCube)
* * *{
* * * * * *return Spell_Logic_IceCube(manaInvested);
* * *};
* * *if(activeSpell == SPL_ChargeZap)
* * *{
* * * * * *return Spell_Logic_ChargeZap(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonGolem)
* * *{
* * * * * *return Spell_Logic_SummonGolem(manaInvested);
* * *};
* * *if(activeSpell == SPL_DestroyUndead)
* * *{
* * * * * *return Spell_Logic_DestroyUndead(manaInvested);
* * *};
* * *if(activeSpell == SPL_Pyrokinesis)
* * *{
* * * * * *return Spell_Logic_Pyrokinesis(manaInvested);
* * *};
* * *if(activeSpell == SPL_Firestorm)
* * *{
* * * * * *return Spell_Logic_Firestorm(manaInvested);
* * *};
* * *if(activeSpell == SPL_IceWave)
* * *{
* * * * * *return Spell_Logic_IceWave(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonDemon)
* * *{
* * * * * *return Spell_Logic_SummonDemon(manaInvested);
* * *};
* * *if(activeSpell == SPL_FullHeal)
* * *{
* * * * * *return Spell_Logic_FullHeal(manaInvested);
* * *};
* * *if(activeSpell == SPL_Firerain)
* * *{
* * * * * *return Spell_Logic_Firerain(manaInvested);
* * *};
* * *if(activeSpell == SPL_BreathOfDeath)
* * *{
* * * * * *return Spell_Logic_BreathOfDeath(manaInvested);
* * *};
* * *if(activeSpell == SPL_MassDeath)
* * *{
* * * * * *return Spell_Logic_Massdeath(manaInvested);
* * *};
* * *if(activeSpell == SPL_ArmyOfDarkness)
* * *{
* * * * * *return Spell_Logic_ArmyOfDarkness(manaInvested);
* * *};
* * *if(activeSpell == SPL_Shrink)
* * *{
* * * * * *return Spell_Logic_Shrink(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfSheep)
* * *{
* * * * * *return Spell_Logic_TrfSheep(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfScavenger)
* * *{
* * * * * *return Spell_Logic_TrfScavenger(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfGiantRat)
* * *{
* * * * * *return Spell_Logic_TrfGiantRat(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfGiantBug)
* * *{
* * * * * *return Spell_Logic_TrfGiantBug(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfWolf)
* * *{
* * * * * *return Spell_Logic_TrfWolf(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfWaran)
* * *{
* * * * * *return Spell_Logic_TrfWaran(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfSnapper)
* * *{
* * * * * *return Spell_Logic_TrfSnapper(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfWarg)
* * *{
* * * * * *return Spell_Logic_TrfWarg(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfFireWaran)
* * *{
* * * * * *return Spell_Logic_TrfFireWaran(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfLurker)
* * *{
* * * * * *return Spell_Logic_TrfLurker(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfShadowbeast)
* * *{
* * * * * *return Spell_Logic_TrfShadowbeast(manaInvested);
* * *};
* * *if(activeSpell == SPL_TrfDragonSnapper)
* * *{
* * * * * *return Spell_Logic_TrfDragonSnapper(manaInvested);
* * *};
* * *if(activeSpell == SPL_Charm)
* * *{
* * * * * *return Spell_Logic_Charm(manaInvested);
* * *};
* * *if(activeSpell == SPL_MasterOfDisaster)
* * *{
* * * * * *return Spell_Logic_MasterOfDisaster(manaInvested);
* * *};
* * *if(activeSpell == SPL_ConcussionBolt)
* * *{
* * * * * *return Spell_Logic_Concussionbolt(manaInvested);
* * *};
* * *if(activeSpell == SPL_Deathbolt)
* * *{
* * * * * *return Spell_Logic_Deathbolt(manaInvested);
* * *};
* * *if(activeSpell == SPL_Deathball)
* * *{
* * * * * *return Spell_Logic_Deathball(manaInvested);
* * *};
* * *if(activeSpell == SPL_Thunderstorm)
* * *{
* * * * * *return Spell_Logic_Thunderstorm(manaInvested);
* * *};
* * *if(activeSpell == SPL_WaterFist)
* * *{
* * * * * *return Spell_Logic_Waterfist(manaInvested);
* * *};
* * *if(activeSpell == SPL_Whirlwind)
* * *{
* * * * * *return Spell_Logic_Whirlwind(manaInvested);
* * *};
* * *if(activeSpell == SPL_Geyser)
* * *{
* * * * * *return Spell_Logic_Geyser(manaInvested);
* * *};
* * *if(activeSpell == SPL_Inflate)
* * *{
* * * * * *return Spell_Logic_Inflate(manaInvested);
* * *};
* * *if(activeSpell == SPL_IceLance)
* * *{
* * * * * *return Spell_Logic_Icelance(manaInvested);
* * *};
* * *if(activeSpell == SPL_Swarm)
* * *{
* * * * * *return Spell_Logic_Swarm(manaInvested);
* * *};
* * *if(activeSpell == SPL_GreenTentacle)
* * *{
* * * * * *return Spell_Logic_Greententacle(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonGuardian)
* * *{
* * * * * *return Spell_Logic_SummonGuardian(manaInvested);
* * *};
* * *if(activeSpell == SPL_Energyball)
* * *{
* * * * * *return Spell_Logic_EnergyBall(manaInvested);
* * *};
* * *if(activeSpell == SPL_SuckEnergy)
* * *{
* * * * * *return Spell_Logic_SuckEnergy(manaInvested);
* * *};
* * *if(activeSpell == SPL_Skull)
* * *{
* * * * * *return Spell_Logic_Skull(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonZombie)
* * *{
* * * * * *return Spell_Logic_SummonZombie(manaInvested);
* * *};
* * *if(activeSpell == SPL_SummonMud)
* * *{
* * * * * *return Spell_Logic_SummonMud(manaInvested);
* * *};
};

Следуя *советам *из *поста *№ 833 *я *меняю *int *на *void, но *появляется *следующая *ошибка *(стока *с *ошибкой *последняя):
AI\magic\spell_processmana.d(7): error: expected «;»

func void Spell_ProcessMana(var int manaInvested)
{
* * *var int activeSpell;
* * *activeSpell = Npc_GetActiveSpell(self);
* * *if(activeSpell == SPL_PalLight)
* * *{
* * * * * *return Spell_Logic_PalLight(manaInvested);

Ещё *я *пытался *добавить *return *в *конец *(опять *же *по *совету *из *поста *№ 833), но *не *получается *её *исправить. Подскажи *как *её *исправить? Заранее *благодарен.
Ответить с цитированием
Старый 16.08.2006, 19:51   #853
lastic

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2VIF:
Такие длинные куски кода хотя бы в спойлер заключайте. Или темплейтами пользуйтесь..
Ответить с цитированием
Старый 16.08.2006, 21:14   #854
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2VIF:
Ещё  я  пытался  добавить  return  в  конец  (опять  же  по  совету  из  поста  № 833), но  не  получается  её  исправить. Подскажи  как  её  исправить?
Всю функцию можно было и не приводить, достаточно только названия.
В конец функции нужно записать return SPL_SENDSTOP;
Ответить с цитированием
Старый 19.08.2006, 08:24   #855
Wirtus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Надеюсь в этой ветке мне ответят на мой вопрос, чёрт возьми :)
Вопрос непосредственно к VAM'y и тем, кто понимает о чём идёт речь. Опишу всё по порядку. После декомпиляции dat и bin файлов у меня в папке GothicProject появляются скрипты с расширением *d. После внесённых мною изменений, я нажимаю на кнопку compile на вкладке build и жду компиляции. Что характерно, компиляция проходит очень быстро, и судя по всему не все скрипты в итоге собираются в единый файл. Хрен знает. После компиляции в папке SolGothic (что в GothicProject) появляются новые Gothic.dat и Ou.bin Хотя как мне кажется, они появились сразу же после декомпиляции. Почему - не знаю. Было и такое. Вобщем, заменяю оригинальные файлы полученными и запускаю игру. Начинаю с самого начала. Для пробы я в скриптах изменял диалоги Ксардаса. Ни-че-го не получилось! Что за чёрт возьми?! Как были диалоги изначально, так и остались. Вот тебе и делай после этого русификатор! И так сто раз!
Кстати, файл VDFS.dmp я удалил на всякий случай. Есть ещё какие варианты?
Ответить с цитированием
Старый 19.08.2006, 08:52   #856
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2Wirtus:
После внесённых мною изменений, я нажимаю на кнопку compile на вкладке build и жду компиляции. Что характерно, компиляция проходит очень быстро, и судя по всему не все скрипты в итоге собираются в единый файл.
Если есть ошибки в скриптах, то бинарные файлы компилятором не будут созданы, ошибки сначала нужно исправить.
В окне Message Window можно видеть:
- процесс компиляции нормально завершен, присутствуют записи о создании dat и bin файлов, только при условии, что в последней строке - errors(xxx), warnings(xxx), кол-во ошибок равно 0.
- все ошибки, это строки выделенные красным цветом. Во всех dat файлах Готики есть ошибки, после декомпиляции они выявляются, новая компиляция сразу никогда не проходит, нужно исправить все ошибки.
Советы по исправлению ошибок - последние несколько страниц этой темы.
Ответить с цитированием
Старый 19.08.2006, 09:03   #857
Wirtus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Есть ошибки какие-то...В основном expected!
Запятые чтоли надо кое-где расставить или чё...
Ответить с цитированием
Старый 19.08.2006, 09:11   #858
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Есть ошибки какие-то...В основном expected!
Читаем последние страницы темы, только потом, если что не ясно - спрашиваем, и конкретно - с приведением сообщения об ошибке, а не таким образом
Запятые чтоли надо кое-где расставить или чё...
, на такой вопрос есть только один ответ - учите скриптинг.
Ответить с цитированием
Старый 19.08.2006, 09:18   #859
Wirtus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

После декомпиляции было выдано 3 ошибки, после компиляции 1ошибка:
Story\Log_Entries\LOG_Constants_Hoshi.d(23): Error: Expected';'

Что это такое? ((((
Обращается к "ингридиентам для руны Смерч"

Кстати, недавно описывалась эта проблема. Но как понять "замени вложенные кавычки на апострофы '"
Ответить с цитированием
Старый 20.08.2006, 00:28   #860
basilio58

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Vam’у. Vam, хочу  спросить: можно  ли  через  твою  программу  работать  с  квестами, создавать  новые  способы  решения  задач, новые  условия  и  т. д? Допустим, я  хочу  прописать  возможность, при  которой  игрок  может  стать  и  магом  воды  и  некромантом  (во  второй  Готике), то  есть,  чтобы  стать  некромантом  достаточно  принести  «Коготь  Белиара»  Ксардасу  и  в  диалоговом  окне  прописать  строчку, в  которой  Игрок  в  лице  ГГ  изъявляет  желание  обучаться  у  Ксардаса  магии, либо  другая  ситуация: когда  игрок  выполняет  квест  Ватраса  по  поиску  пропавших  людей, то  в  диалоге  можно  прописать  строчку, в  которой  игрок  желает  вступить  в  ряды  магов  воды, после  чего  Ватрас  направляет  игрока  к  Сатурасу, который  попричитав, присваивает  ГГ  статус  мага  воды.Теперь  игрок  может  изучать  все  имеющиеся  руны. Должен  отметить, что  эти  гильдии  должны  быть  дополнительными  как  например  гильдия  воров, то  есть, всупить  в  эти  гильдии  может  любой  игрок  независимо  от  того  за  кого  он  играет (за  паладина, за  наемника, за  мага  огня). Ещё  одна  идея: если  посмотреть  на  сюжет  игры, то  нужно  отметить, что  ГГ  рядовой. Что  это  означает. ГГ  дают  задания, и  он  их  выполняет. Немного  скучно. Я  предлагаю  внести  следующие  изменения. Допустим, игрок  играет  за  ополчение, после  выполнения  заданий  Андре, либо  сам  Андре,  либо  Хаген  присваивают  ГГ  статус  командира  ополчения. Теперь  игрок  может  подходить  к  любому  ополченцу  и  отдавать  команды: следовать  за  ГГ (при  выполнении  какого-нибудь  задания), охранять  предмет, либо  точку, атаковать  всех  врагов  в  поле  видимости, либо  какого-нибудь  конкретного  врага, оставаться  на  месте  и  что-нибудь  в  этом  роде. А  став  паладином, Хаген  может  сделать  ГГ  своей  правой  рукой, тогда  игрок  может  командовать  не  только  ополченцами, но  и  паладинами. Тоже  касается  и  наемников  и  магов  огня  (есть  идеи  и  для  этих  гильдий), а  в  Яркендаре  можно  стать  главарем  бандитов  после  смерти  Ворона. У  меня  полно  идей  по  изменению  Готики  (как  первой  так  и  второй). Проблема  в  недостатке  знаний, как  их  реализовать. Если  знаешь  как  их  реализовать  то  объясни  (желательно  на  примерах). Если  объём  материала  будет  слишком  большим, то  в  ответе  напиши, чтобы  я  тебе  сообщил  свой  адрес  почтовый, пошли  мне  письмо, чтоб  ветку  не  засорять. С  уважением  VIF..      
Ответить с цитированием
Старый 20.08.2006, 15:43   #862
Wirtus

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
Wirtus

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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! ;) Если будут ещё какие-то траблы, непременно напишу. Но для начала, попробую во всём разобраться сам.
Ответить с цитированием
Старый 20.08.2006, 18:35   #865
VIF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Vam'у. Сообщение  прочитал. Чтож  попробую  разобраться  с  квестами  и  прочим.
Ответить с цитированием
Старый 21.08.2006, 07:59   #866
Wirtus

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

А чё мы мучаемся, исправляя все эти ошибки. Не проще ли скачать уже готовые декомпилированные скрипты от Акеллы и просто всунуть их в свой проект. Остаётся только изменить тексты, диалоги как тебе хочется и всё нормально.
Не стоит умничать, но мне только сегодня утром пришла в голову эта мысль)))
Ответить с цитированием
Старый 23.08.2006, 16:17   #867
ra3or

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Такая проблемка:

Function "B_PLAYERFINDITEM": Argument 1: Cannot convert from type int to instance

Вот здесь возникает:

func void Use_LennarPaket()
{
     B_PlayerFindItem(6750,Lennar_picklock_amount) ;
     Snd_Play("Geldbeutel");                          // Вот здесь
     LennarPaket_Open = TRUE;
};


instance ItMi_Zeitspalt_Addon(C_Item)
{
     name = "Черная руда";
     mainflag = ITEM_KAT_POTIONS;
     flags = ITEM_MULTI;
     value = 0;
     visual = "ItMi_Zeitspalt_Addon.3DS";
     scemeName = "MAPSEALED";
     on_state[0] = Use_Zeitspalt_Addon;
     material = MAT_STONE;
     wear = WEAR_EFFECT;
     effect = "SPELLFX_WEAKGLIMMER";
     description = name;
     text[3] = "Действие неизвестно ";
     inv_zbias = INVCAM_ENTF_MISC_STANDARD;
};


Подскажите пжалуйста.
Ответить с цитированием
Старый 23.08.2006, 18:51   #868
Bleidd

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2Vаgrаnt:
В строке B_PlayerFindItem(6750,Lennar_picklock_amount);
надо сначала название предмета, а затем количество:
B_PlayerFindItem(Lennar_picklock_amount,6750);
Ответить с цитированием
Старый 23.08.2006, 22:24   #869
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
ra3or

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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:20   #871
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М:Декомпилятор скриптов Готики

Привет всем Готам! :D
Подскажите пожалуйста ссылочку на декомпилированные скрипты Готики от Акеллы. Пятый день лохмачу ветки форума, а найти - немогу. Ведь видел же где-то. :'( *
Меня интересует издание второе - дополненное, с комментариями многоуважаемого VAMa.

P.S. Заранее благодарю.
Отправить личное сообщение для Ответить с цитированием
Старый 24.08.2006, 17:23   #872
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

По умолчанию Re: М:Декомпилятор скриптов Готики

Еще советую вот эту ссылку.

Это скриптовая болванка от WSA (команда mm-tart) - в ней как раз есть все комменты мегачеловека Vam'а. В  "просто декомпилированных" скриптах, что сделал немногоуважемый :) маразмус, комментов нет :)
Отправить личное сообщение для Ответить с цитированием
Старый 28.08.2006, 11:04   #874
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию 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
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Вышла в свет новая версия инструмента Готического скриптёра и модельера:
Графическая среда разработки скриптов и моделей [glow=red,2,300]GothicSourcer V3.10[/glow] *для платформ Готики и Готики 2.

Качать о
тсюда
.

Успешного и продуктивного применения. *:)
Ответить с цитированием
Старый 14.09.2006, 18:29   #876
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М:Декомпилятор скриптов Готики

Vam
Молодчина, держи за твой труд :pivo::pivo::pivo:
VGS 3.0 - отличная прога, а энта еще лучше будет, ;D
Обещалось 15-го, на день раньше вышло, ;)
Ща скачаю и дома буду тестить, ;D.


Добавление от 09/14/06, в 18:32:14
PS. Все бы так работали ;D и Ваше Респект те огромный, ;)
Отправить личное сообщение для Ответить с цитированием
Старый 18.09.2006, 01:46   #877
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Перешел с версии 2.40 и сразу заметил пару приятных фишек, одна из которых помогла выявить страшные скриптовые баги (Неправильный регистр в Waypoints и Freepoints), возникшие вследствие чрезмерного реплесинга :)
Также понравилась фишка с переносом компилированных файлов.

Все же выработалась привычка работы в UltraEdit, до того ужасная, что взглянув на вроде бы более информативный внутренний редактор программы, долго не мог разобраться в собственных скриптах, отсюда просьба-пожелание - добавить в контекстное меню помимо функций "Открыть", "Удалить", "Переименовать", функцию типа "Открыть с помощью" ассоциированной программы.
Ответить с цитированием
Старый 18.09.2006, 08:58   #878
Xentar

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

Не знаю, возможно только у меня проявляется эта небольшая недоработка, но когда выбираешь добавить скрипт и он просит выбрать для него место в src-файле, то окошко очень большое и приходится менять разрешение, чтобы указать место. Предложение: Может ты скорректируешь размер окна в соответствии с разрешением?
Ответить с цитированием
Старый 18.09.2006, 18:25   #879
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М:Декомпилятор скриптов Готики

Vam'u:
У меня были маленькие проблеммы с VGS'om 3.10, поначалу было непонятно, каспер зараза начал ругаться на оболочку инсталятора,(указаваю, не на прогу а на сам инсталятор.

Проверял на VGS не жалуется а стоит зайти в папку со скаченным VGS'om 3.10, или в папку с деинсталятором, эта зараза начинает орать!), это происходило у меня на работе, а дома хоть бы хны. :-/
Не пойму в чем дело :-[, *сегодня попробовал еще раз на работе в папку VGS'a зайти, зашел ничего не произошло даже не знаю счего это :(.

По поводу работы проги, мною обнаружен незначительный глюк, незнаю это кому как, а мне иногда нужно создавать пустой новый проект(решение).

- Проблема в том что при созданом новом пустом проекте, практически невозможно создать в нем новые папки для файлов скриптов, и самих скриптов.
Поясню,
- В проекте все пепки и файлы первого уровня создаются, а вот при попытке создать внутри этих папок ничего создать "НЕ ВОЗМОЖНО".
- Вернее, файлы создаются в ней сохраняются мною при закрытии проекта.
- а при повторном его открытии, этих вложенных файлов и папок в открытом проекте нема, хотя на жестком диске все так так было создано в первый раз все файла и папки на месте.
Данный глюк в обеих последних версиях. :(

==========
PS. Все таки былобы лучше оставить "Проект", чем "Решение"(ИМХО).
Отправить личное сообщение для Ответить с цитированием
Старый 19.09.2006, 10:55   #880
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М:Декомпилятор скриптов Готики

2Ukur:
добавить в контекстное меню помимо функций "Открыть", "Удалить", "Переименовать", функцию типа "Открыть с помощью" ассоциированной программы.
Добавить-то можно, а что дальше..., редактировать скрипт в одной программе, а навигацию по скриптам, ошибкам, декларациям, компиляцию и т.д. - осуществлять в другой программе? Кто может гарантировать синхронизацию этих процессов? Я другой программой управлять не могу. Может лучше, по возможности, настроить стиль редактора как можно ближе к UE и всё делать в одной программе? Можешь сказать те особенности UE, которые тебя привлекают и их нет в моей программе.

2SubZero[X]:
Может ты скорректируешь размер окна в соответствии с разрешением?
Интересно, какое-же у тебя разрешение экрана, если это окно в него не помещается?. В обычном диалоговом окне менять размер окна и его всех элементов в соответствии с разрешением экрана невозможно. Могу сделать это окно только меньше и, если необходимо, добавить горизонтальный скроллинг.

2MaGoth:
- Проблема в том что при созданом новом пустом проекте, практически невозможно создать в нем новые папки для файлов скриптов, и самих скриптов.
Исправлено, ожидай в следующей версии, а пока....  :(
Ответить с цитированием
Страница 22 из 31 « Первая 121516171819202122 23242526272829 Последняя »


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе

Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.


Текущее время: 14:14. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot

AGFC: Valley of Gothic © 2004-2022

Яндекс.Метрика