BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Script de tp con item

Script de tp con item

#1 Script de tp con item el Vie Feb 28, 2014 8:58 pm

Nicolasdasd


Miembro
Hola buenas, tengo este script de un npc que te lleva a algún lugar si es que tienes un item en especial, el tema es que no sé cómo modificarlo para que al comprobar si es que tiene ese item se lo quite y no quede en la bp del jugador.

Código:
teleport = {x=1000, y=1000, z=7}


local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false

function onThingMove(creature, thing, oldpos, oldstackpos, cid, item, frompos, item2, topos)

end


function onCreatureAppear(creature)

end


function onCreatureDisappear(cid, pos)
    if focus == cid then
          selfSay('Good bye then.')
          focus = 0
          talk_start = 0
    end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
    return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
    msg = string.lower(msg)
  if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
        selfSay('Hola ' .. getCreatureName(cid) .. '!    Si quieres ser teletransportado nesesitas un item especial! pero debes decirme "Teleport".')
        focus = cid
        talk_start = os.clock()

    elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
        selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.')

    elseif focus == cid then
      talk_start = os.clock()

        if msgcontains(msg, 'teleport') then
            if(doPlayerRemoveItem(cid, 2193, 1) == TRUE) then
              doPlayerAddItem(cid, 2193, 1)
              doTeleportThing(cid,teleport)
                  doSendMagicEffect(mystic,10)
              selfSay("Let's GO")
              focus = 0
              talk_start = 0
            else
              selfSay("Sorry, no tienes el item correcto!.")
            end
     

        elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
            selfSay('Bye ' .. creatureGetName(cid) .. ', go back.')
            focus = 0
            talk_start = 0

        elseif msg ~= "" then
            selfSay('how? I do not understand!')
            talk_state = 0
        end
    end
end

function onCreatureChangeOutfit(creature)
end

function onThink()
    doNpcSetCreatureFocus(focus)
    if (os.clock() - talk_start) > 30 then
        if focus > 0 then
            selfSay('Next please!!...')
        end
        focus = 0
        talk_start = 0
    end
    if focus ~= 0 then
        if getDistanceToCreature(focus) > 5 then
            selfSay('Good Bye')
            focus = 0
            talk_start = 0
        end
    end
end

Gracias

#2 Re: Script de tp con item el Vie Feb 28, 2014 9:08 pm

Belerofonte


Administrador
La línea en la que se comprueba y al mismo tiempo si tiene el objeto pues se lo quita es:
Código:
if(doPlayerRemoveItem(cid, 2193, 1) == TRUE) then
Código:
doPlayerRemoveItem(cid, ItemID, Cantidad)

Para que no se le quede en la bp has de borrar esta otra línea:
Código:
doPlayerAddItem(cid, 2193, 1)
Que como ves lo que hacía era borrarle el objeto y luego se le agregaba nuevamente.

