Igazából nagyon mélyen nemástam magam bele a témába, a teljes kódot nem akartam visszafejteni, csak bizonyos részeket, erre jó egy egyszerű amxxdump nevű program, ez visszafejti egész olvashatóra a kódot.
Példa:
Kód:
E:\server\SCRIPTING\dump>amxxdump -D plugin_init -E amx_spawn.amxx
0x990 PROC ; public plugin_init()
0x994 BREAK
0x998 BREAK
0x99C PUSH.C 0x22C
0x9A4 PUSH.C 0x21C
0x9AC PUSH.C 0x1F4
0x9B4 PUSH.C 0xC
0x9BC SYSREQ.C 0xA ; register_plugin("Amx_Spawn","0.5"
,"D@V3")
0x9C4 STACK 0x10 ; free 4 cells
0x9CC BREAK
0x9D0 PUSH.C 0x290
0x9D8 PUSH.C 0x4
0x9E0 PUSH.C 0x268
0x9E8 PUSH.C 0x240
0x9F0 PUSH.C 0x10
0x9F8 SYSREQ.C 0xB ; register_concmd("amx_spawn","amx_
spawn",4,"<name> - ujraelesztes")
0xA00 STACK 0x14 ; free 5 cells
0xA08 BREAK
0xA0C ZERO.pri
0xA10 RETN
E:\server\SCRIPTING\dump>amxxdump -D amx_spawn -E amx_spawn.amxx
0xA14 PROC ; public amx_spawn(id,level,cid)
0xA18 BREAK
0xA1C BREAK
0xA20 PUSH.C 0x2
0xA28 PUSH.S 0x14 ; cid
0xA30 PUSH.S 0x10 ; level
0xA38 PUSH.S 0xC ; id
0xA40 PUSH.C 0x10
0xA48 CALL 0xA8 ; stock cmd_access(id,level,cid,num
)
0xA50 NOT
0xA54 JZER 0xA6C
0xA5C BREAK
0xA60 CONST.pri 0x1
0xA68 RETN
0xA6C BREAK
; new arg[32]
0xA70 STACK 0xFFFFFF80 ; allocate 32 cells
0xA78 ZERO.pri
0xA7C ADDR.alt 0xFFFFFF80
0xA84 FILL 0x80 ; 32 cells
0xA8C BREAK
0xA90 PUSH.C 0x1F
0xA98 PUSH.ADR 0xFFFFFF80 ; arg[32]
0xAA0 PUSH.C 0x1
0xAA8 PUSH.C 0xC
0xAB0 SYSREQ.C 0xC ; read_argv(1,arg[32],31)
0xAB8 STACK 0x10 ; free 4 cells
0xAC0 BREAK
; new player
0xAC4 STACK 0xFFFFFFFC ; allocate 1 cells
0xACC PUSH.C 0x2
0xAD4 PUSH.ADR 0xFFFFFF80 ; arg[32]
0xADC PUSH.S 0xC ; id
0xAE4 PUSH.C 0xC
0xAEC CALL 0x3B8 ; stock cmd_target(id,arg[],flags)
0xAF4 STOR.S.pri 0xFFFFFF7C ; player
0xAFC BREAK
0xB00 LOAD.S.pri 0xFFFFFF7C ; player
0xB08 NOT
0xB0C JZER 0xB2C
0xB14 BREAK
0xB18 CONST.pri 0x1
0xB20 STACK 0x84 ; free 33 cells
0xB28 RETN
0xB2C BREAK
0xB30 ZERO.pri
0xB34 HEAP 0x4
0xB3C STOR.I
0xB40 PUSH.alt
0xB44 PUSH.S 0xFFFFFF7C ; player
0xB4C PUSH.C 0x8
0xB54 SYSREQ.C 0xD ; cs_get_user_team
0xB5C STACK 0xC ; free 3 cells
0xB64 HEAP 0xFFFFFFFC
0xB6C EQ.C.pri 0x3
0xB74 JZER 0xB94
0xB7C BREAK
0xB80 CONST.pri 0x1
0xB88 STACK 0x84 ; free 33 cells
0xB90 RETN
0xB94 BREAK
; new name2[32]
0xB98 STACK 0xFFFFFF80 ; allocate 32 cells
0xBA0 ZERO.pri
0xBA4 ADDR.alt 0xFFFFFEFC
0xBAC FILL 0x80 ; 32 cells
; new name[32]
0xBB4 STACK 0xFFFFFF80 ; allocate 32 cells
0xBBC ZERO.pri
0xBC0 ADDR.alt 0xFFFFFE7C
0xBC8 FILL 0x80 ; 32 cells
0xBD0 BREAK
0xBD4 PUSH.C 0x1F
0xBDC PUSH.ADR 0xFFFFFE7C ; name[32]
0xBE4 PUSH.S 0xC ; id
0xBEC PUSH.C 0xC
0xBF4 SYSREQ.C 0x7 ; get_user_name(id,name[32],31)
0xBFC STACK 0x10 ; free 4 cells
0xC04 BREAK
0xC08 PUSH.C 0x1F
0xC10 PUSH.ADR 0xFFFFFEFC ; name2[32]
0xC18 PUSH.S 0xFFFFFF7C ; player
0xC20 PUSH.C 0xC
0xC28 SYSREQ.C 0x7 ; get_user_name(player,name2[32],31
)
0xC30 STACK 0x10 ; free 4 cells
0xC38 BREAK
0xC3C PUSH.S 0xFFFFFF7C ; player
0xC44 PUSH.C 0x4
0xC4C SYSREQ.C 0xE ; cs_user_spawn(player)
0xC54 STACK 0x8 ; free 2 cells
0xC5C BREAK
0xC60 PUSH.ADR 0xFFFFFEFC ; name2[32]
0xC68 PUSH.ADR 0xFFFFFE7C ; name[32]
0xC70 PUSH.C 0x2E8
0xC78 PUSH.C 0xC
0xC80 SYSREQ.C 0xF ; log_amx("Admin %s: respawn %s. ",
name[32],name2[32])
0xC88 STACK 0x10 ; free 4 cells
0xC90 BREAK
0xC94 PUSH.ADR 0xFFFFFEFC ; name2[32]
0xC9C PUSH.ADR 0xFFFFFE7C ; name[32]
0xCA4 PUSH.C 0x344
0xCAC PUSH.C 0x3
0xCB4 PUSH.C 0x0
0xCBC PUSH.C 0x14
0xCC4 SYSREQ.C 0x10 ; client_print(0,3,"[AMXX] %s: %s u
jraelesztve.",name[32],name2[32])
0xCCC STACK 0x18 ; free 6 cells
0xCD4 BREAK
0xCD8 PUSH.ADR 0xFFFFFEFC ; name2[32]
0xCE0 PUSH.ADR 0xFFFFFE7C ; name[32]
0xCE8 PUSH.C 0x3B4
0xCF0 PUSH.C 0x2
0xCF8 PUSH.C 0x0
0xD00 PUSH.C 0x14
0xD08 SYSREQ.C 0x10 ; client_print(0,2,"[AMXX] %s: %s u
jraelesztve.",name[32],name2[32])
0xD10 STACK 0x18 ; free 6 cells
0xD18 BREAK
0xD1C CONST.pri 0x1
0xD24 STACK 0x184 ; free 97 cells
0xD2C RETN
Nem a legátláthatóbb, de minden benne van.