Action Addon System

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
Hello,
here is a full working addon system (including all addons),
I tested the whole script + 80% of the config, so it should work without any problem, :thumbup:.

Version:
TFS 0.3.5
TFS 0.3.5pl1

Credits:
- Script:
100% by me
- Big thank to josejunior23,
because the addons based on his Theard: Realease addon NPC

Screenshot:

(If you need 0 gold coins, it won't tell you "You need 0 gold coins and...", because I updated the script)

Instruction:


[ActionID]: ActionID of item on the map.
Name: Name of the addon.
Addon Type: Type of addon, addon 1 or addon 2 of outfit.
Outfit: The script add these outfit the addon ({female,male}).
Cost: Cost of the addon.
Items: Items you have to pay for the addon, for more different items: "{{5878,100},{5890,100}}", etc.

Script:
- data/actions/actions.xml
Lua:
	<action actionid="4001-4042" event="script" value="addons.lua"/>
- data/actions/scripts/addons.lua
Lua:
--[[
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	Addon System by Shawak (Maxi)
	Version v1.0
	~~~ Rememeber ~~~~~~~~~~~~~~~
	This script set storagevalues
	to save the addons.
	Storage = 14000 + actionid of
	item.
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
]]--
	
local config = {

	[4001] = {
		name = "First Citizen Addon", -- name
		addon_type = 1,               -- addon
		outfit = {136,128},           -- female / male
		cost = 0,                     -- cost
		items = {{5878,100}},         -- items
	},
	[4002] = {
		name = "Second Citizen Addon",
		addon_type = 2,
		outfit = {136,128},
		cost = 0,
		items = {{5890,100},{5902,50},{2480,1}},
	},
	[4003] = {
		name = "First Hunter Addon",
		addon_type = 1,
		outfit = {137,129},
		cost = 0,
		items = {{5947,1},{5876,100},{5948,100},{5889,1},{5887,1},{5888,1},{5891,5}},
	},
	[4004] = {
		name = "Second Hunter Addon",
		addon_type = 2,
		outfit = {137,129},
		cost = 0,
		items = {{5875,1}},
	},
	[4005] = {
		name = "First Mage Addon",
		addon_type = 1,
		outfit = {138,130},
		cost = 0,
		items = {{5958,1}},
	},
	[4006] = {
		name = "Second Mage Addon",
		addon_type = 2,
		outfit = {138,130},
		cost = 0,
		items = {{5903,1}},
	},
	[4007] = {
		name = "First Knight Addon",
		addon_type = 1,
		outfit = {139,131},
		cost = 0,
		items = {{5880,100}},
	},
	[4008] = {
		name = "Second Knight Addon",
		addon_type = 2,
		outfit = {139,131},
		cost = 0,
		items = {{5893,100},{5924,1},{5885,1},{5887,1}},
	},
	[4009] = {
		name = "First Nobleman Addon",
		addon_type = 1,
		outfit = {140,132},
		cost = 150000,
		items = {},
	},
	[4010] = {
		name = "Second Nobleman Addon",
		addon_type = 2,
		outfit = {140,132},
		cost = 150000,
		items = {},
	},

	[4011] = {
		name = "First Summoner Addon",
		addon_type = 1,
		outfit = {141,133},
		cost = 0,
		items = {{5958,1}},
	},
	[4012] = {
		name = "Second Summoner Addon",
		addon_type = 2,
		outfit = {141,133},
		cost = 0,
		items = {{5894,70},{5911,20},{5883,40},{5905,30},{5904,15},{5882,40},{5881,60},{5886,10},{5922,35}},
	},
	[4013] = {
		name = "First Warrior Addon",
		addon_type = 1,
		outfit = {142,134},
		cost = 0,
		items = {{5899,100},{5925,100},{5884,1},{5919,1}},
	},
	[4014] = {
		name = "Second Warrior Addon",
		addon_type = 2,
		outfit = {142,134},
		cost = 0,
		items = {{5887,1},{5880,100}},
	},
	[4015] = {
		name = "First Barbarian Addon",
		addon_type = 1,
		outfit = {147,143},
		cost = 0,
		items = {{5885,1},{5884,1},{5911,50},{5910,50},{5886,10}},
	},
	[4016] = {
		name = "Second Barbarian Addon",
		addon_type = 2,
		outfit = {147,143},
		cost = 0,
		items = {{5892,1},{5880,100},{5893,50},{5876,50}},
	},
	[4017] = {
		name = "First Druid Addon",
		addon_type = 1,
		outfit = {148,144},
		cost = 0,
		items = {{5897,50},{5896,50}},
	},
	[4018] = {
		name = "Second Druid Addon",
		addon_type = 2,
		outfit = {148,144},
		cost = 0,
		items = {{5940,1},{5938,1},{5937,1},{5942,1},{5906,100}},
	},
	[4019] = {
		name = "First Wizard Addon",
		addon_type = 1,
		outfit = {149,145},
		cost = 0,
		items = {{2488,1},{2123,1},{2492,1},{2536,1}},
	},
	[4020] = {
		name = "Second Wizard Addon",
		addon_type = 2,
		outfit = {149,145},
		cost = 0,
		items = {{5922,50},},
	},
	[4021] = {
		name = "First Oriental Addon",
		addon_type = 1,
		outfit = {150,146},
		cost = 0,
		items = {{5945,1}},
	},
	[4022] = {
		name = "Second Oriental Addon",
		addon_type = 2,
		outfit = {150,146},
		cost = 0,
		items = {{5883,100},{5895,100},{5891,2},{5912,100}},
	},
	[4023] = {
		name = "First Pirate Addon",
		addon_type = 1,
		outfit = {155,151},
		cost = 0,
		items = {{6126,100},{6097,100},{6098,100}},
	},
	[4024] = {
		name = "Second Pirate Addon",
		addon_type = 2,
		outfit = {155,151},
		cost = 0,
		items = {{2385,1},{6098,1},{6095,1},{6096,1}},
	},
	[4025] = {
		name = "First Assassin Addon",
		addon_type = 1,
		outfit = {156,152},
		cost = 0,
		items = {{5898,30},{5882,10},{5881,30},{5895,20},{5905,20},{5906,10},{5885,1}},
	},
	[4026] = {
		name = "Second Assassin Addon",
		addon_type = 2,
		outfit = {156,152},
		cost = 0,
		items = {{5909,50},{5910,50},{5911,50},{5912,50},{5913,50},{5914,50},{5886,10}},
	},
	[4027] = {
		name = "First Beggar Addon",
		addon_type = 1,
		outfit = {157,153},
		cost = 20000,
		items = {{5883,100}},
	},
	[4028] = {
		name = "Second Beggar Addon",
		addon_type = 2,
		outfit = {157,153},
		cost = 0,
		items = {{6107,1}},
	},
	[4029] = {
		name = "First Shaman Addon",
		addon_type = 1,
		outfit = {158,154},
		cost = 0,
		items = {{3955,5},{5015,1}},
	},
	[4030] = {
		name = "Second Shaman Addon",
		addon_type = 2,
		outfit = {158,154},
		cost = 0,
		items = {{3966,5},{3967,5}},
	},
	[4031] = {
		name = "First Norseman Addon",
		addon_type = 1,
		outfit = {252,251},
		cost = 0,
		items = {{7290,5}},
	},
	[4032] = {
		name = "Second Norseman Addon",
		addon_type = 2,
		outfit = {252,251},
		cost = 0,
		items = {{7290,10}},
	},
	[4033] = {
		name = "First Nightmare Addon",
		addon_type = 1,
		outfit = {269,268},
		cost = 0,
		items = {{6500,500}},
	},
	[4034] = {
		name = "Second Nightmare Addon",
		addon_type = 2,
		outfit = {269,268},
		cost = 0,
		items = {{6500,1500}},
	},
	[4035] = {
		name = "First Jester Addon",
		addon_type = 1,
		outfit = {270,273},
		cost = 0,
		items = {{5879,1},{5878,4}},
	},
	[4036] = {
		name = "Second Jester Addon",
		addon_type = 2,
		outfit = {270,273},
		cost = 0,
		items = {{5909,5}},
	},
	[4037] = {
		name = "First Brotherhood Addon",
		addon_type = 1,
		outfit = {279,278},
		cost = 0,
		items = {{6500,500}},
	},
	[4038] = {
		name = "Second Brotherhood Addon",
		addon_type = 2,
		outfit = {279,278},
		cost = 0,
		items = {{6500,1500}},
	},
	[4039] = {
		name = "First Demonhunter Addon",
		addon_type = 1,
		outfit = {288,289},
		cost = 150000,
		items = {},
	},
	[4040] = {
		name = "Second Demonhunter Addon",
		addon_type = 2,
		outfit = {288,289},
		cost = 150000,
		items = {},
	},
	[4041] = {
		name = "First Yalaharian Addon",
		addon_type = 1,
		outfit = {324,325},
		cost = 150000,
		items = {},
	},
	[4042] = {
		name = "Second Yalaharian Addon",
		addon_type = 2,
		outfit = {324,325},
		cost = 150000,
		items = {},
	},

} -------- config end -------
local storage = 14000
function onUse(cid, item, fromPosition, itemEx, toPosition)
        local addon, removeItems, removeMoney = config[item.actionid], 0, 0
         if getPlayerStorageValue(cid, storage + item.actionid) ~= 1 then
                if getPlayerMoney(cid) >= addon.cost then
                        removeMoney = 1
                end
                if #addon.items > 0 then
                        for i = 1, #addon.items do
                                if getPlayerItemCount(cid, addon.items[i][1]) >= addon.items[i][2] then
                                        removeItems = removeItems+1
                                end
                        end
                end
                if removeMoney == 1 and removeItems == #addon.items then
                        for i = 1, #addon.items do
                                doPlayerRemoveItem(cid, addon.items[i][1], addon.items[i][2])
                        end
                        doPlayerRemoveMoney(cid, addon.cost)
                        doPlayerAddOutfit(cid, addon.outfit[1], addon.addon_type)
                        doPlayerAddOutfit(cid, addon.outfit[2], addon.addon_type)
                        setPlayerStorageValue(cid, storage + item.actionid, 1)
                        doPlayerSendTextMessage(cid, 21, "Now you can use the "..addon.name..".")
                else
                        if addon.cost ~= 0 then
                                msg = "You need "..addon.cost.." gold coins and "
                        else
                                msg = "You need "
                        end
                        if #addon.items > 0 then
                                for i = 1, #addon.items do
                                        msg = msg..""..addon.items[i][2].."x "..getItemNameById(addon.items[i][1]).." "
                                end
                        end
                        doPlayerSendTextMessage(cid, 21, msg.."for the "..addon.name..".")
                end
        else
                doPlayerSendTextMessage(cid, 21, "You already have the "..addon.name..".")
        end
        return TRUE
end
I hope you like it, because it was hard work for me, ^_^.
Also please report bugs on this theard, and this only of you are using one of the server, that i listened on.
And please don't forget to rep++ me, if you like it. ;).

Regards,
Shawak
 
Last edited:

ScorpiOOn93

etherno.net
Joined
Jun 19, 2008
Messages
662
Best answers
0
Reaction score
0
Location
CookieLand :DDD
Oo Nice :)
But this "You need 0 gold coins" looks funny ;p
you can do something like if cost = 0 then don't show it :p
Anyway cool script.
Rep++

