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

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

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

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

декомпилинг скриптов


kosh

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

давненько все порывался заняться вплотную этим занятицем...

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

кто интересуется или занимается подобным?

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

Начинал, но понял, что там ппц как всё непросто...

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

Как вариант, можно попробовать с нуля написать свой декомпилятор LUA.

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

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

кто бы подумал что

Code:
109  [-]  GETGLOBAL 10 2 ; Clamp

110  [-]  GETGLOBAL 11 8 ; math

111  [-]  GETTABLE  11 11 259 ; "ceil"

112  [-]  GETGLOBAL 12 10 ; EXP_GAUGE_FULL_SIZE

113  [-]  MUL       12 12 8

114  [-]  CALL      11 2 2

115  [-]  LOADK     12 5 ; 0

116  [-]  MOVE      13 9 0

117  [-]  CALL      10 4 2

118  [-]  SETTABLE  5 263 10 ; "sizeX" 

119  [-]  GETGLOBAL 10 26 ; wtRestedExpLimitGauge

120  [-]  SELF      10 10 264 ; "SetPlacementPlain"

121  [-]  MOVE      12 5 0

122  [-]  CALL      10 3 1

123  [-]  GETGLOBAL 10 27 ; fatigueLevelUp

124  [-]  GETTABLE  11 0 256 ; "currentExp"

125  [-]  GETTABLE  12 6 272 ; "fatigue"

126  [-]  ADD       11 11 12

127  [-]  GETTABLE  12 0 253 ; "nextLevelExp"

128  [-]  LE        1 12 11

129  [-]  JMP       0 1 ; to 131

130  [-]  LOADBOOL  11 0 1

131  [-]  LOADBOOL  11 1 0

132  [-]  EQ        1 10 11

133  [-]  JMP       0 29 ; to 163

134  [-]  GETGLOBAL 10 27 ; fatigueLevelUp

135  [-]  NOT       10 10 0

136  [-]  SETGLOBAL 10 27 ; fatigueLevelUp

137  [-]  GETGLOBAL 10 27 ; fatigueLevelUp

138  [-]  TEST      10 10 0

139  [-]  JMP       0 15 ; to 155

140  [-]  GETGLOBAL 10 28 ; effects

141  [-]  GETTABLE  10 10 279 ; "PlayFadeEffectSequence"

142  [-]  GETGLOBAL 11 24 ; wtRestedExpGauge

143  [-]  NEWTABLE  12 1 1

144  [-]  NEWTABLE  13 4 0

145  [-]  LOADK     14 7 ; 1

146  [-]  LOADK     15 30 ; 0.65

147  [-]  LOADK     16 31 ; 1200

148  [-]  GETGLOBAL 17 32 ; EA_SYMMETRIC_FLASH

149  [-]  SETLIST   13 3

150  [-]  LOADBOOL  14 1 0

151  [-]  SETTABLE  12 283 14 ; "cycled" 

152  [-]  SETLIST   12 0

153  [-]  CALL      10 3 1

154  [-]  JMP       0 8 ; to 163

155  [-]  GETGLOBAL 10 28 ; effects

156  [-]  GETTABLE  10 10 284 ; "FinishFadeEffectSequence"

157  [-]  GETGLOBAL 11 24 ; wtRestedExpGauge

158  [-]  CALL      10 2 1

159  [-]  GETGLOBAL 10 24 ; wtRestedExpGauge

160  [-]  SELF      10 10 285 ; "SetFade"

161  [-]  LOADK     12 7 ; 1

162  [-]  CALL      10 3 1

превратится в

Code:
if fatigueLevelUp ~= ( (experience.currentExp + fatigue.fatigue ) >= experience.nextLevelExp ) then

fatigueLevelUp = not fatigueLevelUp

if fatigueLevelUp then

effects.PlayFadeEffectSequence( wtRestedExpGauge, { { 1, 0.65, 1200, EA_SYMMETRIC_FLASH }, cycled = true } )

else

effects.FinishFadeEffectSequence( wtRestedExpGauge )

wtRestedExpGauge:SetFade( 1 ) 

end

end

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

а это ваще шедевр!!!:

Code:
126  [-]  GETGLOBAL 6 16 ; unit

127  [-]  GETTABLE  6 6 296 ; "GetPvPFlagInfo"

128  [-]  MOVE      7 0 0

129  [-]  CALL      6 2 2

130  [-]  GETGLOBAL 7 47 ; wtTargetPvpFlag

131  [-]  SELF      7 7 271 ; "SetBackgroundTexture"

132  [-]  GETGLOBAL 9 48 ; GetTexture

133  [-]  GETTABLE  10 6 299 ; "timeLeft"

134  [-]  TEST      10 10 0

135  [-]  JMP       0 3 ; to 139

136  [-]  LOADK     10 50 ; "P2EButtonNormal"

137  [-]  TEST      10 10 1

138  [-]  JMP       0 7 ; to 146

139  [-]  GETTABLE  10 6 301 ; "isOn"

140  [-]  TEST      10 10 0

141  [-]  JMP       0 3 ; to 145

142  [-]  LOADK     10 52 ; "PvPButtonNormal"

143  [-]  TEST      10 10 1

144  [-]  JMP       0 1 ; to 146

145  [-]  LOADK     10 53 ; "PvEButtonNormal"

146  [-]  CALL      9 2 0

147  [-]  CALL      7 0 1

"брюки превращаются... брюки превращаются... "

Code:
local PvPFlag = unit.GetPvPFlagInfo( targetId )

wtTargetPvpFlag:SetBackgroundTexture( GetTexture( PvPFlag.timeLeft and "P2EButtonNormal" or PvPFlag.isOn and "PvPButtonNormal" or "PvEButtonNormal" ) )

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

так.. бекинженериги, Вы где? у меня проблема(не критичная, все правильно работает но разница в одну цифру меня просто смущает)...

отзовитесь...

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

итак.. первая ласточка декомпилияции... скрипт ScriptContextPlates(панелька в верхнем левом углу)...

последний не скомпилированный v1.0.03.19

http://uagames.com/kosh/allods/scripts/decomp/ContextPlates/ScriptContextPlates(2).lua

скомпилированный оригинал v1.0.05.24

http://uagames.com/kosh/allods/scripts/decomp/ContextPlates/ScriptContextPlates.lua

декомпиленный v1.0.05.24

http://uagames.com/kosh/allods/scripts/decomp/ContextPlates/ScriptContextPlates_.lua

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

А чем ты их так декомпилировал? Скомпилировал старый скрипт, потом декомпилировал его и сравнил с новейшим декомпилированным, а потом в исходнике всё подогнал руками? Может это можно как-нибудь автоматизировать? Например, парсить ассемблерный код, там ведь все названия переменных указаны. Может, есть в сети какой-нибудь готовый продукт, способный сделать такой парсинг.

При беглом просмотре нашёл:

ScriptContextPlates(2).lua:

Global( "MAX_LEVEL_DIFFERENCE", 4 )

ScriptContextPlates_.lua:

Global( "MAX_LEVEL_DIFFERENCE", 40 )

Это опечатка, или это и есть "ShowContextLvl"? :)

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

да, это единственное различие от оригинала.. так сказать уже убранные "вопросики"

скомпил последний доступный открытый код..

дизассеммблирывал и оригинал и только что скомпиленны...

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

з.ы. кстати, разработчики понемногу возвращают "утраченные" функции =))) это не может не радовать

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

Какие утраченные функции, например?

Функции для работы со строками - ещё нет? :)

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования