RevScript Mount Craft Quest

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Hola a todos,

Aqui les traigo el script de la mount utilizado en el Global server por la Singeing Steed mount,
Se basa en obtener los 4 Fiery Horsehoes, al utilizarlos el primer script los convertira en una potion, que esta ultima si la utilizais os dara la Singeing Steed Mount, lo podreis modificar por cualquier montura, lo podreis ver en data/XML/mounts los numeros ID de la montura.

Primer script en data/scripts/action, crearan una carpeta como gusten y le pondran dentro:

item = 40916 corresponde al item necessario para crear la pocima que dara la mount
Count = 4, la cantidad que se necessitaran, luego pueden anadir [1], [2,], [3],... tantos como quieran de items, estilo dofus por ejemplo con 8 Casillas.

Al final del script pondremos el 40916 que correspondera al item al cual se dara click para obtener esa pocima, si poneis varios items podreis elegir cual poner.

Código:
local craftPotionMount = Action()

local craft = {
    level = 0,
    items = {
        [1] = {item = 40916, count = 4}, -- fiery horseshoe
    },
    craftedItem = {40999, 1}, -- singeing mount
}

function craftPotionMount.onUse(player, item, fromPosition, itemEx, toPosition)

    if player:getLevel() < craft.level then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "You do not have level 1.")
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end

    for k, v in pairs(craft.items) do
        if player:getItemCount(v.item) < v.count then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "You do not have necessary items, items necessary x4 Fiery Horseshoes, in order to obtain Singeing Steed Mount.")
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
        end
    end

    for k, v in pairs(craft.items) do
        player:removeItem(v.item, v.count)
    end

    player:addItem(craft.craftedItem[1], craft.craftedItem[2])
    player:removeItem(item.itemid, 1)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "You have Crafted: "..craft.craftedItem[2].."x "..ItemType(craft.craftedItem[1]):getName()..".")
    player:getPosition():sendMagicEffect(50)

    return true
end

craftPotionMount:id(40916)
craftPotionMount:register()

El script de la pocima obtenida, la pondremos en la misma carpeta,

Código:
local SingeingSteed = Action()
function SingeingSteed.onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local config = {
        [40999] = {mountId = 186, message = "You receive the permission to ride a Singein Steed"},
    }

    local mount = config[item.itemid]

    if not mount then
        return true
    end

    if not player:hasMount(mount.mountId) then
        player:addMount(mount.mountId)
        player:say(mount.message, TALKTYPE_MONSTER_SAY)
        item:remove(1)
    else
        player:sendTextMessage(19, "You already have this mount")
    end
    return true
end

SingeingSteed:id(40999)
SingeingSteed:register()

En este caso el Item de la pocima es el 40999, y la mountID= 186 es la ID de la mount que se obtendra.

En el caso del global premium, teneis ya este script incorporado, basta en matar el nuevo The Abomination que da los 4 Fiery Horseshoes y obtendreis la pocima.
 

acxel12

Miembro
LV
13
 
Awards
14
Esto puede servir para el custom global map 13.11?
Hola a todos,

Aqui les traigo el script de la mount utilizado en el Global server por la Singeing Steed mount,
Se basa en obtener los 4 Fiery Horsehoes, al utilizarlos el primer script los convertira en una potion, que esta ultima si la utilizais os dara la Singeing Steed Mount, lo podreis modificar por cualquier montura, lo podreis ver en data/XML/mounts los numeros ID de la montura.

Primer script en data/scripts/action, crearan una carpeta como gusten y le pondran dentro:

item = 40916 corresponde al item necessario para crear la pocima que dara la mount
Count = 4, la cantidad que se necessitaran, luego pueden anadir [1], [2,], [3],... tantos como quieran de items, estilo dofus por ejemplo con 8 Casillas.

Al final del script pondremos el 40916 que correspondera al item al cual se dara click para obtener esa pocima, si poneis varios items podreis elegir cual poner.

Código:
local craftPotionMount = Action()