#Edit
"You must spread some reputation points before giving it to shawak again" :/
 

QuaS

Cykotitan Pwned =/
Joined
Sep 11, 2008
Messages
833
Best answers
0
Reaction score
26
Location
Poland/ Wroclaw
fuckin' great relase but i have 1 thing to you to change:

Lua:
                        doPlayerAddOutfit(cid, addon.outfit[getPlayerSex(cid)+1], addon.addon_type)
Add player both outfits (to male i female), because player can change gender...

and as @up said:

Lua:
if cost == 0 then there is no message about cost. end
 
OP
Shawak

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
fuckin' great relase but i have 1 thing to you to change:

Lua:
                        doPlayerAddOutfit(cid, addon.outfit[getPlayerSex(cid)+1], addon.addon_type)
Add player both outfits (to male i female), because player can change gender...

and as @up said:

Lua:
if cost == 0 then there is no message about cost. end
Sorry, forgott about changing gender.

And this with the money, ;), i will change it.
 
Last edited:
OP
Shawak

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
Update,
Changes:
Code:
- It will not longer say that you need 0 gold coins if you have in the config "cost = 0,".
- Addons for both (male and female), important if you change your gender.
Regards,
Shawak
 
Last edited:
OP
Shawak

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
Bring
Up
My
Post
 

EvulMastah

๏̯͡๏﴿
Premium User
Joined
Aug 19, 2007
Messages
4,833
Best answers
0
Reaction score
184
Small tip.
You dont have to quote ("..) variables in lua if they are first, eg:
Lua:
doPlayerSendTextMessage(cid, 21, ""..msg.."for the "..addon.name..".")
can be replaced with:
Lua:
doPlayerSendTextMessage(cid, 21, msg.."for the "..addon.name..".")
Same goes for this:
Lua:
msg = ""..msg..""..addon.items[i][2].."x "..getItemNameById(addon.items[i][1]).." "
Also if the variable is last in the string, eg:
Lua:
    local storage = getPlayerStorageValue(cid, 123)
    doPlayerSendTextMessage(cid, 22, "Your storage number is: "..storage)
:thumbup:
 
OP
Shawak

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
Thanks Emma, but i don't use it, because not so good scripters can't edit it then.

PS: Rep++, (for helping) :thumbup:.
 
OP
Shawak

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
Bump!, Bump! and ones again: BUMP!.

Needed so long for the config.
Please more comments? :(
 

chojrak

Banned User
Joined
Oct 25, 2008
Messages
5,832
Best answers
2
Reaction score
158
Not good scripters should go away, and learn more about. You should optimize as emma said ;)
 

Slain

TrueHavoc.com
Joined
Nov 27, 2008
Messages
2,241
Best answers
0
Reaction score
29
Not good scripters should go away, and learn more about. You should optimize as emma said ;)
why so the otland community shrinks into a small group of scripters? :huh:
 

JDB

OtLand Veteran
Joined
Jun 1, 2009
Messages
4,145
Best answers
2
Reaction score
109
Some noob stole my addon item on my server...
Addons plx :huh:
 
OP
Shawak

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
No Problem, it's good to read comments, ^_^.
 

Hermes

dziwki kola gramy w lola
Joined
Nov 17, 2007
Messages
1,867
Best answers
0
Reaction score
12
Location
Poland
Why are you using "cost = 0" in every array with addon? Just extend your script with:

Code:
if(addon.cost == nil) then
     addon.cost = 0
end
 
OP
Shawak

Shawak

Intermediate OT User
Joined
Sep 11, 2008
Messages
1,976
Best answers
2
Reaction score
101
Location
Germany
1. addon.cost = check if player have money.
2. addon.cost = check if he should give the player the addon.
 

_Frank

New Member
Joined
Jun 17, 2007
Messages
10
Best answers
0
Reaction score
0
Location
Sweden
So do I need 40 different of levers or just 1?
 
Top