Ir para conteúdo
  • 0

DeCarvalho

Pergunta

Bem, em todo canto que procurei, o sistema de montaria 'domando', o mais novo era esse

 

 

 

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

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 = 'inoperative tin lizzard',		ID = 8,		TYPE = TYPE_ITEM,	CHANCE = 40,	FAIL_MSG = { {2, 'The key broke inside.'} }, SUCCESS_MSG = 'You wind up 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 = 'Enraged 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 = 'inoperative uniwheel',			ID = 15,	TYPE = TYPE_ITEM,	CHANCE = 40,	FAIL_MSG = { {3, 'The oil have no effect.'}, {2, 'Splosh!'} }, SUCCESS_MSG = 'The strange wheel seems to vibrate and slowly starts turning continuously.'},
	[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 = 'Wild Horse',				ID = 17,	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 = 'Lady Bug',				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 lady bug.'},
	[18447]	=	{NAME = 'Ironblight',				ID = 29,	TYPE = TYPE_MONSTER,	CHANCE = 30,	FAIL_MSG = { {1, 'The ironblight managed to run away.'}, {2, 'Oh no! The magnet lost its power!'}, {3, 'The ironblight is fighting against the magnetic force.'} }, SUCCESS_MSG = 'You tamed the ironblight.'},
	[18449] =       {NAME = 'Dragonling',                  	        ID = 31,        TYPE = TYPE_MONSTER,    CHANCE = 30,    FAIL_MSG = { {1, "The dragonling got scared and ran away."}, {3, "The dragonling is trying to nibble."} }, SUCCESS_MSG = "You tamed a dragonling."},
	[18448]	=	{NAME = 'Magma Crawler',			ID = 30,	TYPE = TYPE_MONSTER,	CHANCE = 30,	FAIL_MSG = { {1, 'The magma crawler refused to drink wine and vanishes into thin air.'}, {2, 'Argh! The magma crawler pushed you and you spilled the glow wine!'}, {3, 'The magma crawler is smelling the glow wine suspiciously.'} }, SUCCESS_MSG = 'The magma crawler will accompany you as a friend from now on.'},
	[18516]	=	{NAME = 'Modified Gnarlhound', 			ID = 32,	TYPE = TYPE_MONSTER,	CHANCE = 100,	FAIL_MSG = { }, SUCCESS_MSG = 'You now own a modified gnarlhound.'},
	[21452] =       {NAME = 'Gravedigger',      		        ID = 39,        TYPE = TYPE_MONSTER,    CHANCE = 40,    FAIL_MSG = { {1, "The gravedigger got scared and ran away."}, {3, "The gravedigger is trying to nibble."} }, SUCCESS_MSG = "You tamed the hellgrip."},
	[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.'},
	[22608]	=	{NAME = 'Shock Head', 				ID = 42,	TYPE = TYPE_MONSTER,	CHANCE = 30,	FAIL_MSG = { {1, 'The shock head ran away.'}, {3, 'The shock head is growling at you.'} }, SUCCESS_MSG = 'You tamed the shock head.'},
	[23550]	=	{NAME = 'Walker', 				ID = 43,	TYPE = TYPE_MONSTER,	CHANCE = 15,	FAIL_MSG = { {2, 'This walker is incompatible with your control unit.'}, {4, 'This walker is incompatible with your control unit.'} }, SUCCESS_MSG = 'You tamed the walker.'},
	[23880]	=	{NAME = 'Noble Lion', 				ID = 40,	TYPE = TYPE_MONSTER,	CHANCE = 30,	FAIL_MSG = { {2, 'The lion got scared and ran away.'}, {4, 'The lion is trying to nibble.'} }, SUCCESS_MSG = 'You tamed the lion.'}
}

local function doFailAction(cid, mount, pos, item, itemEx)
	local action, effect = mount.FAIL_MSG[math.random(#mount.FAIL_MSG)], CONST_ME_POFF
	if(action[1] == ACTION_RUN) then
		Creature(itemEx.uid):remove()
	elseif(action[1] == ACTION_BREAK) then
		effect = CONST_ME_BLOCKHIT
		Item(item.uid):remove(1)
	elseif(action[1] == ACTION_ALL) then
		Creature(itemEx.uid):remove()
		Item(item.uid):remove(1)
	end

	pos:sendMagicEffect(effect)
	Player(cid):say(action[2], TALKTYPE_MONSTER_SAY)
	return action
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local player = Player(cid)
	local targetMonster = Monster(itemEx.uid)
	local targetNpc = Npc(itemEx.uid)
	local targetItem = Item(itemEx.uid)
	local mount = config[item.itemid]
	if mount == nil or player:hasMount(mount.ID) then
		return false
	end

	local rand = math.random(100)
	--Monster Mount
	if targetMonster ~= nil and mount.TYPE == TYPE_MONSTER then
		if Creature(itemEx.uid):getMaster() then
			player:say('You can\'t tame a summon!', TALKTYPE_MONSTER_SAY)
			return true
		end

		if mount.NAME == targetMonster:getName() then
			if rand > mount.CHANCE then
				doFailAction(cid, mount, toPosition, item, itemEx)
				return true
			end

			player:addMount(mount.ID)
			player:say(mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)
			targetMonster:remove()

			toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
			Item(item.uid):remove(1)
			return true
		end
	--NPC Mount
	elseif targetNpc ~= nil and mount.TYPE == TYPE_NPC then
		if mount.NAME == targetNpc:getName() then
			if rand > mount.CHANCE then
				doFailAction(cid, mount, toPosition, item, itemEx)
				return true
			end

			player:addMount(mount.ID)
			player:say(mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)

			toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
			Item(item.uid):remove(1)
			return true
		end
	--Item Mount
	elseif targetItem ~= nil and mount.TYPE == TYPE_ITEM then
		if mount.NAME == targetItem:getName() then
			if rand > mount.CHANCE then
				doFailAction(cid, mount, toPosition, item, itemEx)
				return true
			end

			player:addMount(mount.ID)
			player:say(mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)

			toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
			Item(item.uid):remove(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

			player:addMount(mount.ID)
			player:say(mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)

			toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
			Item(item.uid):remove(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

			player:addMount(mount.ID)
			player:say(mount.SUCCESS_MSG, TALKTYPE_MONSTER_SAY)

			toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
			Item(item.uid):remove(1)
			return true
		end
	end
	return false
end 
        <action itemid="13941" script="other/cup of molten gold.lua"/>
        <action itemid="5907" script="other/taming.lua"/>
	<action itemid="13247" script="other/taming.lua"/>
	<action itemid="13291" script="other/taming.lua"/>
	<action itemid="13292" script="other/taming.lua"/>
	<action itemid="13293" script="other/taming.lua"/>
	<action itemid="13294" script="other/taming.lua"/>
	<action itemid="13295" script="other/taming.lua"/>
	<action itemid="13298" script="other/taming.lua"/>
	<action itemid="13305" script="other/taming.lua"/>
	<action itemid="13307" script="other/taming.lua"/>
	<action itemid="13508" script="other/taming.lua"/>
	<action itemid="13535" script="other/taming.lua"/>
	<action itemid="13536" script="other/taming.lua"/>
	<action itemid="13537" script="other/taming.lua"/>
	<action itemid="13538" script="other/taming.lua"/>
	<action itemid="13539" script="other/taming.lua"/>
	<action itemid="13938" script="other/taming.lua"/>
	<action itemid="13939" script="other/taming.lua"/>
	<action itemid="13498" script="other/taming.lua"/>
	<action itemid="15545" script="other/taming.lua"/>
	<action itemid="15546" script="other/taming.lua"/>
	<action itemid="20138" script="other/taming.lua"/>
	<action itemid="21452" script="other/taming.lua"/>
	<action itemid="22608" script="other/taming.lua"/>
	<action itemid="18449" script="other/taming.lua"/>
	<action itemid="18447" script="other/taming.lua"/>
	<action itemid="18448" script="other/taming.lua"/>
	<action itemid="18516" script="other/taming.lua"/>
	<action itemid="18516" script="other/taming.lua"/>
	<action itemid="23550" script="other/taming.lua"/>
	<action itemid="23880" script="other/taming.lua"/>

 

 

 

Eu clico no item, a cruz de seleção aparece, e eu clico no urso e recebo a seguinte mensagem

"you cannot use this object"

 

Nenhum erro aparece no console.., alguém saberia identificar o problema ou ajudar a solucionar?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

@,

 

Você pode tentar esse aqui...

 

Em data/actions/actions.xml:

<action itemid="5907" script="taming.lua" />
<action itemid="13247" script="taming.lua" />
<action itemid="13939" script="taming.lua" />
Em data/actions/scripts/taming.lua:

 

 

local TYPE_ITEM, TYPE_MONSTER, TYPE_NPC = 0, 2, 3

local config = {
	[5907] = { -- id do item
		name = 'bear', -- nome da criatura a domar
		id = 3, -- id da montaria
		type = TYPE_MONSTER, -- tipo da montaria
		chance = 20, -- chance de sucesso
		fail = {
			{run = true, text = 'The bear ran away.'}, -- mensagem se a criatura correr
			{broke = true, text = 'Oh no! The slingshot broke.'}, -- mensagem se o item quebrar
			{sound = 'GRRRRRRRRRRRR', text = 'The bear is trying to hit you with its claws.'} -- mensagem se nada acontecer
		},
		success = {sound = 'Grrrrrrr', text = 'You tamed the wild bear.'} -- mensagem se domar
	},

	[13247]	= {
		name = 'boar',
		id = 10,
		type = TYPE_MONSTER,
		chance = 40,
		fail = {
			{run = true, text = 'The boar ran away'},
			{broke = true, text = 'Oh no! The hunting horn broke!'},
			{sound = 'Grunt! Grunt!', text = 'The boar is refusing to obey the hunting horn.'}
		},
		success = {sound = 'Oink', text = 'You tamed the wild boar.'}
	},

	[13939]	= {
		name = 'wild horse',
		id = 17,
		type = TYPE_MONSTER,
		chance = 5,
		fail = {
			{run = true, text = 'With its last strength the horse the horse runs to safety.'},
			{broke = true, sound = 'Weeeheeeehee', text = 'The wild horse happily munches the sugar oat and runs on.'},
			{sound = 'Weeheheheehaaa!!', text = 'Weeeheeeehee.'}
		},
		success = {sound = '*snort*', text = 'The horse eats the sugar oat and accepts you as its new master.'}
	}
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local mount = config[item.itemid]
	if not mount then
		return false
	end

	local targetName = target:getName():lower()
	if mount.type ~= target.type
			or (mount.lookType and mount.lookType ~= target:getOutfit().lookType)
			or (mount.name and mount.name ~= targetName) then
		return false
	end

	if player:hasMount(mount.id) then
		player:say('You already tamed a ' .. (mount.mountName or targetName) .. '.', TALKTYPE_MONSTER_SAY)
		return true
	end

	if target.type == TYPE_MONSTER then
		if target:getMaster() then
			return false
		end
	end

	if math.random(100) > mount.chance then
		local action = mount.fail[math.random(#mount.fail)]
		if action.run then
			target:remove()
		elseif action.broke then
			item:remove(1)
		elseif action.destroyObject then
			addEvent(Game.createItem, 60 * 60 * 1000, target.itemid, 1, toPosition)
			target:remove()
		elseif action.removeTransformation then
			target:removeCondition(CONDITION_OUTFIT)
		end

		if action.sound then
			player:say(action.sound, TALKTYPE_MONSTER_SAY, false, 0, toPosition)
		end
		return true
	end

	player:addMount(mount.id)
	doCreatureSayWithRadius(player, mount.success.text, TALKTYPE_MONSTER_SAY, 2, 2)
	player:say(mount.success.sound, TALKTYPE_MONSTER_SAY, false, 0, toPosition)

	target:remove()
	item:remove(1)
	return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0

Ola, boa tarde, :/ não posso dar mais rep hoje .. enfim.. Testei com esse lua que passou mas eu recebo a seguinte msg de erro no console ao usar o item no mostro.

 

Lua Script Error: [Action Interface]
data/actions/scripts/other/taming.lua:onUse
data/actions/scripts/other/taming.lua:81: attempt to call global 'doCreatureSayWithRadius' (a nil value)
stack traceback:
        [C]: in function 'doCreatureSayWithRadius'
        data/actions/scripts/other/taming.lua:81: in function <data/actions/scripts/other/taming.lua:44>

procurando na internet o uso de doCreatureSayWithRadius eu vi que não atrapalharia se eu tirasse o WithRadius, pelo menos não vi como isso poderia atrapalhar.. ao remover ele cai em outro erro.. procurei mas não consegui achar uma maneira de fazer funcionar..

Lua Script Error: [Action Interface]
data/actions/scripts/other/taming.lua:onUse
data/actions/scripts/other/taming.lua:88: attempt to call method 'addAchievement' (a nil value)
stack traceback:
        [C]: in function 'addAchievement'
        data/actions/scripts/other/taming.lua:88: in function <data/actions/scripts/other/taming.lua
:44>

então para testar eu fiz -- player:addAchievement('Natural Born Cowboy') e funcionou normalmente.. diminuí a chance para testar se haveria falha..

 

funcionou, mas eu gostaria do achievement, então como fazer com esse addAchievement?

Editado por DkAngel
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...