Gold Limits for Exchange/Storage/Guild Storage

Results 1 to 3 of 3
  1. #1
    Account Upgraded | Title Enabled! lemoniscool is offline
    MemberRank
    Nov 2009 Join Date
    GermanyLocation
    579Posts

    Gold Limits for Exchange/Storage/Guild Storage

    Hi!
    Ive been working on the gold limits for exchange/storage/guild storage and got it to work with 4b max. On client side i can at least enter values higher than 500b into the field, but as soon as the value entered is higher than 7FFFFFFF(hex) it uses 4b (that means 4b is put into the exchange or storage etc)

    that is because the datatype they used to store this value is integer .. so i would need to change this datatype to long or something like that .. does anyone have any ideas about this?

    (ill give the results to everyone thats helping)


    example of one check for the value given being higher than 4b:

    Code:
    JG SHORT XXXXXXXX                        ; Value bigger than 4b (result of earlier function call)
    JL SHORT XXXXXXXX                        ; Value smaller than 4b (result of earlier function call)
    CMP ECX,EE6B2800                      ; Check if Value is 4b (recheck it maybe?)
    JNB SHORT XXXXXXXX                       ; Jump taken if not smaller than 4b
    MOV DWORD PTR SS:[ESP+10],ECX    
    MOV DWORD PTR SS:[ESP+14],EAX
    JMP SHORT XXXXXXXX                       ; Jump over the value reassignment
    MOV DWORD PTR SS:[ESP+10],EE6B2800 ;Set value = 4b, only if JNB taken
    MOV DWORD PTR SS:[ESP+14],EDX            ; ntdll.KiFastSystemCallRet
    CMP DWORD PTR SS:[ESP+14],7FFFFFFF    ;Check if value is below max integer value
    LEA EBX,DWORD PTR SS:[EBP+88]
    JL SHORT XXXXXXXX                        ; If below max integer
    JG SHORT XXXXXXXX                        ; If higher than max integer
    CMP DWORD PTR SS:[ESP+10],-1      ;some "else" i guess
    JB SHORT XXXXXXXX                        ; jump to else instructions
    CALL XXXXXXXX                            ; error function (value higher than max integer)
    CALL XXXXXXXX                            ; success function
    i also had a look at the function the gameserver uses for Stall/Consignment but to be honest thats a bit too much for my knowledge of assembler

    Code:
    MOV EDX,DWORD PTR DS:[EDI]
    MOV EAX,DWORD PTR DS:[EDX+C4]
    MOV ECX,EDI
    CALL EAX
    TEST EAX,EAX
    JE 00471B45                              ; 00471B45
    MOV EDX,DWORD PTR DS:[EDI]
    MOV EAX,DWORD PTR DS:[EDX+58]
    MOV ECX,EDI
    CALL EAX
    CMP EAX,1
    JE 00471B45                              ; 00471B45
    MOV EDX,DWORD PTR DS:[EDI]
    MOV EAX,DWORD PTR DS:[EDX+380]
    MOV ECX,EDI
    CALL EAX
    MOV DWORD PTR SS:[EBP+18],EDI
    MOV BYTE PTR SS:[EBP+8],BL
    MOV EBX,DWORD PTR SS:[ESP+1C]
    MOV DWORD PTR SS:[EBP],EAX
    LEA EDI,DWORD PTR SS:[EBP+A]
    MOV EAX,EDI
    MOV ESI,EBX
    MOV DWORD PTR SS:[EBP+4],EDX             ; ntdll.KiFastSystemCallRet
    CALL 0048BF40                            ; 0048BF40
    MOV ECX,DWORD PTR SS:[EBP+18]
    MOV EDX,DWORD PTR DS:[ECX]               ; ntdll.774B6074
    MOV EAX,DWORD PTR DS:[EDX+4E8]
    CALL EAX
    MOVZX ECX,WORD PTR DS:[EDI]
    CMP ECX,EAX
    JNZ SHORT 00471B3C                       ; 00471B3C
    MOV EAX,DWORD PTR SS:[EBP+18]
    CALL 00459D80                            ; 00459D80
    MOVZX EDX,WORD PTR DS:[EDI]
    CMP EDX,EAX
    JG SHORT 00471B3C                        ; 00471B3C
    MOV ECX,DWORD PTR SS:[EBP+18]
    MOV EAX,DWORD PTR DS:[ECX]               ; ntdll.774B6074
    MOV EDX,DWORD PTR DS:[EAX+4E8]
    CALL EDX                                 ; ntdll.KiFastSystemCallRet
    MOVZX ECX,WORD PTR DS:[EDI]
    CMP ECX,EAX
    JG SHORT 00471B3C                        ; 00471B3C
    LEA ESI,DWORD PTR SS:[EBP+10]
    MOV EDX,ESI
    MOV EDI,EBX
    CALL 0042F7B0                            ; 0042F7B0
    MOV EAX,DWORD PTR DS:[ESI]
    MOV ESI,DWORD PTR DS:[ESI+4]
    TEST ESI,ESI
    JL SHORT 00471B33                        ; 00471B33
    JG SHORT 00471B00                        ; 00471B00
    TEST EAX,EAX
    JB SHORT 00471B33                        ; 00471B33
    CMP ESI,74
    JG SHORT 00471B33                        ; 00471B33
    JL SHORT 00471B0E                        ; 00471B0E
    CMP EAX,6A528800
    JA SHORT 00471B33                        ; 00471B33
    LEA EDI,DWORD PTR SS:[EBP+1C]
    MOV EAX,EDI
    MOV ESI,EBX
    CALL 00404E50                            ; 00404E50
    CMP DWORD PTR DS:[EDI],0
    JNZ SHORT 00471B28                       ; 00471B28
    MOV EAX,3C3C
    XOR ESI,ESI
    JMP SHORT 00471B4A                       ; 00471B4A
    MOV AX,1
    POP EDI                                  ; WININET.7735C73D
    POP ESI                                  ; WININET.7735C73D
    POP EBP                                  ; WININET.7735C73D
    POP EBX                                  ; WININET.7735C73D
    RETN 0C
    greetz
    LemoniscooL
    Attached Thumbnails Attached Thumbnails sro-2013-01-04-03-a   sro-2013-01-04-10-a   sro-2013-01-04-10-a   sro-2013-01-04-10-a  
    Last edited by lemoniscool; 04-01-13 at 10:48 AM.


  2. #2
    Enthusiast Div Alberto is offline
    MemberRank
    Aug 2012 Join Date
    25Posts

    Re: Gold Limits for Exchange/Storage/Guild Storage

    the offsets in sro_client and GS ?

  3. #3
    Proficient Member elitebi is offline
    MemberRank
    Feb 2012 Join Date
    196Posts

    Re: Gold Limits for Exchange/Storage/Guild Storage

    Hello lemoniscool
    May you help me with the exchange gold limit offset? Which offset is responsible for the exchange gold limit in GS?



Advertisement