[Release] Ossyria legitbot (will also work for other servers)

Discussion in 'Other Games' started by algulsiento, Jun 2, 2018.

Discuss [Release] Ossyria legitbot (will also work for other servers) in the Other Games area at GameKiller.net

  1. algulsiento

    algulsiento United States The New Guy

    Post Count:
    49
    Likes Received:
    19
    Stats
    About this bot:
    This bot is a legitbot coded using AutoHotkey that stands by a wall and attacks, or stands near a fixed position and attacks. It reads the game's memory in order to allow it to perform actions more precisely and warn the user about certain events. This bot is coded in AHK to make it easy for end users to edit it and add custom features. Even if you have access to actual hacks, it would be a good idea to use this bot instead of hacking if you are playing a server with frequent random GM inspections, like Aries and Ossyria.

    Features:

    -Cannot be patched by server developers; this bot doesn't include any hacks and does not edit the game's memory. This bot was made under the assumption that people would eventually show it to server devs to try getting it patched.
    -Alerts if no NX has been gained recently (Turn this off if you are playing a server that does not give NX for killing mobs, like GMS or an older version private server)
    -Alerts if no mobs have been killed recently
    -Alerts if the player is far away from their starting position
    -Alerts if the number of players in the map changes
    -Alerts and stops the bot if the player is away from the starting map or channel
    -Alerts the player if they don't have a summon active (if the alert for that is enabled)

    You will need to edit some variables yourself, please read the comments within the script.
    Instructions are included within the script. Users should have some knowledge of AHK in order to fully enjoy the script.
    I will not be providing much support for this bot.

    Download link:
    /*
    @author Aria

    This is a script for botting on flat maps
    The bot doesn't need window focus when attacking, but it needs window focus when moving the character
    Feel free to distribute this script on other forums, but link back to the original thread so that users can get support if needed
    I recommend installing a text editor like Notepad++ or Visual Studio Code to make editing this script easier

    This bot is intended to make grinding require much less attention, not allow you to bot 24/7
    You should not leave this bot unattended; GMs CAN and WILL inspect you for botting

    An alarm will play if:
    -another player enters your map, allowing you to respond to them
    -the number of mobs hasn't changed recently
    -the amount of NX you have hasn't changed recently
    -your character is far away from the position you started the bot at
    -you are on a different map than you started the bot at

    The bot will try to save you if you get a lie detector from a player/GM, since a lie detector will prevent you from gaining NX or killing mobs, causing an alarm to be triggered
    I wouldn't be surprised if the server staff implemented measures to counteract that, so you shouldn't rely too much on that form of detection
    You may want to add color detection to the bot, which will allow you to fully detect elite bosses, lie detectors, etc

    ;===================Instructions for use===================
    COMPILE THIS SCRIPT (right click -> compile or run Ahk2Exe) AND RENAME THE EXE FILE TO SOMETHING THAT ISN'T SUSPICIOUS BEFORE STARTING IT
    You may want to change the value of some variables in the "User-defined variables" section
    You will have to change the value of "wallXPos" if you are hugging a wall
    Start this script in the map you want to bot at by the position
    You can find more detailed instructions on the thread

    OSSYRIA STAFF CAN SEE YOUR RUNNING PROCESSES BY USING THE !PROCESSES COMMAND, WHICH IS WHY YOU NEED TO RENAME THE EXE FILE TO SOMETHING THAT ISN'T SUSPICIOUS
    Known servers which block AutoHotkey: Ossyria, Aries, Global MapleStory

    If you know how to script with AutoHotkey, you should change the behavior of this script
    It is inevitable that October and his staff will see this script and develop measures against it
    GMs target people in offline mode, so don't have that enabled

    If you wish to view debug output, download DebugView from
    */


    #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
    ; #Warn ; Enable warnings to assist with detecting common errors.
    SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
    SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

    ; This function will return the correct address regardless of the
    ; bitness (32 or 64 bit) of both the AHK exe and the target process
    ; That is they can both be 32 bit or 64 bit, or the target process
    ; can be 32 bit while ahk is 64bit
    getProcessBaseAddress(WindowTitle, MatchMode=3) ;WindowTitle can be anything ahk_exe ahk_class etc
    {
    mode := A_TitleMatchMode
    SetTitleMatchMode, %MatchMode% ;mode 3 is an exact match
    WinGet, hWnd, ID, %WindowTitle%
    if !hWnd
    return ; return blank failed to find window
    ; GetWindowLong returns a Long (Int) and GetWindowLongPtr return a Long_Ptr
    BaseAddress := DllCall(A_PtrSize = 4
    ? "GetWindowLong"
    : "GetWindowLongPtr", "Ptr", hWnd, "Uint", -6, "UInt")
    SetTitleMatchMode, %mode% ; In case executed in autoexec
    return BaseAddress ; If DLL call fails, returned value will = 0
    }
    ;-----------------------------------------------
    ReadMemory(MADDRESS,PROGRAM)
    {
    winget, pid, PID, %PROGRAM%

    VarSetCapacity(MVALUE,4,0)
    ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt")
    DllCall("ReadProcessMemory", "UInt", ProcessHandle, "Ptr", MADDRESS, "Ptr", &MVALUE, "Uint",4)
    Loop 4
    result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
    result := result<<32>>32 ;convert from unsigned to signed int
    return, result
    }
    ;Reads the value of a single pointer + offset in MapleStory
    win_title = "Ossyria"
    ReadMapleMemory(POINTER, OFFSET)
    {
    ;AHK uses window title
    return ReadMemory(ReadMemory(POINTER, "Ossyria") + OFFSET, "Ossyria")
    ;return ReadMemory(ReadMemory(POINTER, %win_title%) + OFFSET, %win_title%)
    }
    ;------------------------------------------------------------

    ;===================v162 Pointers===================
    ;This bot will work on most private servers, but you need to edit the values if you are playing a different version of MS
    ;Partial values for other servers can be found on the thread
    CUserLocal := 0x01E1ABF4
    CharXOff := 0x0000D0F0
    CharYOff := CharXOff + 4

    ;Warning if familiar isn't present
    apFamiliar := 0xBB30
    AtkCountOff := 0x0000BF84

    ;Warning if mob count hasn't changed in last X seconds
    MobBase := 0x01E1F2C4 ;aka CMobPool
    MobCountOff := 0x00000010

    ;GMs may try to warp players to another channel
    ServerBase := 0x01E1ABF0
    WorldOff := 0x00002194
    ChannelOff := WorldOff + 8
    ;Warning if NX hasn't changed in last X seconds
    NXOffset := 0x00005D64

    ;Warning if more than X people in a map
    PeopleBase := 0x01E1F2C0
    PeopleCountOff := 0x00000018

    ;Warning if not in specified map
    MapInfoBase := 0x01E1F9E8
    MapIDOff := 0x000013E4

    PlayerX := ReadMapleMemory(CUserLocal, CharXOff)
    PlayerY := ReadMapleMemory(CUserLocal, CharYOff)
    AttackCount := ReadMapleMemory(CUserLocal, AtkCountOff)
    FamiliarPresent := ReadMapleMemory(ReadMapleMemory(CUserLocal, apFamiliar), 4) ;The value this pointer returns is 0 if no familiar is present
    MobCount := ReadMapleMemory(MobBase, MobCountOff)
    Channel := ReadMapleMemory(ServerBase, ChannelOff) ;Note: Channel count starts at 0
    NXAmount := ReadMapleMemory(ServerBase, NXOffset)
    PeopleCount := ReadMapleMemory(PeopleBase, PeopleCountOff)
    MapID := ReadMapleMemory(MapInfoBase, MapIDOff)


    ;===================Automatic variables===================
    startingMap := MapID ;Start on the map you are botting on
    startingChannel := Channel ;If you're not on the channel you started on, a GM obviously warped you to another one, so the script will stop and play the highest priority alert
    warnFamiliar = False ;If you're using a familiar, start the bot with it enabled, the bot will warn you if you need to resummon it
    isRunning = False

    ;used for botting on maps where we stand still and attack
    ;the bot will attempt to walk back to the position it started at if it is far away
    ;If you are botting by a wall, start the bot by the wall you are standing against
    startingPosX := PlayerX
    startingPosY := PlayerY


    ;===================User-defined variables===================
    ;used for botting on flat maps if you are moving from side to side, due to auto aggro on Ellinia this isn't needed
    mapRightSide = 0
    mapLeftSide = 0

    ;Send a warning and play a sound if the player count is different
    ;Edit the number of players depending on the number of buffers you have
    warnPlayerCount = 0
    autoDC = False ;Kill MS if the current playercount != warnPlayerCount, not recommended since if you DC if a GM enters the map, it shows you're using this script

    ;The bot will play a sound if no NX has been gained within a certain time period
    lastNX := NXAmount
    lastTimeNXGained := A_TickCount
    warningDelay := 30000 ;Warning delay in milliseconds

    ;If set to true, the script will play a sound each loop if there is no familiar present
    familiarAlert = False

    ;The script will play a sound if the mob count hasn't changed in a certain time period
    lastMobCount := MobCount
    lastMobChange := A_TickCount
    warnMobCount = False

    attackSleep = 100 ;Time to sleep (in milliseconds) between pressing each key (which should be much lower than the time your attack takes)
    movementRange = 200 ;X distance the char is allowed to wander, set this to a higher value if you are hugging a wall (like 200)

    ;If set to true, the script will make your player hug a wall and attack in just one direction
    ;Face your character in the direction you want to attack
    hugWall = True
    wallXPos = 0 ;The X position of the wall you are going to hug, which you can find by looking at the value for "PlayerX" when the messagebox below appears
    outOfWallRange = False ;This is used to let the script know it has to turn around in the direction it is attacking in if it moves out of range and has to walk back


    ;Stuff related to keys
    attackKey = {Control} ;Change this key to {Control down} if you're playing a class that holds down the attack key

    ;You can add your own buff times and delays here if you want to cast more buffs
    lastTimeBuffed1 := A_TickCount ;A_TickCount is the number of milliseconds since the computer was rebooted, it has nothing to do with the default value of buffKey1 being the 'a' key
    buffDelay1 = 60000
    buffKey1 = a
    ;To add more buffs, copy the code above and change the numbers at the end ex. lastTimeBuffed1 to lastTimeBuffed2
    ;then do the same for the auto buff code at the very bottom of the script (the block of code starting at "if(A_TickCount - lastTimeBuffed1 > buffDelay1)")
    lastTimeBuffed2 := A_TickCount
    buffDelay2 = 60000
    buffKey2 = s ;change this to whatever your second buff key is if the key is different








    ;Shows information about the game
    MsgBox, PlayerX %PlayerX% PlayerY %PlayerY% AttackCount %AttackCount% FamiliarPresent %FamiliarPresent% MobCount %MobCount% Channel %Channel% NXAmount %NXAmount% PeopleCount %PeopleCount% MapID %MapID%
    isRunning := True


    loop
    {
    PlayerX := ReadMapleMemory(CUserLocal, CharXOff)
    PlayerY := ReadMapleMemory(CUserLocal, CharYOff)
    AttackCount := ReadMapleMemory(CUserLocal, AtkCountOff)
    FamiliarPresent := ReadMapleMemory(ReadMapleMemory(CUserLocal, apFamiliar), 4) ;0 if no familiar present
    MobCount := ReadMapleMemory(MobBase, MobCountOff)
    Channel := ReadMapleMemory(ServerBase, ChannelOff) ;Note: Channel count starts at 0
    NXAmount := ReadMapleMemory(ServerBase, NXOffset)
    PeopleCount := ReadMapleMemory(PeopleBase, PeopleCountOff)
    MapID := ReadMapleMemory(MapInfoBase, MapIDOff)

    if (isRunning == True)
    {
    if(lastNX != NXAmount)
    {
    lastTimeNXGained := A_TickCount
    lastNX := NXAmount
    }
    else if(A_TickCount - lastTimeNXGained > warningDelay)
    {
    OutputDebug, "Warning: No NX gained recently"
    SoundBeep, 800, 500
    }

    if(lastMobCount != MobCount)
    {
    lastMobChange := A_TickCount
    lastMobCount := MobCount
    }
    else if(A_TickCount - lastMobChange > warningDelay)
    {
    OutputDebug, "Warning: No mobs killed recently"
    SoundBeep, 800, 500
    }

    if(startingChannel != Channel)
    {
    OutputDebug, "Warning: On different channel than we started on"
    SoundBeep, 800, 500
    WinActivate, "Ossyria"
    ;Stop all player movement
    Send {Left up}
    Send {Right up}
    }

    if(PeopleCount != warnPlayerCount)
    {
    OutputDebug, "Warning: Player count is different!"
    SoundBeep, 800, 500
    if(autoDC == True)
    {
    WinClose "Ossyria"
    }
    }

    if(warnFamiliar == True and FamiliarPresent == 0)
    {
    OutputDebug, "Notice: No familiar is present!"
    SoundBeep, 800, 500
    }

    if(startingMap != MapID)
    {
    OutputDebug, "Warning: Map ID has changed! We are now on map ID: ", %MapID%
    SoundBeep, 800, 500
    WinActivate, Ossyria
    ;Stop all player movement
    Send {Left up}
    Send {Right up}
    }
    else if(hugWall)
    {
    ;You will need to define custom behavior to handle your character being away from the Y position you started at
    ;That is because your character may have died, been warped away, etc
    ;and you will need to write different code for each map to walk back to your original position
    ;Depending on the map you are botting on, you may also want to remove some checks
    if(PlayerY > startingPosY + movementRange or PlayerY < startingPosY - movementRange)
    {
    OutputDebug, "Warning: Away from Y pos we started at"
    SoundBeep, 800, 500
    outOfWallRange = True
    WinActivate, Ossyria
    }
    ;if you're away from the wall, you've been knocked away by an elite mob and may want to handle killing it yourself
    ;or a GM may have teleported you
    else if(PlayerX > startingPosX + movementRange)
    {
    OutputDebug, "Warning: To the right of the X pos we started at"
    SoundBeep, 800, 500
    outOfWallRange = True
    WinActivate, Ossyria
    Send {Left down}
    Sleep, 50
    }
    else if(PlayerX < startingPosX - movementRange)
    {
    OutputDebug, "Warning: To the left of the X pos we started at"
    SoundBeep, 800, 500
    outOfWallRange = True
    WinActivate, Ossyria
    Send {Right down}
    Sleep, 50
    }
    else
    {
    Send {Left up}
    Send {Right up}
    if(outOfWallRange == True or AttackCount > 90)
    {
    WinActivate, Ossyria
    delay = 500 ;change this to change how far your character moves
    ;Comment out the code you are not using by adding/removing a semicolon before each line
    ;Comments will appear green in most text editors (ex. Notepad++, Visual Studio Code)
    ;The code below moves your character all the way to the wall, then back in the direction of where you normally attack, attacks once
    ;then moves forward a bit more and attacks again to guarantee the attack counter is reset

    ;If your character normally faces to the left, uncomment this code if it is commented and comment out the second block of code
    ;Example maps where you would face left: TP Stumps, LIF3, Somewhere in Crimsonwood
    Send {Right down}
    i = 0
    while (i < 100) ;Attempt to walk right for 10 seconds until we are within 50 units away from the wall
    {
    PlayerX := ReadMapleMemory(CUserLocal, CharXOff)
    if(PlayerX < startingPosX + 50)
    {
    Break
    }
    Sleep, 100
    i += 1
    }
    Sleep, %delay%
    Send {Right up}
    Sleep, %delay%
    Send %attackKey%
    Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    Send {Left down}
    Sleep, %delay%
    Send {Left up}
    Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    Send {Left down}
    Sleep, %delay%
    Send {Left up}
    Sleep, %delay%

    ;If your character normally faces to the right, leave this code uncommented and comment out the first block of code
    ;Example maps where you would face right: Colo 2
    ;Send {Left down}
    ;i = 0
    ;while (i < 100) ;Attempt to walk right for 10 seconds until we are within 50 units away from the wall
    ;{
    ; PlayerX := ReadMapleMemory(CUserLocal, CharXOff)
    ; if(PlayerX > startingPosX - movementRange)
    ; {
    ; Break
    ; }
    ; Sleep, 100
    ; i += 1
    ;}
    ;Send {Left up}
    ;Sleep, %delay%
    ;Send %attackKey%
    ;Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    ;Send {Right down}
    ;Sleep, %delay%
    ;Send {Right up}
    ;Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    ;Send {Right down}
    ;Sleep, %delay%
    ;Send {Right up}
    ;Sleep, %delay%
    outOfWallRange = False
    }
    else
    {
    Attack()
    }
    }
    }
    else
    {
    ;Moves your character back to the botting spot if you are knocked too far away and/or if an elite mob pushes you away
    ;I haven't added facing back in the direction you were attacking in yet, so use a class with an AoE that hits both sides
    ;You should also use Stance in order to minimize the number of times you are knocked back

    ;You will need to define custom behavior to handle your character being away from the Y position you started at
    ;That is because your character may have died, been warped away, etc
    ;and you will need to write different code for each map to walk back to your original position
    if(PlayerY > startingPosY + movementRange or PlayerY < startingPosY - movementRange)
    {
    OutputDebug, "Warning: Away from Y pos we started at"
    SoundBeep, 800, 500
    WinActivate, Ossyria
    }
    else if(PlayerX > startingPosX + movementRange)
    {
    OutputDebug, "Warning: To the right of the X pos we started at"
    SoundBeep, 800, 500
    WinActivate, Ossyria
    Send {Left down}
    Sleep, 50
    }
    else if(PlayerX < startingPosX - movementRange)
    {
    OutputDebug, "Warning: To the left of the X pos we started at"
    SoundBeep, 800, 500
    WinActivate, Ossyria
    Send {Right down}
    Sleep, 50
    }
    else ;Code to handle resetting attack count
    {
    ;You can add custom behavior, like taking a portal that transports you to another position within the map in order to reset your attack counter
    ;Maps where that is viable: Temple of Time, Boars, certain TP maps

    Send {Left up}
    Send {Right up}
    if(AttackCount > 90)
    {
    WinActivate, Ossyria
    Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    ;The code below moves your character in the opposite direction of where you normally attack, attacks once
    ;then moves back in the direction you normally face when botting
    delay = 500 ;change this to change how far your character moves

    ;Comment out the code you are not using by adding/removing a semicolon before each line

    ;If your character normally faces to the left, uncomment this code and comment out the second block of code
    ;Example maps where you would face left: TP Stumps, LIF3, Somewhere in Crimsonwood
    Send {Right down}
    Sleep, %delay%
    Send {Right up}
    Sleep, %delay%
    Send %attackKey%
    Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    Send {Left down}
    Sleep, %delay%
    Send {Left up}
    Sleep, %delay%

    ;If your character normally faces to the right, leave this code uncommented and comment out the first block of code
    ;Example maps where you would face right: Colo 2
    ;Send {Left down}
    ;Sleep, %delay%
    ;Send {Left up}
    ;Sleep, %delay%
    ;Send %attackKey%
    ;Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    ;Send {Right down}
    ;Sleep, %delay%
    ;Send {Right up}
    ;Sleep, %delay%
    }
    else
    {
    Attack()
    }
    }
    }
    }
    Sleep, 50
    }

    Attack()
    {
    ;Cast our first buff if it's been 60 seconds since the last time we cast it
    if(A_TickCount - lastTimeBuffed1 > buffDelay1)
    {
    Sleep, 1500 ;Change this sleep delay depending on how long your attack animation is
    ControlSend, ,%buffKey1%, Ossyria ;buffKey1 is a by default
    Sleep, 1000 ;Change this sleep delay depending on how long your buff animation is
    lastTimeBuffed1 := A_TickCount
    }

    ;ControlSend, ,%attackKey%, Ossyria
    ControlSend, ,{Control}, Ossyria
    ;Send {Control}
    Sleep, %attackSleep%
    }

    ;Pressing this key will stop the script
    ;You may want to change it
    F11::
    {
    ExitApp
    }

    To use this bot on servers besides Ossyria, you will need to find the pointers yourself. The pointers for Aries and GMS are fairly easy to find. There should be several guides on how to find pointers, google something like "How to find MapleStory pointers".

    Setup guide for the "hugWall" configuration:

    Use this image as reference: [​IMG]

    1) Stand by the wall you are going to hug and run the bot. A message box will pop up: record the value for "PlayerX". Close the bot afterward.
    For example, if I wanted to bot at DToT2, I would stand where Paradise is standing. The message box would show that PlayerX is between 1800 and 1950 (exact value varies)

    2) Edit the value of wallXPos to the value you recorded earlier.

    3) If you're facing to the right when attacking (hugging the left wall) comment out the code that pertains to hugging the right wall and uncomment the code that pertains to hugging the left wall.

    4) Recompile the script.

    5) Move slightly away from the wall and start the script. For example, for DToT2 I would stand where RobD is standing (green rectangle)
     
    Last edited: Jun 7, 2018

    Mr. Ad Advertisement

     
  2. oustofhere

    oustofhere United Kingdom Lurker

    Post Count:
    2
    Likes Received:
    0
    Stats
    What about in regards to the limited attack count?
     
  3. Yegor141

    Yegor141 ★KG️️B Spy☭ Premium

    Post Count:
    746
    Likes Received:
    267
    Stats
    Would be nice to have people detection to avoid reports
     
  4. algulsiento

    algulsiento United States The New Guy

    Post Count:
    49
    Likes Received:
    19
    Stats
    This script will move you when you're about to reach the attack limit.

    That's also in the script, I forgot to list that feature.
     
    Yegor141 likes this.
  5. jallegretta

    jallegretta Australia Lurker

    Post Count:
    3
    Likes Received:
    0
    Stats
    ive been trying to follow some guides on google about finding pointers for aries but i cant seem to get it. im using cheat engine and when i follow the guid it always restults in 0 addresses after the 3rd or 4th search. am i doing something wrong? also, im a complete noob, which part of the script do i edit once i have the pointers?

    Edit: i cant seem to find the correct things to change. im on aries and im having issues trying to get the pointers as well as which part of the script i change. sorry for being a nub but any help would be appreciated.
     
    Last edited: Jun 4, 2018
  6. algulsiento

    algulsiento United States The New Guy

    Post Count:
    49
    Likes Received:
    19
    Stats
    Use AoBs to find the pointers, don't scan for the pointers yourself unless you absolutely have to. You can find old AoBs on google.
     
  7. hux4444

    hux4444 Israel Lurker

    Post Count:
    3
    Likes Received:
    0
    Stats
    .
     
    Last edited: Jun 4, 2018
  8. ofek551122

    ofek551122 Israel The New Guy

    Post Count:
    11
    Likes Received:
    0
    Stats
    where can i get that autohotkey for this server specific
     
  9. algulsiento

    algulsiento United States The New Guy

    Post Count:
    49
    Likes Received:
    19
    Stats
    autohotkey.com
     
  10. ofek551122

    ofek551122 Israel The New Guy

    Post Count:
    11
    Likes Received:
    0
    Stats
    But it didnt work on the maple
     
  11. algulsiento

    algulsiento United States The New Guy

    Post Count:
    49
    Likes Received:
    19
    Stats
    Follow the instructions in the script; Ossyria will block AutoHotkey, so you need to do some things to get around detection.
     
  12. ofek551122

    ofek551122 Israel The New Guy

    Post Count:
    11
    Likes Received:
    0
    Stats
    yeah i see that idk how to compile
     
  13. ofek551122

    ofek551122 Israel The New Guy

    Post Count:
    11
    Likes Received:
    0
    Stats
    how do i edit the script that i can do my buffs cause everytime i tried i get dc
     
  14. Raigeki

    Raigeki United States ¯\_(ツ)_/¯ Support Premium

    Post Count:
    2,224
    Likes Received:
    2,078
    Stats
    omg what a mobile eye sore. you should put that in a spoiler. took a bit just to get down to this reply box and now I’ve forgotten what I was going to originally say.
     
  15. Push

    Push Canada Informed Hacker

    Post Count:
    51
    Likes Received:
    10
    Stats
    Great job buddy, looking good.
     
  16. HitmonYou

    HitmonYou United States The New Guy

    Post Count:
    14
    Likes Received:
    0
    Stats
    Thank you for this, gonna use parts of this to make my own bot better :D

    If anyone knows the correct offset for familiar I'd appreciate a tell. Trying to find it right now myself though.
     
    Last edited: Jun 6, 2018
  17. algulsiento

    algulsiento United States The New Guy

    Post Count:
    49
    Likes Received:
    19
    Stats
    Sorry, didn't know that would happen on mobile.

    The offset in the script is correct.
     
    Last edited: Jun 6, 2018
  18. HitmonYou

    HitmonYou United States The New Guy

    Post Count:
    14
    Likes Received:
    0
    Stats
    Don't mean to offend but do you say that it's correct based off like other servers and shit or tested in game in ossyria? Everything else is working but familiar is saying 0 when I have a familiar out and sometimes it just goes to a huge negative # but not correlating with whether or not I have a familiar out.
     
  19. algulsiento

    algulsiento United States The New Guy

    Post Count:
    49
    Likes Received:
    19
    Stats
    Yes, I've tested it out in Ossyria. I think that offset might even be the same for Aries.
     
  20. HitmonYou

    HitmonYou United States The New Guy

    Post Count:
    14
    Likes Received:
    0
    Stats
    Hmmm I don't know what's going on in my end then. It's absolutely messed up but everything else works fine.
     

Share This Page

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies.
    Dismiss Notice
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies.
    Dismiss Notice