Author Topic: [UBP][TUT] Ultimate Guide to Scripting  (Read 9610 times)

Offline pwnaz0r

  • Newbie
  • *
  • Posts: 14
  • Rep: 2
    • View Profile
    • Email
[UBP][TUT] Ultimate Guide to Scripting
« on: March 09, 2007, 06:33:35 pm »
Note : I do have to modify it from SRL forums :D



UNRIVALED GUIDE TO SCRIPTING
AN UBER BRO PRODCUTION
- Please Remember At All times that this was A TEAM EFFORT While I was doing the main part of this tutorial , JAD was working on the UberPedia Which Will be released soon.  - Just wanted everyone to take note of that

[SIZE="4"]Current UB Scripts[/Size]:
Uber Alcher - http://www.srl-forums.com/forum/ubp-srl-uberalcher-t7635.html?p=68768#post68768



MSN's
Pwnaz0r - Pwnaz0r@hotmail.com
JAD - runescapemacro@hotmail.com


[SIZE="4"][COLOR="Red"]Description[/COLOR][/SIZE]
This IS Under Progress but you are now allowed to post.
I and JAD will be covering every aspect of scar we can think of.
Always Looking For New Things to Add so Just Post Here :)


[COLOR="Red"][SIZE="5"]TABLE OF CONTENTS[/SIZE][/COLOR]

    • Begginers
    • The Basics
    • Understanding SCAR - *NEW*
    • Your First Script
    • Those Annoying Errors
    • Finding Color
    • Finding Things in a specific area - *To Be Added*
    • AntiBan - *NEW*
    • Building Proggies - *NEW*
    • Scripting Standards - *NEW*
    • Functions - Creating And Understanding
    • Developing And Maintaining A SCAR Script


    • Intermediate
    • DTMS - *UPDATED*
    • BitMaps - *UPDATED*
    • Arrays
    • Radial Walking -- Highly Needed :p
    • Some Advanced Procedures
    • Making Your Own functions
    • AutoColoring - *To Be Added*
    • Advanced
    • Advanced AutoColoring - *To Be Added*
    • Some Components
    • Making Custom Var Types
    • Forms

    • Add-Ons - *New*
      • COMPLETE WALKTHROUGH OF MAKING A SCRIPT - *NEW*

    [COLOR="Red"][SIZE="5"]Begginers[/SIZE][/COLOR]
    [COLOR="Red"][SIZE="4"]The Basics[/SIZE][/COLOR]

    Ok Well The Basics Are Very Simple Yet At the same time Complex. To Understand the Idea of these "Objects" instantly, you must be open minded. So while you're reading this guide, anything is possible atm. Try to grasp the basic Concept of this chapter. It is not hard but you must be "Open Minded" if you have never scripted before.

    [SIZE="4"]CONSTANTS AND VARIABLES[/SIZE]
    Ok Now Take Heart. If you have never scripted, this will be confusing. It is not hard at all but because your brain has never seen this before, it may take you awhile to understand. Now there are two types "Objects in SCAR". Constants and Variables. These are simply Names for Storing Information. Now the difference between the two is that a constant DOES NOT CHANGE THROUGHOUT THE SCRIPT. A Variable CAN CHANGE THROUGHOUT THE SCRIPT. Ok Now so if you don't get that read it again.Most of you probably take some kind of math with variables, trying to find the missing number. All a variable is, is a number that can change.

    [SIZE="4"]For Example[/SIZE]

    a constant would be like

    Code: [Select]
      Number = 1;

    From that point on in the script, the Word "Number" would store the number one and it would never change. This is useful for Usernames and passwords, while logging in.



    A Variable However can change.
    Most people have trouble with variables as the can't grasp the concept so just be open minded. This would be an example of a variable


    Code: [Select]
    banks : integer;

    Ok now don't worry about the
    Code: [Select]
    : integer;
    Just yet. All you need to see is the banks. This word stores the amount of times you have banked. Hopefully You have grasped this concept but if you haven't, I'm always on msn as said earlier(pwnaz0r@hotmail.com) or try JAD (runescapeMacro@hotmail.com)

    now

    [SIZE="4"]Declaring Constants and Variables[/SIZE]
    Alright well , think of SCAR As a car. When you want the car to go, you press the gas. When you want it to stop, the brakes , etc. But it also has the engine you know nothing about(or you don't know about yet :D). Well in SCAR, You have to state or "Declare" the constants and variables. All you are doing is setting the value of the variable/constant. The only way I can explain is by showing you.

    This is what you would do to "Declare" a constant. Most people like to do this right under the program line. This is what you do.
    Code: [Select]

    const
      Name = 'Clay';

    Now lets break this down. I Put "Const" because I want it to Label "Name" as a constant. Then i set the Value of "Name" as a Set of our letters called a string. The only reason i have the


    Code: [Select]
    '   'around My name is because thats what tells SCAR it is a string. Anyway we will learn that later. Now, On to declaring a variable.


    Code: [Select]
    var
      Banked : integer;

    ok now this is where we learn about the

    Code: [Select]
    : integer;

    While using SCAR There are four types of variables. Remeber to be open minded here.

    • Integer - Probably the most common, Is Used For Regular Numbers - Examples : 1, 34 , 3354
    • Extended - These are numbers that are not whole - Examples 6.4, -35, 5.553
    • Boolean - This can result True or False - Examples : True, False
    • Strings : This was mentioned earlier, a strip of characters - Examples: 'Clay', 'McDonalds', ' Greg'

    Deeper Explaination
    Ok Now If You understand the types above then skip this section. This is where alot of people seem to have some trouble. It is not all that hard to understand these. Basically, we will use the examples of talking to a person to understand them. Ok now an integer is like your teacher asking you " What is 1 + 1 ?". You would answer 2 unless you're dumb :D. That would be an integer, because it is in fact a whole number. It is not negative and does not have a decimal. Now an extended would be be more like your teacher asking you " What is 7.4 + 6.3 ?". If you add these up you get 13.7 which does have a decimal so it would have to be extended. Boolean is a true/false question on a test. An example would be your teacher asking you " Is Pwnaz0r Awesome?". You would undoubtedly say "True". Lastly, The string would be like your teacher asking you to read from a book(kind of). This variable is usually the easiest. Anyways, the example would be you reading the text " Jack and Jill Went Up The  Hill".

    Alright Now i think you may understand Constants and Variables by now. If you do, pat yourself on the back. It wont get any harder than that :D. If you don't understand, Message Me on MSN (At the top) or JAD (Also at the top).

    Now, we will move on to what we call "Procedures". Procedures are like instructions. They tell scar what to do. So we are going to Move on the making your first Script.

    [SIZE="5"][COLOR="Red"]YOUR FIRST SCRIPT[/COLOR][/SIZE]
    ok, lets open our SCAR. You should get this.



    Now Lets Put Some Spaces Like This (Does not have to be exact). We are doing this to add room for our scripting :).


    Now we are going to declare a constant. Most Scripters put it under the program line so lets put it there. Type

    Code: [Select]
    const
      Name = '(INSERT NAME HERE)';

    So it should look like this.


    Now The basic Command For writing a line in the Box At the bottom left(the DebugBox) is called Writeln. (WRITELN - some people say WRITEIN it has an L not an I). so lets make a procedure named "Talk".



    Ok now let me explain everything.
    Now the line

    Code: [Select]
    Procedure Talk
    Says that the folowing is a procedure;

    The line

    Code: [Select]
    begin
    Tells SCAR what to start doing in the Procedure "Talk.

    The Line
    Code: [Select]
    Writeln(' Hi My Name Is ' + Name);Tells Scar To Write " Hi My Name Is " and then your name. You kinda haveta remember how this is done.

    The Line

    Code: [Select]
    end;
    Tells SCAR that this is the end of the instructions for the procedure "Talk".


    Now Add The Word "Talk" To The MainLoop. (MAIN LOOP- Tells SCAR In What order to do things). So in the end, this is what your script should look like.





    Ok Now Press Play. If you don't know where play is, keep reading below. This should be what your SCAR program looks like after you have pressed play


    « Last Edit: April 16, 2007, 11:03:16 pm by Freddy1990 »

    Freddy1990.com

    [UBP][TUT] Ultimate Guide to Scripting
    « on: March 09, 2007, 06:33:35 pm »

    Offline pwnaz0r

    • Newbie
    • *
    • Posts: 14
    • Rep: 2
      • View Profile
      • Email
    Re: [UBP][TUT] Ultamite Guide to Scripting
    « Reply #1 on: March 09, 2007, 06:34:33 pm »
    [COLOR="Red"][SIZE="4"]UnderStanding SCAR[/SIZE][/COLOR]
    [COLOR="Red"]BONUS CHAPTER[/COLOR][/CENTER]
    Well I Did not list this chapter in the table of contents because i want you to learn everything only if you read the entire release.
    Here Are Some Explainations of SCAR.
    -Clicking this will result In a blank script.
    - This will Open An existing script.
    - This will Open any script from the web(only ones on Kaitneiks(Outdated)).
    -- Will Save A Script.
    -- Will Cut Text
    -- Will Copy Text
    --Paste
    --Will Search The Script
    --Will Play the script
    --Pauses Script
    --Stop
    --Step Into
    --Step Over
    --Color Picker
    --CLears The Debug Box
    --Turns Report Box On Or Off
    -_Drag These CrossHairs to Select Client













    [SIZE="4"][COLOR="Red"]Those Annoying Errors[/COLOR][/SIZE]
    This Is Taken From JAD's Guide and Modified But I do Have permission to use it and this is half his tutorial Since he is an Uber Bro So Im just going to copy, paste, and modify.


    [SIZE="4"]ERROR 1 : Close round expected in script[/SIZE].
    Pwnaz0r : Well This Means that You haven't put enough parenthesis around the fucntion that you called. EX.
    [scar]
    If(FindBitMap(~~~~~) then
    [/scar]
     I didnt fill in the parameter but see? There are to Parenthesis in the front and one in the back.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    JAD :Solution: Count your parenthesis on the line which the error occurs. for

    example: if (FindColorSpiralTolerance(x, y, RockColor, 0, 0, 249, 179, Tol) then

    see whats wrong with that? you have 2 ( ('s but only 1 ) to close it. you'd need to put 2 at the end of that like this:

    if (FindColorSpiralTolerance(x, y, RockColor, 0, 0, 249, 179, Tol)) then


    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    [SIZE="4"]ERROR 2 : Include file C:\Program Files\SCAR 2.03\includes\SRL/SRL.scar does not exist.[/SIZE]

    Pwnaz0r
    : You did not include the file right or the file does not exists. You can fix this by always making sure the file exists and your sources are right.

    [scar]
    {.include srl/srl.scar}
    [/scar]

    JAD : Solution: this is the biggest error of all time. all you need to do for this is read the tutorial for installing SRL in the Install SRL forum.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    [SIZE="4"]ERROR 3 : Semicolon (';') expected in script[/SIZE]

    Pwnaz0r : This is very common when first beggining to script. All you have to do is put a semcolon at the end of the line stated.

    [scar]
    var
      InSane : boolean;//See the semicolon?
    [/scar]

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    JAD :Solution: this used to happen to me A LOT when i didn't put a ";" after my variables. just remember to do so.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    [SIZE="4"]ERROR 4 : Unknown identifier ([COLOR="Blue"]A WORD HERE[/COLOR]) in script[/SIZE]

    Pwnaz0r : Etheir you messed up in typing or the procedure/function/variables/constant does not exist.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    JAD : Solution: this means that you did either did not type something write, you called a procedure that does not exist, you called for a variable that does not exist or you did no include an include, and call for it to setup at end of script (example if you needed to setup SRL in the main loop you need SetupSRL; in script and the include after program name)
    so if this happens just check what either what variable you used, usually you just spelled it wrong above where you declared it. check spelling of it. check procedure name and check name of procedure you called for.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    [SIZE="4"]ERROR 5 : Duplicate Identifier in script[/SIZE]

    Pwnaz0r
    : You have named two things the same name in script or they are already used in an include. Just change the name of the function/procedure/variable/constant

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    JAD : Solution: to fix this i used x for an example. lets say you used i as your variable, then you made a procedure/function called i. this would not work because i is already used as a variable in the script, so you cannot name that as a procedure.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    [SIZE="4"]Error 6: Identifier expected in script.[/SIZE]

    Pwnaz0r : Something Is messed up with begins and ends. Count them and make sure they are right throughout the script.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    JAD : Solution: count your begins and ends in your script, and make sure for each begin, you have an "end;" also make sure for each repeat you have an until.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    [SIZE="4"]ERROR 7 : 'BEGIN' expected in script.[/SIZE]

    Pwnaz0r : check to make sure you have a begging at the begging of all procedures, and mainloop. Also, sometimes, when you state vars before a begin in an procedure/function, you forgot to put var in front of it.

    [scar]
    procedure Example;
      kfjf : integer;
    begin
    [/scar]

    See How it doesnt say var? This is how you would fix it.

    [scar]
    Procedure Example;
    var
      kfjf L integer;
    begin
    [/scar]

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    JAD : solution : make sure you have a begin at the beginning of your procedure.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    [SIZE="4"]Error 8: Invalid number of parameters in script[/SIZE]

    Pwnaz0r : You Have not filled in the correct parameters for the script.

    [scar]
    If(FindColorTolerance(x,y,65336,1,1,100,100))then
    [/scar]

    This is a common one. People forgit to include the tolerance at the end.

    [scar]
    If(FindColorTolerance(x,y,65336,1,1,100,100,15))then
    [/scar]

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    JAD : this is ussually caused if you put too many numbers, parenthesis and things like that in script. if you put MMouse(x,y,0,0,0,) it would probably say invalid number of parameters. so just check whats needed in the command, and if theres anything extra thats not needed.











    [SIZE="5"][COLOR="Red"]Finding Color[/COLOR][/SIZE]
    Ok Now there are various Ways To Find Color. Two Main Categories Though.
    With Tolerance and Without. Tolerance is just like finding a color similar to it. The higher the tolerance, the more different the color can be.

    MOST COMMON COLOR FINDING PROCEDURES
    • FindColor
    • FindColorTolerance
    • FindColorSpiral
    • FindColorSpiralTolerance

    All do pretty much the same thing. Now All you have to do it pick a color for it to find. Use the color picker(Icon listed above in Understanding Scar) and pick a color. I cannot Show you how to do this because the screen is frozen and you can't take a screen shot but this is what should show up in the debug box after you have picked a color.

    [scar]
    Color Picked: 16777215 at (243, 139)
    [/scar]

    That is just an example. 16777215  would be th color and (243, 139) are the coordinates. Now all you have to do is add that to a procedure.

    [scar]
    procedure GoToColor;
    begin
    If(FindColor(x,y, 16777215 , 0 , 0 , 100 , 100))then
      begin
        Writeln('Found The Color');
      end;
    end;
    [/scar]

    Not very hard eh? Anyways, Colors are a really easy way to find things in scar.








    [Size="4"][COLOR="Red"]ANTI BAN[/COLOR][/Size]

    Well this Is A Big Topic. Making your own antiban is crucial to your script. Now , you can make it simple at first, but more complex later. I think for begginers at least 8 lines(including begin and end) is good in an antiban procedure. Now here are some of the most commonly used antiban procedures.

    [scar]
    procedure RotateEvery(mins: Integer);


    procedure RandomChatEvery(mins: Integer);



    procedure RandomRClickEvery(mins: Integer);


    procedure LeaveScreenEvery(mins: Integer);


    procedure HoverSkill(Skill: String; Click: Boolean);


    procedure PickUpMouseEvery(mins: Integer);



    procedure AntiBan;


    [/scar]


    Anyways, Make Your antiban procedure any name you like and put some of those in there :). Call it when you want to antiban :).
    [/CENTER]

    Freddy1990.com

    Re: [UBP][TUT] Ultamite Guide to Scripting
    « Reply #1 on: March 09, 2007, 06:34:33 pm »

    Offline pwnaz0r

    • Newbie
    • *
    • Posts: 14
    • Rep: 2
      • View Profile
      • Email
    Re: [UBP][TUT] Ultamite Guide to Scripting
    « Reply #2 on: March 09, 2007, 06:35:21 pm »




    [COLOR="Red"][SIZE="4"]Building Proggies[/SIZE][/COLOR]
    Ok well progress reports are not hard. Here is the basic SRL Multiplayer Progress report.
    [scar]
    procedure PlayerStats;
    var
      Active: string;
      i : Integer;
    begin
      Writeln('****************************************************');
      Writeln('   Name    : '+ Players[CurrentPlayer].Name);
      Writeln('   Number  : '+ IntToStr(CurrentPlayer));
      Writeln('   Worked  : '+ IntToStr (Players[CurrentPlayer].Worked)+' minutes.');
      Writeln('   Banked  : '+ IntToStr (Players[CurrentPlayer].Banked) + ' loads.');
      Writeln('   Location: '+ Players[CurrentPlayer].loc);
      Writeln('   Level   : '+ IntToStr(Players[CurrentPlayer].Integer1));
      Writeln('****************************************************');
      for i := 0 to HowManyPlayers - 1 do
      begin
        if(Players.Active = True)then
          Active := 'True'
        else
          Active := 'False';
       Writeln (IntToStr(i) + ' : '+Players.Name + ' = ' + Active + '. - Lvl: '+IntToStr(Players.Integer1)+
            '. - B :'+IntToStr (Players.Banked)+' times.'+
            ' - '+IntToStr (Players.Worked)+' mins.'+' - Loc: '+Players.loc);
       end;
      Writeln('*****************************************************');
    end;
    [/scar]

    I would modify that to your likeing or change Chars/Design :)











    [COLOR="Red"][SIZE="4"]Scripting Standards[/SIZE][/COLOR]
    Scripting Standards are one of the things good scripters use to keep their scripts neat + organized. Some scripters make their own scripting standards after awhile but there is a, what you could call, "Universal Scripting Standards Code".Basically it consists of double spacing after each begin and backspacing twice between each end. Here are some examples of Bad Scripting standards.


    BAD SCRIPTING STANDARDS

     
    GOOD SCRIPTING STANDARDS


    OR MY PERSONAL SCRIPTING STANDARDS



    See How the First Looks Messy And And Jumbled Up But the Latter 2 Look Neat and tidy? Anyways At the Bottom, I have attached A personal Script Standardizer. All you do is download it, open your script in it, and look at the drop down menus until you see something like "Standardize all"






    [COLOR="Red"][SIZE="4"]Functions - Creating And Understanding[/SIZE][/COLOR]

    Ok now functions are like procedures that give you results. they can be any of the 4 types listed in vars section. Like if you wanted to see if SCAR finds a color it would be listed like this.

    [scar]
    function DidWeFindColor : boolean;//Boolean because it results true or false;
    begin
    result := false;// read below
    If(FindColor(x,y,(YourColor),1,1,100,100))then result := true
    end;
    [/scar]

    Ok, now see how I put result := false at the beggining? Well it will stay false unless it finds the color. So its kinda easier. Then you may use that like this.

    [scar]
    If(DidWeFindColor= true)then
      begin
        Writeln(' We Found Color!'):
      End;
    [/scar]

    You can also make other functions but you will learn they are very easy as you move along. If you don't understand how to make them now then dnt try  it now. You will understand eventually.
    [COLOR="Red"][SIZE="5"]Maintaining And Developing A Script[/SIZE][/COLOR]

    [COLOR="Red"][SIZE="4"]I DID TAKE THIS FROM MY OTHER TUTORIAL FOUND HERE[/SIZE][/COLOR]
    http://www.srl-forums.com/forum/tut-developing-and-t7297.html




    [COLOR="Red"][SIZE="4"] How To Organize and Develop A SRL/Scar Based Script Through Neatness To Get it Done Faster/ Better[/SIZE][/COLOR]

    [COLOR="Black"][SIZE="4"]~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/SIZE][/COLOR]
    [COLOR="Black"][SIZE="4"]Index[/SIZE][/COLOR]
    • I. Getting Started
    • II. Using Basic Tools
    • III. Scripting Standards
    • IV. Making An Outline
    • V. Orgranizing The MainLoop
    • VI. Publishing A Script
    • VII. Conculsion

    [COLOR="Black"][SIZE="4"]~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/SIZE][/COLOR]

    [SIZE="4"]Chapter One Getting Started[/SIZE]

    Ok, Youre probably reading this tutorial because your scripting is messy, you have trouble finding things, or your just plain bored. This tutorial will go into an explainaton on how I like to keep my scripts organized / make an outline so  I don't forget things, don't loose things, etc.

    [COLOR="Black"][SIZE="4"]~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/SIZE][/COLOR]


    [SIZE="4"]Chapter Two Using Basic Tools[/SIZE]

    Well For this Tutorial all you really need are 4 things.

    - A Computer -
    - Notepad(Or any other writing Program -
    - Scar -
    - Knowledge Of Scripting -

    I am going to go ahead and get you to do the follow things
     
    - Create A folder on the desktops named " My Scripts " or something similar to that -
    - Open Up Scar -
    - Open Up Your Writing Program -

    My Example Will Be A PowerChopper

    [COLOR="Black"][SIZE="4"]~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/SIZE][/COLOR]

    [SIZE="4"]Chapter Three Scripting Standards[/SIZE]
    Well Scripting Standards are the way us scripters keep our scripting

    LOOK AT THE BOTTOM OF THE PAGE FOR A STANDARDIZER GOTTEN FROM HEY321 or

    ~~~~~~~~~~~~~~~~~~~~~~~~
    http://www.srl-forums.com/forum/scar-scripting-standards-t6042.html?t=6042
    http://www.srl-forums.com/forum/scar-script-official-t3997.html?t=3997
    http://www.srl-forums.com/forum/scripting-standards-t5496.html?t=5496
    ^^^^^^^^^^^^^^^^^^^^^
    Go To These Tutorials If you don't understand Scripting Standards. Some scripters have their own standards that they create. In my opinion, if its neat, its good enough for me.

    [COLOR="Black"][SIZE="4"]~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/SIZE][/COLOR]


    [SIZE="4"]Chapter Four Making An Outline[/SIZE]
     
    Ok well this is where we really start the tutorial. So you have everything ready and you understand scripting standards. To start your outline, you need to know what you want to make. So at the top of your writing program, put your title/idea in Bold.
    [/CENTER]

    After that, Make your basic Outline. This FORCES you to know what you want to do with the script

    ** NOTE ** notice how I use " * " to make personal notes for myself

    This Tells you Exactly What to do with the Script. Now, You begin a detailed version of Your outline. Like So


    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

      Red Dots = I like To put special Symbols when indicating a custom procedure
      Black Line = See How I fill in the X when its done?


    [COLOR="Black"][SIZE="4"]~~~~~~~~~~~~~~~~~~~~~~~~~~~~[/SIZE][/COLOR]


    [SIZE="4"]Chapter Five Organizing The Mainloop[/SIZE]

    Now you have to Organize your mainloop. I don't really know how to explain this as each scripter has his/her own style but, this is how I would organize mine.














    [SIZE="6"][COLOR="Red"]Intermediate[/COLOR][/SIZE]








    [SIZE="4"][COLOR="Red"]DTMS[/COLOR][/SIZE]
    Ok Well I Love DTMs. They Are a Scripters Best Friend. They are very easy to make and almost infalliable. To get to the DTM Maker, Do these steps.

    • Select RS Window
    • Go to Tools --> DTM Editor...

    THE KEY!! ONLY MOVE THE MOUSE OVER THE OUTLINE COLOR 65336!! THIS IS WHAT IS CALLED A STATIC COLOR. IT DOES NOT CHANGE!!!

    Now every point you click in the picture is recorded. A DTM(Deformable Template Module) checks for colors and their distances between them. But colors change in rs. Thats why you only choose the color 65336. Here is a picture of a Basic DTM Being Made.

    Make The DTM, (See all the colors in the top right? they are all 65336).



    Go To File --> Save

    Save It Where You can find it and let it have a good name.

    then go to

    Test --> FindDTM

    at the top of you screen(its a drop down menu)

    Go to your DTM.

    If it doesnt find your DTM, then make a new one , else great job!

    Now go to File, DTMToText and close the screen. The DTM Will be in the DebugBox.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    MAIN SRL RELATED FUNCTIONS

    [scar]
    FindDTM(DTM, x,y, x1, y1, x2, y2) // Finds A DTM in the Specified params. records Position at the vars you specify.

    FindDtmIn(var  FX, FY: Integer; DTM, X1, Y1, X2, Y2: Integer) // Basically Same thing as above.

    //To Click A DTM just say something like

    If(FindDTMIn(x,y,(DTM Name Here),X1, Y1, X2, Y2)) then
      begin
        Mouse(x,y,0,0,true);
      end;
    [/scar]

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~









    [COLOR="Red"]BitMaps[/COLOR]
    BitMaps Are also a highly effective way to find things. They are like a picture. Actually they are a picture. I personally think Bitmaps Are inaccurate and would rather use advanced color finding or DTM's but i will explain anyway.

    Well All A BitMap Is, Is a picture So first we need to take a screen shot.
    Press the Button "Print Screen". It should be somewhere directly above the arrow keys but maybe higher. This will take a screen Shot of the screen. Now.  Go to Paint(or any other picture editing program) and go to Edit --> Paste.
    Now Use the cropping tool to cut the image down to its lowest size.(Use The Magnifier if needed). Make The BackGround Black then save. Now open back up SCAR.

    [LIST=1]
    • Go To Script --> PictureToStr
    • Now Click Open
    • Select Your File
    • Press OK


    Now you have the BitMap String in your debug. State that in your script and you can use any BitMap Function for it.










    [SIZE="4"][COLOR="Red"]Arrays[/COLOR][/SIZE]

    Ok now Arrays are basically a series of variables.

    How to Declare them

    If you know the length of the array, then you can say it like this.
    [scar]
    var
      ColorArray : array [0..5] of integer;
      ExtArray : array [0..2] of extended;
      BoolArray : Array [0..10] of boolean;
      stringarray : array [5..8] of string;
    [/scar]

    If You don't(like if your adding colors as you go) then it should be stated like this
    [scar]
      Var
        ColorArray : array of integer;
    [/scar]

    Some functions for arrays:

    [scar]
    GetArrayLength((ArrayName));
    [/scar]

    This will get the current length of the array.

    [scar]
    SetArrayLength((ArrayName),ArrayLenght));
    [/scar]

    This is useful for updating arrays as you go. So an example of an updating array would be

    [scar]
    procedure UpDateArray;
    var
      I : integer;
      ColorArray : array of integer;
    begin
    If(FindColor(x,y,98347,1,1,100,100))then
      begin
        I := GetArrayLength(ColorArray);
        SetArrayLength(ColorArray, I + 1);// I + 1 so it will be 1 higher than the
                                          // previous array length.
        Colorarray[I + 1] := GetColor(x,y);
      end;
    end;
    [/scar]
    [SIZE="4"][COLOR="Red"]RADIALWALKING[/COLOR][/SIZE]

    Ah yes, the all famous radialwalking. The enigma that most srl members  do not understand. It will be explained fully and completely here.

    Radialwalking is the best form of walking in my opinion. What Radiawalk Basically does is search for a color on the mini map. Now the MiniMap is a circle, no?. There are 360 degrees in an angle. What Radialwalk does is search 
    between the angles you specify for a color and picks the farthest color from the center. Now Lets Explain The Command and how it works by use of pictures...

    [scar]
    RadialWalk(Color,StartRadial,EndRadial,Radius,ModX, ModY);
    [/scar]

    Ok Now
     COLOR = The color your searching for.
     StartRadial = The radius to start at.
     EndRadial = The radius to end at.
     Radius = How Many Pixels from the center?
     ModX = random x
     ModY = random y





    Imagine this is the minimap. Those Are The Angles roughly that the mini map is composed of.
    Now if you wanted to search for a white color from 0 to 90, you would make your radiawalk like this

    [scar]
    RadialWalk( {WhiteColor} , 0, 90, 70, 0 , 0);
    [/scar]

    It would search the color in this area.



     starting from 0 to 90. Like so.
    (SRY for the bad picture, I got it straight from YakMan's RadialWalker Aid.)





    If it finds the color White, it Will Click it and exit.


    Using RadialRoadWalk is useful yet I prefer to do it like so :D

    [scar]
    procedure ClickRoad;
    var
      tmpRoad : integer;
    begin
    tmpRoad := FindRoadColor;
    RadialWalk(tmpRoad,~~~~~~);
    end;
    [/scar]

    USING YAKMANS RADIWALK HELPER
    HIGHLY SUGGESTED!!
    It works amazingly. Here is kinda a mini tutorial on it.
    [LIST=1]
    • While In SCAR, Go TO Open
    • Click on Includes in The " Main Menu " of SCAR(where you downloaded srl)
    • go to includes --> SRL --> scripts --> Yakman's RadialWalk Helper
    • Open it
    • Press Play
    • Make sure you are logged in to RS
    • Move The Window Over to The Side, Out Of the way of the minimap
    • Press "CAPTURE FROM CLIENT" on the right hand side
    • It Should Take A Picture Of The MiniMap

    Now Move The Mouse Over the Mini Map TO The Starting Radial And Click Like  so. The Line should stick there.



    Only Use The "Radial" not "Radial2" unless you plan on over lapping(not really recommended).
    Fill in the Boxes with Radius , Start Radius and End Radius and hit "Show Path". It Should show you how it will search. If you like it , hit "Stop" and hit "Print Procedure". Then Close the box.

    Now Look in the debug Box. It has your command already made out!!











    [COLOR="Red"][SIZE="4"]Advanced Procedures[/SIZE][/COLOR]
    Ok now Advanced Procedures are very useful in scripting. I Like to think of Advanced Procedures Having the folowing :

      • AntiBan
      • Undetectable
      • Higly Accurate
      [/LIST]

      They Are Kind Of "Spur Of The Moment" Ideas. The folowing would be an example.

      [scar]
      procedure findrock;
      begin
      If(FindColorSpiral(x,y,color,x1,y1,x2,y2))then
        begin
        If(FindColorSprial(x,y,color2,x+15, Y+15, x -15,  y - 15))then
          begin
            Writeln('Found');
          end;
        end;
      end;
      [/scar]

      EDIT:

      Ok Well Many People do not understand this so let me go through this procedure where you can. Ok, When you call the first FindColor Spiral,it stores the position of the color at x,y correct?. Well when you call the second FindColorSpiral, the box it creates wil be with 15 pixels of the first color found. Hopefully that will clear things up for you ;).
      Basically What this will do is find a color on th main screen. If it finds the second color within a box of the first color, it will write found see?. Base commands on other commands results as so and add failsafes and your good to go. :)








      [SIZE="4"][COLOR="Red"]Making Your Own Functions[/COLOR][/SIZE]
      Well Making your own functions is what intermediate-advanced scripters do.
      To Make the functions you want, you need to understand the 4 types of vars. Now Lets say you wanted to make an AxeHead Finder. You would make an outline (Maintaining and Developing a script Above). And get at it. I would suggest using DTMs Or advanced procedures(above) to get a Axe Head Finder Done. Take into consideration all things that happen durring runtime of the procedure. For instance, The Axe Head often lands under the white dots of people on the minimap, and is usually covered by a person. So if it doesnt find it on the first try, make sure it radialwalks (or any other form of minimap walking) to a white dot.

      Offline pwnaz0r

      • Newbie
      • *
      • Posts: 14
      • Rep: 2
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #3 on: March 09, 2007, 06:35:35 pm »


      [SIZE="6"][COLOR="Red"]ADVANCED[/COLOR][/SIZE]
      YEAH, These are gunna make your head hurt unless your good :D






      [SIZE="5"][COLOR="Red"]Some Components[/COLOR][/SIZE]

      Well As You Probably Know, Many Components/Classes were imported from Delphi.
      These are listed in the SCAR manual. Here are some basic definitions.
      Quote
      TGroupBox - The TGroupBox component represents a standard group box, used to group related controls on a form.

      TLabel - Use TLabel to add text or a bitmap that the user can’t edit to a form.

      TEdit - Use a TEdit object to put a standard edit control on a form.

      TMemo - Use TMemo to put a standard multiline edit control on a form.

      TComboBox - A TComboBox component is an edit box with a scrollable drop-down list attached to it.

      TButton - Use TButton to put a standard push button on a form.

      TCheckBox - A TCheckBox component presents an option for the user.

      TRadioButton - Use TRadioButton to add a radio button to a form.

      TListBox - Use TListBox to display a scrollable list of items that users can select, add, or delete.

      TScrollBar - Use TScrollBar to add a free-standing scroll bar to a form.

      TImage - Use TImage to display a graphical image on a form.

      TPanel - Use TPanel to put an empty panel on a form.

      TTimer - TTimer is used to simplify calling the system timer functions.

      TForm - form (window) component.

      TApplication - TApplication encapsulates a windowed application.

      TMenuItem - Use TMenuItem to specify the appearance and behavior of an item in a menu.

      TMenu - Use TMenu as a base class when defining a component that represents a collection of menu items.

      TMainMenu - Use TMainMenu to provide the main menu for a form.

      TPopupMenu - Use TPopupMenu to define the pop-up menu that appears when the user clicks on a control with the right mouse button.

      TCanvas - Use TCanvas as a drawing surface for objects that draw an image of themselves.

      Now that is straight from the SCAR Manual. Some Of these components Uses will be listed here:
      • TGroupBox - Used In Forms, Used To Organize
      • TLabel - Form Component that the user cant edit.
      • TImage - In My Opinion, the best Picture Component For Forms.
      • TRadioButton - Radio Button
      • TCheckBox - Check Box
      • TButton - a button
      • TCanvas - Obviously The Canvas of the Forms.

      Again that was a very simple list. Now The main reason i made this section was to Discuss the TPoint component so from here on out, thats what its gunna do. TPoint Is Basically, in simple terms, a collective var type that has 2 SubVars. X and Y.

      Example Using These:
      [scar]
      procedure GetPos;
      var
        MyPoint : TPoint;
        xx, yy : integer;
      begin
      GetMouse(xx,yy);
      MyPoint.X := xx;
      MyPoint.Y := yy;
      end;
      [/scar]

      All that procedure does is store the Position of X and Y to the TPoint. I Used TPoint quite alot in my UberAlcher(not finished yet). There is also TPointArray Which Is Good For Storing Positions.

      [scar]
      procedure MakeATPointArray;
      var
        ThePoints : TPointArray;
        XX : integer;
        YY : integer;
        I : extended;
      begin
      I := -1;
      GetMousePos(XX,YY);
      repeat
      XX := XX + 1;
      YY := YY + 1;
      I :+ I + 1;
      SetArrayLength(ThePoints, I)l
      ThePoints.X := XX;
      ThePoints.Y := YY;
      until(i = 25);
      end;
      [/scar]

      That procedure doesnt really do anything useful just an example :D

      [SIZE="4"][COLOR="Red"]Making Custom Var Types[/COLOR][/SIZE]
      Well As Seen Above, TPoint is a var type. But did you know you can create your own? This is what the player array is composed of. To declare a new var type, Just add it before your first procedure in script. "Type" is the word used to declare a new var type. The Example should explain everything.

      THIS WAS TAKEN FROM MY UBER ALCHER

      [scar]
      Type
        AntiBannage = record
          TalkingRatio : integer;
          MovingRatio : integer;
          MisClickRatio : integer;
          StatsBoxRatio : integer;
      end;
      [/scar]

      and i used it in this way.

      [scar]
      procedure AntiBanLand;
      var
        AntiBanN : AntiBannage;
      begin

        ABR := 5;
       
        //--------------------------
       
        AntiBanN.TalkingRatio := 1 + random(ABR * 10);
        AntiBanN.MovingRatio := 1 + random(ABR * 5);
        AntiBanN.MisClickRatio := 1 + random(50);
       
        //--------------------------
        Case AntiBanN.TalkingRatio of
        1 : begin
             end;
        end;
       
        //--------------------------
       
        Case AntiBanN.MovingRatio of
        1 : begin
              SleepAndMoveMouse(1500+random(3000));
              ReportVars[1] := ReportVars[1] + 1;
            end;
        4 : begin
              SleepAndMoveMouse(1000+random(2000));
              ReportVars[1] := ReportVars[1] + 1;
             end;
        8 : begin
              PickUpMouse;
              ReportVars[1] := ReportVars[1] + 1;
            end;
        10 : begin
               AlmostLogOut;
               ReportVars[1] := ReportVars[1] + 1;
             end;
        end;

        //--------------------------

        Case AntiBanN.MisClickRatio of
        1 : begin
              GameTab(6);
              GameTab(7);
              ReportVars[1] := ReportVars[1] + 1;
            end;
        end;
       
        //--------------------------
       
        HoverEvery(15 + random(10),'Magic');
      end;
      [/scar]



      That is for antiban. Anyways This is a very easy thing to do, I just thought I may want to put it under Advanced because in my opinion, you really shouldn't use it unless you are advanced :D


      [SIZE="4"][COLOR="Red"]Forms[/COLOR][/SIZE]
      Ah Yes, Forms. They are quite an enigma for even an the best of scripters. But they are actually quite simple. I think that the form creator is a great tool for creating for but only for the basic structure. I have edited a form that greatly exceeds the form makers abilities because the formmaker does not include all form components. However, I will be discussing how to manually create a form and how to create one via form maker.

      STANDARD FORM PROCEDURES
       Ok well lets go ahead and get this out of the way. These are always to be put after your main InIt procedure.
      [scar]
      procedure SafeInitForm;
      var
        v: TVariantArray;
      begin
        setarraylength(V, 0);
        ThreadSafeCall('InitForm', v);
      end;

      procedure ShowFormModal;
      begin
        frmDesign.ShowModal;
      end;

      procedure SafeShowFormModal;
      var
        v: TVariantArray;
      begin
        setarraylength(V, 0);
        ThreadSafeCall('ShowFormModal', v);
      end;
      [/scar]


      USING FORM EDITOR
      Well The Form Editor Leaves out Many Components But here it is anyway.

      To Get To The Form Editor :
      • Open SCAR
      • Go To Tools --> FormEditor...

      Now You Should Get 3 Boxes.(frmDesign),(frmDesigner),(Object Inspector).


      Ok Now In the Forum Designer, You can choose from a variety of options.
      These Are Not Hard. All you do it click the button on the frm Designer and then click where you want it on the frm Design. (You can edit the size of the form but adjusting the frm Design window. If you can't do this very simple thing of designing a basic form, see other tuts about it and come back. This only goes into detail, explaining how forms work.

      Now This Is my Example Form;

      [scar]
      frmDesign := CreateForm;
      frmDesign.Left := 250;
      frmDesign.Top := 114;
      frmDesign.Width := 696;
      frmDesign.Height := 480;
      frmDesign.Caption := 'frmDesign';
      frmDesign.Color := clBtnFace;
      frmDesign.Font.Color := clWindowText;
      frmDesign.Font.Height := -11;
      frmDesign.Font.Name := 'MS Sans Serif';
      frmDesign.Font.Style := [];
      frmDesign.Visible := True;
      frmDesign.PixelsPerInch := 96;
      Label1 := TLabel.Create(frmDesign);
      Label1.Parent := frmDesign;
      Label1.Left := 498;
      Label1.Top := 278;
      Label1.Width := 32;
      Label1.Height := 13;
      Label1.Caption := 'Label1';
      Button1 := TButton.Create(frmDesign);
      Button1.Parent := frmDesign;
      Button1.Left := 296;
      Button1.Top := 189;
      Button1.Width := 75;
      Button1.Height := 25;
      Button1.Caption := 'Button1';
      Button1.TabOrder := 8;
      CheckBox1 := TCheckBox.Create(frmDesign);
      CheckBox1.Parent := frmDesign;
      CheckBox1.Left := 48;
      CheckBox1.Top := 46;
      CheckBox1.Width := 97;
      CheckBox1.Height := 17;
      CheckBox1.Caption := 'CheckBox1';
      CheckBox1.TabOrder := 9;
      GroupBox1 := TGroupBox.Create(frmDesign);
      GroupBox1.Parent := frmDesign;
      GroupBox1.Left := 34;
      GroupBox1.Top := 215;
      GroupBox1.Width := 185;
      GroupBox1.Height := 105;
      GroupBox1.Caption := 'GroupBox1';
      GroupBox1.TabOrder := 10;
      Memo1 := TMemo.Create(frmDesign);
      Memo1.Parent := frmDesign;
      Memo1.Left := 323;
      Memo1.Top := 44;
      Memo1.Width := 185;
      Memo1.Height := 89;
      Memo1.Lines.Add('Memo1');
      Memo1.TabOrder := 11;
      [/scar]

      Not Anything Special, Just has many components Form Creator gives you.
      Now, Lets just break down one form add-in.

      [scar]
      Memo1 := TMemo.Create(frmDesign);
      Memo1.Parent := frmDesign;
      Memo1.Left := 323;
      Memo1.Top := 44;
      Memo1.Width := 185;
      Memo1.Height := 89;
      Memo1.Lines.Add('Memo1');
      Memo1.TabOrder := 11;
      [/scar]

      Ok Now the first line.
      [scar]
      Memo1 := TMemo.Create(frmDesign);
      [/scar]
      Creates A TMemo called Memo1 in (frmDesign).<-- frmDesign is the default name of you form.

      The Second Line,
      [scar]
      Memo1.Parent := frmDesign;
      [/scar]
      Tells SCAR that Memo1 will be placed in frmDesign(in other words, no in a group box, etc).

      Lines 3-7
      [scar]
      Memo1.Left := 323;
      Memo1.Top := 44;
      Memo1.Width := 185;
      Memo1.Height := 89;
      [/scar]
      Tell Scar the Parameters For Memo1

      Line 8
      [scar]
      Memo1.Lines.Add('Memo1');
      [/scar]
      Is Specific Command For a TMemo. All Components have their own commands because thats what makes them different components.

      What I like to do when editing my form manually is split up the sections so here is my example .

      [scar]
      frmDesign := CreateForm;
      frmDesign.Left := 250;
      frmDesign.Top := 114;
      frmDesign.Width := 696;
      frmDesign.Height := 480;
      frmDesign.Caption := 'frmDesign';
      frmDesign.Color := clBtnFace;
      frmDesign.Font.Color := clWindowText;
      frmDesign.Font.Height := -11;
      frmDesign.Font.Name := 'MS Sans Serif';
      frmDesign.Font.Style := [];
      frmDesign.Visible := True;
      frmDesign.PixelsPerInch := 96;

      //------------------

      Label1 := TLabel.Create(frmDesign);
      Label1.Parent := frmDesign;
      Label1.Left := 498;
      Label1.Top := 278;
      Label1.Width := 32;
      Label1.Height := 13;
      Label1.Caption := 'Label1';

      //------------------

      Button1 := TButton.Create(frmDesign);
      Button1.Parent := frmDesign;
      Button1.Left := 296;
      Button1.Top := 189;
      Button1.Width := 75;
      Button1.Height := 25;
      Button1.Caption := 'Button1';
      Button1.TabOrder := 8;

      //------------------

      CheckBox1 := TCheckBox.Create(frmDesign);
      CheckBox1.Parent := frmDesign;
      CheckBox1.Left := 48;
      CheckBox1.Top := 46;
      CheckBox1.Width := 97;
      CheckBox1.Height := 17;
      CheckBox1.Caption := 'CheckBox1';
      CheckBox1.TabOrder := 9;

      //------------------

      GroupBox1 := TGroupBox.Create(frmDesign);
      GroupBox1.Parent := frmDesign;
      GroupBox1.Left := 34;
      GroupBox1.Top := 215;
      GroupBox1.Width := 185;
      GroupBox1.Height := 105;
      GroupBox1.Caption := 'GroupBox1';
      GroupBox1.TabOrder := 10;

      //------------------

      Memo1 := TMemo.Create(frmDesign);
      Memo1.Parent := frmDesign;
      Memo1.Left := 323;
      Memo1.Top := 44;
      Memo1.Width := 185;
      Memo1.Height := 89;
      Memo1.Lines.Add('Memo1');
      Memo1.TabOrder := 11;
      [/scar]





      [/FONT]














      [SIZE="5"][COLOR="Red"]Add-ons[/COLOR][/SIZE]
      [COLOR="Red"][SIZE="4"]Complete Walkthrough of an entire script![/SIZE][/COLOR]

      Ok well everyone has been needing help making a script that doesnt say "hello world" (:spot: - Making your first script sticky :D). Anyways Here it goes.PS I will not fill in any parameters because i want you to do your own work!. In this example i will be making a simple powerminer.

      Now, I like to Start with Antiban/Antirandoms. So lets get out antiban all setup.

      Use Commands from above in antiban section. Here is a simple example.


      1

      [scar]
      procedure MyAntiBan;
      begin
        RotateEvery(//your parameters here);
        RandomRClickEvery(//your parameters here);
        MakeCompass('N');//To set compass North.
      end;
      [/scar]

      that is not in any way advanced. all it does is randomly rotate every and stuff.


      2
      AntiRandoms is simply adding find normal randoms and make compass north;

      [scar]
      procedure AntiRands;
      begin
        FindNormalRandoms;
        MakCompass('N');
      end;
      [/scar]

      3
      now you may need to add custom antirandoms to your script depending on what type it is. For a powerminer you will need pickaxe finding. Search the skills folder of the SRL includes to find the most up to date procedures (** note ** be sure to add the setup somewhere. EX. In our miner, FindPickAxeColors);


      4
      now add the srl array to your script at the top. If you don't know what this is, read the SRL manual. It can currently be found at the very top of the main forums page. Read the introduction. it should include the array and what it does.

      5
      Reports.. I would add them now so to have them handy when ready. Look at building a proggy in my guide under beginners.

      6
      Making the mining procedure.


      I would use colors when making your first script. I wouldn't use advanced color finding. Just normal. Maybe like so.

      [scar]
      procedure FindAndMineRock;
      begin
        If(FindColor(//your params here))then
          begin
            MMouse(//Where the rock is here);
            If(isUpText('ine'))then
              begin
                Mouse(//your params here);
                Exit;
              end;
         end;
      end;
      [/scar]

      That was not advanced at all. Just walks you through slowly of making a script.

      7
      Now to add dropping. I always like to use dtms. However in your first script, I would do something like this.

      [scar]
      procedure Drop;
      begin
        Dropall;
      end;
      [/scar]

      or

      [scar]
      procedure drop;
      begin
        Dropto(2,28);
      end;
      [/scar]

      Offline Global

      • VB Moderator
      • Sr. Member
      • ****
      • Posts: 375
      • Rep: 2
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #4 on: March 09, 2007, 07:24:08 pm »
      <3

      <3

      <3


      Thank you So much :)
      Please Don't P.M About SCAR, I'm on the basics with it also :P.

      Freddy1990.com

      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #4 on: March 09, 2007, 07:24:08 pm »

      Offline pwnaz0r

      • Newbie
      • *
      • Posts: 14
      • Rep: 2
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #5 on: March 10, 2007, 12:07:17 am »
      Well its kinda messy due to SRL forum format but you know gets the job done :D

      Offline Global

      • VB Moderator
      • Sr. Member
      • ****
      • Posts: 375
      • Rep: 2
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #6 on: March 10, 2007, 12:19:32 am »
      True. You know what a great Script idea would be?

      A VBulletin to SMF BBC Formatter
      Please Don't P.M About SCAR, I'm on the basics with it also :P.

      Freddy1990.com

      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #6 on: March 10, 2007, 12:19:32 am »

      Offline pwnaz0r

      • Newbie
      • *
      • Posts: 14
      • Rep: 2
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #7 on: March 10, 2007, 01:17:43 am »
      Yup :D

      Offline Avaphi

      • Jr. Member
      • **
      • Posts: 94
      • Rep: 1
      • SDRR For life
        • MSN Messenger - db.inc.email@gmail.com
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #8 on: March 11, 2007, 10:30:41 am »
      Pwnaz0r, want me to convert it for you?

      Offline pwnaz0r

      • Newbie
      • *
      • Posts: 14
      • Rep: 2
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #9 on: March 17, 2007, 05:56:25 pm »
      Sure thing :D plz do if you can im trying to get my site up and running :p

      Offline Freddy

      • Owner
      • *****
      • Posts: 2616
      • Rep: 19
        • MSN Messenger - freddy1990@gmail.com
        • AOL Instant Messenger - Freddy199O
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #10 on: March 18, 2007, 06:34:51 am »
      This has everything, lol :) sticky

      Offline Leon64

      • Newbie
      • *
      • Posts: 45
      • Rep: 0
        • View Profile
        • Email
      Re: [UBP][TUT] Ultamite Guide to Scripting
      « Reply #11 on: April 10, 2007, 06:28:43 pm »
      lol thanks... this made me one step forward to be a better scripter :p

      Offline SCAR_Coffee™

      • Leecher
      • Posts: 2
      • Rep: 0
        • View Profile
        • Email
      Re: [UBP][TUT] Ultimate Guide to Scripting
      « Reply #12 on: October 11, 2007, 05:16:40 am »
      Very nice! *Correction for your spelling* Begginers -> Beginning.
      I really like your tutorial, I'm like nowhere NEWB on scar, im gonna to read all ^_^ :)

      Offline december231

      • Newbie
      • *
      • Posts: 15
      • Rep: 0
        • View Profile
        • Email
      Re: [UBP][TUT] Ultimate Guide to Scripting
      « Reply #13 on: October 20, 2007, 05:53:40 pm »
      thanks it helped me out alot =)

      Offline cooclade283

      • Leecher
      • Posts: 4
      • Rep: 0
        • View Profile
      Re: [UBP][TUT] Ultimate Guide to Scripting
      « Reply #14 on: November 12, 2007, 02:42:39 pm »
      Great info, I am going back to this EVERY time I get stuck making scripts
       :) :) :) :) :) :) :) :) ;D
      « Last Edit: November 12, 2007, 02:46:40 pm by cooclade283 »

      Freddy1990.com

      Re: [UBP][TUT] Ultimate Guide to Scripting
      « Reply #14 on: November 12, 2007, 02:42:39 pm »

       

      deductible-aliform