Показать сообщение отдельно
Старый 24.09.2007, 19:27   #1081
HikeR

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

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

2MaGoth:
Ответ на вопрос 2:
я до второй готики еще не добрался, только с первой разбираюсь. такая фишка выскакивает в немке, и отсутствует в версии от snowball. хотя разница в полученных скриптах довольна мала.
вот кстати и сами отличия:
1. скрипт G_CanNotCast.d:
Cпойлер(щелкните, чтобы прочесть):
[table][tr][td]немецкая версия[/td][td]snowball версия[/td][/tr]
[tr][td][pre]func void G_CanNotCast(var int bIsPlayer,var int nCircleNeeded,var int nCirclePossessed)
{
* * *var int nDifference;
* * *var string strDifference;
* * *var string strMessage;
* * *nDifference = nCircleNeeded - nCirclePossessed;
* * *strDifference = IntToString (nDifference);
* * *if (bIsPlayer)
* * *{
* * * * * *strMessage = _STR_CANNOTUSE_PRE_PLAYER;
* * *}
* * *else
* * *{


* * * * * *strMessage = ConcatStrings (self.name, _STR_CANNOTUSE_PRE_NPC);
* * * * * *strMessage = ConcatStrings (strMessage, IntToString (self.id));
* * * * * *strMessage = ConcatStrings (strMessage, _STR_CANNOTUSE_POST_NPC);
* * *};
* * *strMessage = ConcatStrings (strMessage, strDifference);
* * *strMessage = ConcatStrings (strMessage, " ");
* * *strMessage = ConcatStrings (strMessage, _STR_ATTRIBUTE_MAGIC_CIRCLE);

* * *strMessage = ConcatStrings (strMessage, _STR_CANNOTUSE_LEVELS);
* * *strMessage = ConcatStrings (strMessage, _STR_CANNOTUSE_POST);
* * *G_PrintScreen (strMessage);
};[/pre]
[/td]
[td][pre]func void G_CanNotCast(var int bIsPlayer,var int nCircleNeeded,var int nCirclePossessed)
{
* * *var int nDifference;
* * *var string strDifference;
* * *var string strMessage;
* * *nDifference = nCircleNeeded;
* * *strDifference = IntToString (nDifference);
* * *if (bIsPlayer)
* * *{
* * * * * *strMessage = _STR_ATTRIBUTE_MAGIC_CIRCLE;
* * *}
* * *else
* * *{
* * * * * *return;
* * *};
* * *strMessage = ConcatStrings (self.name, _STR_CANNOTUSE_PRE_NPC);
* * *strMessage = ConcatStrings (strMessage, IntToString (self.id));
* * *strMessage = ConcatStrings (strMessage, _STR_CANNOTUSE_POST_NPC);

* * *strMessage = ConcatStrings (strMessage, strDifference);


* * *strMessage = ConcatStrings (strMessage, _STR_CANNOTUSE_LEVELS);

* * *G_PrintScreen (strMessage);
};[/pre]
[/td][/tr][/table]

пока не могу предположить даже, где оно юзается.
2. в немке есть скрипт info_orc_17_exit.d
Cпойлер(щелкните, чтобы прочесть):
[pre]instance INFO_ORC_17_EXIT(C_Info)
{
* * *nr = 999;
* * *condition = info_orc_17_exit_condition;
* * *information = info_orc_17_exit_info;
* * *permanent = 1;
* * *description = DIALOG_ENDE;
};
func int info_orc_17_exit_condition()
{
* * *return 1;
};
func void info_orc_17_exit_info()
{
* * *AI_StopProcessInfos (self);
};
func void b_assignambientinfos_orc_17(var C_Npc slf)
{
* * *info_orc_17_exit.npc = Hlp_GetInstanceID (slf);
};
[/pre]

который отсутствует в русской версии. из-за его включения добавились строки в B_AssignAmbientInfos.d в ф-ию *B_AssignAmbientInfos(var C_Npc amb_self)
Cпойлер(щелкните, чтобы прочесть):
[pre]else if ((amb_self.guild == GIL_ORCWARRIOR) || (amb_self.guild == GIL_ORCSCOUT) || (amb_self.guild == GIL_ORCSHAMAN))
{
* * *b_assignambientinfos_orc_17 (amb_self);
};
[/pre]

3. концерт inextremo в немке встречается в нескольких местах. в смысле вызовы ф-ий, отвечающих за его присутсвие.

в остальном разница только в локализованных строках. поэтому и непонятно, почему в оригинале сурсер находит оишбки, а в локализации нет.


Добавление от 09/24/07, в 19:47:38
и небольшое предложение по функционалу.
- в панели "сообщения" сейчас есть две вкладки, "создание" и "поиск в файлах".
при запуске компиляции если встретилась всего одна ошибка - замучаешься прокручивать список, пока ее найдешь. тут помогло бы контекстное меню типа "перейти к следующей ошибке" (то, что есть сейчас работает только если курсор уже находится на строке с ошибкой), либо автоматический прыг на первую строчку с соощением (настраиваемый).

- потом, делаем двойной щелчок на ошибке, запускаем "проверку скрипта на ошибки", вуаля, предыдущий лог благополучно пропадает. чтобы продолжить исправление необходимо заново запускать компиляцию. введение еще одной вкладки с результатами теста помогло бы.

- действия "найти" и "заменить" имеют горячие клавиши, а аналогичных шоткатов для работы с файлами нет (в смысле действия "найти в файлах", "заменить в файлах"). для того, чтобы выяснить, где вызывается ф-ия приходится тянутся за мышью ;)

Ответить с цитированием