|
|
24.08.2005, 10:12
|
#562
|
|
Re: Декомпилятор скриптов Готики
2Finsternis:
У меня вот какая идея, а как насчет того, чтобы можно было проверять на ошибки без компиляции. Синтаксические ошибки определяутся как ошибки, неописанные переменные как предупреждения ну и т.д. ИМХО, просто иногда нет смысла производить полную компиляцию нескольких тысяч скриптов для того, чтобы проверить есть ли ошибки в свежем скрипте.
|
Ошибки без компиляции найти нельзя, поясняю, компилятор состоит из лексикографического анализатора и линковщика. Первый проверяет всю грамматику и осуществляет преобразования текста конкретного файла скриптов в определенный код, далее линковщик объединяет коды от разных файлов в один и записывает его в дат файл. В версии 3.00 предполагается компиляция отдельного файла скриптов -> выполнится быстро + будут выданы сообщения обо всех ошибках.
|
|
|
24.08.2005, 10:46
|
#564
|
|
Re: Декомпилятор скриптов Готики
2F@NAT:
О, нет боже . Я кажется совсем ничего не понимаю, ну как так?
|
Приведи функцию или часть функции с указанием строки с ошибкой, без этого сказать что-либо конкретное нельзя. Добавление от 08/24/05, в 09:54:52 2F@NAT:Часть этой функции должна выглядеть таким образом: * * *// если все три бандита мертвы * * *if(Npc_IsDead(TowerBandit1) && Npc_IsDead(TowerBandit2) && Npc_IsDead(TowerBandit3)) * * *{ * * * * * *// башня освобождена от бандитов * * * * * *TowerBanditsDead = TRUE; * * * * * *return TRUE; * * *} * * *return FALSE;
|
|
|
24.08.2005, 17:19
|
#566
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2F@NAT: Тебе же сказали,
2F@NAT: Часть этой функции должна выглядеть таким образом: // если все три бандита мертвы if(Npc_IsDead(TowerBandit1) && Npc_IsDead(TowerBandit2) && Npc_IsDead(TowerBandit3)) { // башня освобождена от бандитов TowerBanditsDead = TRUE; return TRUE; } return FALSE;
|
Добавление от 08/24/05, в 16:21:45
Кстати, это одна из (вроде) трех ошибок, которые ВСЕГДА происходят при компиляции только что декомпилированного датника от Аддона. Дело в том, что эти ошибки допустили сами разработчики, а Spacer их не заметил (в отличие от Декомпилятора от Vam'a). 2F@NAT: Так что у тебя наверняка возникнут еще ошибки, не переживай по этому поводу :)
|
|
|
24.08.2005, 18:15
|
#567
|
|
Re: Декомпилятор скриптов Готики
В связи с тем, что разработка финальной версии оболочки для декомпилятора затягивается ввиду отсутствия у меня свободного времени, выкладываю оттестированную и работоспособную бета-версию. Некоторые задумки не до конца реализованы, но все необходимое работает. Внимание! Для работы оболочки необходимо иметь установленный MS .NET Framework 1.1. Скачать можно с сайта microsoft.ru . забирайте (38kb)
|
|
|
24.08.2005, 23:43
|
#570
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Хм, у меня ошибка при инициализации приложения, может чё не так я сделал?
|
Установи NET Framework 1.1.
|
|
|
25.08.2005, 04:27
|
#572
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Хм, у меня ошибка при инициализации приложения, может чё не так я сделал?
|
я же специально красным выделил в своем посте предупреждение. Перечитай еще разок http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=ru
|
|
|
25.08.2005, 09:24
|
#573
|
|
Re: Декомпилятор скриптов Готики
2F@NAT:
Да с этой ошибкой я уже разобрался как и с некоторыми другими, у меня теперь компиляция прерывается с сообщением о том что компилятор нашёл 33 ошибки, хотя в readme сказано что предел остановки вроде как 50 ошибок (некретических или может я чего не понял опять?)
|
Да, не понял, если ошибок более 50, то будут выведены только 50, далее останов, но если ошибок менее 50, то будут выданы все, а затем останов, даже если есть одна ошибка, то компиляция дойдя до конца остановится, но линковщик не запустится (работает когда ошибок нет) и , следовательно дат файл не будет создан.
|
|
|
14.09.2005, 05:51
|
#575
|
|
|
|
|
Строители Миртаны
Регистрация: 25.05.2004
Сообщений: 3
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: Можешь сделать опцию пропуска "функций без возврата", т.е. оставить компиляцию этим функциям "как есть"?
|
|
|
14.09.2005, 10:00
|
#576
|
|
Re: Декомпилятор скриптов Готики
2Getbern Zagolski:
Можешь сделать опцию пропуска "функций без возврата", т.е. оставить компиляцию этим функциям "как есть"?
|
В новой версии компилятора обработка ошибок будет оставлена полностью, внимания же можно будет отключать.
|
|
|
16.09.2005, 17:44
|
#577
|
|
|
|
|
*
Регистрация: 29.08.2004
Сообщений: 1
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2Vam: И еще одна просьба - нормальная работа декомпилятора под 64-х разрядными системами - и XP 64 и Vista 64 (сейчас бета 2 билд 5219).
|
|
|
16.09.2005, 22:10
|
#578
|
|
Re: Декомпилятор скриптов Готики
2Pa:
И еще одна просьба - нормальная работа декомпилятора под 64-х разрядными системами - и XP 64 и Vista 64 (сейчас бета 2 билд 5219).
|
64-х и более разрядной системы не имею *:'(, поэтому просьба сообщать обо всех замечаниях, найденных при работе этих систем, ой, т.е. декомпа под этими системами. *;D
|
|
|
03.10.2005, 11:56
|
#580
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:
Скомпилировал Готик.ДАТ своего мода, а затем выполнил Декомпиляцию своего Датника и опять скомпилировал, на что получил 9 крит. ошибок. slf и oth, а исправляю на self и other, выдаёт что невозможно конвертировать одну переменную в другую.
|
Первую компиляцию выполнял чем? Догадаться о чем речь невозможно, приведи сообщение с ошибкой и кусок текста скрипта.
|
|
|
03.10.2005, 22:37
|
#581
|
|
Re: Декомпилятор скриптов Готики
Компилировал декомпилятором Версии 2.12. Скрипт:
var int bad_ritual;
prototype DEFAULT_DARKMAGE(C_Npc) { attribute[ATR_STRENGTH] = 10; aivar[REAL_STRENGTH] = 10; attribute[ATR_DEXTERITY] = 10; aivar[REAL_DEXTERITY] = 10; attribute[ATR_MANA_MAX] = 10; aivar[REAL_MANA_MAX] = 10; attribute[ATR_MANA] = 10; attribute[ATR_HITPOINTS_MAX] = 40; attribute[ATR_HITPOINTS] = 40; HitChance[NPC_TALENT_1H] = 0; HitChance[NPC_TALENT_2H] = 0; HitChance[NPC_TALENT_BOW] = 0; HitChance[NPC_TALENT_CROSSBOW] = 0; protection[PROT_EDGE] = 0; protection[PROT_BLUNT] = 0; protection[PROT_POINT] = 0; protection[PROT_FIRE] = 0; protection[PROT_MAGIC] = 0; damagetype = DAM_BLUNT; senses = SENSE_HEAR | SENSE_SEE; senses_range = PERC_DIST_ACTIVE_MAX; aivar[AIV_MM_FollowTime] = NPC_TIME_FOLLOW; aivar[AIV_FightDistCancel] = FIGHT_DIST_CANCEL; bodyStateInterruptableOverride = FALSE; guild = GIL_BAD; npcType = NPCTYPE_FRIEND; level = 50; voice = 4; flags = NPC_FLAG_IMMORTAL; B_SetAttributesToChapter(self,6); B_SetNpcVisual(self,MALE,"Hum_Head_Bald",Face_N_X ardas,BodyTex_N,ITAR_Xardas); Mdl_ApplyOverlayMds(self,"Humans_Mage.mds"); Mdl_SetModelFatness(self,0); B_SetFightSkills(self,30); CreateInvItems(self,ItPo_Health_03,10); senses = SENSE_SEE | SENSE_SMELL; senses_range = 2000; fight_tactic = FAI_HUMAN_MASTER; aivar[AIV_IgnoresArmor] = TRUE; B_GiveNpcTalents(self); aivar[AIV_MagicUser] = MAGIC_ALWAYS; aivar[AIV_EnemyOverride] = TRUE; };
instance BAD_9006_KRIEG(DEFAULT_DARKMAGE) { name[0] = "Хранитель войны"; id = 9006; daily_routine = rtn_start_9006; };
instance BAD_9007_PEST(DEFAULT_DARKMAGE) { name[0] = "Хранитель чумы"; id = 9007; daily_routine = rtn_start_9007; };
instance BAD_9008_HUNGER(DEFAULT_DARKMAGE) { name[0] = "Хранитель голода"; id = 9008; daily_routine = rtn_start_9008; };
instance BAD_9009_TOD(DEFAULT_DARKMAGE) { name[0] = "Хранитель смерти"; id = 9009; daily_routine = rtn_start_9009; };
func void rtn_start_9006() { ta_hueter(0,0,12,0,"OC_RAMP_16"); ta_hueter(12,0,0,0,"OC_RAMP_16"); };
func void rtn_nw_9006() { ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE"); ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE"); };
func void rtn_tot_9006() { ta_hueter(0,0,12,0,"TOT"); ta_hueter(12,0,0,0,"TOT"); };
func void rtn_start_9007() { ta_hueter(0,0,12,0,"NW_CITY_KANAL_06"); ta_hueter(12,0,0,0,"NW_CITY_KANAL_06"); };
func void rtn_ritual_9007() { ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE_02") ; ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE_02") ; };
func void rtn_start_9008() { ta_hueter(0,0,12,0,"NW_FARM2_PATH_02"); ta_hueter(12,0,0,0,"NW_FARM2_PATH_02"); };
func void rtn_ritual_9008() { ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE"); ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE"); };
func void rtn_start_9009() { ta_hueter(0,0,12,0,"ADW_MINE_MC_01"); ta_hueter(12,0,0,0,"ADW_MINE_MC_01"); };
func void rtn_nw_9009() { ta_hueter(0,0,12,0,"NW_LITTLESTONEHENDGE_01") ; ta_hueter(12,0,0,0,"NW_LITTLESTONEHENDGE_01") ; };
func void rtn_tot_9009() { ta_hueter(0,0,12,0,"TOT"); ta_hueter(12,0,0,0,"TOT"); };
func void zs_bad_routine() { Perception_Set_Normal(); AI_SetWalkMode(self,NPC_WALK); if(Npc_GetDistToWP(self,self.wp) > 1000) { if(Npc_GetDistToNpc(self,hero) < 10000) { AI_PlayAni(self,"T_RUN_2_MAG"); AI_PlayAni(self,"T_MAG_2_MAGRUN"); AI_PlayAni(self,"T_MAGRUN_2_HEASHOOT"); Wld_PlayEffect("spellFX_Teleport",self,self,0,0,0 ,FALSE); }; AI_Teleport(self,self.wp); }; AI_GotoWP(self,self.wp); AI_AlignToWP(self); };
func int zs_bad_routine_loop() { var int randomMove; if(KENNT_STEINKREIS) { if((((self.id == oth) && Npc_KnowsInfo(hero,bad_krieg_speak)) || Npc_KnowsInfo(hero,bad_tod_speak)) && (CurrentLevel != NEWWORLD_ZEN) && (Npc_GetDistToWP(self,"TOT") > 1000) && (self.aivar[AIV_INVINCIBLE] == FALSE)) { Npc_ExchangeRoutine(self,"Tot"); return LOOP_END; }; if((((self.id == oth) && Npc_KnowsInfo(hero,bad_krieg_speak)) || Npc_KnowsInfo(hero,bad_tod_speak)) && (CurrentLevel != NEWWORLD_ZEN) && (Npc_GetDistToWP(self,"TOT") <= 1000)) { self.flags = 0; Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]); return LOOP_END; }; if((self.id == 9007) && Npc_KnowsInfo(hero,bad_pest_speak) && (Npc_GetDistToWP(self,"NW_LITTLESTONEHENDGE_02") > 1000) && (self.aivar[AIV_INVINCIBLE] == FALSE)) { Npc_ExchangeRoutine(self,"Ritual"); return LOOP_END; }; if((self.id == slf) && Npc_KnowsInfo(hero,bad_hunger_speak) && (Npc_GetDistToWP(self,"NW_LITTLESTONEHENDGE") > 1000) && (self.aivar[AIV_INVINCIBLE] == FALSE)) { Npc_ExchangeRoutine(self,"Ritual"); return LOOP_END; }; }; if((BAD_RITUAL == 1) && (self.id == oth)) { Wld_PlayEffect("FX_EarthQuake",self,self,0,0,0,FA LSE); AI_PlayAni(self,"T_PRACTICEMAGIC5"); Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE); BAD_RITUAL = 2; return LOOP_CONTINUE; }; if((BAD_RITUAL == 2) && (self.id == 9007)) { AI_PlayAni(self,"T_PRACTICEMAGIC5"); Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE); BAD_RITUAL = 3; return LOOP_CONTINUE; }; if((BAD_RITUAL == 3) && (self.id == slf)) { AI_PlayAni(self,"T_PRACTICEMAGIC5"); Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE); BAD_RITUAL = 4; return LOOP_CONTINUE; }; if(BAD_RITUAL == 4) { Wld_PlayEffect("FX_EarthQuake",self,self,0,0,0,FA LSE); AI_PlayAni(self,"T_PRACTICEMAGIC5"); Wld_PlayEffect("spellFX_INCOVATION_VIOLET",self,s elf,0,0,0,FALSE); BAD_RITUAL = 5; return LOOP_CONTINUE; }; if(Npc_GetStateTime(self) > 5) { randomMove = Hlp_Random(6); if(randomMove == 0) { AI_PlayAni(self,"R_LEGSHAKE"); }; if(randomMove == 1) { AI_PlayAni(self,"R_SCRATCHLSHOULDER"); }; if(randomMove == 2) { AI_PlayAni(self,"R_SCRATCHEGG"); }; if(randomMove == 3) { AI_PlayAni(self,"R_SCRATCHHEAD"); }; if(randomMove == 4) { AI_PlayAni(self,"R_SCRATCHRSHOULDER"); }; if(randomMove == 5) { AI_PlayAni(self,"T_PRACTICEMAGIC"); }; Npc_SetStateTime(self,0); }; return LOOP_CONTINUE; };
func void zs_bas_routine_end() { };
Но в строчках где использовано slf и oth выдат что undeclared name, а если исправляю на self и other, выдаёт что Cannot convert from type INT to INSTANCE
Прошу помощи
|
|
|
04.10.2005, 10:18
|
#582
|
|
Re: Декомпилятор скриптов Готики
2TSYLin:Ты привел кусок декомпилированного текста, в нем есть ошибки, например, эта
, чтобы понять их происхождение, мне нужно увидеть исходный текст функции zs_bad_routine_loop, который ты сам написал, а затем скомпилировал. При первоначальной компиляции ошибок, как я понял, у тебя не было, они появились при повторной компиляции декомпилированного датника, это так? Ещё вопрос: а функция zs_bad_routine_loop правильно работает, ты её тестировал?
|
|
|
30.10.2005, 18:13
|
#584
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2FreeSergey: Можно у меня на сайте 2.1 скачать (смотри подпись). А последняя кажись 2.12 так и валяется на yandex.ru.
|
|
|
30.10.2005, 20:51
|
#585
|
|
Re: Декомпилятор скриптов Готики
2Killer-XXX:
последняя кажись 2.12 так и валяется на yandex.ru.
|
Несолидно как то в ФАКе давать линк на мыло. Ладно, может завтра скачаю и выложу где-нибудь. Хотя хорошо бы наверное его на ГотикаАГ разместить было. Добавление от 10/30/05, в 19:57:01 2Killer-XXX:
Можно у меня на сайте 2.1 скачать
|
Пока дам ссылку на твой сайт.
|
|
|
15.11.2005, 08:13
|
#586
|
|
|
|
|
A.G.F.C.
Регистрация: 02.09.2005
Сообщений: 6
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
При декомпиляции одного из модов вышла такая ошибка: [pre] 00:01 Warn: 0 *U: * *PAR: External GAME_INITENGINTL not found. .... <zParser_Symbol.cpp,#1123> 00:01 Warn: 0 *U: * *PAR: External GAME_INITENGLISH not found. .... <zParser_Symbol.cpp,#1123> 00:04 Fault:0 *U: * PAR: : U: PAR: Error in Stack decompile script - 'COLL_APPLYDOUBLEDAMAGE' ( line 210 ) .... <zError.cpp,#477> 00:06 Fatal:-1 U: * PAR: : Unknown exp = 13 in PopVarDate ( line 73 ) .... <zParser.cpp,#599> [/pre] Сильно интересует последняя, т.к. из-за нее прерывается процесс ДЕкомпиляции. Декомпилятор версии 2.11, запускаю из консоли.
Запуск: [pre]GothicSourcer.exe -zlog:8,s -zfile:gothic -zcomp:0,0 -zgame:1 -zopt:1[/pre]
Мод для Г2а (Gemeinschaft der Grauens - http://www.worldofgothic.de/dl/index.php?go=downloads&file_id=193).
p.s. Декомпилирую, пытаясь реально помочь человеку (Шаман) с переводом мода. Мод, кстати, очень хорош на вид, новая островная локация с симпатичной крепостью. Если у кого получилось декомпилировать, скиньте Шаману полный каталог _decompiled, или дайте ссылку в соответствующую ветку (http://agfc.ru/showthread.php?&s=0&t=1106771355 &start=150). Могу сделать зеркало для архива скриптов на своем хосте.
|
|
|
15.11.2005, 11:00
|
#588
|
|
Re: Декомпилятор скриптов Готики
2marazmus:
00:06 Fatal:-1 U: PAR: : Unknown exp = 13 in PopVarDate ( line 73 ) .... <zParser.cpp,#599>
|
Постараюсь помочь с решением проблемы, но для этого прошу скинуть датник и оушник мода на Яндекс.
|
|
|
15.11.2005, 11:58
|
#590
|
|
Re: Декомпилятор скриптов Готики
P.S. Или выложить на них ссылку, похоже наш ящик на Яндексе DiccuricAG грохнули или изменили пароль, доступа нет. PP.S. Эта инсталяшка требует наличия Готики, сейчас её у меня под рукой, к сожалению, нет.
Добавление от 11/15/05, в 10:39:54 2marazmus: Всё, загрузил, на будущее просьба - оформляй ссылки через тэг , а то не всегда явно видно.
Добавление от 11/15/05, в 11:18:39 Новую версию [glow=red,2,300]Декомпилятора V2.13[/glow] выложил на Яндексе. Ящик GothicSourcer, пароль gota.
- устранён останов декомпилятора при декомпиляции ещё одной ошибки датника.
Наши немецкие товарищи допустили ещё одну ошибку в скриптах, в условие if всунули оператор << , будьте внимательны при компиляции, такие места необходимо будет исправить (декомпилятор на них не ругается, а компилятор замечает). Успехов!!!
|
|
|
16.11.2005, 02:22
|
#592
|
|
Re: Декомпилятор скриптов Готики
2marazmus:
Спасибо мегачеловеку Vam'у, оперативно помог с декомпиляцией мода. Держи декомпилированные скрипты мода, прямая ссылка: mod.worldofgothic.ru/files/scripts/GDG/decompiled_gdg_2005-11-15.exe Размер 320 515 байт, RAR, SFX. Основной перевод, который тебе предстоит - папка Story\Dialoge. Но есть еще много текста, кроме этого, по пути, я думаю, разберешься
|
Спасибо. Начал переводить, диалог с одним челом перевёл. Запустил Декомпилятор, выскочила ошибка. Остановилась на ошибке, пишет; 00:04.Fatal;-1U PAR:: STORY\DIALOGE\DIA_GDG_BAN_2016_HERUMERA.D:Expected : (Line 583)... <zParser.cpp.# 599
|
|
|
18.11.2005, 06:00
|
#594
|
|
Re: Декомпилятор скриптов Готики
Цитата:
Сообщение от marazmus link=board=gothic&t=1095241429&start=575#592 date=11/16/05, в 07:25:37
Посмотрел, это ошибка скрипта от разработчиков. Чтобы не засорять ветку, предлагаю перенести обсуждение технических вопросов по переводу - если хочешь пообщаться со мной, то в аську, мылом или приходи на микрофорум, все контакты в профиле.
|
Не один Шаман натыкается на эти ошибки. Мог бы и здесь ответить. Там при декомпиляции вылазят 3 ошибки. Знаешь в чем там проблемма?
|
|
|
18.11.2005, 08:42
|
#597
|
|
|
|
|
A.G.F.C.
Регистрация: 02.09.2005
Сообщений: 6
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
По идее, это сообщение, информирующее о том, что gothic.dat скомпилирован и собран нормально, ну, заодно и ou.bin. Это конечная цель компилятора, собрать gothic.dat. Это должно быть всегда, если не было "красных" и "синих" сообщений (ошибок).
Кстати, заметил такую вещь, уже давно - если в zSpy отключить вывод обычных и "зеленых" сообщений, оставив только "красные" и "синие", скорость компиляции значительно увеличиваетсяю
|
|
|
18.11.2005, 09:59
|
#598
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Декомпилятор скриптов Готики
2marazmus:
Кстати, заметил такую вещь, уже давно - если в zSpy отключить вывод обычных и "зеленых" сообщений, оставив только "красные" и "синие", скорость компиляции значительно увеличиваетсяю
|
Конечно. Я всегда варниниги отключаю. Там же куча времени тратится на вывод сообщений.
|
|
|
18.11.2005, 20:27
|
#599
|
|
Re: Декомпилятор скриптов Готики
2marazmus:
Кстати, заметил такую вещь, уже давно - если в zSpy отключить вывод обычных и "зеленых" сообщений, оставив только "красные" и "синие", скорость компиляции значительно увеличиваетсяю
|
А как это сделать? У меня zSpy не на русском, боюсь лезть с экспериментами не туда.
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 20:41. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|