[GUIDE] More Advanced Lua menu

User Tag List

Results 1 to 8 of 8
  1. #1
    Scubast3ve's Avatar Member
    Reputation
    55
    Join Date
    Apr 2009
    Posts
    125
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [GUIDE] More Advanced Lua

    Well no one here seems to appreciate the many features of lua and i hope that this can help you make your code alot smaller.


    I am going to be working with a "For Loop" and an "Array."


    For those of you have done any programming before you should know how arrays and loops work so you should be able to grasp this alot faster.


    First i will show you how to declare your "Array." The array will be named "SKILLID," the only way that a name impacts on your code is when you use names where you either use them again in your code or use invalid characters. Trying sticking to just letters.


    The Declaration:
    Code:
    SKILLID = {43, 44, 45, 46, 54, 55, 95, 136, 160, 162, 172, 173, 176, 226, 227, 228, 229, 473, 633}


    As you know SKILLID is the array and so is assigned data with the "=" in this first statement. The data is contained within {}. Brackets define the type of data to be stored in a variable, {} defines that the data is an array. Incase you are wondering, variables in this language are not primarily integers, strings, bools or anything else you wish to dream of. Lua will assign the most relevant variable type. Back to the lesson. You will see data contained within the brackets, just as a reference these are skill id's. This data is split up into different pieces with a ", " which is how each number is given it's own index in the array. An index is a number given to a point in any array. In Lua the index starts with a 1 and then moves up one every time.


    Now that you know how and why everything is where it is, you will be shown how calling from an array can be done.


    Knowing that an index starts at 1 a person could assume that 43 would be assigned an index of 1. Using this data again is very simple.


    x = SKILLID[1]


    In this example x has been assigned the number 43. This was just a bit of show and tell but it should help if you can figure it out then you know that SKILLID[2] has the number 44 in it.


    Moving on in the lesson, Loops:
    Code:
    for i,v in pairs(SKILLID) do
    	Player:AdvanceSkill(SKILLID[i], 400) 
    end

    This type of loop is called a "For Loop." A for loop will start at the lowest index and move through to the highest.


    The loop will be declared by the for command. "i,v" are two variables. "i" is the variable that stores the index, hence "i". "v" is the variable that holds the value at the current index, hence "v". You can use anything not just these but they are the most logical choice.


    "in pairs(SKILLID)" declares that the current index from the array SKILLID will be stored in "i" and the value of that position will be stored in "v." Lucky last on the first line is "do," this initiates the for and it will begin looping until the last index of the array.


    Most people should be familiar with "Player:AdvanceSkill()" so this isn't something that needs explaining but the data inside does. Remembering the basics on index's? Well this is where you can put the into action. There are two things you can do at this point. You could declare "Player:AdvanceSkill()" as "Player:AdvanceSkill(v, 400)" or "Player:AdvanceSkill(SKILLID[i], 400). The first example uses the data currently stored in "v." The second one uses the current index, "i" as was done before to get the stored value. Another really important part is "end" just like in every if and anything you use don't for get to end it.


    Now i thought that my code was sexy and great example of why loops are so important in this kind of thing it could save you 17+ lines of code. ^^
    Code:
    SKILLID = {43, 44, 45, 46, 54, 55, 95, 136, 160, 162, 172, 173, 176, 226, 227, 228, 229, 473, 633}
    
    
    function Skill_OnGossip(pUnit, event, Player)
    pUnit:GossipCreateMenu(200, Player, 0)
    pUnit:GossipMenuAddItem(10, "Advance My Skills!", 1, 0)
    pUnit:GossipMenuAddItem(10, "Goodbye!", 2, 0)
    pUnit:GossipSendMenu(Player)
    end
    
    
    function Skill_OnSelect(pUnit, event, Player, id, intid, Code, pMisc)
    if intid == 1 then
    	for i,v in pairs(SKILLID) do
    		Player:AdvanceSkill(SKILLID[i], 400) 
    	end
    end
    Player:GossipComplete()
    end
    
    RegisterUnitGossipEvent(NPCID, 1, "Skill_OnGossip")
    RegisterUnitGossipEvent(NPCID, 2, "Skill_OnSelect")

    Hope this tutorial made the subject covered alot easier to understand. If you have any questions please leave them below.


    Regards,
    Scuba <3
    Last edited by Scubast3ve; 07-26-2009 at 04:22 AM.
    Don't Forget To Give Rep To People Who Help You.

    [GUIDE] More Advanced Lua
  2. #2
    Vision1000's Avatar Member
    Reputation
    104
    Join Date
    Jun 2008
    Posts
    122
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks for this, very helpful.

    Good to see people posting new infornmation.

    repx2

  3. #3
    Dibes's Avatar Active Member
    Reputation
    18
    Join Date
    May 2008
    Posts
    47
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    wow good post, is very nice knowlege to know

    rep x 2

    P.S. i would space it out and lower the size, its hard to read, like a wall of text XD

  4. #4
    Hellgawd's Avatar Account not activated by Email
    Reputation
    710
    Join Date
    Jun 2007
    Posts
    2,480
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Good guide for those that didn't know this. +2

  5. #5
    Scubast3ve's Avatar Member
    Reputation
    55
    Join Date
    Apr 2009
    Posts
    125
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Spaced i guess ^^ i'm no good at this kind of thing. And it's good to hear that you guys find this a good guide.
    Don't Forget To Give Rep To People Who Help You.

  6. #6
    Scubast3ve's Avatar Member
    Reputation
    55
    Join Date
    Apr 2009
    Posts
    125
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hahaha. Man i didn't know anything 2 years ago =]

    Funny to look back on old work
    Don't Forget To Give Rep To People Who Help You.

  7. #7
    Zazi529's Avatar Sergeant
    Reputation
    7
    Join Date
    Oct 2011
    Posts
    41
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Good guide, thanks.

  8. #8
    MadameGrip's Avatar Contributor

    Reputation
    150
    Join Date
    Aug 2010
    Posts
    528
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Can someone please for the sake of god and every human with eyes, please edit his font colour ?

Similar Threads

  1. [Guide] How to Advanced Lua.
    By ZestyJ in forum WoW EMU Guides & Tutorials
    Replies: 6
    Last Post: 04-28-2009, 05:28 PM
  2. [Guide]More LUA ascent 2.3 scripts
    By Pragma in forum WoW EMU Guides & Tutorials
    Replies: 27
    Last Post: 04-10-2008, 01:06 PM
  3. [PC] AutoClicker (for use with Calek's Guide +more)
    By Gothian in forum World of Warcraft Bots and Programs
    Replies: 58
    Last Post: 02-28-2008, 03:59 PM
  4. More Advanced Lua?
    By Snailz in forum World of Warcraft Emulator Servers
    Replies: 3
    Last Post: 01-28-2008, 02:17 PM
  5. More advanced Computer Specs
    By Sonic Waffle in forum Community Chat
    Replies: 0
    Last Post: 12-31-2007, 11:36 PM
All times are GMT -5. The time now is 07:47 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search