BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido script] Un item que teletransporte.

[Pedido script] Un item que teletransporte.

#1 [Pedido script] Un item que teletransporte. el Lun Jul 04, 2016 5:42 pm

Aaronglan


Miembro
Hola Blacktibianos, bueno queria saber si pueden ayudarme con un scrips, es para mi ot.
Bueno se trata que tu uses Un item Para teleport. que seria (Golden Key"2091")
Al usarlo cambie por otro, el item seria (Wooden key"2087")  pero que ese item  no se pueda usar para teleport hasta que lo recargues de nuevo, seria ponerlo en una mesa halar la palanca y que lo trasforme de nuevo a la Golden Key
Ayudemen por favor

http://cooperotserver.es.tl

Belerofonte


Administrador
Servidor\Data\Actions\... Actions.xml
Código:
<action itemid="2091; 2087" uniqueid="2091" event="script" value="TeleportKey.lua"/>
Ese, o el uniqueId que gustes para la palanca en el RME.

Servidor\Data\Actions\Scripts\... TeleportKey.lua
Código:
local Config = {
    Keyring = {2091, 2087}, -- ID de las llaves... {...Golden key, ...Wooden key}
    Destiny = {x = 856, y = 1017, z = 7}, -- Coordenada del lugar hacia donde llevará las llaves.

    Storage = 234085, -- Storage que gustes (para evitar que hagan spam con la flecha azul)
    LeverId = {9827, 9828}, -- ID de la palanca... {...hacia la izquierda, ...hacia la derecha}
    Charger = {x = 853, y = 1019, z = 7}, -- Coordenada del lugar donde estará la mesa que recarga las llaves.
}

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if item.itemid == Config.Keyring[1] then
        doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
        doTeleportThing(cid, Config.Destiny)
        doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
        doTransformItem(item.uid, Config.Keyring[2])

     elseif item.itemid == Config.Keyring[2] then
        doPlayerSendCancel(cid, "Sorry, it must be charged.")

     else
        local getItem = getTileItemById(Config.Charger, Config.Keyring[2])
        if getItem.uid < 1 then
            if exhaustion.get(cid, Config.Storage) == false then
                doSendMagicEffect(Config.Charger, CONST_ME_TUTORIALARROW)
                exhaustion.set(cid, Config.Storage, 2 * 60)
            end
            doPlayerSendCancel(cid, "Is needed " .. getItemArticleById(Config.Keyring[2]) .. " " .. getItemNameById(Config.Keyring[2]) .. " here.")

         else
            doSendMagicEffect(Config.Charger, CONST_ME_HOLYDAMAGE)
            doTransformItem(getItem.uid, Config.Keyring[1], 1)
            doTransformItem(item.uid, item.itemid == Config.LeverId[1] and Config.LeverId[2] or Config.LeverId[1])
        end
    end
    return true
end



Si en la consola te sale estos errores:
Código:
[5/7/2016 0:41:33] >>> Loading actions... [Warning - Actions::registerEvent] Duplicate registered item id: 2087
[5/7/2016 0:41:35] [Warning - Actions::registerEvent] Duplicate registered item id: 2091

Como a mí me salieron cuando lo puse, resulta que ya tienes registrado esas 2 llaves. Yo las tenía aquí, en el script que abre algunas puertas.
Código:
<!-- Keys -->
 <action itemid="2086-2092;10032;10091" event="script" value="other/keys.lua"/>
No salen a simple vista, pero están entre la 2086 y 2092. Por lo que tuve que ponerlo así:
Código:
<!-- Keys -->
 <action itemid="2086;2088;2089;2090;2092;10032;10091" event="script" value="other/keys.lua"/>

Claro que, eso significa que, ya, no podrás abrir esas X puertas con esas 2 llaves que uses.



Previsualización:
[Tienes que estar registrado y conectado para ver esa imagen]

Ya tengo que spamear con el nombre de Blacktibia los gifs para "los graciosillos" que se agencian mis post y colocan en "otros foros" Yao ming



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Aaronglan


Miembro
Gracias men, creo me salte una parte importante , que al recargar te cobre
"digamos 10 diamantes"

