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.
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.
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
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.
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
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.
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
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:
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.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;
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
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.
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.
Scripts: ClarityNex | ClaritySlayer | ClarityElfThief | ClarityBurialArmour | ClarityMudRunes | ClarityWells | ClarityProTables | ClarityArmadyl | ClarityHarps
ClarityDominonTower | ClarityAltar | ClarityCitadel | ClarityBarrows | ClarityEsswraith | ChampionScrollCamperTools & Extensions: OpenGL ID Highlight Tool | SRL-6 Messaging System | SRL Companion | Item DTM Generator | BBCode Converter
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.
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.
@Obscurity; what's the latest with the fps issues when using OGL, especially when you interact with multiple areas?
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.
Scripts: ClarityNex | ClaritySlayer | ClarityElfThief | ClarityBurialArmour | ClarityMudRunes | ClarityWells | ClarityProTables | ClarityArmadyl | ClarityHarps
ClarityDominonTower | ClarityAltar | ClarityCitadel | ClarityBarrows | ClarityEsswraith | ChampionScrollCamperTools & Extensions: OpenGL ID Highlight Tool | SRL-6 Messaging System | SRL Companion | Item DTM Generator | BBCode Converter
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.
There are currently 1 users browsing this thread. (0 members and 1 guests)