BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Script para aparecer monster.

Script para aparecer monster.

#1 Script para aparecer monster. el Sáb Dic 27, 2014 12:14 am

Healersitito


Novato
Saludos,

Necesito un script para que al poner un item(en este caso un cuerpo [3058] ) en determinada coordenada(y que al ponerlo en esa coordenada el cuerpo desaparezca), aparezca un monster en determinada coordenada, si no me entendieron les dejo una imagen.... [Tienes que estar registrado y conectado para ver esa imagen]

#2 Re: Script para aparecer monster. el Sáb Dic 27, 2014 5:28 pm

Belerofonte


Administrador
Servidor/Data/Movements/... Movements.xml:
<movevent type="AddItem" tileitem="1" actionid="3761" event="script" value="sacrif.lua"/>
Ahí pones ese o el ActionID que gustes, que no estés usando ya en otro script. Será el que también has de poner con el Remeres en el tile donde han de tirar los "sacrificios".

Servidor/Data/Movements/Scripts/... sacrif.lua:
Código:
 local c = {
    Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
    Monster = "Wolf", -- Nombre del Monster.
    Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
    Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde el tile hasta el monster invocado}
  }
  local m = {
    accept = 'Ha sido invocado un ' .. c.Monster .. '!', -- Mensaje que saldrá al invocar al monstruo.
    denied = 'Sin efecto...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
  }

function onAddItem(moveitem, tileitem, position, cid)
  local msg, type = '', {}
    if isPlayer(cid) then
        if isInArray(c.Req, moveitem.itemid) then
            doRemoveItem (moveitem.uid)
          Create = doCreateMonster(c.Monster, c.Spawn)
          local MonsterPos = getThingPos(Create)
            doSendMagicEffect(position, CONST_ME_HITAREA)
            doSendDistanceShoot(position, MonsterPos, c.Effects.Distance)
            doSendMagicEffect(MonsterPos, c.Effects.Normal)
            msg, type = m.accept, MESSAGE_EVENT_ADVANCE
         else
           msg, type = m.denied, MESSAGE_STATUS_SMALL
        end
        doPlayerSendTextMessage(cid, type, msg)
    end
  return true
end

Zona a editar:
 local c = {
   Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
   Monster = "Wolf", -- Nombre del Monster.
   Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
   Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde el tile hasta el monster invocado}
 }
 local m = {
   accept = 'Ha sido invocado un ' .. c.Monster .. '!', -- Mensaje que saldrá al invocar al monstruo.
   denied = 'Sin efecto...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
 }

Imagen resultado:
[Tienes que estar registrado y conectado para ver esa imagen]


"Bonus script" Genius.
Al ver esa esatua ahí me dio que pensar... que si tal vez lo quisieras hacer más vistoso, podríamos poner un Npc(que responda al jugador o no, eso ya a tu gusto...) con el aspecto físico de esa estatua...
Código:
<look typeex="9242"/>

