This quest solved my problem:
quest ride_mystery_boxes begin
state start begin
function Ride( vnum, remain_time )
ride_info = {
[ITEMID] = { MOUNTID, 5*60, apply.ATTBONUS_MONSTER, 5, 1, false, true, },
}
if pc.level < ride_info[vnum][5] then
syschat("Your level is too low.")
else
if 112 == pc.get_map_index() then
return
end
if ride_info[vnum][2] == 0 and remain_time != 0 then
pc.mount( ride_info[vnum][1], remain_time*60 )
pc.mount_bonus( ride_info[vnum][3], ride_info[vnum][4], remain_time*60 )
else
pc.mount( ride_info[vnum][1], ride_info[vnum][2] )
pc.mount_bonus( ride_info[vnum][3], ride_info[vnum][4], ride_info[vnum][2] )
end
if true == ride_info[vnum][6] then
pc.remove_item(vnum, 1)
end
end
end
when login begin
local vnum, remain_time = pc.get_special_ride_vnum()
if vnum != ITEMID then
return
end
if 0 != vnum then
ride_mystery_boxes.Ride(vnum, remain_time)
end
end
when ITEMID.use begin
if pc.is_polymorphed() then
syschat("You are polymorphed, try again soon.")
elseif false == pc.is_riding() then
if true == horse.is_summon() then
horse.unsummon()
end
ride_mystery_boxes.Ride(item.vnum, 0)
else
syschat("You are already in a horse. ")
end
end
end
end