local craft = {
    level = 0,
    items = {
        [1] = {item = 40916, count = 4}, -- fiery horseshoe
    },
    craftedItem = {40999, 1}, -- singeing mount
}

function craftPotionMount.onUse(player, item, fromPosition, itemEx, toPosition)

    if player:getLevel() < craft.level then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "You do not have level 1.")
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end

    for k, v in pairs(craft.items) do
        if player:getItemCount(v.item) < v.count then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "You do not have necessary items, items necessary x4 Fiery Horseshoes, in order to obtain Singeing Steed Mount.")
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
        end
    end

    for k, v in pairs(craft.items) do
        player:removeItem(v.item, v.count)
    end

    player:addItem(craft.craftedItem[1], craft.craftedItem[2])
    player:removeItem(item.itemid, 1)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "You have Crafted: "..craft.craftedItem[2].."x "..ItemType(craft.craftedItem[1]):getName()..".")
    player:getPosition():sendMagicEffect(50)

    return true
end

craftPotionMount:id(40916)
craftPotionMount:register()

El script de la pocima obtenida, la pondremos en la misma carpeta,

Código:
local SingeingSteed = Action()
function SingeingSteed.onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local config = {
        [40999] = {mountId = 186, message = "You receive the permission to ride a Singein Steed"},
    }

    local mount = config[item.itemid]

    if not mount then
        return true
    end

    if not player:hasMount(mount.mountId) then
        player:addMount(mount.mountId)
        player:say(mount.message, TALKTYPE_MONSTER_SAY)
        item:remove(1)
    else
        player:sendTextMessage(19, "You already have this mount")
    end
    return true
end

SingeingSteed:id(40999)
SingeingSteed:register()

En este caso el Item de la pocima es el 40999, y la mountID= 186 es la ID de la mount que se obtendra.

En el caso del global premium, teneis ya este script incorporado, basta en matar el nuevo The Abomination que da los 4 Fiery Horseshoes y obtendreis la pocima.
Esto sirve para el custom global map 13.11?
 

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Si me funcionó, pero ¿tengo que hacer este procedimiento por cada mount?, ¿No puedo usar la misma poción para todas las mounts?
40099 significa el ítem Id, agrega otra línea con el ítem id que usaras y su mount respectiva y al final del script agrega la id (40099, 11111) por ejemplo y puedes agregar tantos que deseas.
 

acxel12

Miembro
LV
13
 
Awards
14
40099 significa el ítem Id, agrega otra línea con el ítem id que usaras y su mount respectiva y al final del script agrega la id (40099, 11111) por ejemplo y puedes agregar tantos que deseas.
Muchísimas gracias alex, me costó mucho entenderlo jaja pero al final me quedó de la siguiente manera, lo probé y está funcionando al 100%,, no tengo idea si era así como lo explicaste pero funcionó, lo dejo aquí por si alguien también lo necesita y se le complica entenderlo como yo.
Código:
local craftPotionMount = Action()

local craft = {
    level = 0,
    items = {
        [1] = {item = 36938, count = 4}, -- fiery horseshoe
        [2] = {item = 34258, count = 1}, -- red silk flower
        [3] = {item = 39548, count = 1}, -- colourful water lily
        [4] = {item = 32629, count = 1}, -- spectral scrap of cloth
    },
    craftedItem = {37708, 1}, -- singeing mount
    craftedItem = {34258, 2}, -- white lion mount
    craftedItem = {39548, 3}, -- giant beaver mount
    craftedItem = {32629, 4}, -- haze mount
}

function craftPotionMount.onUse(player, item, fromPosition, itemEx, toPosition)

    if player:getLevel() < craft.level then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "No tienes nivel 8.")
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end

    for k, v in pairs(craft.items) do
        if player:getItemCount(v.item) < v.count then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "No tienes los items necesarios para obtener la montura.")
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
        end
    end

    for k, v in pairs(craft.items) do
        player:removeItem(v.item, v.count)
    end

    player:addItem(craft.craftedItem[1], craft.craftedItem[2])
    player:removeItem(item.itemid, 1)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Tu has creado: "..craft.craftedItem[2].."x "..ItemType(craft.craftedItem[1]):getName()..".")
    player:getPosition():sendMagicEffect(50)

    return true
end

craftPotionMount:id(36938)
craftPotionMount:register()
Código:
local SingeingSteed = Action()
function SingeingSteed.onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local config = {
        [37708] = {mountId = 184, message = "Recibiste el permiso para montar al Singein Steed"},
        [34258] = {mountId = 174, message = "Recibiste el permiso para montar al White Lion"},
        [39548] = {mountId = 201, message = "Recibiste el permiso para montar al Giant Beaver"},
        [32629] = {mountId = 162, message = "Recibiste el permiso para montar al Haze"},
    }

    local mount = config[item.itemid]

    if not mount then
        return true
    end

    if not player:hasMount(mount.mountId) then
        player:addMount(mount.mountId)
        player:say(mount.message, TALKTYPE_MONSTER_SAY)
        item:remove(1)
    else
        player:sendTextMessage(19, "Ya tienes esta montura")
    end
    return true
end

SingeingSteed:id(37708, 34258, 39548, 32629)
SingeingSteed:register()
 

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Muchísimas gracias alex, me costó mucho entenderlo jaja pero al final me quedó de la siguiente manera, lo probé y está funcionando al 100%,, no tengo idea si era así como lo explicaste pero funcionó, lo dejo aquí por si alguien también lo necesita y se le complica entenderlo como yo.
Código:
local craftPotionMount = Action()

local craft = {
    level = 0,
    items = {
        [1] = {item = 36938, count = 4}, -- fiery horseshoe
        [2] = {item = 34258, count = 1}, -- red silk flower
        [3] = {item = 39548, count = 1}, -- colourful water lily
        [4] = {item = 32629, count = 1}, -- spectral scrap of cloth
    },
    craftedItem = {37708, 1}, -- singeing mount
    craftedItem = {34258, 2}, -- white lion mount
    craftedItem = {39548, 3}, -- giant beaver mount
    craftedItem = {32629, 4}, -- haze mount
}

function craftPotionMount.onUse(player, item, fromPosition, itemEx, toPosition)

    if player:getLevel() < craft.level then
        player:sendTextMessage(MESSAGE_STATUS_SMALL, "No tienes nivel 8.")
        player:getPosition():sendMagicEffect(CONST_ME_POFF)
        return true
    end

    for k, v in pairs(craft.items) do
        if player:getItemCount(v.item) < v.count then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "No tienes los items necesarios para obtener la montura.")
            player:getPosition():sendMagicEffect(CONST_ME_POFF)
            return true
        end
    end

    for k, v in pairs(craft.items) do
        player:removeItem(v.item, v.count)
    end

    player:addItem(craft.craftedItem[1], craft.craftedItem[2])
    player:removeItem(item.itemid, 1)
    player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Tu has creado: "..craft.craftedItem[2].."x "..ItemType(craft.craftedItem[1]):getName()..".")
    player:getPosition():sendMagicEffect(50)

    return true
end

craftPotionMount:id(36938)
craftPotionMount:register()
Código:
local SingeingSteed = Action()
function SingeingSteed.onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local config = {
        [37708] = {mountId = 184, message = "Recibiste el permiso para montar al Singein Steed"},
        [34258] = {mountId = 174, message = "Recibiste el permiso para montar al White Lion"},
        [39548] = {mountId = 201, message = "Recibiste el permiso para montar al Giant Beaver"},
        [32629] = {mountId = 162, message = "Recibiste el permiso para montar al Haze"},
    }

    local mount = config[item.itemid]

    if not mount then
        return true
    end

    if not player:hasMount(mount.mountId) then
        player:addMount(mount.mountId)
        player:say(mount.message, TALKTYPE_MONSTER_SAY)
        item:remove(1)
    else
        player:sendTextMessage(19, "Ya tienes esta montura")
    end
    return true
end

SingeingSteed:id(37708, 34258, 39548, 32629)
SingeingSteed:register()
Si exacto el segundo script así decía , agregar líneas tanto como gustes una por mount
 
Arriba