Y me sale esto
[04/07/2016 19:38:10] [Error - LuaScriptInterface::loadFile] cannot open data/actions/scripts/TeleportKey.lua: No such file or directory
[04/07/2016 19:38:10] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/TeleportKey.lua)

http://cooperotserver.es.tl

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Gracias men, creo me salte una parte importante , que al recargar te cobre
"digamos 10 diamantes"
Código:
local Config = {
    Keyring = {2091, 2087}, -- ID de las llaves... {...Golden key, ...Wooden key}
    Destiny = {x = 856, y = 1017, z = 7}, -- Coordenada del lugar hacia donde llevará las llaves.

    Storage = 234085, -- Storage que gustes (para evitar que hagan spam con la flecha azul)
    LeverId = {9827, 9828}, -- ID de la palanca... {...hacia la izquierda, ...hacia la derecha}
    CostKey = {2145, 10}, -- Precio... {...Id del objeto que necesita tener el jugador, ...cantidad del cual}
    Charger = {x = 853, y = 1019, z = 7}, -- Coordenada del lugar donde estará la mesa que recarga las llaves.
}

local function titleCase(first, rest)
    return first:upper()..rest:lower()
end

local function getMoneyName(id, cost)
    local name = {}
    if cost > 1 then
        name = getItemPluralNameById(id)
     else
        name = getItemNameById(id)
    end
    return cost .. " " .. string.gsub(name, "(%a)([%w_']*)", titleCase)
end

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if item.itemid == Config.Keyring[1] then
        doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
        doTeleportThing(cid, Config.Destiny)
        doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
        doTransformItem(item.uid, Config.Keyring[2])

     elseif item.itemid == Config.Keyring[2] then
        doPlayerSendCancel(cid, "Sorry, it must be charged.")

     else
        local getItem = getTileItemById(Config.Charger, Config.Keyring[2])
        if getItem.uid < 1 then
            if exhaustion.get(cid, Config.Storage) == false then
                doSendMagicEffect(Config.Charger, CONST_ME_TUTORIALARROW)
                exhaustion.set(cid, Config.Storage, 2 * 60)
            end
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Is needed " .. getItemArticleById(Config.Keyring[2]) .. " " .. string.gsub(getItemNameById(Config.Keyring[2]), "(%a)([%w_']*)", titleCase) .. " here.")
            doPlayerSendCancel(cid, "Sorry, not possible.")

         else
            local getMoney = getPlayerItemCount(cid, Config.CostKey[1])
            if getMoney < Config.CostKey[2] then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, (getMoney > 0 and "It seems you need " .. getMoneyName(Config.CostKey[1], Config.CostKey[2] - getMoney) .." to complete the total price of " .. getMoneyName(Config.CostKey[1], Config.CostKey[2]) .. "." or "You haven't " .. getMoneyName(Config.CostKey[1], Config.CostKey[2]) .. "."))
                doPlayerSendCancel(cid, "Sorry, not possible.")
             else
                doPlayerRemoveItem(cid, Config.CostKey[1], Config.CostKey[2])
                doSendMagicEffect(Config.Charger, CONST_ME_HOLYDAMAGE)
                doTransformItem(getItem.uid, Config.Keyring[1], 1)
                doTransformItem(item.uid, item.itemid == Config.LeverId[1] and Config.LeverId[2] or Config.LeverId[1])
            end
        end
    end
    return true
end
Editas dicho costo en esta nueva línea:
CostKey = {2145, 10}, -- Precio... {...Id del objeto que necesita tener el jugador, ...cantidad del cual}



[Tienes que estar registrado y conectado para ver este vínculo] escribió:Y me sale esto
[04/07/2016 19:38:10] [Error - LuaScriptInterfaceFile] cannot open data/actions/scripts/TeleportKey.lua: No such file or directory
[04/07/2016 19:38:10] [Warning - EventScript] Cannot load script (data/actions/scripts/TeleportKey.lua)
Eso ocurre cuando no les pones el mismo nombre al archivo.lua en la carpeta Scripts, que al nombre de su respectiva línea del, en este caso, Actions.xml. Verifica bien que ambos tengan TeleportKey, o el que le quieras poner. Me parece que también interfieren las letras minúsculas & mayúsculas en su funcionamiento.



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .