• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Help with mount system =(

belier140

New Member
Joined
Apr 7, 2010
Messages
36
Reaction score
2
Hello everyone, i need some help with the mount system cause when i try to use the items i always get the message "You cannot use this object."
here are my codes
Code:
--[[
	The 'CHANCE' values that I'm not sure about have been defaulted to 40%
	TODO: Get real FAIL_MSG and SUCCESS_MSG for some of the tammings

	Info:
		[xxxxx] 	 = tamming itemid
		NAME 		 = name of the creature tamming item is used on
		ID 			 = mount id for storage (check out data/XML/mounts.xml)
		TYPE 		 = type of creature taming item is used on (TYPE_MONSTER/TYPE_NPC/TYPE_ACTION/TYPE_UNIQUE)
		CHANCE 		 = X/100%
		FAIL_MSG 	 = { {action (ACTION_RUN/ACTION_BREAK/ACTION_NONE/ACTION_ALL), "message"} }
		SUCCESS_MSG  = "message"
]]

local ACTION_RUN, ACTION_BREAK, ACTION_NONE, ACTION_ALL = 1, 2, 3, 4
local TYPE_MONSTER, TYPE_NPC, TYPE_ACTION, TYPE_UNIQUE = 1, 2, 3, 4

local config = {
	[5907] = 	{NAME = 'Bear', 				ID = 3, 	TYPE = TYPE_MONSTER, 	CHANCE = 20, 	FAIL_MSG = { {1, "The bear ran away."}, {2, "Oh no! The slingshot broke."}, {3, "The bear is trying to hit you with its claws."} }, SUCCESS_MSG = "You have tamed the bear."},
	[13295] = 	{NAME = 'Black Sheep', 			ID = 4, 	TYPE = TYPE_MONSTER, 	CHANCE = 25, 	FAIL_MSG = { {1, "The black sheep ran away."}, {2, "Oh no! The reins were torn."}, {3, "The black sheep is trying to run away."} }, SUCCESS_MSG = "You have tamed the sheep."},
	[13293] = 	{NAME = 'Midnight Panther', 	ID = 5, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The panther has escaped."}, {2, "The whip broke."} }, SUCCESS_MSG = "You have tamed the panther."},
	[13298] = 	{NAME = 'Terror Bird', 			ID = 2, 	TYPE = TYPE_MONSTER, 	CHANCE = 15, 	FAIL_MSG = { {1, "The bird ran away."}, {3, "The terror bird is pecking you."} }, SUCCESS_MSG = "You have tamed the bird."},
	[13247] = 	{NAME = 'Boar', 				ID = 10, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The boar has run away"}, {3, "The boar attacks you."} }, SUCCESS_MSG = "You have tamed the boar."},
	[13305] = 	{NAME = 'Crustacea Gigantica', 	ID = 7, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The crustacea has run away."}, {2, "The crustacea ate the shrimp."} }, SUCCESS_MSG = "You have tamed the crustacea."},
	[13291] = 	{NAME = 'Undead Cavebear', 		ID = 12, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The undead bear has run away."} }, SUCCESS_MSG = "You have tamed the skeleton."},
	[13307] = 	{NAME = 'Wailing Widow', 		ID = 1, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The widow has run away."}, {2, "The widow has eaten the sweet bait."} }, SUCCESS_MSG = "You have tamed the widow."},
	[13292] = 	{NAME = 'Tin Lizzard', 			ID = 8, 	TYPE = TYPE_NPC, 		CHANCE = 40, 	FAIL_MSG = { {2, "The key broke inside."} }, SUCCESS_MSG = "You have started the Tin Lizzard!"},
	[13294] = 	{NAME = 'Draptor', 				ID = 6, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The draptor has run away."}, {3, "The draptor has fled."} }, SUCCESS_MSG = "You have tamed the draptor."},
	[13536] = 	{NAME = 'Crystal Wolf', 		ID = 16, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The wolf has run away."} }, SUCCESS_MSG = "You have tamed the wolf."},
	[13539] = 	{NAME = 'White Deer', 			ID = 18, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {2, "The cone broke."}, {3, "The deer has fled in fear."} }, SUCCESS_MSG = "You have tamed the deer."},
	[13538] = 	{NAME = 'Panda', 				ID = 19, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {4, "Panda ate the leaves and ran away."} }, SUCCESS_MSG = "You have tamed the panda."},
	[13535] = 	{NAME = 'Dromedary', 			ID = 20, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "Dromedary has run away."} }, SUCCESS_MSG = "You have tamed the dromedary."},
	[13498] = 	{NAME = 'Sandstone Scorpion', 	ID = 21, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The scorpion has vanished."}, {2, "Scorpion broken the sceptre."} }, SUCCESS_MSG = "You have tamed the scorpion"},
	[13537] = 	{NAME = 'Donkey', 				ID = 13, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The witch has escaped!"} }, SUCCESS_MSG = "You have tamed the mule."},
	[13938] = 	{NAME = 'Uniwheel', 			ID = 15, 	TYPE = TYPE_NPC, 		CHANCE = 40, 	FAIL_MSG = { {2, "The oil is having no effect."} }, SUCCESS_MSG = "You have found an Uniwheel."},
	[13508] = 	{NAME = 'Slug', 				ID = 14, 	TYPE = TYPE_MONSTER, 	CHANCE = 40, 	FAIL_MSG = { {1, "The slug has run away."}, {3, "The drug had no effect."} }, SUCCESS_MSG = "You have tamed the slug."},
	[13939] = 	{NAME = 'War Horse', 			ID = 23, 	TYPE = TYPE_MONSTER, 	CHANCE = 15, 	FAIL_MSG = { {1, "The horse runs away."}, {2, "The horse ate the oats."} }, SUCCESS_MSG = "You have tamed the horse."},
	[15545] = 	{NAME = 'Manta Ray', 			ID = 28, 	TYPE = TYPE_MONSTER, 	CHANCE = 30, 	FAIL_MSG = { {1, "The manta ray fled."}, {3, "The manta ray is trying to escape."} }, SUCCESS_MSG = "You have tamed the manta ray."},
	[15546] = 	{NAME = 'Ladybug', 				ID = 27, 	TYPE = TYPE_MONSTER, 	CHANCE = 30, 	FAIL_MSG = { {1, "The ladybug got scared and ran away."}, {3, "The ladybug is trying to nibble."} }, SUCCESS_MSG = "You tame a ladybug."},
	[20138] = 	{NAME = 'Water Buffalo', 		ID = 35, 	TYPE = TYPE_MONSTER, 	CHANCE = 30, 	FAIL_MSG = { {1, "The water buffalo got scared and ran away."}, {3, "The water buffalo is trying to nibble."} }, SUCCESS_MSG = "You tamed a water buffalo."}
}

local function doFailAction(cid, mount, pos, item, itemEx)
	local action, effect = mount.FAIL_MSG[math.random(1, table.maxn(mount.FAIL_MSG))], CONST_ME_POFF
	if(action[1] == ACTION_RUN) then
		doRemoveCreature(itemEx.uid)
	elseif(action[1] == ACTION_BREAK) then
		effect = CONST_ME_BLOCKHIT
		doRemoveItem(item.uid, 1)
	elseif(action[1] == ACTION_ALL) then
		doRemoveCreature(itemEx.uid)
		doRemoveItem(item.uid, 1)
	end

	doSendMagicEffect(pos, effect)
	doCreatureSay(cid, action[2], TALKTYPE_MONSTER_SAY)
	return action
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local mount = config[item.itemid]
	if(mount == nil or getPlayerMount(cid, mount.ID)) then
		return false
	end

	local rand = math.random(1, 100)
	--Monster Mount
	if(isMonster(itemEx.uid) and not isSummon(itemEx.uid) and mount.TYPE == TYPE_MONSTER) then
		if(mount.NAME == getCreatureName(itemEx.uid)) then
			if(rand > mount.CHANCE) then
				doFailAction(cid, mount, toPosition, item, itemEx)
				return true
			end

			doPlayerAddMount(cid, mount.ID)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)

			doCreatureSay(cid, mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)
			doRemoveCreature(itemEx.uid)

			doSendMagicEffect(toPosition, CONST_ME_POFF)
			doRemoveItem(item.uid, 1)
			return true
		end
	--NPC Mount
	elseif(isNpc(itemEx.uid) and mount.TYPE == TYPE_NPC) then
		if(mount.NAME == getCreatureName(itemEx.uid)) then
			if(rand > mount.CHANCE) then
				doFailAction(cid, mount, toPosition, item, itemEx)
				return true
			end

			doPlayerAddMount(cid, mount.ID)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)

			doCreatureSay(cid, mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)

			doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN)
			doRemoveItem(item.uid, 1)
			return true
		end
	--Action Mount
	elseif(itemEx.actionid > 0 and mount.TYPE == TYPE_ACTION) then
		if(mount.NAME == itemEx.actionid) then
			if(rand > mount.CHANCE) then
				doFailAction(cid, mount, toPosition, item, itemEx)
				return true
			end

			doPlayerAddMount(cid, mount.ID)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)

			doCreatureSay(cid, mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)
			doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN)

			doRemoveItem(item.uid, 1)
			return true
		end
	--Unique Mount
	elseif(itemEx.uid <= 65535 and mount.TYPE == TYPE_UNIQUE) then
		if(mount.NAME == itemEx.uid) then
			if(rand > mount.CHANCE) then
				doFailAction(cid, mount, toPosition, item, itemEx)
				return true
			end

			doPlayerAddMount(cid, mount.ID)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)

			doCreatureSay(cid, mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)
			doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN)

			doRemoveItem(item.uid, 1)
			return true
		end
	end

	return false
