Перейти к содержанию

Рекомендуемые сообщения

Reflector декомпилит код dll-файла в ассемблер, а потом путем хитроумных операций переводит операторы ассемблера в более читаемый вид в соответствии с логикой языка С.
Ссылка на комментарий
Поделиться на другие сайты

  • 11 месяцев спустя...

Добавлю-ка я 5 копеек. Был (и есть) такой неплохой атмосферный плужек - "Blight bounties" - храмовники немножко помогают деньгами по факту убийства моровых монстров. Text.dll от тов. Angel-Death версии 3.00 ложил игру с ошибкой "Microsoft Visual C++ Runtime Library - Buffer overrun detected" в момент когда скрипт, прицепленный к диалогу опрашивал глобалки на предмет кого ты убил. Скрипт:

if ( GetDeadCount "ascended_sleeper" > "_ivza_06_count_ascsleeper" )
Choice "Продолжить" 1
return
elseif ( GetDeadCount "ash_ghoul" > "_ivza_06_count_ashghoul" )
Choice "Продолжить" 2
return
elseif ( GetDeadCount "ash_slave" > "_ivza_06_count_ashslave" )
Choice "Продолжить" 3
return
elseif ( GetDeadCount "ash_zombie" > "_ivza_06_count_ashzombie" )
Choice "Продолжить" 4
return
elseif ( GetDeadCount "alit_blighted" > "_ivza_06_count_balit" )
Choice "Продолжить" 5
return
elseif ( GetDeadCount "cliff racer_blighted" > "_ivza_06_count_bcliffracer" )
Choice "Продолжить" 6
return
elseif ( GetDeadCount "kagouti_blighted" > "_ivza_06_count_bkagouti" )
Choice "Продолжить" 7
return
elseif ( GetDeadCount "kwama forager blighted" > "_ivza_06_count_bkwamaforager" )
Choice "Продолжить" 8
return
elseif ( GetDeadCount "kwama warrior blighted" > "_ivza_06_count_bkwamawarrior" )
Choice "Продолжить" 9
return
elseif ( GetDeadCount "kwama worker blighted" > "_ivza_06_count_bkwamaworker" )
Choice "Продолжить" 10
return
elseif ( GetDeadCount "nix-hound blighted" > "_ivza_06_count_bnixhound" )
Choice "Продолжить" 11	
return
elseif ( GetDeadCount "rat_blighted" > "_ivza_06_count_brat" )
Choice "Продолжить" 12
return
elseif ( GetDeadCount "scrib blighted" > "_ivza_06_count_bscrib" )
Choice "Продолжить" 13
return
elseif ( GetDeadCount "shalk_blighted" > "_ivza_06_count_bshalk" )
Choice "Продолжить" 14
return
elseif ( GetDeadCount "corprus_lame" > "_ivza_06_count_corpruslame" )
Choice "Продолжить" 15
return
elseif ( GetDeadCount "corprus_stalker" > "_ivza_06_count_corprusstalker" )
Choice "Продолжить" 18
return	
else
Choice "Продолжить" 20
return
endif

Поскольку от этого мода отказываться не собираюсь, да и мало ли где еще вылезет, приходится пользовать 2.080.

Вот он:

Изменено пользователем Singreen
Ссылка на комментарий
Поделиться на другие сайты

  • 6 месяцев спустя...

У меня тот же самый buffer overrun вылезает в другом месте и гробит игру насмерть. А именно - он появляется при прибытии в Вивек, хоть пешком, хоть на лодке, хоть как.

А что, если поставить фикс, на который тут ссылка, то так происходить уже не будет?

Ссылка на комментарий
Поделиться на другие сайты

Добавлю-ка я 5 копеек. Был (и есть) такой неплохой атмосферный плужек - "Blight bounties" - храмовники немножко помогают деньгами по факту убийства моровых монстров. Text.dll от тов. Angel-Death версии 3.00 ложил игру с ошибкой "Microsoft Visual C++ Runtime Library - Buffer overrun detected" в момент когда скрипт, прицепленный к диалогу опрашивал глобалки на предмет кого ты убил. Скрипт:

Судя по скрипту, среагирует скрипт только на первое совпадение, а значит можно просто заменить его на 20 строчек диалога с этими условиями. И это хорошо и правильно, потому что if-else конструкции в диалогах писать - это редкостное извращение. Buffer overrun скорее всего жалуется на слишком большое поле Result.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...