Código:
 teleport = {x=1000, y=1000, z=7}


    local focus = 0
    local talk_start = 0
    local target = 0
    local following = false
    local attacking = false

    function onThingMove(creature, thing, oldpos, oldstackpos, cid, item, frompos, item2, topos)

    end


    function onCreatureAppear(creature)

    end


    function onCreatureDisappear(cid, pos)
        if focus == cid then
              selfSay('Good bye then.')
              focus = 0
              talk_start = 0
        end
    end


    function onCreatureTurn(creature)

    end


    function msgcontains(txt, str)
        return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
    end


    function onCreatureSay(cid, type, msg)
        msg = string.lower(msg)
      if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
            selfSay('Hola ' .. getCreatureName(cid) .. '!    Si quieres ser teletransportado nesesitas un item especial! pero debes decirme "Teleport".')
            focus = cid
            talk_start = os.clock()

        elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
            selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.')

        elseif focus == cid then
          talk_start = os.clock()

            if msgcontains(msg, 'teleport') then
                if(doPlayerRemoveItem(cid, 2193, 1) == TRUE) then
                  doTeleportThing(cid,teleport)
                      doSendMagicEffect(mystic,10)
                  selfSay("Let's GO")
                  focus = 0
                  talk_start = 0
                else
                  selfSay("Sorry, no tienes el item correcto!.")
                end
         

            elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
                selfSay('Bye ' .. creatureGetName(cid) .. ', go back.')
                focus = 0
                talk_start = 0

            elseif msg ~= "" then
                selfSay('how? I do not understand!')
                talk_state = 0
            end
        end
    end

    function onCreatureChangeOutfit(creature)
    end

    function onThink()
        doNpcSetCreatureFocus(focus)
        if (os.clock() - talk_start) > 30 then
            if focus > 0 then
                selfSay('Next please!!...')
            end
            focus = 0
            talk_start = 0
        end
        if focus ~= 0 then
            if getDistanceToCreature(focus) > 5 then
                selfSay('Good Bye')
                focus = 0
                talk_start = 0
            end
        end
    end



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]

#3 Re: Script de tp con item el Vie Feb 28, 2014 9:20 pm

Nicolasdasd


Miembro
Graciasss a los dos, claramente me faltaba quitar lo obvio jaja y, bueno, aprovechando que están on, saben cómo agrego más rocas en este
script ?

Código:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local pos = {X=XXX, Y=YYY, Z=ZZZ} -- La Pos de la stone [Ejemplo: X=1000, Y=1000, Z=7]
local stone = 1304 -- ID de la stone
local stoneFromPos = getThingfromPos(pos) 

if item.itemid == 1945 then -- ID de la palanca
doRemoveItem(stoneFromPos.uid, 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You removed the Stone.")
doTransformItem(item.uid, 1946) 
elseif item.itemid == 1946 then -- ID de la palanca
doCreateItem(stone, 1, pos)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You added the Stone.")
doTransformItem(item.uid, 1945)
end

PD: es para un evento de carreras que quiero mapear, la idea es que no sea automático sino que yo accione la palanca y comience la
carrera.

Saludos y gracias por la atención !

#4 Re: Script de tp con item el Vie Feb 28, 2014 9:57 pm

Belerofonte


Administrador
@Up,

Código:
function onUse(cid, item, pos, fromPosition, toPosition)
local Roca = 1304 -- ItemID del objeto que bloquee el paso.
local posiciones = { -- Coordenadas del lugar donde aparecerá/desaparecerá el objeto anterior.
{x = 957, y = 1013, z = 8, stackpos = 1},
{x = 958, y = 1013, z = 8, stackpos = 1},
{x = 959, y = 1013, z = 8, stackpos = 1},
{x = 961, y = 1013, z = 8, stackpos = 1},
{x = 962, y = 1013, z = 8, stackpos = 1},
{x = 963, y = 1013, z = 8, stackpos = 1},
}
for i = 1,#posiciones do
 if getThingFromPos(posiciones[i]).itemid == Roca then
 doSendMagicEffect(posiciones[i],CONST_ME_STONES)
 doRemoveItem(getThingFromPos(posiciones[i]).uid)
 else
 doCreateItem(Roca,1,posiciones[i])
 doSendMagicEffect(posiciones[i],CONST_ME_GROUNDSHAKER)
 end
 end
return doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
end

Puedes agregarle más rocas añadiéndo más líneas de coordenadas tales como las anteriores...
Código:
{x = XXX, y = YYY, z = ZZ, stackpos = 1},
Y el UniqueID que le hayas puesto en la línea del Actions.xml se lo pones a la palanca con el Remeres.



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]

#5 Re: Script de tp con item el Sáb Mar 01, 2014 12:18 am

Nicolasdasd


Miembro
Funciona a la perfección! Gracias una y otra y otra vez!

#6 Re: Script de tp con item Hoy a las 8:28 am

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 .