Page 2 of 5 FirstFirst 1234 ... LastLast
Results 26 to 50 of 101

Thread: [OGL Methods] clostest, extractIDs, etc

  1. #26
    Join Date
    Nov 2007
    Location
    46696E6C616E64
    Posts
    3,069
    Mentioned
    44 Post(s)
    Quoted
    302 Post(s)

    Default

    Quote Originally Posted by cosmasjdz View Post
    Nice stuff!

    I was just wondering if for example there is a way to find for example frost dragon bone by open gl texture id if it is covered by for example other player or frost dragon. Or something similar accurately. Since traditional methods in some areas i am working in makes alot of mess especially in crowded ones. Tried to count damage done to get if my drop then count drop position on screen and if it doesnt see it in few seconds then roate screen... finding items covered would defitenely help alot.
    Since the item would still be rendered under the other items, you should be able to find it just fine with the texture id.
    There used to be something meaningful here.

  2. #27
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    It's very easy! I've never been to Frost dragons, but I'll head down there to get some IDs.

    Edit:
    A snip of code to show how you could go about doing it:
    Simba Code:
    getClientDimensions(clientWdth,clientHeight);
    centerPoint:=point(round(clientWidth/2),round(clientHeight/2));

    allModels:=glGetModels();
    frostDragons:=allModels.extractID(311122604);
    frostDragonBones:=allModels.extractID([189892155,3879831768]); //~ Model ID changes on hover.

    closestDragonToCenter:=centerPoint.closest(frostDragons);
    closestBonesToCenter:=centerPoint.closest(frostDragonBones);

    closestDragonToMouse:=getMousePoint().closest(frostDragons);
    closestBonesToMouse:=getMousePoint().closest(frostDragonBones);

    vClickOption(closestDragonToCenter.randomizePointEllipse(30),['Attack Frost dragon','Attack *Frost dragon']);
    vClickOption(closestBonesToMouse.randomizePointEllipse(15),['Take Frost dragon bones']);
    Last edited by Obscurity; 12-10-2014 at 11:13 PM.




    Skype: obscuritySRL@outlook.com

  3. #28
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    I've noticed that after a while, obsCompassDeg() starts to return the same value regardless of the angle of the minimap. Is anyone else having these issues? After looking into it, I found that it's glxMapCoords() that seems to be getting "stuck". .

    Simba Code:
    function obsCompassDeg():integer;
        var
          angle:extended;
          mapX,
            mapY:array[0..3] of single;
        begin
          glxMapCoords(mapX,mapY);
          angle:=arcTan2(mapY[3]-mapY[0],mapX[3]-mapX[0]);
          if angle>0 then
            result:=round(angle*360/(2*pi))
          else
            result:=round((2*pi+angle)*360/(2*pi));
        end;

    The angle of the minimap (as seen above) differs from the angle of the 3D world. I would just use gl_compassDeg(), but it can be off by as much as 10 degrees (from what I've seen) because it doesn't at all look at the minimap or the compass. I have functions to walk x-amount of squares in various directions, walk in the direction of various dots, etc, that rely on it being precise.

    To fix it, I'd have to close SMART and relaunch the client. Thought it was a bit strange. :/.

    Edit: Reverted back to GLX.dll v3.6 to see if it'll work. Guess we'll see. .
    Edit 2: Nope. Might it be from going in and out of a minigame which has a new map so often? I have it always displaying the gl_compassDeg() and my obsCompassDeg(). Eventually, and I don't know why, glxMapCoords() starts to return the correct information again...
    Last edited by Obscurity; 12-15-2014 at 01:37 AM.




    Skype: obscuritySRL@outlook.com

  4. #29
    Join Date
    Feb 2011
    Location
    The Future.
    Posts
    5,600
    Mentioned
    396 Post(s)
    Quoted
    1598 Post(s)

    Default

    Quote Originally Posted by Obscurity View Post
    I've noticed that after a while, obsCompassDeg() starts to return the same value regardless of the angle of the minimap. Is anyone else having these issues? After looking into it, I found that it's glxMapCoords() that seems to be getting "stuck". ..

    I would suggest to stay away from doing the calculations yourself (unless you want to learn how they are actually done)..

    Simba Code:
    {*
      Calculates the Euler Angles in Radians from the ModelView Matrix in the specified row
      or column major order.

      Calculates the pitch, yaw, roll of the game camera.
    *}

    Procedure glEulerAngles(var X, Y, Z: Double; ModelView: array [0..15] of single; RowMajor: Boolean);
    begin
      if (RowMajor) then
      begin
        X := FixRad(ArcTan2(ModelView[6], ModelView[10]));
        Y := FixRad(ArcTan2(-ModelView[8], sqrt(pow(ModelView[0], 2) + pow(ModelView[1], 2))));
        Z := FixRad(ArcTan2(ModelView[1], ModelView[0]));
      end else
      begin
        X := FixRad(ArcTan2(ModelView[9], ModelView[10]));
        Y := FixRad(ArcTan2(-ModelView[8], sqrt(pow(ModelView[0], 2) + pow(ModelView[4], 2))));
        Z := FixRad(ArcTan2(ModelView[4], ModelView[0]));
      end;
    end;

    {*
      Returns the current compass angle in Degrees and Radians.
      NOTE: Uses the COMPASS texture internally.
    *}

    Procedure GL_CompassAngle(var DA, RA: Single);
    var
      TL, BL, BR, TR: FloatPoint; //TopLeft, BottomLeft, BottomRight, TopRight of the compass texture.
    Begin
      If (Not GL_LoggedIn) Then Exit;
      GL_GetMapCoords(TL, BL, BR, TR);
      RA := FixRad(ArcTan2(TR.Y - TL.Y, TR.X - TL.X));
      DA := FixD(Degrees(RA));
    End;

    {*
      Returns the compass angle in degrees.
      NOTE: Uses the CAMERA angles internally.
    *}

    Function GL_CompassDeg: Integer;
    var
      X, Y, Z: Double;
    begin
      glEulerAngles(X, Y, Z, GLXMatrices^, True);
      Result := Round(Degrees(Z));
    end;
    Last edited by Brandon; 12-15-2014 at 06:08 AM.
    I am Ggzz..
    Hackintosher

  5. #30
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Again, you're missing what I need. My functions interact with the actual minimap and depend on the angle of the actual map image. So, for these functions at least, glEulerAngles() and gl_compassDeg() are useless to me because they aren't 100% accurate to the minimap - like gl_compassAngle() is. But even gl_compassAngle() uses glxMapCoords(), which is what ends up getting stuck - just returning the same position even if it changes. It fixes after some time, but I'm unsure as to what causes it because I don't have time to watch it for two hours at a time. I know how to do basic trig to get the angle of the minimap from the two top points.

    I've sent my scripts to some friends and asked them if it's also doing it to them. Still waiting on a reply. It may only be my computer, who knows. Just curious as to what could be causing it.
    Last edited by Obscurity; 12-15-2014 at 01:36 PM.




    Skype: obscuritySRL@outlook.com

  6. #31
    Join Date
    Feb 2011
    Location
    The Future.
    Posts
    5,600
    Mentioned
    396 Post(s)
    Quoted
    1598 Post(s)

    Default

    Quote Originally Posted by Obscurity View Post
    Again, you're missing what I need. My functions interact with the actual minimap and depend on the angle of the actual map image. So, for these functions at least, glEulerAngles() and gl_compassDeg() are useless to me because they aren't 100% accurate to the minimap - like gl_compassAngle() is. But even gl_compassAngle() uses glxMapCoords(), which is what ends up getting stuck - just returning the same position even if it changes.

    I don't think I missed any points..

    glEulerAngles was designed to get the exact camera angle (down to 15 decimal places) from the game (same angle displayed by your compass AND map).

    At max height, it seems to always have the compass angle correct afaik.. At the lowest height, the angles are flipped. It is actually supposed to be the same accuracy as the map because the map is actually applied the same matrix transformation.

    The only reason the map is more "reliable" (not accurate) is because it works at any camera height. I wasn't able to figure out the relationship between the angles and the height for glCompassAngle (which sometimes throws the angle off by a 1-5 degrees).. TOO MUCH math involved.


    Progress Report:
    CompassHeight (Max - 65.053 deg from floor):
    CompassDeg (X, Y, Z):
    
    0deg:        65.0537253622628   358.814165052872   1.07537657735905
    90deg:       89.260411234006   312.03851248133   88.2931485771235
    180deg:      115.286564608444   358.615368311296   178.747763300624
    270deg:      90.1881102037367   47.9243745800853   269.562655218025
    
    
    CompassHeight (Mid - 25.708 deg from floor):
    CompassDeg (X, Y, Z):
    
    0deg         25.708402243652   358.813011089521   0.514896232340037
    90deg        93.5895140640883   284.592436159732   93.7173202476157
    180deg       154.90307702799   358.704081833244   179.450348465341
    270deg       90.8989343453904   67.1392468241707   269.008672761468
    
    
    
    CompassHeight (Low - 13.762 deg from floor):
    CompassDeg (X, Y, Z):
    
    0deg:        13.7624148875505   1.69169652884413   359.597596807979
    90deg:       77.9527238194348   283.654247204305   77.5930785465022
    180deg:      166.486754945655   355.694293448629   178.99462624173
    270deg:      87.8507577921787   77.1021010565408   272.207848194156



    Notice that the more you rotate it, the angles are swapped at nodes or troughs on the sin/cos graphs.

    I didn't figure out the relationship but other than the height, the angles are usually 100% correct and the exact same as that of the map (since the same transformations are applied to the map)..


    Hence why I suggested using that instead. I forget that the height affects the angle and assumed that your script ran at max height throughout its lifetime.

    However, describe what you mean by "STUCK".. Is it frozen? Does it freeze the script? Or does it just display the wrong angles because I can't replicate either one..


    MessageBox = What the plugin is sending to Simba.
    1: http://i.imgur.com/55f0PfM.png
    2: http://i.imgur.com/xmFMwRo.png

    What Simba received:
    3: http://i.imgur.com/F6IKvOC.png


    I've ran around RS and changed angles and every time.. it's correct (not "stuck").. What plugin version are you using? 3.7 doesn't have any problems.

    A work around or backup would be to grab the "Compass Texture" and apply the same calculations as is applied to the map/map coords.
    Last edited by Brandon; 12-15-2014 at 06:02 PM.
    I am Ggzz..
    Hackintosher

  7. #32
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    It doesn't freeze the script, no. It will run fine for a good half hour or so, returning the correct values. Then, all of a sudden, it's as if it doesn't notice that the map is being rotated or moved. The script continues to run, but the arrays of 4 singles used for TL, BL, BR, TR don't change despite it being rotated. It tends to happen when going in and out of things like Pest Control.

    It's strange behavior - I can't think of a cause for it. What makes it even more strange is that it ends up fixing itself like 15-30 minutes later.

    The way I know it fixed itself is I ended up using gl_compassDeg() for the script while debugging glxMapCoords().

    I tried using 3.7 and 3.6.



    While I have you here, can you perhaps explain how to use your compass height functions? I didn't have much time to dive too far into them, but I noticed that rotating the map left and right would affect the value returned by gl_compassHeightDeg() by as much as 97 degrees. Am I misunderstanding the purpose of the function? Sorry. :P.

    Edit: As for your work-around, how do I get the TL, BL, BR, TR of a texture? All I've been using is glGetTextures() which seems to only give the bounding area of the texture. Again, sorry, but I've not dealt with Simba/SMART/your GLX plugin.
    Last edited by Obscurity; 12-15-2014 at 09:04 PM.




    Skype: obscuritySRL@outlook.com

  8. #33
    Join Date
    Feb 2011
    Location
    The Future.
    Posts
    5,600
    Mentioned
    396 Post(s)
    Quoted
    1598 Post(s)

    Default

    Quote Originally Posted by Obscurity View Post
    The way I know it fixed itself is I ended up using gl_compassDeg() for the script while debugging glxMapCoords().
    I tried using 3.7 and 3.6.
    I guess you can't use the regular textures because their bounding box isn't registered. I only hooked their vertices and their sizes and calculated the TBox using that. Some textures are rendered specially like the Map (float coords vs. integer coords). The compass used to be "int coords" but it's probably float coords now and since only the map hook uses float coords, the compass texture won't show up. So my work around is a failure.


    -----------------

    Well that's weird indeed. It should never do return bad values so long as the map is being rendered (and you are using BOTH: https://github.com/Brandon-T/GLX/releases/tag/3.7 .dll's from there).. If it cannot find the map for some reason OR it finds the map but the ID isn't what it expects, it will fail.. That's the only time it would ever fail and I've never seen that before..

    EDIT:

    I just replicated it.. Give me a second to see what's causing it.
    Last edited by Brandon; 12-15-2014 at 09:52 PM.
    I am Ggzz..
    Hackintosher

  9. #34
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Well, I figured out what fixes it - loading a new map. For example, if it's stuck and a PC game starts, it fixes. Or if it's stuck and the game ends, it also seems to fix.

    How do I go about printing the pixels, image and bind? I'll get that to you as soon as I can. I wish I'd catch it as it happens... Because if I saw that it happens as soon as the game starts or ends, then I could say it's caused sometime during loading a new map.

    Unrelated, if you'd like to include my obsMakeCompass() (name it gl_makeCompass() if you want) in your miniMap.simba, feel free:
    Simba Code:
    {
     ========================================
     NOTE: The obsMakeCompass function moves
     the camera to a desired angle with a
     given tolerance. The angle can also be
     a string: North, North-West, etc. This
     string is not case-sensitive and can use
     a space rather then a hyphen. If the
     camera sucecssfully reaches the desired
     angle by the timeOut, the function
     returns true.

     Angle | Facing
     0     | North
     90    | West
     180   | South
     270   | East
     360   | North

     EXAMPLES:
     ----------------------------------------
     writeLN('Randomly rotating the camera south-east...'));
     obsMakeCompass(225);
     ----------------------------------------
     writeLN('Randomly rotating the camera south-west...'));
     obsMakeCompass('south-west');
     ----------------------------------------
     writeLN('Randomly rotating the camera...'));
     obsMakeCompass();
     ----------------------------------------
     writeLN('Randomly rotating the camera anywhere east...'));
     obsMakeCompass('east',180);
     ========================================
    }


      function obsMakeCompass(desiredAngle:single=random(360);compassTolerance:integer=45;timeOut:integer=random(5000,10000)):boolean;
        var
          angleDistance,
            currentAngle:single;
          leftIsDown,
            rightIsDown:boolean;
          timeStart:integer;
        begin
          timeOut:=getSystemTime+timeOut;
          timeStart:=getSystemTime;
          angleDistance:=shortestArcDeg(gl_compassDeg(),desiredAngle);
          while (abs(angleDistance:=shortestArcDeg(gl_compassDeg(),desiredAngle))>compassTolerance) and (getSystemTime<timeOut) do
            begin
              leftIsDown:=isKeyDown(37);
              rightIsDown:=isKeyDown(39);
              if (angleDistance<0) then
                begin
                  if rightIsDown then
                    begin
                      keyUp(39);
                      if (not leftIsDown) then
                        wait(random(250));
                    end;
                  if (not leftIsDown) then
                    keyDown(37);
                end
              else
                begin
                  if leftIsDown then
                    begin
                      keyUp(37);
                      if (not rightIsDown) then
                        wait(random(250));
                    end;
                  if (not rightIsDown) then
                    keyDown(39);
                end;
            end;
          if isKeyDown(37) then
            keyUp(37);
          if isKeyDown(39) then
            keyUp(39);
          result:=abs(angleDistance:=shortestArcDeg(gl_compassDeg(),desiredAngle))<=compassTolerance;
        end;

      function obsMakeCompass(desiredAngleString:ansiString;compassTolerance:integer=10;timeOut:integer=random(5000,10000)):boolean;overload;
        var
          angleDistance,
            currentAngle,
            desiredAngle:single;
          leftIsDown,
            rightIsDown:boolean;
          timeStart:integer;
        begin
          desiredAngleString:=replace(lowerCase(desiredAngleString),' ','-',[0,1]);
          case desiredAngleString of
            'north':desiredAngle:=0;
            'north-west':desiredAngle:=45;
            'west':desiredAngle:=90;
            'south-west':desiredAngle:=135;
            'south':desiredAngle:=180;
            'south-east':desiredAngle:=225;
            'east':desiredAngle:=270;
            'north-east':desiredAngle:=315;
            end;
          timeOut:=getSystemTime+timeOut;
          timeStart:=getSystemTime;
          angleDistance:=shortestArcDeg(gl_compassDeg(),desiredAngle);
          while (abs(angleDistance:=shortestArcDeg(gl_compassDeg(),desiredAngle))>compassTolerance) and (getSystemTime<timeOut) do
            begin
              leftIsDown:=isKeyDown(37);
              rightIsDown:=isKeyDown(39);
              if (angleDistance<0) then
                begin
                  if rightIsDown then
                    begin
                      keyUp(39);
                      if (not leftIsDown) then
                        wait(random(250));
                    end;
                  if (not leftIsDown) then
                    keyDown(37);
                end
              else
                begin
                  if leftIsDown then
                    begin
                      keyUp(37);
                      if (not rightIsDown) then
                        wait(random(250));
                    end;
                  if (not rightIsDown) then
                    keyDown(39);
                end;
            end;
          if isKeyDown(37) then
            keyUp(37);
          if isKeyDown(39) then
            keyUp(39);
          result:=abs(angleDistance:=shortestArcDeg(gl_compassDeg(),desiredAngle))<=compassTolerance;
        end;
    Just thought I'd offer. :P. If it passes the desired angle for any reason, it'll change direction keys. The main difference is that it holds the keys, rather then press for ~50MS until it reaches.




    Skype: obscuritySRL@outlook.com

  10. #35
    Join Date
    Feb 2011
    Location
    The Future.
    Posts
    5,600
    Mentioned
    396 Post(s)
    Quoted
    1598 Post(s)

    Default

    Quote Originally Posted by Obscurity View Post
    Well, I figured out what fixes it.
    There's nothing that fixes it in Simba.. I was an idiot and assumed that the map was the only thing rendered with GL_UNPACK_ROW_LENGTH set to 512.. But it's not (it used to be)..

    It turns out they unpack the chatbox with 512 bytes all at once (so it mistook the chatbox id for the map id and since the chatbox disappears, voila.. no more map angles).. I patched the map hook but I also added a new hook (no changes to anyone's code required)..

    The new hook is for animated textures as I described above.. You should now be able to glGetTexture on the "compass needle", "high alchemy flames", "login cursor", and anything that uses textures.. As of this post, the compass is: `glGetTextures(37222, 657159, 7);` w: 51, h:51. You can calculate its angles with all the givens (though, you shouldn't need to anymore).

    Release: https://github.com/Brandon-T/GLX/releases/tag/3.7
    Code: https://github.com/Brandon-T/GLX/com...40d93b9e9049fa

    It's still v3.7 as it was just a patch and a simple hook.


    Hopefully I didn't break anything in the process (let me know if I did and if the angles are updated when the map rotates)..

    I doubt you need the help with math but just in case:
    Simba Code:
    {*
        Calculates the compass angle based on the compass texture(not the map [similar, if not the same, result]).
        PI / 4 is the angle of the diagonal at rest state (angle 0 or 360).
     
        Returns -1 upon failure (because 0 <= angle_success < 360 || 0 <= angle_success < 2PI)..
    *}

    Procedure gl_CompassNeedleAngle(var DA, RA: Single);
    var
      tex: glTextureArray;
    begin
      RA := -1;
      DA := -1;
      tex := glGetTextures(37222, 657159, 10);
      if (length(tex) > 0) then
      begin
        RA := FixRad(ArcTan2(tex[0].Bounds.Y2 - tex[0].Bounds.Y1, tex[0].Bounds.X2 - tex[0].Bounds.X1) - (PI / 4));
        DA := FixD(Degrees(RA));
      end;
    end;
    Last edited by Brandon; 12-16-2014 at 12:40 AM.
    I am Ggzz..
    Hackintosher

  11. #36
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Awesome, Brandon, thanks! I will certainly let you know!

    Edit: So far so good! It's working great. If it does happen again, I'll let you know, but it'd usually have happened by now. The biggest angle difference I've seen so far between the minimap and the needle texture it 2 degrees, which is great!

    Also good news with the animated textures. I was looking for the texture for qued abilities (spinner). I just went with the circle-shaped background instead. :P.

    Thanks again, mate!

    Edit 2: Another great thing about the animated textures... It now includes cooldown textures, making it possible to determine if an ability is ready. .
    Last edited by Obscurity; 12-18-2014 at 02:29 AM.




    Skype: obscuritySRL@outlook.com

  12. #37
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Another update!

    Changes listed below...

    The most notable change is obsAbilityIsOnCooldown(). After Brandon updated the OpenGL plugin to include animated textures (https://github.com/Brandon-T/GLX/releases/tag/3.7), cooldowns can now be detected. The function ignores spaces and is not case sensitive. Therefore, any of the following are valid:
    Simba Code:
    isOnCooldown:=obsAbilityIsOnCooldown('rApIdFiRe');
     isOnCooldown:=obsAbilityIsOnCooldown('guthix''s blessing');

    The ability must be visible - either on your ability bar or powers window.

    Another set of big updates are the minimap functions and methods: obsLocalMap(), .obsLocalMap(), and obsLocalMapReverse(). Simply calling obsLocalMap() will give your player's location on the currently loaded minimap, regardless of camera angle. The method, .obsLocalMap(), will return the position of any point or texture on the currently loaded minimap. So, for example:
    Simba Code:
    dotArray:=glGetTextures(3570);
    dotPosition:=glGetTextures()[0];
    playerPosition:=obsLocalMap();
    if playerPosition.x<dotPosition.x then
     writeLN('dotArray[0] is west of your player.');
    if playerPosition.y<dotPosition.y then
     writeLN('dotArray[0] is south of your player.');

    Similar to the obsLocalMap() function and method, the obsLocalMapReverse() function allows you to specify a point on the minimap and get it's position on screen. So, if you knew a tree spawns on the 20th,45th tile of the minimap, you would find the area to click with:
    Simba Code:
    obsLocalMapReverse(point(20,45),true);

    The true converts the X,Y to squares in the 3D world. Every square east you walk, for example, your minimap position changes by +4px. The true simpy divides the X,Y by 4.

    Another change was to the obsMiniMapClickAngle() and obsMakeCompass() functions/procedures. You can now specify a string direction. For this, I'll simply copy the notes in the SIMBA file for obsMiniMapClickAngle():
    Simba Code:
    {
     ========================================
     NOTE: The obsMinimapClickAngle
     procedures clicked a specified angle on
     the minimap. If angleRelative is true,
     the specified angle is offset by the
     camera's current position.

     Angle | Click
     0     | North
     45    | North-West
     90    | West
     135   | South-West
     180   | South
     225   | South-East
     270   | East
     315   | North-East
     360   | North

     EXAMPLES:
     ----------------------------------------
     writeLN('Walking somewhere south with a 90 degress tolerance...');
     obsMinimapClickAngle(180,90);
     ----------------------------------------
     writeLN('Walking somewhere up-left (regardless of current camera angle) with a 45 degress tolerance...');
     obsMinimapClickAngle(45,457,false);
     ----------------------------------------
     writeLN('Walking somewhere north-east...');
     obsMinimapClickAngle('NoRtH-EaSt');
     ----------------------------------------
     writeLN('Walking somewhere north-east with a 90 degree tolerance...');
     obsMinimapClickAngle('south west',90);
     ========================================
    }

    The obsCompassDeg() function has an optional useNeedle parameter. If set to true, it'll use the angle of the needle texture. If false, it'll use the angle of the actual map image. As you can see above, these won't be off by much.

    As always, any other added or updated function, method, or procedure is bolded in the original post.
    Last edited by Obscurity; 12-19-2014 at 10:33 PM.




    Skype: obscuritySRL@outlook.com

  13. #38
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Sorry... Fixed a few errors with my last update. Had a few typos in the script. Also added obsAbilityIsQued(). Redownload from the original post.




    Skype: obscuritySRL@outlook.com

  14. #39
    Join Date
    Dec 2011
    Posts
    2,147
    Mentioned
    221 Post(s)
    Quoted
    1068 Post(s)

  15. #40
    Join Date
    Jan 2012
    Location
    East Coast
    Posts
    733
    Mentioned
    81 Post(s)
    Quoted
    364 Post(s)

    Default

    Quote Originally Posted by Clarity View Post
    Hi!

  16. #41
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Sorry again... Haha. A bit of free time today, so adding functions as I think of them. Updated the attachment with obsGetAbilityKey(), obsGetAbilityBarNumber(), and obsGetAbilityBarNumberString().

    They're self explanatory, but just in-case, I'll copy the notes from the SIMBA file:
    Simba Code:
    {
     ========================================
     NOTE: The obsGetAbilityKey functions
     return the key required to activate the
     desired ability via the actionbar.

     EXAMPLES:
     ----------------------------------------
     abilityBarKey:=obsGetAbilityKey('rApIdFiRe');
     if abilityBarKey<>'' then
      sendKeys(abilityBarKey,60+random(60),60+random(60));
     ========================================
    }
    Simba Code:
    {
     ========================================
     NOTE: The obsGetAbilityBarNumber and
     obsGetAbilityBarNumberString functions
     return the current ability bar number as
     an integer or string, respectively.

     EXAMPLES:
     ----------------------------------------
     abilityBarNumber:=obsGetAbilityBarNumber();
     if abilityBarNumber<>4 then
      writeLN('Switching to abilitybar 4...');
     ========================================
    }

    Also edited the way the other ability functions work.


    Cheers.




    Skype: obscuritySRL@outlook.com

  17. #42
    Join Date
    Apr 2012
    Posts
    157
    Mentioned
    10 Post(s)
    Quoted
    57 Post(s)

    Default

    Quote Originally Posted by Clarity View Post
    You rang?

  18. #43
    Join Date
    Feb 2007
    Location
    Alberta, Canada
    Posts
    4,615
    Mentioned
    50 Post(s)
    Quoted
    429 Post(s)

    Default

    Quote Originally Posted by Clarity View Post
    Yes?

    Scripts: Edgeville Chop & Bank, GE Merchanting Aid
    Tutorials: How to Dominate the Grand Exchange

    Quote Originally Posted by YoHoJo View Post
    I like hentai.

  19. #44
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Several big updates. All added or edited items have been bolded in the first post. I'm just going to copy the notes and descriptions for the added items from the Simba file.

    You'll notice that some are similar to ones provided in the standard GLX includes. Let me explain.

    GL_InvCount will detect any non-background texture over the inventory as an item. Therefore, things like right click menus, monster health bars, etc would give false counts. The obs functions narrow the search further and give accurate results.

    obsClickOption is very similar to its GLX counterpart. However, its GLX equivalent failed to hide the menu under certain circumstances. These being if the menu took the entire height of the client or if the right click was too close to the top or bottom of the client, that moving it slightly upwards would fail to hide it. obsClickOption uses a unique method for hiding the menu. Think about it like drawing a tic-tac-toe type grid around the menu and moving the mouse to an available square. The click area on the menu, with GLX, didn't account for the full menu, only the bounds of the word(s) supplied.

    The GL_CompassHeightDeg... IDK. This function would return incorrect values if the camera wasn't facing 100% north. obsCompassHeight correctly returns the camera height in angles. The following image best describes it:



    Simba Code:
    {
     ========================================
     NOTE: The obsActionBarKey function
     returns which key is required to
     activate the specified action.

     EXAMPLES:
     ----------------------------------------
     keyToPress:=obsActionBarKey(3);
     writeLN('To activate the fourth ability, press '+keyToPress);
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsActionBarActionKey function
     returns which key is required to
     activate the specified action, given a
     texture ID and/or colourID.

     EXAMPLES:
     ----------------------------------------
     keyToPress:=obsActionBarActionKey(126225);
     writeLN('To break the teleport tab, press '+keyToPress);
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsClickOption function right
     clicks a specific point and searches for
     the desired menu item. If no match is
     found, it'll thyen hide the menu.

     EXAMPLES:
     ----------------------------------------
     keyToPress:=obsActionBarActionKey(126225);
     writeLN('To break the teleport tab, press '+keyToPress);
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsCompassHeight and
     obsCompassHeightE functions return the
     micurrent angle of the camera. This is a
     value from 0 to 90. Keep in mind that in
     most cases, the camera can not exceed 52
     and can not reach 0.

     EXAMPLES:
     ----------------------------------------
     cameraAngle:=obsCompassHeight();
     writeLN('The camera is currently at '+toStr(cameraAngle)+' degrees.');
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsGetAbilityColourID function
     returns an ability's colour ID, given
     it's name. It was written to be used by
     functions within the obscurityLibrary
     and is not recommended elsewhere.

     EXAMPLES:
     ----------------------------------------
     colourID:=obsGetAbilityColourID('rApIdFiRe');
     abilityTexture:=glGetTextures(137700,colourID,2);
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsInventoryCount function
     returns the total number of items being
     carried by the player.

     EXAMPLES:
     ----------------------------------------
     carriedItems:=obsInventoryCount();
     writeLN('The player is carrying '+toStr(carriedItems)+' items.');
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsInventoryFindItem functions
     returns a glTextureArray of inventory
     items matching the specified ID(s) and
     colourID(s).

     EXAMPLES:
     ----------------------------------------
     itemList:=obsInventoryFindItem(92055);
     if (not itemList.isEmpty()) then
      begin
       writeLN('Clicking the 1st found item...');
       mouse(itemList[0].toPoint(),1);
      end;
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsInventoryFull function
     returns whether or not the player's
     inventory is currently carrying 28
     items.

     EXAMPLES:
     ----------------------------------------
     inventoryIsFull:=obsInventoryFull();
     if inventoryIsFull then
      writeLN('The player currently has a full inventory.');
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsInventoryItem function
     returns the glTexture of the item
     occupying the specified inventory slot.
     Keep in mind that inventory items go
     from 0 to 27.

     EXAMPLES:
     ----------------------------------------
     item3:=obsInventoryItem(3);
     if item3.id=92055 then
      writeLN('The item in the fourth slot is a flask.');
     ========================================
    }

    Simba Code:
    {
     ========================================
     NOTE: The obsMakeCompassHeight function
     moves the camera to a desired height
     with a given tolerance. If the camera
     sucecssfully reaches the desired height
     by the timeOut, the function returns
     true.

     EXAMPLES:
     ----------------------------------------
     writeLN('Raisijng the camera to 45 degrees...'));
     obsMakeCompassHeight(45);
     ----------------------------------------
     writeLN('Lowering the camera to 15 degrees...'));
     obsMakeCompassHeight(15);
     ----------------------------------------
     writeLN('Randomly positioning the camera...'));
     obsMakeCompassHeight();
     ========================================
    }
    Last edited by Obscurity; 01-14-2015 at 01:29 AM.




    Skype: obscuritySRL@outlook.com

  20. #45
    Join Date
    Jun 2007
    Location
    The land of the long white cloud.
    Posts
    3,702
    Mentioned
    261 Post(s)
    Quoted
    2006 Post(s)

  21. #46
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default


    When I was using my old 7870s, my FPS would slowly drop from ~30 down to less then 5. I had similar issues on my laptop. Both AMD cards. I've upgraded and now remain around 30 with SMART in OpenGL. Though, in the JagexLauncher, I'm always maxed.




    Skype: obscuritySRL@outlook.com

  22. #47
    Join Date
    Dec 2011
    Posts
    2,147
    Mentioned
    221 Post(s)
    Quoted
    1068 Post(s)

    Default

    Although personally since recent plugin updates I've never experienced the FPS issues. Most prior FPS issues were due to bad scripting style/memory management anyway.
    Last edited by Clarity; 01-14-2015 at 04:11 AM.

  23. #48
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    Not a major update in terms of new functions. However, I've renamed a few for consistency.

    New functions include things like:
    obsGetAutoRetaliate()
    obsGetRunEnergy()
    obsGetRunMode()
    obsSetAutoRetaliate()
    obsSetRunMode()
    Etc.

    A few methods have also been expanded to work with other data types, such as .extractID() and extractColourID() working with glCharArrays.




    Skype: obscuritySRL@outlook.com

  24. #49
    Join Date
    Jun 2012
    Posts
    586
    Mentioned
    112 Post(s)
    Quoted
    296 Post(s)

    Default

    A heads up... I started on my first public release last night. I have dozens of private scripts that I write for friends, but this will be a public OGL obsLividFarm. :-). Built entirely from I obscurityLibraryUpload, you'll see it tonight!




    Skype: obscuritySRL@outlook.com

  25. #50
    Join Date
    Jan 2014
    Posts
    147
    Mentioned
    7 Post(s)
    Quoted
    75 Post(s)

    Default

    Quote Originally Posted by Obscurity View Post
    A heads up... I started on my first public release last night. I have dozens of private scripts that I write for friends, but this will be a public OGL obsLividFarm. :-). Built entirely from I obscurityLibraryUpload, you'll see it tonight!
    Oh god, the hype <3

Page 2 of 5 FirstFirst 1234 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •