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

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...