How to Create a WoW AddonWorld of Warcraft is a very popular MMO, and addons for the game are extremely popular as they can really add to gameplay and tactics to customise the experience. This tutorial is going to build on to create some basic World of Warcraft addons. Let's get going!If you're familiar with addons for the game, they usually come in a folder which you can simply paste inside the /Interface/AddOns directory inside your game folder (which is usually C:/Program Files (x86)/World of Warcraft) - if the versioning and everything is fine, the addon should work just great.
1 2 3 4## Interface: 50001 ## Title: Hello World ## Author: Joe Savage ## Version: 0.1Note that this file, along with all the others we will be creating in this tutorial, can be created/modified with any text editor of your choosing - whether that be Notepad, Sublime Text, or whatever you like using.After our directives, any lines of the file which aren't prefixed with ## are treated as files which will be loaded/executed when the addon is loaded (i.e. When a character has entered the world) - these are loaded in the order they are specified.
In our case we just want to execute some basic Lua, so let's create a.lua file (in this example - main.lua) which will contain our script and then tell the TOC about it by listing the filename at the bottom of HelloWorld.toc. LuaSo now the addon setup is essentially complete, we just need to write the script which actually achieves the functionality we want!
When writing Lua scripts for World of Warcraft, a bunch of custom functions and tables and things are made available to you to do different things to/with the game. In this case, where we just want to output text to the screen, we can either use the print function to output some text in the chat window, or the message function to create a pop-up box with some text. It's worth noting that the message function is now depreciated (which means it will be phased out soon), so it should really be avoided where possible (and may not work in your current game version - in which case use print for this example), however it's a good way of getting some fast visual results at this early stage.
So if we put the following line into main.lua and then open up the game and log in, checking the 'Addons' window before character selection to see if the game has recognised the addon (if it hasn't, there is something wrong with the folder/TOC setup), we should see a pop-up box appear on the screen when a character is selected. 1message ( ' Hello World!' )Our 'Hello World' addon works! Stepping things upOk, so we created an addon which outputs some text.
It's kind of cool from a development perspective, but it's essentially useless. The aim of the next addon we're going to create is to congratulate the user when they level up a character - it's still not very useful, but it's a little more complex and it paves the way for 'proper' addon development with some pretty simple expansion.So to check when a character has levelled up we need to respond to an event the game fires, and to know about events we need to make use of these things called frames. Frames, in the context of World of Warcraft addon development, are essentially structures (if you're all that familiar with Lua, they are custom tables) which allow for the detection of certain game events and the creation of windows and a bunch of other cool stuff.So the first thing we want to do in our new script is create a frame. We should make this a local variable just to make sure we aren't causing any naming conflicts or anything in a wider scope, and we can assign this new variable to a new frame by using the CreateFrame function and passing it the 'Frame' value, so the first line of our main.lua file should be. 1local CongratsEventFrame = CreateFrame ( ' Frame' )In this case I decided to name the frame 'CongratsEventFrame' as it seems unlikely to cause any naming conflicts and it is reasonably descriptive of what this frame is for. From here we can do things with the frame using the colon (:) operator (like any other table in Lua if you're familiar). The first thing we want to do with our frame is tell it to watch out for the event of a character levelling up, this is expressed through the PLAYERLEVELUP event in the WoW Addon API, and as such we can pass this value to CongratsEventFrame:RegisterEvent to tell our frame to watch for it.
1CongratsEventFrame: RegisterEvent ( ' PLAYERLEVELUP' )Now all we need to do is tell our frame what to do when it catches the PLAYERLEVELUP event. We can do this by using the CongratsEventFrame:SetScript function, which as the name suggests sets scripts for certain situations, and in this case we want to set a script for when an event fires, hence we pass it the 'OnEvent' value followed by the function we want it to execute when an event is caught by our frame. The function that deals with 'OnEvent' is passed different parameters depending on the event which is being fired, however the first two parameters should always be assigned to self and event, and then we can use. To handle any more parameters which are passed.
So our basic event handling code at the moment should look something like this. 1 2 3 4CongratsEventFrame: SetScript ( ' OnEvent', function ( self, event.
1 2 3 4CongratsEventFrame: SetScript ( ' OnEvent', function ( self, event. ) local arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 =.
End )Now we have all the data available to us and we have a portion of code which will only be executed once the player has levelled up, we just need to make use of the print function to concatenate and then output some values! One nice touch might be to add the player's name which can be retrieved by passing the UnitName function the 'Player' value - it's worth noting that a similar function, UnitLevel, is available to get the level of a specified unit, however we don't need to use it in our script as the event argument provides an easier (and more accurate) representation of the player's level. My final implementation of the script is below. 1 2 3 4 5 6 7local CongratsEventFrame = CreateFrame ( ' Frame' ) CongratsEventFrame: RegisterEvent ( ' PLAYERLEVELUP' ) CongratsEventFrame: SetScript ( ' OnEvent', function ( self, event. ) local arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 =. Print ( ' Congratulations on reaching level '.
UnitName ( ' Player' ). You gained '. ) end )It works!Brilliant!
And that's where we will finish this basic tutorial. Hopefully you've learned something, and of course there is a lot more to WoW addon development - you can handle, you can make use of, you can - the list goes on. Hopefully with the strong foundations this tutorial should have given you it shouldn't be too difficult for you to continue learning about new features and functions and different things and continue on your path to making awesome WoW addons.
.A MUST HAVE! for anyone who uses addons, as it lets you manage them in game, without having the need to log out and in again. Addon Control Panel will help you deal with the 'Clutter' that multi-part addons and libraries introduce by displaying your addons in logical arrangements. Definitely my FAVORITE addon!!!.MUST HAVE!Probably my second favorite addon. It keeps record of all information concerning all your chars (+ guildes) in one addon (mail, items, skills, level, professions, etc).A MUST HAVE!
It gives a map for every instance/battleground in WoW.A MUST HAVE! addon for those who want to gear up doing instances, as it tells you what drops are possible and from which bosses/which instances. 'AtlasLoot Enhanced is an UI mod allowing for loot tables of bosses to be browsed whenever needed within the game.' .???????.Shows items' GearScore(Lite) in AtlasLoot.AtlasQuest is an addon for Atlas that displays a list ofquests for each dungeon, battleground and outdoor raid along withinformation and rewards for those quests.Helps with AtlasQuest.VERY useful when using the Auction House It's a puzzle game.A pretty nice addon for doing quests. Some hate it and some love it. ( I myself haven't tested it out yet:S) Kind of like QuestHelper.Makes chatting so much easier, go see a review.Chess as a WoW addon. What would you want more?.Provides rating for all raid loots with respect to it's suitability for different class/specs combinations.A addon that automatically congratulates (gratz) anyone in your guild when they earn an achievement. You can configurate the different congratulations it uses and also one for times when several guildies (guild members) earn an achievement at the same time or close to each other.A pretty nice addon that gives you the cooldown time of abilities as a timer (5,4,3,2,1 for example).A MUST HAVE!for anyone who even once needs to sell gray items to a vendor (everyone).A useful addon that keeps track of your minimal and maximal damage done by every spell/ability you use.
It can also be configurated NOT to track some specific abilites/spells/items used in quests for example.It gives information on how fast you killed a Boss in an instance/raid.A fishing addon that keeps track of the fish you catch and helps manage your fishing gear.A MUST HAVE!. for anyone who has mining/herbalism and wants to actually put them to good use.DOESN'T WORK!!! DON'T actually download this, as it might give you errors and doesn't work! Download ' instead (below).A MUST HAVE! for level 80 PVE (and PVP) players, as it gives you your, and anyone's elses gearscore in such a simple way that I prefer it to Gearscore/Playerscore (the 'full' version).It let's you easily find a location (quest/mob/meeting point) with coordinates. It shows you the way with sword.A nice addon for those that accidentally sit down on fire (in other words, it warns you in situations where you are going to lose health due to being in fire).This mod scans your guild at your first login. After this it writes changes of your guild into the chat at every login. You can see who left or joined your guild since your last time online.Guild Greet is an addon that keeps track of main and alt characters in your guild and reminds you to greet them and congratulate them on level up.
You can also store an alias for your guildies.Enables full functioning communication between 2 or more guilds.
What is this?This sub is for pretty much any type of question regarding addons for use in World of Warcraft. That includes questions from usage: 'Is there an addon that.?' , or 'How can I make this addon do.'
To addon development: 'Why isn't this code working?' , or 'How can I.?'
![]()
.Please jump in and answer anything you can - that's what will make this a valuable resource for addon users! Submission GuidelinesPreface code with four spaces to get formatted text: local function NewWorldprint('Hello World!' )endResourcesDrop a note to mods if you are interested in helping with editing this.
So you want to create your very own addon do you? Here's a few things you should know before you start. It is not going to be a quick thing. It will most likely not be a do it and forget kind of thing, unless you only plan on using it yourself. It is programming. If you don't like programming you probably won't like creating an addon.
You WILL have to debug your addon. Getting it right the first time is very rareIf you're fine with those things, then let's get started. This guide will go over quite a few things, everything from getting started and some basic Lua programming information, to more complex topics like storing data between user sessions. As a result, I will be splitting up this guide into multiple sections with a table of contents to make browsing this guide a little bit easier (I may miss things, and I plan on updating this, so feel free to let me know in a PM if I missed something)What this guide will cover, and what it won'tThis guide is intended to be for beginning to moderate addon authors/programmers. It will go over just enough to help you get started with creating and working with your addon. It won't go over (somewhat) advanced topics like graphical interfaces or profiles or the like.Table of Contents. Getting Started.
Lua Basics. The Core Addon. Making Your Addon Do Something Useful. Kingdom come deliverance cheats.
Storing Information. Working with LibrariesGetting StartedThis section will go over getting your computer set up to create your addon.So first things first:Setting up your environment:You need two main things. 1, a program in which to code your addon, and 2, a good WoW environment in which to code your addon.1. Programs:There are many programs you can use to program.
Personally I like to use Notepad as it's lightweight and easy to install You can also use regular notepad if you would rather, or even larger programs like Adobe Dreamweaver.Any of these will work, but if you use notepad you have to remember when you're saving your code to switch the save as file type to All Files from.txt so you can save your file as a.lua file.2. A Good WoW Environment:I personally like to have a completely separate WoW installation specifically for creating and debugging my addon. That way my coding doesn't affect my playing of the game, and overall I think it makes it simpler. The easiest way to do this (if you have space) is to just copy your whole WoW folder over to another folder.
(If you want to save time, I would strongly recommend you don't copy over your Interface and Cache folders. They are created the first time you start the game and it will save a TON of time in copying)2.1. Semi-Essential Addons:In order to debug and other things that make coding easier, I find it's best to have the following:1. Or your favorite chat mod2. AndBeyond that it is up to personal preference, but keep in mind that the more addons you have, the longer it will take to reload your UI and the longer it will take to debug your addonThats it for Getting Started.
Map Addons Wow
Feel free to go on if you have the time or are still interested.Lua BasicsThis section will go over some of the basics for Lua programming.Lua Programming is similar to other languages, so if you already know a few it should come fairly quickly. If not, you'll get there.Some basic things to knowPlease note that I'm only going over the extreme basics here. Is a full list and explanation for pretty much everything you need to know about Lua programming.Lua is a very flexible programming language compared to some. It's main functionality comes from five main things: Tables, Functions, Variables, if statements and loops.
Those five things are the main things you need to know, and are just what I'll go over now.Functions:A function is a bit of code which is run whenever the name of the function is called somewhere in code. There are two ways to define a function. Code: local printf = function (arguments)-do stuffendBoth ways are equally valid. Way one is defined more like you would define a function in VB whereas way two is defined more like a variable would be defined.Variables:Variables are a object that you assign a value that you can change or read at any time. You can think of it like a coin.
A coin would have two values, Heads or Tails which you can read by looking at which side is face up. You can also change the value that you read by changing which side is facing up manually.There is one thing you have to do before you can read the value of a variable, and that is setting it's default value.
You can do that by the following. Code: print(variable)the above would print the value of the variable into the main chat frame (General if you have the default set up). Note that the variable can be called whatever you like, and does not have to be a real word. Gmeta is just as acceptable. (There are some limitations, but I won't get into that here)Variables, when defined, are given a type based on the value you give it. Enclosing text in quotation marks will identify the value as a string (and it will be read as a string value, hence letting you use any string-based functions on it, such as substr.) Variables which are numbers are defined by setting the variable equal to a number (with no quotes)Variables can also be set to nil, which indicates that you no longer wish to use that variable and it will be cleared from the system memory. If you try to read the value of a nil or undefined function, it will return nil.Tables:Tables are a way to contain multiple pieces of information.
It's very helpful to use tables to organize information in a way which makes logical sense, rather than having a thousand different variables with unique names. (Note that tables are very similar to arrays in other programming languages, but there are some key differences)First, you have to declare your table. You can do that by the following. Code: if variable operator variable2 then-Do StuffendAn operator can be many things. Here's a list:. variable is equal to variable2. = variable is greater than or equal to variable2.
variable is greater than (but not equal to) variable2. = variable is not equal to variable2For a full list (as well as limitations and more complex ideas), check out the Lua Manual and the sections on OperatorsLoops:There are two types of loops, a while loop, and a for loop.A while loop executes it's code while the logic you give it returns true.
1 0 returns true always) After executing the code once, it will check whether the logic provided by you returns true or false. If it's true, it executes the code again. If it's false, it will exit the loop and go on to the next thing. Code: for key,value in pairs(table) do- Stuff to do with keys and valuesendThis is a fairly complex statement. Pairs is a function which takes an argument table and then returns an array of keys and values from that table.
By using that with the for loop, you can step through each key,value pair and do stuff with that information. (Example: Stepping through a table of stored dates and events, and finding the date that an event happened. (the event would be the value, and the date would be the key in this example))The for loop is very powerful and while somewhat complex, is very useful once you understand what it can do. (Note that a for loop is identical to a while loop that sets a default value and increases the value in it's execution)Differences Between Local and Global Tables, Functions and VariablesIn the code examples I've given up to this point, I've kept everything local, and there is a pretty good reason to doing so, but there are some limitations as a result.When WoW loads all of it's addons, it does so once at a time and executes all of the code in every addon before you even enter the game-world.
As a result, you do not know whether your addon is loaded first, or whether it is loaded last.The advantage to local Tables Functions and Variables is that you do not have to worry that your code will be overwritten by other addons, and thus it reduces the chance of incompatibility between addons. The limitation is that these local functions variables and tables can only be called by your addon, and cannot be accessed by other addons, or by the game.The advantage with global variables is that, assuming you give it a unique name, you can access it with other addons. That would enable you to print the value of your variables to your chat frame to help make debugging easier. It also enables limited communication between addons.
(And can also increase the extensibility of your addon with limited work on your part)An important point: (Thanks Treeston)In addition, by defining your functions inside a global variable unique to your addon, you can gain access to the advantages of global variables while still preventing the disadvantages of using global variables.For example, by defining a global variable WhyHelloThar at the beginning of my code, and then adding all of my functions to that global variable, I can reference those functions through other addons/code outside of my addon. Code: ## Interface: 40000## Title: WhyHelloThar## Author: Brusalk## Dependencies: Ace3## OptDeps: BugSack,!Swatter## SavedVariables: mySavedVarWhyHelloThar.luaThe first line defines which version of WoW this addon is intended for. The 40000 means that this addon was designed to be used in WoW Version 4.0, but may work for more recent versions.The Title line defines the name of the addon as it is referenced both in game and in the list of addons on the character selection menu. Make sure this is unique to your addon.The author line defines the name of the person who made the addon.The dependencies line defines the names of addons which are required in order for the addon to work properly (and without which the addon won't run at all)The OptDeps line defines the names (in a comma separated list) of addons which should be loaded before the addon in the load order.
This is a great place to include libraries.The SavedVariables line defines the name of a variable in which the values will be saved between sessions. (This is how addons remember information like configuration settings or position of frames, etc)After those lines are done, WoW will then load all of the following lines in the order in which they appear. WhyHelloThar.lua would be the first and only file to be loaded and read into memory for this addon. Any additional files in the addon directory won't be loaded.Note that WoW, when the user reloads their UI, will reload any Lua or xml files already referenced in the TOC file. It will not however reload the ToC file. Therefore for testing/debugging, you can reloadUI as long as you don't add any new files to the toc file.The Lua FileThe Lua file contains all of the lua code in which WoW will execute when the addon is loaded.
This is the file which you will be mainly changing. (And will probably contain most of your errors )Making Your Addon Do Something UsefulThis section will focus on working with Events in WoW and providing a service to the user of the addon. To do so I'll be working with an example addon which will post a Welcome to the game message.Events:In WoW, events are one way to provide functionality to the user. Looking through the list of events, and given the action which I want to do, I notice there are a few events which I could potentially use. PLAYERLOGIN. PLAYERENTERINGWORLDLooking at the description for playerlogin I see that it fires whenever a player logs into the game, or when they manually reload the UI.
PlayerEnteringWorld fires every time the loading screen finishes. As such, I'd rather use PLAYERLOGIN as it fires just when I want it to, and not more often, making my code simpler.Know that I know the event I want, I need a frame which checks for when that event is fired. WoW provides the function CreateFrame which returns a reference to the frame which was created.Here's that code. Code: EventFrame:RegisterEvent('PLAYERLOGIN')EventFrame:SetScript('OnEvent', function(self,event.)-Do Stuff when player logs inend)Now, whenever the player logs into the game, the addon will execute the function defined in the SetScript. (Note that without first registering the event, the OnEvent will never fire.)You can also register multiple events to the same frame, just keep in mind that the function will be called everytime any of the events happen.Now that I have my function being called, I can begin to actually provide functionality to the addon.
To do what I want to right now, I'm simply going to change the above code to include a message being added to the main chat frame.The Complete Code. Code: local EventFrame = CreateFrame('Frame')EventFrame:RegisterEvent('PLAYERLOGIN')EventFrame:SetScript('OnEvent', function(self,event.)ChatFrame1:AddMessage('WhyHelloThar '. UnitName('Player'))end)Thats it for this first part. The basics are quite simple:. Identify What You Want To Do. Research on some events or methods in which to do what you wish.
Do itStoring InformationThis next section will go over storing information between sessions.The Basic ConceptAs you got a hint of in the section in this guide about the ToC file, there is a variable defined there that WoW will save the value of between user sessions. WoW saves the content of this variable to a file upon logout and restores the value of this variable upon login. Thus, any information you wish to save between sessions, whether it be configuration information, or something else, should be stored to that one variable.The important thing to note here is that WoW will save tables, if the variable is a table. Therefore if we set all of the information we want into one table, we can save and use the information contained in that table the next time the user logs into the game.Application to the WhyHelloThar AddonI'm going to use this saved variable to save information on the characters the addon has already seen, and also how often the addon has seen that character. It will then output that information in the welcome message. Keep in mind that you don't have to do it the same way I do it, and in fact there are probably more efficient ways of doing itMore Specific PlansI know that I need to save two pieces of information, the names of the characters that the user logs on with, and the number of times that they log on with that character.
Because of this I'll use a table because I need to save more than one piece of information. Also, because I know that a table can be referenced associatively, or in other words I can reference a value out of the table my name, I can make the name the name of the character, and the number of times they log onto the character the value.To do this I make use of my knowledge of for loops to step through my saved variable that contains all of my information. In the following code, I step through the saved variable and check to see if the name of the character the player logged in on is already in the saved variable.
If it is, I auto increment it by 1 value to indicate that I've seen the character again. If it isn't then I add it to the table and set it's default value to 1 to indicate that I've seen it for the first time. (Setting Defaults).
Download Wow Addons
Code: local found = 0for name,number in pairs(mySavedVar) doif UnitName('Player') name thenmySavedVarname = mySavedVarname + 1found = 1endendif found 0 thenmySavedVarUnitName('Player') = 1endThe only problem with using this logic is that I have to have a table, and one of the limitations of a table is that it first has to be given a default and defined. Therefore, when the player logs into the game, I need to check whether my table exists/actually is a table. And if not, then I have to set it's defaults. Code: local EventFrame = CreateFrame('Frame')EventFrame:RegisterEvent('PLAYERLOGIN')EventFrame:SetScript('OnEvent', function(self,event.)if type(CharacterVar) = 'number' thenCharacterVar = 1ChatFrame1:AddMessage('WhyHelloThar '. I do believe this is the first time we've met. Nice to meet you!' )elseif CharacterVar 1 thenChatFrame1:AddMessage('WhyHelloThar '.
How nice to see you again. I do believe I've seen you '. ' time before.' )elseChatFrame1:AddMessage('WhyHelloThar '. How nice to see you again. I do believe I've seen you '. ' times before.'
)endCharacterVar = CharacterVar + 1endend)Note how much simpler it is to code and read the second version than the first. Determining the most efficient way of storing information often can help the coding process, so make sure you spend time planning what you are going to do before you do it. What's the saying, Measure Twice Cut Once?Working with LibrariesFirst of all, a library is a collection of code compiled into an addon that makes specific tasks simpler or more automated. There are upsides and downsides when working with libraries.Upside. Can make coding easier. Often simplifies certain processesDownside. You have to code within someone else's guidelines.
![]()
Can make identifying bugs trickier. Sometimes libraries just don't do what you want them to do. IE they aren't as configurable or they just can't do somethingOften times, the upsides outweigh the downsides, but it can extend your development time if the library just can't handle what you are trying to do with it.There are two main ways that you can work with libraries with your addon, you can either define the name of the libraries as dependencies in your ToC file, or you can include the libraries as part of your addon package and include the individual Lua files in your ToC file.
Either way works and many addon authors do it both ways. It's really personal preference.
For the purposes of this guide, I'll show you how to do it both ways, and you can decide for yourself which way you like better. I'll also try to explain some of the benefits of doing it each way.Method 1: DependencyThis method is pretty straight forward. In your ToC file simply include the name of the library that you wish to use. This does not include escape sequences that may appear in the name of the addon (such as changing the color of the name in the addon list or some such) This ensures that the library is loaded before your addon is, so that your addon can use the library in its code.Example. Code: ## Interface: 40000## Title: WhyHelloThar## Author: Brusalk## Dependencies: Ace3## SavedVariables: mySavedVar## SavedVariablesPerCharacter: CharacterVarWhyHelloThar.luaThis addon would now only load when AceGUI-3.0 is loaded. This enables the addon to make use of the AceGUI-3.0 library. (A Part of the Ace3 collection)The upside of using this method is that as the author, you don't have to worry about updating the libraries yourself and it also can help reduce the load time of your addon.The downside of using this method is that you are dependent on the user updating the libraries by themselves, which many don't bother to.
This can cause some issues when you begin using functions which are defined in a newer version of your library than the user has.Method Two: Including the Library DirectlyThis method means calling files that you include in your addon's package as if they were one of your lua files. By placing them above your lua files, they load first and you are sure that they are loaded such that you can make use of them.Example. Code: ## Interface: 40000## Title: WhyHelloThar## Author: Brusalk## OptDeps: Ace3## SavedVariables: mySavedVar## SavedVariablesPerCharacter: CharacterVar#@[email protected]#@[email protected] toc file loads the two libraries LibStub and AceGui-3.0 that are located in the libs sub-folder in the WhyHelloThar folder. Make sure that they are placed before your files that you use them in, otherwise they won't have loaded and you'll get all sorts of fun little errorsThe upside of this method is that you always know the version of the libraries that you're using and you guarantee that you won't have any errors that are resultant from that.The downside of this method is that it can make the load times of your user's addons longer, especially if you're loading multiple libraries. Part of the reason for this is that WoW won't identify that two libraries are the same if they are loaded from two different addons, which means that each addon that loads the same library ends up loading them multiple times.With the number of addons that most people use, it's usually easier to work with if you call your libraries directly from your addon's folder.I just want to make clear that it is strongly recommended that you include the libraries yourself. Most users won't install your required addons so use the OptDeps and including the library files yourself.ConclusionNow that you know more about working with libraries and with addons in general you can continue to research more on your own. Below I'll post some links to awesome websites and pages that I've found useful.
I'll also try to include a short description of what the pages go over. Ace3 is a pretty popular collection of libraries that can do a great many things. AceGui can help you make your GUI (or Graphical User Interface), or AceDB could help you organize your database (or table) of information, and those are only two of the libraries Ace3 has to offer. Check it out and check out some of the descriptions of the sub-libraries. They also come with a great support forum and are quite well documented. WoW Programming is a great wow programming site! They have a LOT of documentation on in-game events (linked earlier) and other APIs.
This is pretty much my go-to resource when I'm coding an addon. This is the resource I go to when WoW Programming is missing something (or vice-versa).
WoWpedia has a lot of documentation on the different built in WoW APIs. If you can't figure out something or are just plain stuck, you can always trying asking a question there. Who knows, they may just answer you.
Steam Workshop: Arma 3. A collection of Modern German Armed Forces mods Because there is no overall faction mod like RHS. Jan 05, 2017 I would like to present to you our first mod for ArmA 3. It is a compilation of different parts of gear, ranging from headgear over uniforms all the way to vests and radios. The goal is to give players the possibility to look ingame like a German soldier between 1995-2015 (No IdZ). Sep 09, 2015 To install the Bundeswehr Kleiderkammer (Gear of the German Armed Forces) you should use modfolders to keep it seperate from the official game content to prevent issues. With Arma 3 you can use different ways to set up your modfolders to use custom content you have downloaded. May 14, 2013 With the new possibilities Arma 3 is offering, formost RTT and PhysX, i have decided to suspend work on the Arma 2 OA version of the German Armed Forces mod and am now focusing on an Arma 3 Version. Some of the models i have made for the A2 version will be ported over (as they meet the quality i desire) others will have to be remade from scratch. Arma 3 german armed forces.
Quite a few knowledgeable people roam the MMO-Champ forums. This can be a good resource.
This could be a useful resource for more information on coding in Lua in general. If you don't think you quite understand my explanations of some of the basic Lua functions, check here. There's bound to be some that would be helpful.
– This is a great tutorial on how to use a quite common library, Ace3 (which I referenced previously) Could be worth reading if you want to learn more about utilizing libraries.Thanks For Reading!Feel free to PM me or reply if you have any questions on this guide or have any suggestions for additions/subtractions/changes to this guide.- BrusalkChange Log1. Fixed some errors and clarifications pointed out by Treeston and Adirelle (Jan 3rd, 2011)2. Fixed a typo in the global variable section pointed out by Treeston (Jan 4th, 2011)3.
Fixed an error in logic in the first example pointed out by Tatu (Jan 4th, 2011). Code: WhyHelloThar '.
How nice to see you again. I do believe I've seen you '. ' times before.Even if the player logged onto that character the first time, due to the variable already being defined.4. Global addon tables and methodsYou didn't explain that you should make a global variable equal to your addon name, then put all your functions into it. Gives the advantages (print-ability etc.) of global vars without any of the disadvantages (violating namespaces, possible clashes)5. TOC tag explaination. The OptDeps line defines the names (in a comma separated list) of addons which are recommended to be used with the addon.
(But without which the addon will still run and will be loaded)Actually, it defines addons that should be loaded before the addon in the load order. Use it for libraries (see #1).Also, why do you OptDep BugSack and!Swatter. No need to do that, due to the exclaimation mark they are already loaded before anything else (BugSack isn't, but BugGrabber is, which is where BugSack gets the errors from.Other than that, nice work.
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |