Hello guys i am struggle to find a solution of
CHANGE_EXP_RATIO_EVENT/EUBusinessEvent x1 EXP issue.
In short
CHANGE_EXP_RATIO_EVENT/EUBusinessEvent can be enabled in
schedule.cfg with name
EUBusinessEventUpdate and set in
server.cfg ->SR_ShardManager ->ExtraExpRatio. We are using it on our server to make double exp event in selected days. WWO is set
x2 EXP/SP and
CHANGE_EXP_RATIO_EVENT is X3. Everything is working fine during event,but when event is over, game server EXP is changed back to
x1 (100) instead to x2 (250 set in server.cfg)
I try to find the offset responsible of EXP switching and set value force to x2 (200)
I think this is the offset with server logic about EXP switching,but can find the reason of issue.
(Shard Manager)
CPU Disasm
Address Hex dump Command Comments
004187FA |. 51 PUSH ECX ; /Arg1
004187FB |. E8 508F1000 CALL 00521750 ; \SR_GameServer.00521750
00418800 |. EB 0A JMP SHORT 0041880C
00418802 |> 8D5424 3B LEA EDX,[ESP+3B]
00418806 |. 52 PUSH EDX ; /Arg1
00418807 |. E8 948F1000 CALL 005217A0 ; \SR_GameServer.005217A0
0041880C |> 0FB64C24 3B MOVZX ECX,BYTE PTR SS:[ESP+3B] ; Switch (cases 1..2, 3 exits)
00418811 |. 8BC1 MOV EAX,ECX
00418813 |. 83E8 01 SUB EAX,1
00418816 |. 74 58 JE SHORT 00418870
00418818 |. 83E8 01 SUB EAX,1
0041881B |. 74 18 JE SHORT 00418835
0041881D |. 51 PUSH ECX ; Default case of switch SR_GameServer.41880C
0041881E |. 68 AC02AE00 PUSH OFFSET 00AE02AC ; ASCII "OnChangeExpRatioEvent, Unhandled Msg has been detected! (%d)"
00418823 |. 68 01000002 PUSH 2000001
00418828 |. E8 13DE5100 CALL 00936640
0041882D |. 83C4 0C ADD ESP,0C
00418830 |. E9 84000000 JMP 004188B9
00418835 |> D9E8 FLD1 ; Case 2 of switch SR_GameServer.41880C
00418837 |. 8D4424 3C LEA EAX,[ESP+3C]
0041883B |. 50 PUSH EAX ; /Arg1
0041883C |. D915 1825C800 FST DWORD PTR DS:[0C82518] ; |FLOAT 0.0
00418842 |. B8 02000000 MOV EAX,2 ; |
00418847 |. D91D 1C25C800 FSTP DWORD PTR DS:[0C8251C] ; |FLOAT 0.0
0041884D |. 8BCB MOV ECX,EBX ; |
0041884F |. C74424 40 0F0 MOV DWORD PTR SS:[ESP+40],0C0F ; |
00418857 |. E8 34B8FEFF CALL 00404090 ; \SR_GameServer.00404090
0041885C |. 68 7802AE00 PUSH OFFSET 00AE0278 ; ASCII "OnChangeExpRatioEvent CHANGE_EXP_RATIO_EVENT_STOP"
00418861 |. 68 01000002 PUSH 2000001
00418866 |. E8 D5DD5100 CALL 00936640
0041886B |. 83C4 08 ADD ESP,8
0041886E |. EB 49 JMP SHORT 004188B9
00418870 |> D905 905DB400 FLD DWORD PTR DS:[0B45D90] ; FLOAT 1.200000, case 1 of switch SR_GameServer.41880C
00418876 |. 8D4C24 3C LEA ECX,[ESP+3C]
0041887A |. 51 PUSH ECX ; /Arg1
0041887B |. D915 1825C800 FST DWORD PTR DS:[0C82518] ; |FLOAT 0.0
00418881 |. B8 02000000 MOV EAX,2 ; |
00418886 |. D91D 1C25C800 FSTP DWORD PTR DS:[0C8251C] ; |FLOAT 0.0
0041888C |. 8BCB MOV ECX,EBX ; |
0041888E |. C74424 40 0E0 MOV DWORD PTR SS:[ESP+40],0C0E ; |
00418896 |. E8 F5B7FEFF CALL 00404090 ; \SR_GameServer.00404090
0041889B |. DD05 005CB400 FLD QWORD PTR DS:[0B45C00] ; FLOAT 1.200000047683716
004188A1 |. 83EC 08 SUB ESP,8
004188A4 |. DD1C24 FSTP QWORD PTR SS:[ESP]
004188A7 |. 68 4002AE00 PUSH OFFSET 00AE0240 ; ASCII "OnChangeExpRatioEvent CHANGE_EXP_RATIO_EVENT_START (%f)"
004188AC |. 68 01000002 PUSH 2000001
004188B1 |. E8 8ADD5100 CALL 00936640
004188B6 |. 83C4 10 ADD ESP,10
004188B9 |> 833D A4A9D600 CMP DWORD PTR DS:[0D6A9A4],0
004188C0 |. 75 05 JNE SHORT 004188C7
004188C2 |. E8 99C25400 CALL 00964B60
004188C7 |> A1 A4A9D600 MOV EAX,DWORD PTR DS:[0D6A9A4]
004188CC |. E8 4FFD1D00 CALL 005F8620 ; [SR_GameServer.005F8620
004188D1 |. 5B POP EBX
004188D2 |. 8BE5 MOV ESP,EBP
Any hint will be useful.
Regards