Esta ai... adaptei o script postado para funcionar como Music Box, doma todos os que estão configurados.
Se precisar de ajuda para configurar alguma outra mount ( O script suporta domar itens, monstros e até NPCs... ) só pedir.
No arquivo actions.xml adicione a seguinte tag:
<action itemid="18511" script="musicbox.lua"/>
Crie o arquivo musicbox.lua em otserver/data/actions/scripts e coloque nele:
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 = {
["Gnarlhound"] = {NAME = 'Gnarlhound', ID = 32, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The gnarlhound ran away."}, {2, "Oh no! The golem Wrench broke."}, {3, "The gnarlhound has fled."} }, SUCCESS_MSG = "You have tamed the gnarlhound."},
["Magma Crawler"] = {NAME = 'Magma Crawler', ID = 30, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The magma crawler ran away."}, {2, "Oh no! The glow wine broke."}, {3, "The magma crawler has fled."} }, SUCCESS_MSG = "You have tamed the magma crawler."},
["Dragonling"] = {NAME = 'Dragonling', ID = 31, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The dragonling ran away."}, {2, "Oh no! The decorative ribbon broke."}, {3, "The dragonling has fled."} }, SUCCESS_MSG = "You have tamed the dragonling."},
["Ironblight"] = {NAME = 'Ironblight', ID = 29, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The ironblight ran away."}, {2, "Oh no! iron loadstone broke."}, {3, "The ironblight has fled."} }, SUCCESS_MSG = "You have tamed the ironblight."},
["Shock Head"] = {NAME = 'Shock Head', ID = 42, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The shock head ran away."}, {2, "Oh no! The nightmare horn broke."}, {3, "The shock head has fled."} }, SUCCESS_MSG = "You have tamed the shock head."},
["Bear"] = {NAME = 'Bear', ID = 3, TYPE = TYPE_MONSTER, CHANCE = 100, 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."},
["Black Sheep"] = {NAME = 'Black Sheep', ID = 4, TYPE = TYPE_MONSTER, CHANCE = 100, 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."},
["Midnight Panther"] = {NAME = 'Midnight Panther', ID = 5, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The panther has escaped."}, {2, "The whip broke."} }, SUCCESS_MSG = "You have tamed the panther."},
["Terror Bird"] = {NAME = 'Terror Bird', ID = 2, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The bird ran away."}, {3, "The terror bird is pecking you."} }, SUCCESS_MSG = "You have tamed the bird."},
["Boar"] = {NAME = 'Boar', ID = 10, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The boar has run away"}, {3, "The boar attacks you."} }, SUCCESS_MSG = "You have tamed the boar."},
["Crustacea Gigantica"] = {NAME = 'Crustacea Gigantica', ID = 7, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The crustacea has run away."}, {2, "The crustacea ate the shrimp."} }, SUCCESS_MSG = "You have tamed the crustacea."},
["Undead Cavebear"] = {NAME = 'Undead Cavebear', ID = 12, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The undead bear has run away."} }, SUCCESS_MSG = "You have tamed the skeleton."},
["Wailing Widow"] = {NAME = 'Wailing Widow', ID = 1, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The widow has run away."}, {2, "The widow has eaten the sweet bait."} }, SUCCESS_MSG = "You have tamed the widow."},
["inoperative tin lizzard"] = {NAME = 'inoperative tin lizzard', ID = 8, TYPE = TYPE_ITEM, CHANCE = 100, FAIL_MSG = { {2, "The key broke inside."} }, SUCCESS_MSG = "You have started the Tin Lizzard!"},
["Draptor"] = {NAME = 'Draptor', ID = 6, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The draptor has run away."}, {3, "The draptor has fled."} }, SUCCESS_MSG = "You have tamed the draptor."},
["Crystal Wolf"] = {NAME = 'Crystal Wolf', ID = 16, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The wolf has run away."} }, SUCCESS_MSG = "You have tamed the wolf."},
["Enraged White Deer"] = {NAME = 'Enraged White Deer', ID = 18, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {2, "The cone broke."}, {3, "The deer has fled in fear."} }, SUCCESS_MSG = "You have tamed the deer."},
["Panda"] = {NAME = 'Panda', ID = 19, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {4, "Panda ate the leaves and ran away."} }, SUCCESS_MSG = "You have tamed the panda."},
["Dromedary"] = {NAME = 'Dromedary', ID = 20, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "Dromedary has run away."} }, SUCCESS_MSG = "You have tamed the dromedary."},
["Sandstone Scorpion"] = {NAME = 'Sandstone Scorpion', ID = 21, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The scorpion has vanished."}, {2, "Scorpion broken the sceptre."} }, SUCCESS_MSG = "You have tamed the scorpion"},
["Donkey"] = {NAME = 'Donkey', ID = 13, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The witch has escaped!"} }, SUCCESS_MSG = "You have tamed the mule."},
["inoperative uniwheel"] = {NAME = 'inoperative uniwheel', ID = 15, TYPE = TYPE_ITEM, CHANCE = 100, FAIL_MSG = { {2, "The oil is having no effect."} }, SUCCESS_MSG = "You have found an Uniwheel."},
["Slug"] = {NAME = 'Slug', ID = 14, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The slug has run away."}, {3, "The drug had no effect."} }, SUCCESS_MSG = "You have tamed the slug."},
["Wild Horse"] = {NAME = 'Wild Horse', ID = 17, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The horse runs away."}, {2, "The horse ate the oats."} }, SUCCESS_MSG = "You have tamed the horse."},
["Manta Ray"] = {NAME = 'Manta Ray', ID = 28, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The manta ray fled."}, {3, "The manta ray is trying to escape."} }, SUCCESS_MSG = "You have tamed the manta ray."},
["Lady Bug"] = {NAME = 'Lady Bug', ID = 27, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The ladybug got scared and ran away."}, {3, "The ladybug is trying to nibble."} }, SUCCESS_MSG = "You tame a ladybug."},
["Water Buffalo"] = {NAME = 'Water Buffalo', ID = 35, TYPE = TYPE_MONSTER, CHANCE = 100, 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
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
Position(pos):sendMagicEffect(effect)
Player(cid):say(action[2], TALKTYPE_ORANGE_1)
return action
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
local player = Player(cid)
if not Monster(itemEx.uid) then return true end
local monster = Monster(itemEx.uid)
local npc = Npc(itemEx.uid)
local targetitem = Item(itemEx.uid)
local mount = config[monster:getName()]
if mount == nil then
return false
end
if player:hasMount(mount.ID) then
player:say("You already own this mount!", TALKTYPE_ORANGE_1)
return false
end
local rand = math.random(1, 100)
--Monster Mount
if monster ~= nil and mount.TYPE == TYPE_MONSTER then
if Creature(itemEx.uid):getMaster() then
player:say("You cant tame a summon!", TALKTYPE_ORANGE_1)
return true
end
if mount.NAME == monster:getName() then
if rand > mount.CHANCE then
doFailAction(cid, mount, toPosition, item, itemEx)
return true
end
player:addMount(mount.ID)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)
player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1)
monster:remove()
toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
Item(item.uid):remove(1)
return true
else
toPosition:sendMagicEffect(CONST_ME_POFF)
end
--NPC Mount
elseif npc ~= nil and mount.TYPE == TYPE_NPC then
if mount.NAME == npc:getName() then
if rand > mount.CHANCE then
doFailAction(cid, mount, toPosition, item, itemEx)
return true
end
player:addMount(mount.ID)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)
player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1)
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:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)
player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1)
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:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)
player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1)
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:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG)
player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1)
toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
Item(item.uid):remove(1)
return true
end
end
return false
end