Y que diga algo dependiendo del objeto que se ponga en el tile, es decir, en vez de los mensajes que le sale al jugador en el centro y parte inferior de la pantalla, que los diga la criatura que se haye... Lo cual sería, crear un Npc (o monster que no se le pueda atacar con sus respectivas flags para ello). Que el cual no se pueda mover del lugar donde lo pongas y...
...Servidor/Data/Movements/Scripts/... sacrif.lua:
Código:
function onAddItem(moveitem, tileitem, position, cid)

  local c = {
    Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
    SummPos = {x = position.x, y= position.y-1, z = position.z, stackpos = 255}, -- Coordenada del lugar donde se haye la criatura invocadora.
 Monster = "Wolf", -- Nombre del Monster.
    Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
    Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde la criatura invocadora hasta el monster invocado}
  }

  local m = { -- Uno de esos mensajes lo dirá al azar la criatura, dependiendo de la situación...
    accept = { -- ...lo dirá al invocar al monstruo.
        'Ha sido invocado un ' .. c.Monster .. '!',
        c.Monster .. '! te elijo a ti!... ataque impactrue...! ejem...! okno.',
        'Como desees...' .. string.upper(c.Monster) .. ', YO TE INVOCO!!!',
    },
    denied = { -- ...lo dirá cuando se deposite cualquier otro objeto no requerido.
        'Sin efecto...',
        'Y yo que quieres que haga con ese ' .. getItemNameById(moveitem.itemid) .. '?',
        'Ehmmm... no. Has de entregarme el cadaver de bla bla bla...',
    },
  }

  local msg, summoner = '', getTopCreature(c.SummPos).uid
    if isPlayer(cid) then
        if isInArray(c.Req, moveitem.itemid) then
            doRemoveItem (moveitem.uid)
          Create = doCreateMonster(c.Monster, c.Spawn)
          local MonsterPos = getThingPos(Create)
            doSendMagicEffect(position, CONST_ME_HITAREA)
            doSendDistanceShoot(c.SummPos, MonsterPos, c.Effects.Distance)
            doSendMagicEffect(MonsterPos, c.Effects.Normal)
          msg = m.accept[math.random(#m.accept)]
         else
           msg = m.denied[math.random(#m.denied)]
        end
        doPlayerSay (summoner, msg)
    end
end

Zona a editar:
 local c = {
   Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
   SummPos = {x = position.x, y= position.y-1, z = position.z, stackpos = 255}, -- Coordenada del lugar donde se haye la criatura invocadora.
   Monster = "Wolf", -- Nombre del Monster.
   Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
   Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde desde la criatura invocadora hasta el monster invocado}
 }

 local m = { -- Uno de esos mensajes lo dirá al azar la criatura invocadora, dependiendo de la situación...
   accept = { -- ...lo dirá al invocar al monstruo.
       'Ha sido invocado un ' .. c.Monster .. '!',
       c.Monster .. '! te elijo a ti!... ataque impactrue...! ejem...! okno.',
       'Como desees...' .. string.upper(c.Monster) .. ', YO TE INVOCO!!!',

   },
   denied = { -- ...lo dirá cuando se deposite cualquier otro objeto no requerido.
       'Sin efecto...',
       'Y yo que quieres que haga con ese ' .. getItemNameById(moveitem.itemid) .. '?',
       'Ehmmm... no. Has de entregarme el cadaver de bla bla bla...',

   },
 }
Puedes añadir todas las posibles oraciones que dirá la criatura "invocadora", que quieras. Como están las anteriores: cada una separada por una coma ","

Imagen resultado:
[Tienes que estar registrado y conectado para ver esa imagen]



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 para aparecer monster. el Sáb Dic 27, 2014 6:05 pm

Crazzy


Estudiante
Me gano belero ya estaba por terminar el script (

#4 Re: Script para aparecer monster. el Sáb Dic 27, 2014 6:43 pm

carmona


Miembro
Yo estaba planeando hacerlo, pero.... Friki. me dio hueva.

#5 Re: Script para aparecer monster. el Sáb Dic 27, 2014 10:08 pm

Healersitito


Novato
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Servidor/Data/Movements/... Movements.xml:
<movevent type="AddItem" tileitem="1" actionid="3761" event="script" value="sacrif.lua"/>
Ahí pones ese o el ActionID que gustes, que no estés usando ya en otro script. Será el que también has de poner con el Remeres en el tile donde han de tirar los "sacrificios".

Servidor/Data/Movements/Scripts/... sacrif.lua:
Código:
 local c = {
    Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
    Monster = "Wolf", -- Nombre del Monster.
    Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
    Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde el tile hasta el monster invocado}
  }
  local m = {
    accept = 'Ha sido invocado un ' .. c.Monster .. '!', -- Mensaje que saldrá al invocar al monstruo.
    denied = 'Sin efecto...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
  }

function onAddItem(moveitem, tileitem, position, cid)
  local msg, type = '', {}
    if isPlayer(cid) then
        if isInArray(c.Req, moveitem.itemid) then
            doRemoveItem (moveitem.uid)
          Create = doCreateMonster(c.Monster, c.Spawn)
          local MonsterPos = getThingPos(Create)
            doSendMagicEffect(position, CONST_ME_HITAREA)
            doSendDistanceShoot(position, MonsterPos, c.Effects.Distance)
            doSendMagicEffect(MonsterPos, c.Effects.Normal)
            msg, type = m.accept, MESSAGE_EVENT_ADVANCE
         else
           msg, type = m.denied, MESSAGE_STATUS_SMALL
        end
        doPlayerSendTextMessage(cid, type, msg)
    end
  return true
end

Zona a editar:
 local c = {
   Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
   Monster = "Wolf", -- Nombre del Monster.
   Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
   Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde el tile hasta el monster invocado}
 }
 local m = {
   accept = 'Ha sido invocado un ' .. c.Monster .. '!', -- Mensaje que saldrá al invocar al monstruo.
   denied = 'Sin efecto...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
 }

Imagen resultado:
[Tienes que estar registrado y conectado para ver esa imagen]


"Bonus script" Genius.
Al ver esa esatua ahí me dio que pensar... que si tal vez lo quisieras hacer más vistoso, podríamos poner un Npc(que responda al jugador o no, eso ya a tu gusto...) con el aspecto físico de esa estatua...
Código:
<look typeex="9242"/>

Y que diga algo dependiendo del objeto que se ponga en el tile, es decir, en vez de los mensajes que le sale al jugador en el centro y parte inferior de la pantalla, que los diga la criatura que se haye... Lo cual sería, crear un Npc (o monster que no se le pueda atacar con sus respectivas flags para ello). Que el cual no se pueda mover del lugar donde lo pongas y...
...Servidor/Data/Movements/Scripts/... sacrif.lua:
Código:
function onAddItem(moveitem, tileitem, position, cid)

  local c = {
    Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
    SummPos = {x = position.x, y= position.y-1, z = position.z, stackpos = 255}, -- Coordenada del lugar donde se haye la criatura invocadora.
 Monster = "Wolf", -- Nombre del Monster.
    Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
    Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde la criatura invocadora hasta el monster invocado}
  }

  local m = { -- Uno de esos mensajes lo dirá al azar la criatura, dependiendo de la situación...
    accept = { -- ...lo dirá al invocar al monstruo.
        'Ha sido invocado un ' .. c.Monster .. '!',
        c.Monster .. '! te elijo a ti!... ataque impactrue...! ejem...! okno.',
        'Como desees...' .. string.upper(c.Monster) .. ', YO TE INVOCO!!!',
    },
    denied = { -- ...lo dirá cuando se deposite cualquier otro objeto no requerido.
        'Sin efecto...',
        'Y yo que quieres que haga con ese ' .. getItemNameById(moveitem.itemid) .. '?',
        'Ehmmm... no. Has de entregarme el cadaver de bla bla bla...',
    },
  }

  local msg, summoner = '', getTopCreature(c.SummPos).uid
    if isPlayer(cid) then
        if isInArray(c.Req, moveitem.itemid) then
            doRemoveItem (moveitem.uid)
          Create = doCreateMonster(c.Monster, c.Spawn)
          local MonsterPos = getThingPos(Create)
            doSendMagicEffect(position, CONST_ME_HITAREA)
            doSendDistanceShoot(c.SummPos, MonsterPos, c.Effects.Distance)
            doSendMagicEffect(MonsterPos, c.Effects.Normal)
          msg = m.accept[math.random(#m.accept)]
         else
           msg = m.denied[math.random(#m.denied)]
        end
        doPlayerSay (summoner, msg)
    end
end

Zona a editar:
 local c = {
   Req = {3058, 3065}, -- Cualquier objeto(cadáver) que activará el script.
   SummPos = {x = position.x, y= position.y-1, z = position.z, stackpos = 255}, -- Coordenada del lugar donde se haye la criatura invocadora.
   Monster = "Wolf", -- Nombre del Monster.
   Spawn = {x = 876, y = 1017, z = 7}, -- Coordenada del lugar donde aparecerá el monster anterior.
   Effects = {Normal = CONST_ME_GROUNDSHAKER, Distance = CONST_ANI_DEATH}, -- {Normal = Término del efecto mágico normal que aparecerá en el monstruo al ser invocado, Distance = Término del efecto mágico de a distancia que aparecerá desde desde la criatura invocadora hasta el monster invocado}
 }

 local m = { -- Uno de esos mensajes lo dirá al azar la criatura invocadora, dependiendo de la situación...
   accept = { -- ...lo dirá al invocar al monstruo.
       'Ha sido invocado un ' .. c.Monster .. '!',
       c.Monster .. '! te elijo a ti!... ataque impactrue...! ejem...! okno.',
       'Como desees...' .. string.upper(c.Monster) .. ', YO TE INVOCO!!!',

   },
   denied = { -- ...lo dirá cuando se deposite cualquier otro objeto no requerido.
       'Sin efecto...',
       'Y yo que quieres que haga con ese ' .. getItemNameById(moveitem.itemid) .. '?',
       'Ehmmm... no. Has de entregarme el cadaver de bla bla bla...',

   },
 }
Puedes añadir todas las posibles oraciones que dirá la criatura "invocadora", que quieras. Como están las anteriores: cada una separada por una coma ","

Imagen resultado:
[Tienes que estar registrado y conectado para ver esa imagen]

MAN GRACIAS!!!!, OTRA COSA, TENDRAS  UNO PARECIDO?, OSEA QUE AL YO PONER UN ITEM EN CIERTO SQM  APAREZCA UN OBJETO EN CIERTAS COORDENADAS?, TAMBIEN NECESITO UNO QUE CUANDO  EQUIS CANTIDAD DE PERSONAS MATEN A  UN BOSS DENTRO DE UN AREA TODOS LOS JUGADORES DENTRO DE ESA AREA SEAN TELETRANSPORTADOS A CIERTAS COORDENADAS SIN IMPORTAR SI ATACARON AL BOSS O NO, PORFAVOR.

#6 Re: Script para aparecer monster. el Sáb Dic 27, 2014 10:50 pm

Belerofonte


Administrador
diegogo escribió:Me gano belero ya estaba por terminar el script (
Jaja. Sí, es una cagada. Ya me ha pasado en otras ocasiones y da coraje.
Seré generoso y dejaré que hagas antes los 2127 pedidos restantes Yao ming


[Tienes que estar registrado y conectado para ver este vínculo] escribió:MAN GRACIAS!!!!, OTRA COSA, TENDRAS UNO PARECIDO?, OSEA QUE AL YO PONER UN ITEM EN CIERTO SQM APAREZCA UN OBJETO EN CIERTAS COORDENADAS?, TAMBIEN NECESITO UNO QUE CUANDO EQUIS CANTIDAD DE PERSONAS MATEN A UN BOSS DENTRO DE UN AREA TODOS LOS JUGADORES DENTRO DE ESA AREA SEAN TELETRANSPORTADOS A CIERTAS COORDENADAS SIN IMPORTAR SI ATACARON AL BOSS O NO, PORFAVOR.

1. Me alegro de que te haya servido el anterior.
2. Procura escribir siempre(en cualquier sección del foro) almenos la mayoría de tu texto en minúscula.
3. Respecto a los otros pedidos... Al poner un objeto en un lugar, aparecerá el otro objeto en todas las coordenadas que pongas o solo en una?

EDIT:
Objeto requerido... crea otros en coordenadas

Servidor/Data/Movements/... Movements.xml:
<movevent type="AddItem" tileitem="1" uniqueid="3762" event="script" value="sacrifItem.lua"/>
Ése o cualquier otro UniqueId que gustes, que no estés usando ya en otro script es el que le has de poner también con el Remeres al tile donde se deba de poner el objeto requerido.

Servidor/Data/Movements/Scripts/... sacrifItem.lua: (o el nombre que quieras, el mismo que también le hayas puesto en la línea del Movements.xml anterior)
Código:
 local c = {
    Req = 3058, -- Objeto requerido.
    Pre = 2160, -- {Objeto otorgado.
    Pos = { -- Coordenadas donde aparecerá el objeto anterior.
      {x = 868, y = 1015, z = 7},
      {x = 870, y = 1015, z = 7},
      {x = 868, y = 1017, z = 7},
      {x = 870, y = 1017, z = 7},
    },
    Eff = {CONST_ME_HITAREA, CONST_ME_GIFT_WRAPS}, -- {Efecto mágico que aparecerá en el tile del objeto requerido, Efecto mágico que aparecerá en el objeto otorgado},
  }
  local m = {
    accept = 'Han aparecido ' .. #c.Pos .. ' ' .. getItemPluralNameById(c.Pre) .. ' en bla bla bla...', -- Mensaje que saldrá junto con el anterior objeto.
    denied = 'No se detecta ningun ' .. getItemNameById(c.Req) .. '...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
  }

function onAddItem(moveitem, tileitem, position, cid)
  local msg, type = '', {}
    if isPlayer(cid) then
        if moveitem.itemid == c.Req then
            doRemoveItem (moveitem.uid)
            doSendMagicEffect(position, c.Eff[1])
            msg, type = m.accept, MESSAGE_EVENT_ADVANCE
            for i = 1, #c.Pos do
                doCreateItem(c.Pre, 1, c.Pos[i])
                doSendMagicEffect(c.Pos[i], c.Eff[2])
            end
        else
          msg, type = m.denied, MESSAGE_STATUS_SMALL
        end
        doPlayerSendTextMessage(cid, type, msg)
    end
  return true
end

Zona a editar:
local c = {
Req = 3058, -- Objeto requerido.
Pre = 2160, -- Objeto otorgado.
Pos = { -- Coordenadas donde aparecerá el objeto anterior.
{x = 868, y = 1015, z = 7},
{x = 870, y = 1015, z = 7},
{x = 868, y = 1017, z = 7},
{x = 870, y = 1017, z = 7},
},
Eff = {CONST_ME_HITAREA, CONST_ME_GIFT_WRAPS}, -- {Efecto mágico que aparecerá en el tile del objeto requerido, Efecto mágico que aparecerá en el objeto otorgado},
}
local m = {
accept = 'Han aparecido ' .. #c.Pos .. ' ' .. getItemPluralNameById(c.Pre) .. ' en bla bla bla...', -- Mensaje que saldrá junto con el anterior objeto.
denied = 'No se detecta ningun ' .. getItemNameById(c.Req) .. '...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
}

Puedes poner todas las coordenadas que quieras, cada una separada por una coma.
En cada una aparecerá el mismo objeto, si no entendí mal.


Boss vencido... teletransporta a jugadores del área.

Servidor/Data/Creaturescripts/... Creaturescripts.xml:
<event type="kill" name="killTP" event="script" value="killTP.lua"/>

Servidor/Data/Creaturescripts/Scripts/... Login.lua: (...el archivo ya existente. En una de las líneas, sin que entre en "conflicto" con las demás; pegas la siguiente)
registerCreatureEvent(cid, "killTP")

Servidor/Data/Creaturescripts/Scripts/... killTP.lua:
Código:
  local c = {
    monster = "Wolf", -- "Nombre" del monstruo.
    pos = {x = 875, y = 1018, z = 7}, -- Coordenada de la zona a la que serán teletransportados los jugadores.
    area = {
      fromPos = {x = 873, y = 1020, z = 7}, -- Coordenada de la esquina superior izquierda del área.
      toPos = {x = 877, y = 1024, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    },
  }

function onKill(cid, target)
    if getCreatureName(target) == c.monster and isMonster(target) and isInRange(getThingPos(cid), c.area.fromPos, c.area.toPos) then
        for _, all in ipairs(getPlayersOnline()) do
            if isInRange(getThingPos(all), c.area.fromPos, c.area.toPos) then
                doTeleportThing(all, c.pos)
            end
        end
    end
  return true
end

Zona a editar:
local c = {
monster = "Wolf", -- "Nombre" del monstruo.
pos = {x = 875, y = 1018, z = 7}, -- Coordenada de la zona a la que serán teletransportados los jugadores.
area = {
fromPos = {x = 873, y = 1020, z = 7}, -- Coordenada de la esquina superior izquierda del área.
toPos = {x = 877, y = 1024, z = 7}, -- Coordenada de la esquina inferior derecha del área.
},
}

Respecto a las coordenadas del área, me refiero por ejemplo a:
[Tienes que estar registrado y conectado para ver esa imagen]



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]

#7 Re: Script para aparecer monster. el Dom Dic 28, 2014 12:56 am

Healersitito


Novato
[Tienes que estar registrado y conectado para ver este vínculo] escribió:
diegogo escribió:Me gano belero ya estaba por terminar el script (
Jaja. Sí, es una cagada. Ya me ha pasado en otras ocasiones y da coraje.
Seré generoso y dejaré que hagas antes los 2127 pedidos restantes Yao ming


[Tienes que estar registrado y conectado para ver este vínculo] escribió:MAN GRACIAS!!!!, OTRA COSA, TENDRAS UNO PARECIDO?, OSEA QUE AL YO PONER UN ITEM EN CIERTO SQM APAREZCA UN OBJETO EN CIERTAS COORDENADAS?, TAMBIEN NECESITO UNO QUE CUANDO EQUIS CANTIDAD DE PERSONAS MATEN A UN BOSS DENTRO DE UN AREA TODOS LOS JUGADORES DENTRO DE ESA AREA SEAN TELETRANSPORTADOS A CIERTAS COORDENADAS SIN IMPORTAR SI ATACARON AL BOSS O NO, PORFAVOR.

1. Me alegro de que te haya servido el anterior.
2. Procura escribir siempre(en cualquier sección del foro) almenos la mayoría de tu texto en minúscula.
3. Respecto a los otros pedidos... Al poner un objeto en un lugar, aparecerá el otro objeto en todas las coordenadas que pongas o solo en una?

EDIT:
Objeto requerido... crea otros en coordenadas

Servidor/Data/Movements/... Movements.xml:
<movevent type="AddItem" tileitem="1" uniqueid="3762" event="script" value="sacrifItem.lua"/>
Ése o cualquier otro UniqueId que gustes, que no estés usando ya en otro script es el que le has de poner también con el Remeres al tile donde se deba de poner el objeto requerido.

Servidor/Data/Movements/Scripts/... sacrifItem.lua: (o el nombre que quieras, el mismo que también le hayas puesto en la línea del Movements.xml anterior)
Código:
 local c = {
    Req = 3058, -- Objeto requerido.
    Pre = 2160, -- {Objeto otorgado.
    Pos = { -- Coordenadas donde aparecerá el objeto anterior.
      {x = 868, y = 1015, z = 7},
      {x = 870, y = 1015, z = 7},
      {x = 868, y = 1017, z = 7},
      {x = 870, y = 1017, z = 7},
    },
    Eff = {CONST_ME_HITAREA, CONST_ME_GIFT_WRAPS}, -- {Efecto mágico que aparecerá en el tile del objeto requerido, Efecto mágico que aparecerá en el objeto otorgado},
  }
  local m = {
    accept = 'Han aparecido ' .. #c.Pos .. ' ' .. getItemPluralNameById(c.Pre) .. ' en bla bla bla...', -- Mensaje que saldrá junto con el anterior objeto.
    denied = 'No se detecta ningun ' .. getItemNameById(c.Req) .. '...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
  }

function onAddItem(moveitem, tileitem, position, cid)
  local msg, type = '', {}
    if isPlayer(cid) then
        if moveitem.itemid == c.Req then
            doRemoveItem (moveitem.uid)
            doSendMagicEffect(position, c.Eff[1])
            msg, type = m.accept, MESSAGE_EVENT_ADVANCE
            for i = 1, #c.Pos do
                doCreateItem(c.Pre, 1, c.Pos[i])
                doSendMagicEffect(c.Pos[i], c.Eff[2])
            end
        else
          msg, type = m.denied, MESSAGE_STATUS_SMALL
        end
        doPlayerSendTextMessage(cid, type, msg)
    end
  return true
end

Zona a editar:
local c = {
Req = 3058, -- Objeto requerido.
Pre = 2160, -- Objeto otorgado.
Pos = { -- Coordenadas donde aparecerá el objeto anterior.
{x = 868, y = 1015, z = 7},
{x = 870, y = 1015, z = 7},
{x = 868, y = 1017, z = 7},
{x = 870, y = 1017, z = 7},
},
Eff = {CONST_ME_HITAREA, CONST_ME_GIFT_WRAPS}, -- {Efecto mágico que aparecerá en el tile del objeto requerido, Efecto mágico que aparecerá en el objeto otorgado},
}
local m = {
accept = 'Han aparecido ' .. #c.Pos .. ' ' .. getItemPluralNameById(c.Pre) .. ' en bla bla bla...', -- Mensaje que saldrá junto con el anterior objeto.
denied = 'No se detecta ningun ' .. getItemNameById(c.Req) .. '...', -- Mensaje que saldrá cuando se deposite cualquier otro objeto no requerido.
}

Puedes poner todas las coordenadas que quieras, cada una separada por una coma.
En cada una aparecerá el mismo objeto, si no entendí mal.


Boss vencido... teletransporta a jugadores del área.

Servidor/Data/Creaturescripts/... Creaturescripts.xml:
<event type="kill" name="killTP" event="script" value="killTP.lua"/>

Servidor/Data/Creaturescripts/Scripts/... Login.lua: (...el archivo ya existente. En una de las líneas, sin que entre en "conflicto" con las demás; pegas la siguiente)
registerCreatureEvent(cid, "killTP")

Servidor/Data/Creaturescripts/Scripts/... killTP.lua:
Código:
  local c = {
    monster = "Wolf", -- "Nombre" del monstruo.
    pos = {x = 875, y = 1018, z = 7}, -- Coordenada de la zona a la que serán teletransportados los jugadores.
    area = {
      fromPos = {x = 873, y = 1020, z = 7}, -- Coordenada de la esquina superior izquierda del área.
      toPos = {x = 877, y = 1024, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    },
  }

function onKill(cid, target)
    if getCreatureName(target) == c.monster and isMonster(target) and isInRange(getThingPos(cid), c.area.fromPos, c.area.toPos) then
        for _, all in ipairs(getPlayersOnline()) do
            if isInRange(getThingPos(all), c.area.fromPos, c.area.toPos) then
                doTeleportThing(all, c.pos)
            end
        end
    end
  return true
end

Zona a editar:
local c = {
monster = "Wolf", -- "Nombre" del monstruo.
pos = {x = 875, y = 1018, z = 7}, -- Coordenada de la zona a la que serán teletransportados los jugadores.
area = {
fromPos = {x = 873, y = 1020, z = 7}, -- Coordenada de la esquina superior izquierda del área.
toPos = {x = 877, y = 1024, z = 7}, -- Coordenada de la esquina inferior derecha del área.
},
}

Respecto a las coordenadas del área, me refiero por ejemplo a:
[Tienes que estar registrado y conectado para ver esa imagen]

Gracias!!, una ultima cosa y disculpa la molestia, como le hago para que una vocacion pueda usar 2 armas osea 2 sword a la vez o 2 axe a la vez o 2 wands a la vez ?,me an dicho que es con el attributte wielding algo asi o editando sources, pero con lo del attribute no me sirve, y lo de sources no tengo la mas minima idea de a que se refiera, me podrias ayudar con eso?

#8 Re: Script para aparecer monster. el Dom Dic 28, 2014 1:02 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Gracias!!, una ultima cosa y disculpa la molestia, como le hago para que una vocacion pueda usar 2 armas osea 2 sword a la vez o 2 axe a la vez o 2 wands a la vez ?,me an dicho que es con el attributte wielding algo asi o editando sources, pero con lo del attribute no me sirve, y lo de sources no tengo la mas minima idea de a que se refiera, me podrias ayudar con eso?
Ahí me has pillado , ni zorri idea la verdad...
Creía que ya habías puesto los scripts anteriores en tu servidor. Prueba a ponerlos cuando puedas, antes de cantar victoria por si tienes alguna duda/problema con cualquier parte.



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]

#9 Re: Script para aparecer monster. el Dom Dic 28, 2014 2:05 am

Healersitito


Novato
[Tienes que estar registrado y conectado para ver este vínculo] escribió:
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Gracias!!, una ultima cosa y disculpa la molestia, como le hago para que una vocacion pueda usar 2 armas osea 2 sword a la vez o 2 axe a la vez o 2 wands a la vez ?,me an dicho que es con el attributte wielding algo asi o editando sources, pero con lo del attribute no me sirve, y lo de sources no tengo la mas minima idea de a que se refiera, me podrias ayudar con eso?
Ahí me has pillado , ni zorri idea la verdad...
Creía que ya habías puesto los scripts anteriores en tu servidor. Prueba a ponerlos cuando puedas, antes de cantar victoria por si tienes alguna duda/problema con cualquier parte.

Listo!, todos me sirvieron, solo una cosa,el npc nose crearlo, queria saber si me haces el favor de crear uno con el looktype de la estatua y que unicamente diga,Para Invocar al Chaos Ifrit Necesito un sacrificio!!! o algo parecido pls ah, y si podrias entrar a mi ot xd 190.203.209.141 8.6

#10 Re: Script para aparecer monster. el Dom Dic 28, 2014 7:47 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Listo!, todos me sirvieron, solo una cosa,el npc nose crearlo, queria saber si me haces el favor de crear uno con el looktype de la estatua y que unicamente diga,Para Invocar al Chaos Ifrit Necesito un sacrificio!!! o algo parecido pls   ah, y si podrias entrar a mi ot xd   190.203.209.141      8.6

Servidor/Data/Npc/... (llamas al archivo.xml como vayas a llamar al Npc) le pondré Caronte.xml:
Código:
<npc name="Caronte" lookdir="1" walkinterval="0" floorchange="0">
<look typeex="9242"/>
<!-- idletime="Segundos que han de transcurrir para que el NPC deje de prestarle atención al jugador" -->
    <interaction range="3" idletime="1" defaultpublic="0">
        <!-- keywords="Palabra clave con la que el jugador ha de saludar". -->
        <interact keywords="hi" focus="1">
            <!-- Más palabras clave adicionales, para el Saludo del jugador -->
            <keywords>hello</keywords>
            <keywords>greet</keywords>
            <keywords>hey</keywords>
            <keywords>hola</keywords>
            <keywords>ola ke ase</keywords>
                <!-- Contestación del Npc al saludo del jugador -->
                <response text="Si al Chaos Ifrit deseas invocar, un sacrificio(cadaver) me has de dar!!" public="1"/>
        </interact>
    </interaction>
</npc>

Luego en el remeres...
[Tienes que estar registrado y conectado para ver esa imagen]

Aunque tengas activada la opción de que se puedan ver la criaturas, igualmente seguirá invisible. Es normal y ocurre cuando la cual posee el aspecto físico de un objeto. Solo podrás ver que la has puesto si deslizas por encima el cursor del ratón y te aparezca abajo las características del Npc:
[Tienes que estar registrado y conectado para ver esa imagen]

Pero obviamente dentro del juego se verá bien.



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]

#11 Re: Script para aparecer monster. el Lun Feb 09, 2015 4:17 am

raizacore


Novato
belero tengo un problemita con lo del tpboss hise todo como lo explicaste pero no me funciona , al ejecutar el servidor no me marcaca ningun error , pero al matar el monstruo no pasa nada .
si me pudieses ayudar de favor , lo probe en un server 10.10

#12 Re: Script para aparecer monster. el Lun Feb 09, 2015 6:27 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:belero tengo un problemita con lo del tpboss hise todo como lo explicaste pero no me funciona , al ejecutar el servidor no me marcaca ningun error , pero al matar el monstruo no pasa nada .
si me pudieses ayudar de favor , lo probe en un server 10.10
¿Todo?, ¿seguro?.
- Registrar el evento en Login.lua
- Cerciorar de que hayas puesto bien cada número de ambas coordenadas del área que conformarán:
fromPos = {x = 873, y = 1020, z = 7}, -- Coordenada de la esquina superior izquierda del área.
toPos = {x = 877, y = 1024, z = 7}, -- Coordenada de la esquina inferior derecha del área.
[Tienes que estar registrado y conectado para ver esa imagen]

Dime el nombre & versión de tu servidor, (ha de aparecer arriba del todo en la consola.exe).



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]

#13 Re: Script para aparecer monster. el Mar Feb 10, 2015 2:00 am

raizacore


Novato
[Tienes que estar registrado y conectado para ver esa imagen]

espero y se vea la imagen pero asi lo guarde en killtp.lua

y en el login tambien lo registre arriba de todos los registerCreatureEvent

y tambien tengo el script

#14 Re: Script para aparecer monster. el Mar Feb 10, 2015 2:06 am

ArcaniaOnline


Miembro
Post:
[Tienes que estar registrado y conectado para ver este vínculo] escribió:[Tienes que estar registrado y conectado para ver esa imagen]

espero y se vea la imagen pero asi lo guarde en killtp.lua

y en el login tambien lo registre arriba de todos los registerCreatureEvent

y tambien tengo el script

Amigo revisa que la posicion del templo este bien agregada, si no lo de la casa o lugar donde mataras la bestia para transportarte, si no agrega un storage value lo tepeara si no tiene añadido ese valor

Código:
local storage = 12000 -- Storage revisa que no este repetido
  local c = {
    monster = "INGRESAMONSTRUOAQUI", -- "Nombre" del monstruo.
    pos = {x = 57, y = 1131, z = 7}, -- Coordenada de la zona a la que serán teletransportados los jugadores.
    area = {
      fromPos = {x = 656, y = 519, z = 7}, -- Coordenada de la esquina superior izquierda del área.
      toPos = {x = 659, y = 522, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    },
  }

function onKill(cid, target)
    if getCreatureName(target) == c.monster and isMonster(target) and isInRange(getThingPos(cid), c.area.fromPos, c.area.toPos) and getPlayerStorageValue(cid, storage) == -1 then
        setPlayerStorageValue(cid, storage, 1) -- Storage para no repetirse el teleport al matar la bestia
        for _, all in ipairs(getPlayersOnline()) do
            if isInRange(getThingPos(all), c.area.fromPos, c.area.toPos) then
            doBroadcastMessage("Ragraman has Been Defeated") -- Mensaje por global que ha muerto el raid
                doTeleportThing(all, c.pos)
            end
        end
    end
  return true
end

El mensaje doBroadCast puedes borrarlo si deseas es solo un detallito para que se envie por global cuando muera el raid

#15 Re: Script para aparecer monster. el Mar Feb 10, 2015 7:58 am

Belerofonte


Administrador
@raizacore. Valep. Y entiendes que el monster cuando muera ha de estar dentro del área, ¿no?.
Repito: Dime el nombre & versión de tu servidor, (ha de aparecer arriba del todo en la consola.exe).

@ArcaniaOnline. No tiene sentido poner Storage xD
O sea, lo pusiste para que no teletransporten a los jugadores que ya hayan estado ahí anteriormente, vale.
Pero el usuario no pidió nada de eso, ni nada de Globalmensaje o.O
Dependiendo del mapa que le haya hecho tal vez esos jugadores se queden ahí atrapados en esa zona si no tienen otra salida ;D

Claro que soy partidiario y muchas veces he hecho cambios en los scripts que han pedido en busca de hacerlos más vistosos o teatrales (por ejemeplo, en la estatua de arriba) pero sin que interfiera en el original funcionamiento de todo el script ;D



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]

#16 Re: Script para aparecer monster. el Mar Feb 10, 2015 8:42 am

ArcaniaOnline


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] escribió:@raizacore. Valep. Y entiendes que el monster cuando muera ha de estar dentro del área, ¿no?.
Repito: Dime el nombre & versión de tu servidor, (ha de aparecer arriba del todo en la consola.exe).

@ArcaniaOnline. No tiene sentido poner Storage xD
O sea, lo pusiste para que no teletransporten a los jugadores que ya hayan estado ahí anteriormente, vale.
Pero el usuario no pidió nada de eso, ni nada de Globalmensaje o.O
Dependiendo del mapa que le haya hecho tal vez esos jugadores se queden ahí atrapados en esa zona si no tienen otra salida ;D

Claro que soy partidiario y muchas veces he hecho cambios en los scripts que han pedido en busca de hacerlos más vistosos o teatrales (por ejemeplo, en la estatua de arriba) pero sin que interfiera en el original funcionamiento de todo el script ;D

Claro @Belerofonte si entiendo tu idea por eso le deje marcado que los podía borrar sin problemas y antes de eso le dije lo mismo que ti :p su problema debe ser de seguro que alguna posición esta mal.

#17 Re: Script para aparecer monster. el Miér Feb 11, 2015 4:15 pm

raizacore


Novato
the forgotten serversion  0.3.7

y lo pruebo en una version 10.10 del tibia


y si puse las cordenadas en la esquina superior e inferior y cuando mato al monstruo estamos parados en el centro de la pantalla

#18 Re: Script para aparecer monster. el Miér Feb 11, 2015 11:34 pm

ArcaniaOnline


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] escribió:the forgotten serversion  0.3.7

y lo pruebo en una version 10.10 del tibia


y si puse las cordenadas en la esquina superior e inferior y cuando mato al monstruo estamos parados en el centro de la pantalla

Que raro mira

Código:
  local c = {
    monster = "Wolf", -- "Nombre" del monstruo.
    pos = {x = 875, y = 1018, z = 7}, -- Coordenada de la zona a la que serán teletransportados los jugadores. <<
    area = {
      fromPos = {x = 873, y = 1020, z = 7}, -- Coordenada de la esquina superior izquierda del área.
      toPos = {x = 877, y = 1024, z = 7}, -- Coordenada de la esquina inferior derecha del área.
    },
  }

Lo mas probable es que
Código:
  pos = {x = 875, y = 1018, z = 7}, -- Coordenada de la zona a la que serán teletransportados los jugadores. <<
Si estuviera mala el post de destino te arrojaria un error en la consola dependiendo si es un lugar sin un piso estable para un jugador, de todos modos revisala o intenta dejar la ip de tu server para revisar bien el tema in-game.

@Bele sabe mucho mas que yo el quizas sepa otra solución aparte de mirar el script tal vez la funcion de doTeleportThing(all, c.pos) No sirve en tu servidor

#19 Re: Script para aparecer monster. Hoy a las 10:47 pm

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 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 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 .