end
and in actions.xml
Code:
<action itemid="5907;13247;13291-13295;13298;13305;13307;13498;13508;13535-13539;13938-13939;15545-15546" event="script" value="other/taming.lua"/>
Thnx in advance~

- - - Updated - - -

I found out that a script of full demon oak quest is messing with the mounts =/ can some1 help me?
The script im using is this one:
http://otland.net/f81/working-demon-oak-quest-40244/
If i run the server without the lib file i can use the mounts again
 
Last edited:
Hi belier140,

Not sure if this will work or not but try replacing this line:
LUA:
local TYPE_MONSTER, TYPE_NPC, TYPE_ACTION, TYPE_UNIQUE = 1, 2, 3, 4

With:
LUA:
local TYPE_MONSTER, TYPE_NPC, TYPE_ACTION, TYPE_UNIQUE = 2, 3, 5, 6

Hope that helps.

Cheers,
Yodot.
 
Using 0.3.6, that's what I get in the server console when following everything you did.

Code:
[02/08/2013 09:09:21] [Error - Action Interface] 
[02/08/2013 09:09:21] data/actions/scripts/other/taming.lua:onUse
[02/08/2013 09:09:21] Description: 
[02/08/2013 09:09:21] data/actions/scripts/other/taming.lua:62: attempt to call global 'getPlayerMount' (a nil value)
[02/08/2013 09:09:21] stack traceback:
[02/08/2013 09:09:21] 	data/actions/scripts/other/taming.lua:62: in function <data/actions/scripts/other/taming.lua:60>
[02/08/2013 09:09:57] Dameon has logged out.
 
Last edited:
Back
Top