Jump to content
Janilabo

Intro to MSSL's RuneScape 2007 commands

Recommended Posts

Introduction to MSSL's useful RuneScape 2007 stuff!

 

NOTE: This introduction is based on MSSL 1.00(+). :)

 

Client (Applet)

 

Constants for client/applet dimensions and area:

  RS07_APPLET_WIDTH = 765;
 RS07_APPLET_HEIGHT = 503;
 RS07_APPLET_AREA_XS = 0;
 RS07_APPLET_AREA_YS = 0;
 RS07_APPLET_AREA_XE = (RS07_APPLET_WIDTH - 1);
 RS07_APPLET_AREA_YE = (RS07_APPLET_HEIGHT - 1);

 

var RS07_DisableGetClientActiveFromSetup: Boolean;

-If this boolean is set as True before running MSSL_Setup, MSSL wont use RS07_GetClientActive within setupment (at the script start). So, this disables the default action for getting client active using mouse click during setup.

 

procedure RS07_GetClientActive;

-Running this procedure will get RuneScape 2007 client (applet) active with mouse action (click), so that SCAR commands go correctly inside the client and not outside.

NOTE: Good example being the keyboard commands, that could mess up stuff (such as compass rotation, if client is shown but not active).

 

Player

 

type RS07_TPlayer = record

-This type is used for login and bank pin things. Contains data/information fields for:

-login (string)
-password (string)
-username (string)
-bankPin (array[0..3] of Integer)

 

var RS07_Player: RS07_TPlayer;

-This variable is used for storing currently active player's information for SCAR Divi.

Used in RS07_SetLoginDetails, RS07_LoginPlayer, RS07_EnterPlayerBankPin...

 

function RS07_ToPlayer(login, password, username: string; bankPin: TIntArray): RS07_TPlayer;

-Used for converting parameters to RS07_TPlayer type.

NOTE: You can leave bankPin as empty array ([]) if you don't use bank pin with your player.

bankPin can be array with any length, but ONLY array with length of for ([*, *, *, *]) will be accepted as valid bank pin, for obvious reasons. IF bankPin is <> 4 digits, bank pin will be left as 0, 0, 0, 0 (which is default).

 

procedure RS07_SetActivePlayer(login, password, username: string; bankPin: TIntArray);

-With this procedure you can set currently active player using the parameters.

bankPin can be left as empty [] when you don't use bank pin.

When you run this procedure, the currently active player (RS07_Player) information will be changed to the details by parameters.

 

Login

 

function RS07_LoggedIn: Boolean;

-This function returns True if our character is logged in to RuneScape 2007, else the result will be False.

 

function RS07_AtLogin: Boolean;

-This function returns True if we are at Login page, it's the page that contains New User & Existing User options.

NQHjBxp.png

Image of Login page

 

function RS07_AtLoginNewUserPage: Boolean;

-This function returns True if we are at New User page of Login.

c8tlbEG.png

Image of New User page

 

function RS07_AtLoginDetails: Boolean;

-This function returns True if we are at Login Details, the page with Username and Password fields.

NTTPYRs.png

Image of Login Details page

 

function RS07_GetLoginMessage: string;

-This function returns the current message of Login Details page as string. List of supported messages below!

-Connecting to server... Try again in 60 secs...
-Your account is already logged in. 
-Error connecting to server.
-Invalid username/email or password.
-Your account has been disabled. Check your message centre for details.
-Enter your username/email & password.
-You need to vote to play! Visit runescape.com and vote, and then come back here!
-Please enter your username/email address.
-Please enter your password.
-Too many incorrect logins from your address. Please wait 5 minutes before trying again.
-The server is being updated. Please wait 1 minute and try again.
-RuneScape has been updated! Please reload this page.
-This world is full. Please use a different world.

 

function RS07_GetLoginMessageID: ID;

-This function returns the current message's ID from Login Details page.

Login message ID constants:

  RS07_LOGIN_MESSAGE_COUNT = 13;
 RS07_LOGIN_MESSAGE_CONNECTING = 0; 
 RS07_LOGIN_MESSAGE_ACCOUNT_ONLINE = 1;     RS07_LOGIN_MESSAGE_LOGGED_IN = RS07_LOGIN_MESSAGE_ACCOUNT_ONLINE;
 RS07_LOGIN_MESSAGE_UNABLE_TO_CONNECT = 2;  RS07_LOGIN_MESSAGE_ERROR_CONNECTING = RS07_LOGIN_MESSAGE_UNABLE_TO_CONNECT;
 RS07_LOGIN_MESSAGE_INVALID_DETAILS = 3;
 RS07_LOGIN_MESSAGE_BANNED = 4;
 RS07_LOGIN_MESSAGE_ENTER_DETAILS = 5;
 RS07_LOGIN_MESSAGE_VOTE_TO_PLAY = 6;
 RS07_LOGIN_MESSAGE_ENTER_USERNAME = 7;
 RS07_LOGIN_MESSAGE_ENTER_PASSWORD = 8;
 RS07_LOGIN_MESSAGE_INCORRECT_LOGINS = 9;  
 RS07_LOGIN_MESSAGE_UPDATE = 10; 
 RS07_LOGIN_MESSAGE_UPDATED = 11; 
 RS07_LOGIN_MESSAGE_FULL_SERVER = 12;

 

function RS07_SetLoginDetailsEx(player: RS07_TPlayer): Boolean;

-This function sets custom player's Username and Password to Login Details page.

NOTE: This works ONLY if we are at Login Details page!

Returns True with success.

 

function RS07_SetLoginDetails: Boolean;

-This function sets your currently active player's (RS07_Player) Username and Password to Login Details page.

NOTE: This works ONLY if we are at Login Details page!

Returns True with success.

 

function RS07_LogIn(username, password: string): Boolean;

-This function login's with Username and Password.

NOTE: Doesn't matter which Login page you have open, as long as you are logged out of game! Function is fully failsafed.

Returns true with success.

If you have set incorrect user details, this function will set RS07_InvalidUserDetails variable to True after certain amount of tries (3 = default)

If your character has been banned, this function will set RS07_Banned variable to True.

 

function RS07_LogOut: Boolean;

-This function logs out of game.

Returns true with success (keeps trying for up to 1 minute)!

 

function RS07_ReLog: Boolean;

-Re-login function - logs out from game (if you are online) and then back in. Returns true with success, based on RS07_Player information.

 

function RS07_LogInPlayerEx(player: RS07_TPlayer): Boolean;

-Logins with custom player's username & password. Returns true with success.

 

function RS07_LogInPlayer: Boolean;

-Logins with currently active player's username & password (based on RS07_Player data) . Returns true with success.

 

GameTab

 

J4MGy9f.png

Image of GameTab indexes

 

function RS07_GameTabOpen(i: Integer): Boolean;

-This function returns True if tab (i) from GameTab is open (as in, active). List of tab constants below.

  RS07_GAMETAB_ATTACK_STYLE = 0;
 RS07_GAMETAB_STATS = 1;
 RS07_GAMETAB_QUEST_JOURNAL = 2;
 RS07_GAMETAB_INVENTORY = 3;
 RS07_GAMETAB_EQUIPMENT = 4;
 RS07_GAMETAB_PRAYERS = 5;
 RS07_GAMETAB_SPELLS = 6;   
 RS07_GAMETAB_CLAN_CHAT = 7;
 RS07_GAMETAB_FRIEND_LIST = 8;
 RS07_GAMETAB_IGNORE_LIST = 9;
 RS07_GAMETAB_LOGOUT = 10;
 RS07_GAMETAB_GAME_OPTIONS = 11;
 RS07_GAMETAB_PLAYER_CONTROLS = 12;
 RS07_GAMETAB_MUSIC_PLAYER = 13;

 

function RS07_OpenGameTab(i: Integer): Boolean;

-Tries to activate game tab by ID (i). Returns true with success!

 

procedure RS07_QuickOpenGameTab(i: Integer);

-This procedure performs a quick mouse movement to game tab (i). Contains no failsafes!

Small note: Works quickly (but you need to add failsafes/checks yourself).

 

function RS07_ActiveGameTab: Integer;

-This function returns the currently open/active game tab as integer (ID).

Returns -1 if none of the tabs are open (like, if we are not logged in OR bank is active)

 

Minimap

 

procedure RS07_RotateCompass(rotate: RS07_TRotateCompassDirection);

-This procedure is used for Compass rotating. Uses RS07_TRotateCompassDirection type for direction.

NOTE: This keeps rotating the compass until you stop it with rcd_Nil (..or with VKeyUp(VK_LEFT) / VKeyUp(VK_RIGHT))

Directions below.

-rcd_Nil (stops the compass rotation)
-rcd_Left (rotates compass at left, anticlockwise)
-rcd_Right (rotates compass at right, clockwise)
-rcd_Random (rotates compass to either left or right - RANDOMLY)

 

4Npdblh.png

Image for showing the rotating direction "rcd_Left"

 

OwvKLTO.png

Image for showing the rotating direction "rcd_Right"

 

function RS07_GetCompassAngle: Extended;

-This function returns the current Compass angle as degrees, 0.0 => 360.0.

 

V5kCu4Y.png

Image displaying N, S, E, W, NE, NW, SE, SW angle degrees

 

function RS07_SetCompass(dgrs: Extended): Boolean;

-This function sets compass to angle by dgrs.

Returns true with success. NOT perfect compass angle (obviously!), but does work OK.

NOTE: Do NOT include that "°" to dgrs extended! You'll get an error if you do. ;)

The dgrs can be anything from 0.0 to 360.0..

Well, it can be higher aswell, as it will be then auto-corrected by function to range of 0-360.

 

function RS07_SetCompassDir(direction: string): Boolean;

-This function sets compass to facing direction, returns true with success.

Supported directions: 'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'.

 

var RS07_MinimapBounds: TBox;

-This variable contains the Minimap area bounds stored to TBox (as X1, Y1, X2, Y2 coordinates).

 

oR20B6f.png

Image displaying minimap bounds

 

