|
Anchorite
Пользователь
Откуда: Не здесь Регистрация: Янв. 2003
Всего: 283 сообщения
|
Я посмотрел присланный скрипт. Нашел интересную вещь. 1. После декомпиляции конец процедуры talk_p_proc имеет вид
Код:
... add_obj_to_inven(self_obj, restock_obj); end return 0; LVar0 := 0; procedure destroy_p_proc begin if (source_obj == dude_obj) then begin ...
т.е. видно, что у тела функции отсутствует завершающий end. 2. Для выяснения, что и к чему смотрим дамп этой процедуры.
Код:
... 0x00004240: 0x80BC - O_SELF_OBJ 0x00004242: 0xC001 0x00000010 - O_INTOP(0x00000010) // 16 (16) 0x00004248: 0x8012 - O_FETCH_GLOBAL 0x0000424A: 0x80D8 - O_ADD_OBJ_TO_INVEN 0x0000424C: 0xC001 0x00000000 - O_INTOP(0x00000000) // 0 (0) 0x00004252: 0x800D - O_D_TO_A 0x00004254: 0x8019 - O_SWAPA 0x00004256: 0x802A - O_POP_TO_BASE 0x00004258: 0x8029 - O_POP_BASE 0x0000425A: 0x800C - O_A_TO_D 0x0000425C: 0x801C - O_POP_RETURN 0x0000425E: 0xC001 0x00000000 - O_INTOP(0x00000000) // 0 (0) 0x00004264: 0xC001 0x00000000 - O_INTOP(0x00000000) // 0 (0) 0x0000426A: 0x8031 - O_STORE 0x0000426C: 0x802A - O_POP_TO_BASE 0x0000426E: 0x8029 - O_POP_BASE 0x00004270: 0x801C - O_POP_RETURN
Из дампа видно, что данная процедура имеет "нестандартный завершитель". От "стандартного" от отличается наличием трех опкодов O_INTOP, O_INTOP и O_STORE. Поэтому декомпилятор и не стал преобразовывать его в завершающий end, а декомпилировал как есть. Для исправления этой ситуации нужно удалить строки
Код:
return 0; LVar0 := 0;
и заменить их на end. После этого функция примет номальный вид пригодный для компиляции. От себя замечу, что данный скрипт скомпилирован не "родным" BIS-овым компилятором, а чем-то другим. А "стандартные" последовательности опкодов можно глянуть в http://www.teamx.ru/docs/decompile.rar. Я его сделел, когда писал декомпилятор. (Отредактировал(а) Anchorite - 5:23 - 14 Июня, 2005)
|
Отправлено: 23:11 - 13 Июня, 2005
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
Чувствую, сейчас кому-то прибавится работы По поводу непонятных вещей. Есть у Павла в моде скрипт - ardic.int Уж не знаю чем и как он его жал(Павел, ау....), но все декомпиляторы страшно на него ругаются. Нойдовский вообще ничего не создаёт и пишет, что "procedures are not sorted in ascending adress order", int2ssl создаёт пустой файл и тоже ругается, но уже "Expression required" (и также выдаёт warnings). Кинуть файл?
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 0:02 - 14 Июня, 2005
|
|
Aman
Пользователь
Откуда: Киев Регистрация: Апр. 2005
Всего: 208 сообщений
|
>> данный скрипт скомпилирован не "родным" BIS-овым компилятором, а чем-то другим Сто пудово, что это нойдовский. Я попробовал нойдовский декомпайл, всё ОК - вместо return 0; LVar0 := 0; стояло законное end. Скомпилил. (Добавление от 2:04 - 14 Июня, 2005.) to Ray >> По поводу непонятных вещей. Есть у Павла в моде скрипт - ardic.int Это был ipp.
----- Ибо логично предположить, что если недостаточно чего-либо для запуска чего-либо, то второе чего-либо, а именно то, для которого не хватает - вообще не должно запускаться. (неизвестный)
|
Отправлено: 1:18 - 14 Июня, 2005
|
|
Anchorite
Пользователь
Откуда: Не здесь Регистрация: Янв. 2003
Всего: 283 сообщения
|
У int2ssl есть пара ключей (-a и -b), которые позволяют игнорировать неверное число аргументов для опкодов. Попробуй с ними, может чего толковое и получится.
|
Отправлено: 5:22 - 14 Июня, 2005
|
|
Volk
Пользователь Регистрация: Июнь 2005
Всего: 79 сообщений
|
procedure critter_p_proc begin <...> obj_set_light_level(dude_obj, get_critter_stat(dude_obj, 37)*2, 8); end Я сделал чтоб чузен когда у него радиация светился, но даже при радиации 50 он светится слабо, да и то когда есть рядом источники света. А в бою у чузена свет потухает совсем. 1. Как сделать чтоб свет был ярче и везде? 2. И как сделать чтоб в свет не потухал?
|
Отправлено: 7:06 - 14 Июня, 2005
|
|
Volk
Пользователь Регистрация: Июнь 2005
Всего: 79 сообщений
|
Если у кого еше есть проблемы с компиляцие\декомпиляцией, вэлком сюда: http://volkpk.nm.ru/Bis_compiller.rar Компилятор Декомпилятор Препроцесор Headers версии 1.02 Все настроено и предельно просто. Всесит 778 кб.
|
Отправлено: 18:31 - 16 Июня, 2005
|
|
Volk
Пользователь Регистрация: Июнь 2005
Всего: 79 сообщений
|
Дано n новых предеметов, как их раскидать по всем торговцам? Чтоб не править и перекомпилировать все скрипты.
|
Отправлено: 22:54 - 17 Июня, 2005
|
|
Aman
Пользователь
Откуда: Киев Регистрация: Апр. 2005
Всего: 208 сообщений
|
Два варианта: - переделать существующие (у торговцев) прошки на твои; - перекомпилить скрипты ; Скрипты кстати несложно переделать - пара строчек, посмотри например map_enter_p_proc в DIFLIBOX.ssl (box торговца в Дэне).
----- Ибо логично предположить, что если недостаточно чего-либо для запуска чего-либо, то второе чего-либо, а именно то, для которого не хватает - вообще не должно запускаться. (неизвестный)
|
Отправлено: 2:24 - 18 Июня, 2005
|
|
Volk
Пользователь Регистрация: Июнь 2005
Всего: 79 сообщений
|
Да что легко, я знаю, просто мне надо чтоб ини могли появится у любого торговца могли появится, а прошки переделывать под свои не хочу... ЗЫ Ты исходники то даш runmodа
|
Отправлено: 3:11 - 18 Июня, 2005
|
|
Mynah
Модератор
Откуда: Пермь Регистрация: Окт. 2004
Всего: 469 сообщений
|
Возникла интересная трабла. Есть добавленная в игру карта, правильно зарегестрирована везде, чузен на ней прекрасно себя чувствует, но у всех криттеров карты не работают animate_move_to_tile и animate_run_to_tile (во всех варицаиях, т.е. не помогает регистрация списка анимаций и bwor ANIMATE_INTERRUPT), при этом move_to и critter_attempt_placement работают прекрасно. Мне почему-то кажется, что криттер пытается "убежать" на другой elevation и, раз у него ничего не получается, остаётся на месте. Может кто сталкивался и знает как лечить? Проблема №2: При попытке битового использовани гвар на этой же карте, фаллаут вываливаетс в винду с ошибкой, причём ошибка "Приложение выполнило недопустимую операцию", а не фаллаутовская. На остальных картах всё нормально. PS: Формат карты вроде бы правильный. И бисовский и димсовый мапперы читают её нормально. Да и все остальные функции на ней работают
----- Scio me nihil scire
|
Отправлено: 22:55 - 18 Июня, 2005 Исправлено: Mynah - 19:36 - 19 Июня, 2005
|
|
|
|