• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Custom actions don't work?

skully

New Member
Joined
Jan 15, 2012
Messages
50
Reaction score
0
XML:
   <action itemid="2297" event="script" value="other/manarune.lua"/>
    <action actionid="4001-4042" event="script" value="other/addons.lua"/>

Manarune & addons don't work.
Scripts;

Manarune
XML:
local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, 1000) -- time in seconds x1000
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
 
local manamax = getPlayerMaxMana(cid)
local min = 1 -- this means 3% minimum healing
local max = 1.5 -- this means 5% maximum healing
local mana_add = math.random((manamax * (min/100)), (manamax * (max/100)))  
 
	if(hasCondition(cid, CONDITION_EXHAUST)) then
		return doPlayerSendCancel(cid, "You are exhausted")
	end
    	doPlayerAddMana(cid, mana_add)
	doAddCondition(cid, exhaust)
    	return true
end


Addons.lua;

XML:
--[[
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	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'm not getting any error in the console, so I have the feeling the actions are getting ignored or something?
I have setup them correctly :/
TFS 0.2 (8.6)
 
Already posted it on the script thread, you had to use the other version of the script.
Although it should give errors about the hasCondition and the CONDITION_EXHAUST

Lua:
local exhaust = createConditionObject(CONDITION_EXHAUST_HEAL)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, 1000) -- time in seconds x1000
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
 
local manamax = getPlayerMaxMana(cid)
local min = 1 -- this means 3% minimum healing
local max = 1.5 -- this means 5% maximum healing
local mana_add = math.random((manamax * (min/100)), (manamax * (max/100)))
 
	if(getCreatureCondition(cid, CONDITION_EXHAUST_HEAL) == TRUE) then
        	doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) 
		return doPlayerSendCancel(cid, "You are exhausted")
	end
	doPlayerAddMana(cid, mana_add)
        doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) 
	doAddCondition(cid, exhaust)
	return true
end

Hard to say anything about the other script without errors.
Also, check if your actions.xml if actually using event and value and not just this.
XML:
<action itemid="2297" script="other/manarune.lua"/>
 
Last edited:
Fixed it,
another question;
I get an error saying that DoPlayerSendTextMessage can't find the player.
Can I fix this?
 
I mean, in which script do you get this error and what is the full error? so script and line etc.
If you are trying to use the 9.1 animated text for your 8.6 server that isn't possible.
You could use:
Lua:
doCreatureSay(cid, ""..mana_add.."", TALKTYPE_ORANGE_1)
 
Okay, works now, but how can I make that green text that pops up and goes up slowly?
Also it rounds up e.g. +245.9. +201.8 etc.
 
Both animated texts don't exist in that server, so you have to use that one, which is only in orange and doesn't go up slowly like the animated text.

To round numbers you can do it like this:
Lua:
doCreatureSay(cid, "+"..round(mana_add, 0).."", TALKTYPE_ORANGE_1)

And add this function above the function onUse:
Lua:
function round(num, idp)
  local mult = 10^(idp or 0)
  return math.floor(num * mult + 0.5) / mult
end
 
Last edited:
Both animated texts don't exist in that server, so you have to use that one, which is only in orange and doesn't go up slowly like the animated text.

To round numbers you can do it like this:
Lua:
doCreatureSay(cid, "+"..round(mana_add, 0).."", TALKTYPE_ORANGE_1)

And add this function above the function onUse:
Lua:
function round(num, idp)
  local mult = 10^(idp or 0)
  return math.floor(num * mult + 0.5) / mult
end

You can do animated text with numbers, it requires a source edit though.
 
Back
Top Bottom