var RS07_MinimapTPA: TPointArray;

-This variable contains ALL pixels from Minimap stored to TPointArray.

 

woHmVS0.png

Image displaying TPointArray of Minimap pixels (in green)

 

function RS07_OnMinimap(pt: TPoint): Boolean;

-Returns true if pt is inside Minimap pixels (RS07_MinimapTPA).

 

function RS07_OnMinimap2(x, y: Integer): Boolean;

-Returns true if if x, y coordinates are inside Minimap pixels (RS07_MinimapTPA).

 

function RS07_FindFlag(var pt: TPoint): Boolean;

-This function works ONLY, if/when center area of flag (the red flag used in walking) is visible in minimap.

If flag is found, this will store the flag coordinates to pt and result will be set as True.

NOTE: The pt position is the location where flag is standing at on minimap.

 

function RS07_DistanceToFlagEx(pt: TPoint): Extended;

-Returns the distance from point (pt) to flag.

NOTE: Result will be 0.0, if flag is not found in minimap.

 

function RS07_DistanceToFlag: Extended;

-This function returns the distance from our player (minimap center) to flag.

 

Text

 

var RS07_ChooseOptionFailsafe: Boolean;

-If this variable is set to true, plenty of functions will pay attention to Choose Option collision with important areas that need to be visible, and if those areas arent visible, SCAR will automatically try and hide choose option to continue working.

Enabled by default. Disabling will make things a bit quicker, but less reliable include-wise (up to the scripter then!).

Scripter can (re-)enable/disable this boolean in any script parts, at any given time.

 

function RS07_UpText: string;

-This function returns current up text (the text at top-left corner).

 

TwSqMUr.png

Image of UpText

 

function RS07_UpText2: string;

-This function also returns current up text, but using other method (NOTE: in most cases this is worse!).

 

function RS07_IsUpText(text: string): Boolean;

-Returns true if UpText matches text. Case-sensitive. UpText must start with this text!

 

function RS07_UpTextContains(text: string): Boolean;

-Returns true if UpText contains our string (text) at any position. CASE-SENSITIVE!

 

function RS07_UpTextContainsTSA(texts: TStrArray): Boolean;

-Returns true if UpText contains ANY of the strings in texts. CASE-SENSITIVE!

 

function RS07_ChooseOptionInUse(var x, y: Integer): Boolean;

-Returns true AND stores X, Y coordinates to x, y, if Choose Option is in use (available/shown at screen).

PwSmDDh.png

Image of Choose Option (including the indexes on the left-side, in total there is 32 indexes [0-31])

 

function RS07_ChooseOptionAvailable: Boolean;

-Returns true if Choose Option is in use (available/shown at screen).

 

function RS07_ChooseOptionItems: TStrArray;

-Returns ALL of the items from Choose Option menu as an TStrArray (array of string).

 

function RS07_ChooseOptionItems2: TStrArray;

-Same as above, but using different methods. A little slower, but could be (in rare cases!) a bit more reliable.

 

procedure RS07_ChooseOptionUseItemQuick(ID: Integer);

-Uses Choose Option item by list index (ID) quickly. NO FAILSAFES!

 

procedure RS07_ChooseOptionUseQuick(name: string)

-Uses Choose Option item by name quick. Must not be full name, but Choose Option item must AT LEAST start with the name.

CASE-SENSITIVE, NO FAILSAFES!

-Example way to use this procedure: RS07_ChooseOptionUse('Attack Chicken'); (See, no level used, but this works great!)

 

function RS07_ChooseOptionTarget: Integer;

-Returns the currently selected/targeted item from Choose Option menu, as integer (list index).

List index starts with 0.

If this function for some reason fails, the result will be -1 (eg. Choose Option is/was not in use)

 

function RS07_OpenChooseOption(x, y: Integer): Boolean;

-Tries to open Choose Option to x, y coordinates and returns true with success (if menu opens within 1,5 s).

NOTE: x, y coordinates is the position where the mouse click is performed at!

 

function RS07_HideChooseOption: Boolean;

-Hides (closes) the Choose Option, if its available, using mouse movements.

Returns true with success. Failsafed!

 

function RS07_ChooseOptionItemCount: Integer;

-Returns count of items from showing Choose Option menu (0-31).

 

function RS07_ChooseOptionArea(var area: TBox): Boolean;

-This function looks out for Choose Option and if its available this will store Choose Option area bounds to area as TBox. Returns true with success.

 

NUOLmnt.png

Image displaying Choose Option's area bounds in screen (bounds with red color)

 

function RS07_PreventChooseOptionCollision(bx: TBox): Boolean;

-Avoids collision by Choose Option menu area with bx area. If Choose Option collides with bx area, this function will try and hide Choose Option.

Returns true, when/if Choose Option doesn't collide with bx.

 

function RS07_PreventChooseOptionCollisions(bxs: TBoxArray): Boolean;

-Prevents collisions with multiple boxes.

 

Inventory

 

3ekrLKf.png

Image of Inventory including the indexes (0-27)

 

function RS07_InventoryOpen: Boolean;

-This function returns True if inventory tab is active/open

 

function RS07_OpenInventory: Boolean;

-This function tries to activate inventory tab - returns true if it succesfully activated it.

 

procedure RS07_QuickOpenInventory;

-Simply clicks to the inventory tab area, so quickly tries to open it. Quick, but this doesn't contain any failsafes!

 

function RS07_GetInventorySlot(id: Integer): TBox;

-This function returns the inventory slot's (by id) area/bounds as TBox.

 

function RS07_PointToInventorySlot(p: TPoint): Integer;

-Converts point (p) to inventory slot index, if p is inside ANY of the inventory slot areas.

 

function RS07_GetInventorySlotID(R, C: Integer): Integer;

-Converts Row ® and Column © to index. Small note: Rows and Columns start from 0, NOT from 1!

 

function RS07_GetInventorySlotCenter(ID: Integer): TPoint;

-This function returns the center point of item slot (by ID), as TPoint.

 

function RS07_InventorySlotUsed(ID: Integer): Boolean;

-Returns true, if inventory slot by ID contains item.

 

function RS07_GetUsedInventorySlots: TIntArray;

-This function returns ALL of the inventory slots that are currently used (contain items)

 

function RS07_UsedInventorySlots: Integer;

-Returns the amount/count of used inventory slots.

 

function RS07_DropInventoryItem(ID: Integer): Boolean;

-Tries to drop item from inventory by slot ID. Returns true, if "Drop X" was used from Choose Option menu on the item.

 

Bank

 

function RS07_BankOpen: Boolean;

-Returns true, if bank window is open.

 

function RS07_CloseBank: Boolean;

-Closes the bank window and returns true if it was succesfully closed.

NOTE: Returns false, if bank wasn't open in the first place!

 

function RS07_OpenBank(bankID: Integer): Boolean;

-Opens bank by ID (bankID) and returns true with success.

NOTE: You MUST be near/clost to bank booth/NPC for this function to work. ..the closer, the better!

 

Constants for IDs of all currently supported banks below:

  RS07_BANK_DRAYNOR = 0;
 RS07_BANK_VARROCK_EAST = 1;
 RS07_BANK_VARROCK_WEST = 2;
 RS07_BANK_EDGEVILLE = 3;
 RS07_BANK_FALADOR_EAST = 4;
 RS07_BANK_FALADOR_WEST = 5;
 RS07_BANK_AL_KHARID = 6;     
 RS07_BANK_TZHAAR = 7;
 RS07_BANK_CATHERBY = 8;
 RS07_BANK_SEERS_VILLAGE = 9;
 RS07_BANK_ARDOUGNE_EAST = 10;
 RS07_BANK_ARDOUGNE_WEST = 11;
 RS07_BANK_YANILLE = 12;
 RS07_BANK_FISHING_GUILD = 13;
 RS07_BANK_PEST_CONTROL = 14;
 RS07_BANK_LUMBRIDGE = 15;

 

function RS07_GetWithdrawStyle: Integer;

-Returns the current Withdraw as -style as integer (ID).

NOTE: If function fails, or bank isn't even open, result will be set as -1.

 

Style ID's as constants:

  RS07_BANK_WITHDRAW_STYLE_COUNT = 2;
 RS07_BANK_WITHDRAW_STYLE_ITEM = 0;
 RS07_BANK_WITHDRAW_STYLE_NOTE = 1;

 

function RS07_SetWithdrawStyle(ID: Integer): Boolean;

-Tries to set Withdraw as -style as ID. Returns true with success.

 

function RS07_CheckBankSlot(ID: Integer; var used: Boolean): Boolean;

-This function checks bank slot by ID (0-399). Returns true, if bank slot was succesfully checked.

If item exists in slot, then the variable "used" will be set as True, else it will be kept as it is before using this command.

 

function RS07_DepositEx(slot, amount: Integer): Boolean;

-Deposits amount from inventory slot (inventory slot ID, 0-27). Returns true, if choose option was used for item on slot.

NOTE: Using amount as LOWER than 0 will use "Store All" from choose option menu. Also; 1, 5, 10 all use "Store *".

 

function RS07_WithdrawEx(slot, amount: Integer): Boolean;

-Withdraws amount from bank slot (bank slot ID, 0-399). Returns true, if choose option was used for item on slot.

NOTE: Using amount as LOWER than 0 will use "Withdraw All" from choose option menu. Also; 1, 5, 10 all use "Withdraw *".

 

function RS07_WithdrawAsEx(slot, amount, style: Integer): Boolean

-RS07_WithdrawEx based on withdraw as -style. Uses style ID for withdrawing.

 

Combat

 

function RS07_GetAttackStyle(var style: Integer): Boolean;

-Stores the currently selected attack style, of 4 possible attack styles, as integer (list index) to variable "style". Returns true, if Attack Style could be detected/captured.

 

function RS07_SetAttackStyle(style: Integer): Boolean;

-Tries to set Attack Style as style (list index, 0-3), returns true with success.

 

UkusNQ9.png

Image of Attack Style boxes, including the indexes of em (0-3)

 

function RS07_GetAttackStyleBoxes: TBoxArray;

-This function returns the currently shown Attack Style boxes as TBoxArray.

 

function RS07_InFightHA: Boolean;

-This function returns true, if we are in combat (our HP bar is showing on screen).

NOTE: This function works ONLY with highest camera angle (hence why, InFight"HA").

 

Camera

 

procedure RS07_RotateCamera(rotate: RS07_TRotateCameraCourse);

-Rotates camera UP or DOWN using RS07_TRotateCameraCourse type.

Courses below:

-rcc_Nil (STOPS the camera rotation)
-rcc_Down (rotates camera DOWN)
-rcc_Right (rotates camera UP)

 

procedure RS07_RotateCameraMS(rotate: RS07_TRotateCameraCourse; MS: Integer);

-Rotates camera from start for total amount of MS milliseconds, then stops camera rotation after MS.

 

procedure RS07_StopCameraRotation;

-Stops the camera rotation.

 

procedure RS07_RotateCameraDown;

-Rotates camera down until RS07_StopCameraRotation is called (sets down DOWN arrow).

 

procedure RS07_RotateCameraUp;

-Rotates camera up until RS07_StopCameraRotation is called (sets down UP arrow).

 

procedure RS07_SetCameraAngleH;

-Sets camera angle to highest angle.

 

procedure RS07_SetCameraAngleL;

-Sets camera angle to lowest angle.

 

Game Options

 

2VOENju.png

Image of Game Options tab

 

function RS07_GetScreenBrightness: Integer;

-Returns the current Screen Brightness mode index as Integer. If mode couldn't be detected, result will be -1.

 

function RS07_SetScreenBrightness(x: Integer): Boolean;

-Sets Screen Brightness mode to x (list index). Returns true, if mode was succesfully set as x.

 

Constants for IDs of all Screen Brigtness mode's below:

  RS07_SCREEN_BRIGHTNESS_DARK = 0;
 RS07_SCREEN_BRIGHTNESS_NORMAL = 1;
 RS07_SCREEN_BRIGHTNESS_BRIGHT = 2;
 RS07_SCREEN_BRIGHTNESS_VERY_BRIGHT = 3;

 

function RS07_GetMouseButtons: Integer;

-Returns the current Mouse Buttons style index as Integer. If mode couldn't be detected, result will be -1.

 

function RS07_SetMouseButtons(x: Integer): Boolean;

-Sets Mouse Buttons style to x (list index). Returns true, if style was succesfully set as x.

 

Constants for IDs of both Mouse Buttons style's below:

  RS07_MOUSE_BUTTONS_ONE = 0;  
 RS07_MOUSE_BUTTONS_TWO = 1;

 

function RS07_GetMoveSpeed: Integer;

-Returns the current Move Speed index as Integer. If speed couldn't be detected, result will be -1.

 

function RS07_SetMoveSpeed(x: Integer): Boolean;

-Sets Move Speed to x (list index). Returns true, if speed was succesfully set as x.

 

Constants for IDs of both Move Speed's below:

  RS07_MOVE_SPEED_WALK = 0;
 RS07_MOVE_SPEED_RUN = 1;

 

function RS07_SetRun: Boolean;

-Tries to set run as move speed, returns true, if it was succesfully set.

Edited by Janilabo
Link to comment
Share on other sites

Thanks, lazarbeam! :)

 

By the way, I must notify that I have based the RS07_OpenBank() for highest brightness (contains best details).

I will obviously base everything and anything on this brightness mode in the future aswell. :)

I think SRL was/is based on highest brightness aswell, so thats why I am sticking with it.

 

Regards,

-Jani

Link to comment
Share on other sites

On a sidenote, ALL of these commands in this intro work with RS07Lib aswell - this include will be soon available in Includes Manager, just waiting for Freddy to push it there. :)

 

RS07Lib is an independent include (that means, it is not tied for MSSL or OSI), which is optimized for RuneScape 2007 use only - so its not overbloated whereas MSSL is.

My goal was to create it a little more user-friendly library to work with (for all scripters around here).. Hopefully I can make it.

 

Even though its still a work in progress (I guess), it is already a fully functional include!

 

Enjoy,

-Jani

Link to comment
Share on other sites

As always, beautifull. I'm starting to enjoy your MSSL-library (even though it's very overbloated). I like the idea of taking RS07 out of MSSL, it will be a little easier to navigate the include-files then.

 

Arg, I would love to get my python based (SPS-similar) MapWalking function converted to pascal.

Will see if I can manage (psycologicaly) to do this, anytime soon, and im also waiting for someone to release a 07-world map

Edited by slacky
Link to comment
Share on other sites

As always, beautifull. I'm starting to enjoy your MSSL-library (even though it's very overbloated). I like the idea of taking RS07 out of MSSL, it will be a little easier to navigate the include-files then.

 

Arg, I would love to get my python based (SPS-similar) MapWalking function converted to pascal.

Will see if I can manage (psycologicaly) to do this, anytime soon, and im also waiting for someone to release a 07-world map

Thank you mate!

 

I will be working on changing the MSSL-based RS07 libraries a little more simpler solutions aswell - that means, going to be removing the need for MSSL Level-3 utilities, such as memory management, grid stuff and so on.. :P

 

But yeah, RS07Lib will definitely replace the need for MSSL (at all) in the future.

It could be used together with OSI aswell then.. Obviously you can do this with MSSL aswell, but yeah, just so SCAR wouldn't get so full of crap by MSSL. :D

 

Sure hope to see you get those map walking features over to Pascal! Those would be sooo awesome addition to scripting!

Then we could create A LOT bigger scripts around here..

 

After that we would have anymore pretty much 1 problem to solve - random events... But, I am sure we will get to beating those in the near future, once we collect enough data of em first, like bitmaps for autocoloring needs mostly.

 

Future is looking good right now! Plenty of activity around this community now. :)

 

-Jani

Link to comment
Share on other sites

オンライン カジノは、プレイヤーが自宅にいながらにしてポーカー、ルーレット、ブラックジャック、スロットなどのギャンブル ゲームを楽しむ機会を提供する仮想プラットフォームです。 オンラインカジノは、アクセスのしやすさ、ゲームの種類の多さ、そして大金を獲得する機会があるため、年々人気が高まっています。

オンラインカジノの主な利点は、利便性とアクセスしやすさです。 プレイヤーは、通常のカジノの営業時間に制限されず、いつでもゲームを楽しむことができます。 必要なのは、インターネットにアクセスできるデバイスと、カジノのウェブサイトにアクセスできることだけです。 これにより、プレイヤーは従来のカジノによくありがちなストレスや緊張を感じることなく、快適な環境でプレイすることができます。

オンラインカジノのもう1つの利点は、ゲームの選択肢が豊富なことです。 ユーザーは、それぞれ独自のルールと勝利の機会を提供する何百もの異なるゲームから選択できます。 技術革新のおかげで、オンライン ゲームのグラフィックとサウンドは高品質になり、プレイヤーは興奮と情熱の雰囲気に浸ることができます。

さまざまなゲームに加えて、オンライン カジノはプレーヤーにさまざまなボーナスやプロモーションも提供します。 これらは、スロットのフリースピン、プレイのための追加のお金、または貴重な賞品が得られる特別なトーナメントなどです。 このようなボーナスにより、勝利の可能性が高まり、ゲームがさらに楽しくなります。

もちろん、オンラインカジノでのプレイにはリスクがあります。 ギャンブルには依存性がある可能性があるため、自分の感情を監視し、支出をコントロールすることが重要であることを覚えておくことが重要です。 カジノはまた、責任あるゲーミングをサポートし、自己排除や賭け金制限の機会を提供します 児童 ポルノ 販売

全体として、オンライン カジノはギャンブル愛好家にとって便利でエキサイティングなエンターテイメントを提供します。 幅広いゲーム、ボーナスの選択肢があり、いつでもプレイできるため、世界中のプレイヤーの間で人気が高まっています。 ただし、責任あるゲームと、ゲームが単なる楽しみと娯楽の源であるように自分の行動を制御する能力について覚えておくことが重要です。
Link to comment
Share on other sites

Гидроизоляция это ключевой элемент в строительстве, обеспечивающий защиту объектов от воздействия влаги и воды. В зависимости от условий эксплуатации и материала конструкции, выбирается определенный тип гидроизоляции. Рассмотрим главные разновидности и их применения.

1. Рулонные материалы

Рулонные гидроизоляционные материалы используются для защиты кровель и фундаментов. Они бывают на основе битума и полимеров.
- Битумные рулоны модны благодаря своей доступности и безопасности. Используются на плоских крышах и в основании построек.
- Полимерные рулоны имеют более высокую крепкость и долговечность, то что надо для сложных погодных условий.

2. Жидкая гидроизоляция

Водянистые гидроизоляторы используются для создания бесшовного покрытия. Они бывают на основе:
- Полимеров просто наносятся и образуют крепкую мембрану.
- Цемента идеально то что надо для ванной и кухни, владеют неплохими гидрофобными свойствами.

3. Проникающая гидроизоляция

Этот тип просачивается в структуру бетона и наполняет микротрещины, обеспечивая надежную охрану. Применяется в большей степени для фундаментов и подвалов. Проникающая гидроизоляция отлично совладевает с неизменным воздействием воды.

4. Мембранная гидроизоляция

Мембранные системы часто употребляются для крыши и находящийся под землей конструкций. Такой метод дает обеспечение надежную защиту от осадков и грунтовых вод.
- ЭПДМ и ТПО мембраны имеют высокую устойчивость к солнечному излучению и механическим повреждениям https://gidroizolyaciya-dlya-vsekh.ru

5. Гидрофобные добавки

Гидрофобные добавки в бетон или раствор помогают предупредить проникновение воды. Они совершенно то что надо для сотворения водонепроницаемых конструкций, в том числе бассейны и резервуары.

Выбор типа гидроизоляции

В момент выбора гидроизоляции принципиально учесть:
- Правила использования влажность, температура, вероятные нагрузки.
- Материалы конструкции для каждого типа материала существует свой лучший вариант гидроизоляции.
- Бюджет некоторые способы более затратные, но обеспечивают большую долговечность.

В заключение, выбор гидроизоляции зависит от множества причин. Правильное решение поможет продлить срок службы строительных объектов и избежать суровых проблем с влажностью.
Link to comment
Share on other sites

Он-лайн казино в Беларуси стали известным способом веселий для большинства людей. Учитывая развитие технологий и доступность прибегают к помощи, азартные игры в сети завлекают все большее количество игроков. В этой статье будут рассмотрены характерные черты онлайн казино в Беларуси, их регулирование и перспективы развития этого сегмента.

Законодательство и Регулирование

В 2021 году Беларусь приняла ряд изменений в законодательство, касающиеся онлайн-игр. Теперь онлайн казино подлежат лицензированию, что позволяет государству держать под контролем их деятельность и оберегать интересы игроков. Лицензии выдают специальные органы, обеспечивая прозрачность и безопасность игр.

Игроки могут рассчитывать на охрану своих прав и легитимное регулирование азартных игр. Таким макаром, выбор имеющих лицензию онлайн казино становится более неопасным для юзеров.

Популярность Онлайн Казино

С увеличением энтузиазма к онлайн играм на интерес в Беларуси, многие знаменитые международные операторы начали предлагать свои услуги. Игроки могут услаждаться разнообразием игр, включая игровые слоты, покер, рулетку и блэкджек. Множество платформ предлагают интересные акции, призы и программы лояльности для вербования пользователей.

Платежные Методы

Онлайн казино в Беларуси предлагают разные способы пополнения счета и вывода средств. Популярными методами являются карты банков, электронные кошельки и криптовалюты. Удобство и скорость транзакций очень сильно упрощают процесс игры и увеличивают уровень удовлетворенности игроков.

Безопасность и Ответственная Забава

С развитием онлайн казино возрастает и необходимость в обеспечении безопасности данных игроков. Лицензированные платформы употребляют современные технологии шифрования для защиты собственной информации и валютных средств пользователей.

Не считая того, большое внимание уделяется принципам ответственной игры. Операторы делают отличное предложение приборы, которые подсобляют игрокам держать под контролем свое время и бюджет на азартные забавы, снижая риски зависимости.

Перспективы Развития

Будущее сделать ставку фрибет смотрится многообещающе. С ростом репутации азартных игр в соц сетях и мобильных приложениях, ожидается, что количество юзеров будет только увеличиваться. Развитие технологий, таких как виртуальная и дополненная реальность, может изменить сферу онлайн-гейминга, предоставляя игрокам новые форматы развлечений.

Заключение

Онлайн казино в Беларуси совмещают в себе возможности современных технологий и требования законодательства. Сохранение управления и контроля со стороны страны способствует развитию неопасной и ответственной игорной среды. При этом игрокам принципиально пристально выбирать лицензионные платформы, что дозволит им услаждаться азартными играми в комфортабельной и неопасной обстановке.
Link to comment
Share on other sites

Он-лайн казино в Беларуси стали популярным способом развлечений для многих граждан. Учитывая развитие технологий и доступность веба, азартные игры в сети завлекают все большее количество игроков. В данном посте будут рассмотрены необыкновенности он-лайн казино в Беларуси, их регулирование и перспективы развития этого сектора.

Законодательство и Регулирование

В 2021 году Беларусь приняла ряд изменений в законодательство, касающиеся он-лайн-игр. Теперь онлайн казино подлежат лицензированию, что позволяет государству держать под контролем их деятельность и защищать интересы игроков. Лицензии выдают специальные органы, обеспечивая прозрачность и безопасность игр.

Игроки могут рассчитывать на защиту своих прав и законное регулирование азартных игр. Поэтому, выбор имеющих лицензию онлайн казино становится более неопасным для пользователей.

Популярность Онлайн Казино

С увеличением интереса к он-лайн азартным играм в Беларуси, многие известные международные операторы начали делать отличное предложение свои услуги. Игроки могут услаждаться многообразием игр, включая игровые слоты, покер, рулетку и блэкджек. Множество платформ делают отличное предложение интересные акции, бонусы и программы лояльности для вербования юзеров.

Платежные Методы

Онлайн казино в Беларуси предлагают разные методы пополнения счета и вывода средств. Известными методами являются карты банков, электронные кошельки и криптовалюты. Удобство и скорость транзакций веско упрощают процесс игры и увеличивают уровень удовлетворенности игроков.

Безопасность и Ответственная Игра

С развитием онлайн казино возрастает и необходимость в обеспечении безопасности данных игроков. Лицензированные платформы употребляют современные технологии шифрования для защиты личной информации и валютных средств пользователей.

Кроме того, огромное внимание уделяется принципам ответственной забавы. Операторы делают отличное предложение инструменты, которые помогают игрокам контролировать свое время и бюджет на азартные забавы, снижая риски зависимости.

Перспективы Развития

Будущее сделать ставку фрибет выглядит многообещающе. С ростом популярности азартных игр в соц сетях и мобильных приложениях, ожидается, что количество пользователей будет только увеличиваться. Развитие технологий, таких как виртуальная и дополненная реальность, может изменить сферу онлайн-гейминга, предоставляя игрокам новые форматы веселий.

Заключение

Онлайн казино в Беларуси совмещают внутри себя возможности современных технологий и требования законодательства. Сохранение управления и контроля со стороны государства содействует развитию безопасной и ответственной игорной среды. При этом игрокам принципиально внимательно избирать имеющие лицензию платформы, что позволит им наслаждаться азартными играми в комфортабельной и безопасной обстановке.
Link to comment
Share on other sites

Sports Betting: A Comprehensive Guide

Sports betting has become a global phenomenon, captivating millions of enthusiasts with its blend of excitement, strategy, and the potential for financial gain. This article aims to provide a comprehensive overview of sports betting, exploring its history, popular types, strategies, and the legal landscape.

A Brief History

Sports betting dates back to ancient civilizations, where wagers were placed on events such as chariot races and gladiatorial contests. Over the centuries, the practice evolved, encompassing a wide range of sports and becoming a formalized industry in the modern era. Today, sports betting is a multi-billion-dollar industry with a substantial presence both online and offline.

Types of Sports Bets

There are several types of bets that one can place on sports events, including:

1. Moneyline Bets: The simplest form of betting where you pick the winner of a game or match.
2. Point Spread Bets: This bet involves predicting the margin of victory.
3. Over/Under Bets: Also known as totals, these bets are placed on the total number of points scored by both teams combined.
4. Prop Bets: These are bets on specific outcomes within a game, such as the first team to score.
5. Futures Bets: Bets placed on events that will happen in the future, like who will win the championship at the end of the season.

Strategies for Successful Betting

Successful sports betting requires more than just luck. Here are some strategies to consider:

1. Research and Analysis: Study the teams, players, and historical performance data http://downzone.pl/profile.php?lookup=4971
2. Bankroll Management: Set a budget and stick to it, avoiding the temptation to chase losses.
3. Understanding Odds: Learn how to read and understand betting odds to make informed decisions.
4. Shop for the Best Lines: Different sportsbooks offer different odds and payouts, so shop around for the best deals.

The Legal Landscape

The legality of sports betting varies around the world. In some countries, it is fully legalized and regulated, while in others, it is either restricted or outright banned. The advent of online sportsbooks has also added a layer of complexity, as bettors can now place wagers from pretty much anywhere, often bypassing local regulations.

Conclusion

Sports betting continues to grow in popularity, attracting a diverse audience from casual fans to hardcore enthusiasts. With the right approach, including diligent research and disciplined bankroll management, it can be both an exciting and rewarding venture. However, it's essential to understand the risks involved and to always gamble responsibly.
Link to comment
Share on other sites

Are you a music enthusiast looking to elevate your sound? Look no further! Our music gear store has everything you need to bring your musical dreams to life. From high-quality guitars to powerful amplifiers and all the accessories in between, we've got you covered.

Guitars for Every Taste and Style

Whether you're an acoustic aficionado or an electric guitar wizard, our store offers a diverse range of guitars to suit every player. We carry top brands like Fender, Gibson, Ibanez, and more. Each guitar is meticulously crafted to deliver exceptional sound and playability.

- Acoustic Guitars: Perfect for singer-songwriters and those who love the raw, unplugged sound.
- Electric Guitars: Ideal for rock, blues, and jazz enthusiasts looking to add some flair to their performances.
- Bass Guitars: Providing the deep, resonant tones crucial for any band’s rhythm section.

Amplifiers That Elevate Your Sound

A great guitar deserves an equally great amplifier. Our collection features a variety of amps that cater to different genres and playing environments. From practice amps to stage-ready powerhouses, you'll find the perfect match for your needs.

- Tube Amps: Known for their warm and rich tones, perfect for achieving that classic rock sound.
- Solid State Amps: Reliable and versatile, they offer a consistent performance ideal for any gig.
- Modeling Amps: Advanced technology that mimics the sound of various amp types, giving you a wide range of tones from a single unit.

Essential Accessories

No musician's arsenal is complete without the right accessories. We stock everything from strings and picks to pedalboards and effects pedals. Our knowledgeable staff can help you find exactly what you need to enhance your playing experience.

- Strings and Picks: High-quality materials for durability and superior sound.
- Effects Pedals: From distortion to delay, our pedals can help you craft the perfect tone Digital Mixer Expansion Cards
- Pedalboards: Keep your effects organized and ready to use during performances.

Why Shop With Us?

- Expert Advice: Our team of musicians is passionate about helping you find the right gear to achieve your goals.
- Quality Guarantee: We only stock products from trusted brands known for their reliability and superior craftsmanship.
- Customer Satisfaction: Your happiness is our top priority. We offer hassle-free returns and excellent customer service.

Visit our store today and experience the difference quality music gear can make. Elevate your sound and take your music to the next level. Whether you’re a beginner or a seasoned pro, we have the right equipment to help you shine.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
  • Create New...