"Наша песня хороша, начинай сначало."
Прочитав много литературу, на тему декомпиляции и компиляторов. Пилю такой вот декомпилятор.
На данном этапе генерирует синтаксическое дерево операций, из ai байт кода
Цель: Реализовать декомпилятор и коппилятор, птс скриптов в java код. Постепенно подключить и поменять аи на java сервере.
TODO
- линковать jump, jtrue, jfalse по индексу в дереве. Привязывать метки к узлам дерева(маркирова узлы метками)
- Разметить все функции: количество аргументов, возвращаемое значение(сигнатура функции не интересна, на данном этапе)
- Развернуть взятие полей (event )
- сделать генерацию промежуточного кода
ПС Исходный код полностью сырой. Если не знаете, что к чему, не лезьте, с глупыми вопросами
Пример citizen:
до
После
Прочитав много литературу, на тему декомпиляции и компиляторов. Пилю такой вот декомпилятор.
На данном этапе генерирует синтаксическое дерево операций, из ai байт кода
Цель: Реализовать декомпилятор и коппилятор, птс скриптов в java код. Постепенно подключить и поменять аи на java сервере.
TODO
- линковать jump, jtrue, jfalse по индексу в дереве. Привязывать метки к узлам дерева(маркирова узлы метками)
- Разметить все функции: количество аргументов, возвращаемое значение(сигнатура функции не интересна, на данном этапе)
- Развернуть взятие полей (event )
- сделать генерацию промежуточного кода
ПС Исходный код полностью сырой. Если не знаете, что к чему, не лезьте, с глупыми вопросами
Пример citizen:
до
Код:
class 1 citizen : default_npc
handler 3 138 // TALKED
variable_begin
"talker"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
push_parameter NoFnHi
push_const 1
equal
branch_false L1
L0
exit_handler
L1
push_parameter FriendShip1
push_const 0
equal
branch_false L3
L2
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter fnHi
func_call 184680516 // func[ShowPage]
shift_sp -2
shift_sp -1
jump L4
L3
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter FriendShip1
func_call 184680579 // func[OwnItemCount]
shift_sp -2
push_const 0
greater
push_reg_sp
fetch_i
branch_true L5
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter FriendShip2
func_call 184680579 // func[OwnItemCount]
shift_sp -2
push_const 0
greater
or
push_reg_sp
fetch_i
branch_true L5
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter FriendShip3
func_call 184680579 // func[OwnItemCount]
shift_sp -2
push_const 0
greater
or
push_reg_sp
fetch_i
branch_true L5
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter FriendShip4
func_call 184680579 // func[OwnItemCount]
shift_sp -2
push_const 0
greater
or
push_reg_sp
fetch_i
branch_true L5
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter FriendShip5
func_call 184680579 // func[OwnItemCount]
shift_sp -2
push_const 0
greater
or
L5
branch_false L7
L6
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter fnHi
func_call 184680516 // func[ShowPage]
shift_sp -2
shift_sp -1
jump L8
L7
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter fnNoFriend
func_call 184680516 // func[ShowPage]
shift_sp -2
shift_sp -1
L8
L4
handler_end
handler 13 98 // CREATED
variable_begin
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
push_parameter MoveAroundSocial
push_const 0
greater
push_reg_sp
fetch_i
branch_true L9
push_parameter MoveAroundSocial1
push_const 0
greater
or
L9
branch_false L11
L10
push_event // myself
push_const 704
add
fetch_i
push_const 1671
push_const 10000
func_call 184680487 // func[AddTimerEx]
shift_sp -2
shift_sp -1
L11
push_parameter HavePet
push_const 1
equal
branch_false L13
L12
push_event // myself
push_const 704
add
fetch_i
push_parameter silhouette
S1. "pet_around_pet_manager"
push_string S1
push_const 0
push_const 0
push_event // myself
push_const 704
add
fetch_i
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // x
push_const 8
add
fetch_d
push_const 10
add
func_call 184615005 // func[FloatToInt]
shift_sp -1
push_event // myself
push_const 704
add
fetch_i
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // y
push_const 16
add
fetch_d
push_const 10
add
func_call 184615005 // func[FloatToInt]
shift_sp -1
push_event // myself
push_const 704
add
fetch_i
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // z
push_const 24
add
fetch_d
func_call 184615005 // func[FloatToInt]
shift_sp -1
push_const 0
push_const 0
push_const 0
push_const 0
func_call 185270503 // func[CreateOnePrivateEx]
shift_sp -11
shift_sp -1
L13
call_super
handler_end
handler 12 173 // TIMER_FIRED_EX
variable_begin
"timer_id"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
push_event // timer_id
push_const 236
add
fetch_i4
push_const 1671
equal
branch_false L15
L14
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // hp
push_const 392
add
fetch_d
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // max_hp
push_const 1216
add
fetch_d
push_const 0.4
mul
greater
push_reg_sp
fetch_i
branch_false L16
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // alive
push_const 104
add
fetch_i4
push_const 0
not_equal
and
push_reg_sp
fetch_i
branch_false L16
push_event // myself
push_const 704
add
fetch_i // p_state
push_const 280
add
fetch_i4
push_const 3
not_equal
and
L16
branch_false L18
L17
push_parameter MoveAroundSocial
push_const 0
greater
push_reg_sp
fetch_i
branch_true L19
push_parameter MoveAroundSocial1
push_const 0
greater
or
L19
branch_false L21
L20
push_parameter MoveAroundSocial
push_const 0
greater
push_reg_sp
fetch_i
branch_false L22
push_event // gg
push_const 632
add
fetch_i
push_const 100
func_call 218169344 // func[Rand]
shift_sp -1
push_const 40
less
and
L22
branch_false L24
L23
push_event // myself
push_const 704
add
fetch_i
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i
push_const 3
push_parameter MoveAroundSocial
push_const 1000
mul
push_const 30
div
push_const 50
func_call 184811541 // func[AddEffectActionDesire]
shift_sp -4
shift_sp -1
jump L25
L24
push_parameter MoveAroundSocial1
push_const 0
greater
push_reg_sp
fetch_i
branch_false L26
push_event // gg
push_const 632
add
fetch_i
push_const 100
func_call 218169344 // func[Rand]
shift_sp -1
push_const 40
less
and
L26
branch_false L28
L27
push_event // myself
push_const 704
add
fetch_i
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i
push_const 2
push_parameter MoveAroundSocial1
push_const 1000
mul
push_const 30
div
push_const 50
func_call 184811541 // func[AddEffectActionDesire]
shift_sp -4
shift_sp -1
L28
L25
L21
L18
push_event // myself
push_const 704
add
fetch_i
push_const 1671
push_const 10000
func_call 184680487 // func[AddTimerEx]
shift_sp -2
shift_sp -1
L15
call_super
handler_end
handler 32 410 // MENU_SELECTED
variable_begin
"talker"
"ask"
"reply"
"fhtml0"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
push_event // ask
push_const 160
add
fetch_i4
push_const 1000
negate
equal
branch_false L30
L29
push_event // reply
push_const 164
add
fetch_i4
push_reg_sp
fetch_i
push_const 0
equal
branch_false L33
L32
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_parameter fnHi
func_call 184680516 // func[ShowPage]
shift_sp -2
shift_sp -1
jump L31
jump L34
L33
push_reg_sp
fetch_i
push_const 1
equal
branch_false L35
L34
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // residence_id
push_const 824
add
fetch_i4
push_const 0
greater
branch_false L37
L36
push_event // myself
push_const 704
add
fetch_i
func_call 184549553 // func[Castle_GetPledgeId]
branch_false L39
L38
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
push_parameter fnFeudInfo
func_call 184680582 // func[FHTML_SetFileName]
shift_sp -2
shift_sp -1
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
S2. "my_pledge_name"
push_string S2
push_event // myself
push_const 704
add
fetch_i
func_call 184549527 // func[Castle_GetPledgeName]
func_call 184746121 // func[FHTML_SetStr]
shift_sp -3
shift_sp -1
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
S3. "my_owner_name"
push_string S3
push_event // myself
push_const 704
add
fetch_i
func_call 184549528 // func[Castle_GetOwnerName]
func_call 184746121 // func[FHTML_SetStr]
shift_sp -3
shift_sp -1
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
S4. "current_tax_rate"
push_string S4
push_event // myself
push_const 704
add
fetch_i
func_call 184549531 // func[Residence_GetTaxRateCurrent]
func_call 184746119 // func[FHTML_SetInt]
shift_sp -3
shift_sp -1
jump L40
L39
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
push_parameter fnNoFeudInfo
func_call 184680582 // func[FHTML_SetFileName]
shift_sp -2
shift_sp -1
L40
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // residence_id
push_const 824
add
fetch_i4
push_const 7
less
branch_false L42
L41
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
S5. "kingdom_name"
push_string S5
push_event // myself
push_const 704
add
fetch_i
push_const 1001000
S6. ""
push_string S6
S7. ""
push_string S7
S8. ""
push_string S8
S9. ""
push_string S9
S10. ""
push_string S10
func_call 184942731 // func[MakeFString]
shift_sp -6
func_call 184746121 // func[FHTML_SetStr]
shift_sp -3
shift_sp -1
jump L43
L42
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
S11. "kingdom_name"
push_string S11
push_event // myself
push_const 704
add
fetch_i
push_const 1001100
S12. ""
push_string S12
S13. ""
push_string S13
S14. ""
push_string S14
S15. ""
push_string S15
S16. ""
push_string S16
func_call 184942731 // func[MakeFString]
shift_sp -6
func_call 184746121 // func[FHTML_SetStr]
shift_sp -3
shift_sp -1
L43
push_event // myself
push_const 704
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
S17. "feud_name"
push_string S17
push_event // myself
push_const 704
add
fetch_i
push_const 1001000
push_event // myself
push_const 704
add
fetch_i // sm
push_const 544
add
fetch_i // residence_id
push_const 824
add
fetch_i4
add
S18. ""
push_string S18
S19. ""
push_string S19
S20. ""
push_string S20
S21. ""
push_string S21
S22. ""
push_string S22
func_call 184942731 // func[MakeFString]
shift_sp -6
func_call 184746121 // func[FHTML_SetStr]
shift_sp -3
shift_sp -1
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
push_event // fhtml0
push_const 520
add
fetch_i
func_call 184680586 // func[ShowFHTML]
shift_sp -2
shift_sp -1
jump L44
L37
L44
jump L31
jump L45
L35
L45
L31
shift_sp -1
L30
push_event // ask
push_const 160
add
fetch_i4
push_const 303
negate
equal
branch_false L47
L46
push_event // reply
push_const 164
add
fetch_i4
push_const 203
equal
branch_false L49
L48
push_event // myself
push_const 704
add
fetch_i
func_call 184549715 // func[GetSSQStatus]
push_const 3
equal
branch_false L51
L50
push_event // myself
push_const 704
add
fetch_i
push_event // talker
push_const 40
add
fetch_i
func_call 184615265 // func[GetSSQPart]
shift_sp -1
push_const 0
not_equal
branch_false L53
L52
push_event // myself
push_const 704
add
fetch_i
push_event // reply
push_const 164
add
fetch_i4
push_event // talker
push_const 40
add
fetch_i
func_call 184680529 // func[ShowMultisell]
shift_sp -2
shift_sp -1
L53
L51
jump L54
L49
push_event // reply
push_const 164
add
fetch_i4
push_const 532
equal
push_reg_sp
fetch_i
branch_true L55
push_event // reply
push_const 164
add
fetch_i4
push_const 549
equal
or
L55
branch_false L57
L56
jump L59
L58
push_event // myself
push_const 704
add
fetch_i
push_event // reply
push_const 164
add
fetch_i4
push_event // talker
push_const 40
add
fetch_i
func_call 184680529 // func[ShowMultisell]
shift_sp -2
shift_sp -1
jump L60
L59
L60
jump L61
L57
push_event // myself
push_const 704
add
fetch_i
push_event // reply
push_const 164
add
fetch_i4
push_event // talker
push_const 40
add
fetch_i
func_call 184680529 // func[ShowMultisell]
shift_sp -2
shift_sp -1
L61
L54
L47
handler_end
class_end
Код:
class citizen : default_npc {
handler TALKED
t0 = param NoFnHi
t1 = 1
t2 = t0 == t1
t3 = jfalse 1
t4 = return
t5 = param FriendShip1
t6 = 0
t7 = t5 == t6
t8 = jfalse 3
t9 = event
t10 = 704
t11 = t9 + t10
t12 = fetch t11
t13 = event
t14 = 40
t15 = t13 + t14
t16 = fetch t15
t17 = param fnHi
t18 = call ShowPage(t12, t16, t17)
t19 = jump 4
t20 = event
t21 = 704
t22 = t20 + t21
t23 = fetch t22
t24 = event
t25 = 40
t26 = t24 + t25
t27 = fetch t26
t28 = param FriendShip1
t29 = call OwnItemCount(t19, t23, t27, t28)
t30 = 0
t31 = t29 > t30
t32 = t31
t33 = fetch t32
t34 = jfalse 5
t35 = event
t36 = 704
t37 = t35 + t36
t38 = fetch t37
t39 = event
t40 = 40
t41 = t39 + t40
t42 = fetch t41
t43 = param FriendShip2
t44 = call OwnItemCount(t34, t38, t42, t43)
t45 = 0
t46 = t44 > t45
t47 = t33 || t46
t48 = t47
t49 = fetch t48
t50 = jfalse 5
t51 = event
t52 = 704
t53 = t51 + t52
t54 = fetch t53
t55 = event
t56 = 40
t57 = t55 + t56
t58 = fetch t57
t59 = param FriendShip3
t60 = call OwnItemCount(t50, t54, t58, t59)
t61 = 0
t62 = t60 > t61
t63 = t49 || t62
t64 = t63
t65 = fetch t64
t66 = jfalse 5
t67 = event
t68 = 704
t69 = t67 + t68
t70 = fetch t69
t71 = event
t72 = 40
t73 = t71 + t72
t74 = fetch t73
t75 = param FriendShip4
t76 = call OwnItemCount(t66, t70, t74, t75)
t77 = 0
t78 = t76 > t77
t79 = t65 || t78
t80 = t79
t81 = fetch t80
t82 = jfalse 5
t83 = event
t84 = 704
t85 = t83 + t84
t86 = fetch t85
t87 = event
t88 = 40
t89 = t87 + t88
t90 = fetch t89
t91 = param FriendShip5
t92 = call OwnItemCount(t82, t86, t90, t91)
t93 = 0
t94 = t92 > t93
t95 = t81 || t94
t96 = jfalse 7
t97 = event
t98 = 704
t99 = t97 + t98
t100 = fetch t99
t101 = event
t102 = 40
t103 = t101 + t102
t104 = fetch t103
t105 = param fnHi
t106 = call ShowPage(t100, t104, t105)
t107 = jump 8
t108 = event
t109 = 704
t110 = t108 + t109
t111 = fetch t110
t112 = event
t113 = 40
t114 = t112 + t113
t115 = fetch t114
t116 = param fnNoFriend
t117 = call ShowPage(t111, t115, t116)
handler_end
handler CREATED
t0 = param MoveAroundSocial
t1 = 0
t2 = t0 > t1
t3 = t2
t4 = fetch t3
t5 = jfalse 9
t6 = param MoveAroundSocial1
t7 = 0
t8 = t6 > t7
t9 = t5 || t8
t10 = jfalse 11
t11 = event
t12 = 704
t13 = t11 + t12
t14 = fetch t13
t15 = 1671
t16 = 10000
t17 = call AddTimerEx(t14, t15, t16)
t18 = param HavePet
t19 = 1
t20 = t18 == t19
t21 = jfalse 13
t22 = event
t23 = 704
t24 = t22 + t23
t25 = fetch t24
t26 = param silhouette
t27 = "pet_around_pet_manager"
t28 = 0
t29 = 0
t30 = event
t31 = 704
t32 = t30 + t31
t33 = fetch t32
t34 = event
t35 = 704
t36 = t34 + t35
t37 = fetch t36
t38 = 544
t39 = t37 + t38
t40 = fetch t39
t41 = 8
t42 = t40 + t41
t43 = fetch t42
t44 = 10
t45 = t43 + t44
t46 = call FloatToInt(t33, t45)
t47 = event
t48 = 704
t49 = t47 + t48
t50 = fetch t49
t51 = event
t52 = 704
t53 = t51 + t52
t54 = fetch t53
t55 = 544
t56 = t54 + t55
t57 = fetch t56
t58 = 16
t59 = t57 + t58
t60 = fetch t59
t61 = 10
t62 = t60 + t61
t63 = call FloatToInt(t50, t62)
t64 = event
t65 = 704
t66 = t64 + t65
t67 = fetch t66
t68 = event
t69 = 704
t70 = t68 + t69
t71 = fetch t70
t72 = 544
t73 = t71 + t72
t74 = fetch t73
t75 = 24
t76 = t74 + t75
t77 = fetch t76
t78 = call FloatToInt(t67, t77)
t79 = 0
t80 = 0
t81 = 0
t82 = 0
t83 = call CreateOnePrivateEx(t25, t26, t27, t28, t29, t46, t63, t78, t79, t80, t81, t82)
t84 = super
handler_end
handler TIMER_FIRED_EX
t0 = event
t1 = 236
t2 = t0 + t1
t3 = fetch t2
t4 = 1671
t5 = t3 == t4
t6 = jfalse 15
t7 = event
t8 = 704
t9 = t7 + t8
t10 = fetch t9
t11 = 544
t12 = t10 + t11
t13 = fetch t12
t14 = 392
t15 = t13 + t14
t16 = fetch t15
t17 = event
t18 = 704
t19 = t17 + t18
t20 = fetch t19
t21 = 544
t22 = t20 + t21
t23 = fetch t22
t24 = 1216
t25 = t23 + t24
t26 = fetch t25
t27 = 0.4
t28 = t26 * t27
t29 = t16 > t28
t30 = t29
t31 = fetch t30
t32 = jfalse 16
t33 = event
t34 = 704
t35 = t33 + t34
t36 = fetch t35
t37 = 544
t38 = t36 + t37
t39 = fetch t38
t40 = 104
t41 = t39 + t40
t42 = fetch t41
t43 = 0
t44 = t42 != t43
t45 = t32 && t44
t46 = t45
t47 = fetch t46
t48 = jfalse 16
t49 = event
t50 = 704
t51 = t49 + t50
t52 = fetch t51
t53 = 280
t54 = t52 + t53
t55 = fetch t54
t56 = 3
t57 = t55 != t56
t58 = t48 && t57
t59 = jfalse 18
t60 = param MoveAroundSocial
t61 = 0
t62 = t60 > t61
t63 = t62
t64 = fetch t63
t65 = jfalse 19
t66 = param MoveAroundSocial1
t67 = 0
t68 = t66 > t67
t69 = t65 || t68
t70 = jfalse 21
t71 = param MoveAroundSocial
t72 = 0
t73 = t71 > t72
t74 = t73
t75 = fetch t74
t76 = jfalse 22
t77 = event
t78 = 632
t79 = t77 + t78
t80 = fetch t79
t81 = 100
t82 = call Rand(t80, t81)
t83 = 40
t84 = t82 < t83
t85 = t76 && t84
t86 = jfalse 24
t87 = event
t88 = 704
t89 = t87 + t88
t90 = fetch t89
t91 = event
t92 = 704
t93 = t91 + t92
t94 = fetch t93
t95 = 544
t96 = t94 + t95
t97 = fetch t96
t98 = 3
t99 = param MoveAroundSocial
t100 = 1000
t101 = t99 * t100
t102 = 30
t103 = t101 / t102
t104 = 50
t105 = call AddEffectActionDesire(t90, t97, t98, t103, t104)
t106 = jump 25
t107 = param MoveAroundSocial1
t108 = 0
t109 = t107 > t108
t110 = t109
t111 = fetch t110
t112 = jfalse 26
t113 = event
t114 = 632
t115 = t113 + t114
t116 = fetch t115
t117 = 100
t118 = call Rand(t116, t117)
t119 = 40
t120 = t118 < t119
t121 = t112 && t120
t122 = jfalse 28
t123 = event
t124 = 704
t125 = t123 + t124
t126 = fetch t125
t127 = event
t128 = 704
t129 = t127 + t128
t130 = fetch t129
t131 = 544
t132 = t130 + t131
t133 = fetch t132
t134 = 2
t135 = param MoveAroundSocial1
t136 = 1000
t137 = t135 * t136
t138 = 30
t139 = t137 / t138
t140 = 50
t141 = call AddEffectActionDesire(t126, t133, t134, t139, t140)
t142 = event
t143 = 704
t144 = t142 + t143
t145 = fetch t144
t146 = 1671
t147 = 10000
t148 = call AddTimerEx(t145, t146, t147)
t149 = super
handler_end
handler MENU_SELECTED
t0 = event
t1 = 160
t2 = t0 + t1
t3 = fetch t2
t4 = 1000
t5 = -t4
t6 = t3 == t5
t7 = jfalse 30
t8 = event
t9 = 164
t10 = t8 + t9
t11 = fetch t10
t12 = t11
t13 = fetch t12
t14 = 0
t15 = t13 == t14
t16 = jfalse 33
t17 = event
t18 = 704
t19 = t17 + t18
t20 = fetch t19
t21 = event
t22 = 40
t23 = t21 + t22
t24 = fetch t23
t25 = param fnHi
t26 = call ShowPage(t20, t24, t25)
t27 = jump 31
t28 = jump 34
t29 = t28
t30 = fetch t29
t31 = 1
t32 = t30 == t31
t33 = jfalse 35
t34 = event
t35 = 704
t36 = t34 + t35
t37 = fetch t36
t38 = 544
t39 = t37 + t38
t40 = fetch t39
t41 = 824
t42 = t40 + t41
t43 = fetch t42
t44 = 0
t45 = t43 > t44
t46 = jfalse 37
t47 = event
t48 = 704
t49 = t47 + t48
t50 = fetch t49
t51 = call Castle_GetPledgeId(t50)
t52 = jfalse 39
t53 = event
t54 = 704
t55 = t53 + t54
t56 = fetch t55
t57 = event
t58 = 520
t59 = t57 + t58
t60 = fetch t59
t61 = param fnFeudInfo
t62 = call FHTML_SetFileName(t56, t60, t61)
t63 = event
t64 = 704
t65 = t63 + t64
t66 = fetch t65
t67 = event
t68 = 520
t69 = t67 + t68
t70 = fetch t69
t71 = "my_pledge_name"
t72 = event
t73 = 704
t74 = t72 + t73
t75 = fetch t74
t76 = call Castle_GetPledgeName(t75)
t77 = call FHTML_SetStr(t66, t70, t71, t76)
t78 = event
t79 = 704
t80 = t78 + t79
t81 = fetch t80
t82 = event
t83 = 520
t84 = t82 + t83
t85 = fetch t84
t86 = "my_owner_name"
t87 = event
t88 = 704
t89 = t87 + t88
t90 = fetch t89
t91 = call Castle_GetOwnerName(t90)
t92 = call FHTML_SetStr(t81, t85, t86, t91)
t93 = event
t94 = 704
t95 = t93 + t94
t96 = fetch t95
t97 = event
t98 = 520
t99 = t97 + t98
t100 = fetch t99
t101 = "current_tax_rate"
t102 = event
t103 = 704
t104 = t102 + t103
t105 = fetch t104
t106 = call Residence_GetTaxRateCurrent(t105)
t107 = call FHTML_SetInt(t96, t100, t101, t106)
t108 = jump 40
t109 = event
t110 = 704
t111 = t109 + t110
t112 = fetch t111
t113 = event
t114 = 520
t115 = t113 + t114
t116 = fetch t115
t117 = param fnNoFeudInfo
t118 = call FHTML_SetFileName(t112, t116, t117)
t119 = event
t120 = 704
t121 = t119 + t120
t122 = fetch t121
t123 = 544
t124 = t122 + t123
t125 = fetch t124
t126 = 824
t127 = t125 + t126
t128 = fetch t127
t129 = 7
t130 = t128 < t129
t131 = jfalse 42
t132 = event
t133 = 704
t134 = t132 + t133
t135 = fetch t134
t136 = event
t137 = 520
t138 = t136 + t137
t139 = fetch t138
t140 = "kingdom_name"
t141 = event
t142 = 704
t143 = t141 + t142
t144 = fetch t143
t145 = 1001000
t146 = ""
t147 = ""
t148 = ""
t149 = ""
t150 = ""
t151 = call MakeFString(t144, t145, t146, t147, t148, t149, t150)
t152 = call FHTML_SetStr(t135, t139, t140, t151)
t153 = jump 43
t154 = event
t155 = 704
t156 = t154 + t155
t157 = fetch t156
t158 = event
t159 = 520
t160 = t158 + t159
t161 = fetch t160
t162 = "kingdom_name"
t163 = event
t164 = 704
t165 = t163 + t164
t166 = fetch t165
t167 = 1001100
t168 = ""
t169 = ""
t170 = ""
t171 = ""
t172 = ""
t173 = call MakeFString(t166, t167, t168, t169, t170, t171, t172)
t174 = call FHTML_SetStr(t157, t161, t162, t173)
t175 = event
t176 = 704
t177 = t175 + t176
t178 = fetch t177
t179 = event
t180 = 520
t181 = t179 + t180
t182 = fetch t181
t183 = "feud_name"
t184 = event
t185 = 704
t186 = t184 + t185
t187 = fetch t186
t188 = 1001000
t189 = event
t190 = 704
t191 = t189 + t190
t192 = fetch t191
t193 = 544
t194 = t192 + t193
t195 = fetch t194
t196 = 824
t197 = t195 + t196
t198 = fetch t197
t199 = t188 + t198
t200 = ""
t201 = ""
t202 = ""
t203 = ""
t204 = ""
t205 = call MakeFString(t187, t199, t200, t201, t202, t203, t204)
t206 = call FHTML_SetStr(t178, t182, t183, t205)
t207 = event
t208 = 704
t209 = t207 + t208
t210 = fetch t209
t211 = event
t212 = 40
t213 = t211 + t212
t214 = fetch t213
t215 = event
t216 = 520
t217 = t215 + t216
t218 = fetch t217
t219 = call ShowFHTML(t210, t214, t218)
t220 = jump 44
t221 = jump 31
t222 = jump 45
t223 = event
t224 = 160
t225 = t223 + t224
t226 = fetch t225
t227 = 303
t228 = -t227
t229 = t226 == t228
t230 = jfalse 47
t231 = event
t232 = 164
t233 = t231 + t232
t234 = fetch t233
t235 = 203
t236 = t234 == t235
t237 = jfalse 49
t238 = event
t239 = 704
t240 = t238 + t239
t241 = fetch t240
t242 = call GetSSQStatus(t241)
t243 = 3
t244 = t242 == t243
t245 = jfalse 51
t246 = event
t247 = 704
t248 = t246 + t247
t249 = fetch t248
t250 = event
t251 = 40
t252 = t250 + t251
t253 = fetch t252
t254 = call GetSSQPart(t249, t253)
t255 = 0
t256 = t254 != t255
t257 = jfalse 53
t258 = event
t259 = 704
t260 = t258 + t259
t261 = fetch t260
t262 = event
t263 = 164
t264 = t262 + t263
t265 = fetch t264
t266 = event
t267 = 40
t268 = t266 + t267
t269 = fetch t268
t270 = call ShowMultisell(t261, t265, t269)
t271 = jump 54
t272 = event
t273 = 164
t274 = t272 + t273
t275 = fetch t274
t276 = 532
t277 = t275 == t276
t278 = t277
t279 = fetch t278
t280 = jfalse 55
t281 = event
t282 = 164
t283 = t281 + t282
t284 = fetch t283
t285 = 549
t286 = t284 == t285
t287 = t280 || t286
t288 = jfalse 57
t289 = jump 59
t290 = event
t291 = 704
t292 = t290 + t291
t293 = fetch t292
t294 = event
t295 = 164
t296 = t294 + t295
t297 = fetch t296
t298 = event
t299 = 40
t300 = t298 + t299
t301 = fetch t300
t302 = call ShowMultisell(t293, t297, t301)
t303 = jump 60
t304 = jump 61
t305 = event
t306 = 704
t307 = t305 + t306
t308 = fetch t307
t309 = event
t310 = 164
t311 = t309 + t310
t312 = fetch t311
t313 = event
t314 = 40
t315 = t313 + t314
t316 = fetch t315
t317 = call ShowMultisell(t308, t312, t316)
handler_end
}
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация