BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

(Resuelto) [Pedido] Item que da spell.

(Resuelto) [Pedido] Item que da spell.

#1 (Resuelto) [Pedido] Item que da spell. el Miér Abr 13, 2016 3:04 pm

magebbe


Aprendiz
Hola a todos, Por favor me pueden ayudar con esto, Necesito que un item ya sea cualquier item que yo pueda modificar el item que sea ya una vez se le de click derecho salga como una carta en el cual se escribira La magia que uno quiere obtener por ejemplo le doy click al item y coloco el nombre de la magia por ejemplo "ninjakill", Por favor les agradeceria mucho con esto para mi server por favor si es que se puede hacer eso que pido :S

#2 Re: (Resuelto) [Pedido] Item que da spell. el Miér Abr 13, 2016 6:59 pm

Belerofonte


Administrador
¡Excelente idea!

Se supone que para que se pueda escribir en el objeto usado, en tu Servidor/Data/Items/... Items.xml le tienes que poner los siguientes atributos:
Código:
<attribute key="writeable" value="1"/> <--- Para que se le pueda escribir algo.
Código:
<attribute key="maxTextLen" value="512"/> <--- Para estipular la cantidad máxima de caracteres en el texto.
Código:
<attribute key="writeOnceItemId" value="1954"/> <--- Para que una vez se le haya escrito algo, el objeto se transforme en otro distinto. Por ejemplo, que pase de un papel en blanco a un papel con algo escrito estéticamente.

Y dije "se supone" porque no estoy del todo seguro, ya que si le pones dichos atributos por ejemplo a una palanca: no funcionará. Aparecerá la ventanita de diálogo pero sin poder escribir nada.

Así que no servirá con todos los objetos que desees, solo con algunos libros y papeles. Los cuales, ya, tú los vas probando poco a poco para quedarte con el que más te guste.



Si deseas que justamente al escribir la carta vacía, pulsar 'OK' para cerrar la ventana de diálogo y se ejecute el script... Usa éste:
La carta usada será la vacía. Por ejemplo la que posee Id 1947.

Servidor/Data/Creaturescripts/... Creaturescripts.xml
Código:
<event type="textedit" name="spellCard" event="script" value="spellCard.lua"/>

Servidor/Data/Creaturescripts/Scripts/... spellCard.lua
Código:
local emptyCard = 1947 -- Id de la carta vacía.

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

function onTextEdit(cid, item, newText)

  local Belerito = string.gsub(newText, "(%a)([%w_']*)", titleCase)
  local toPosition = getThingPos(item.uid)

    if item.itemid == emptyCard then
        if getPlayerLearnedInstantSpell(cid, newText) == false then

            if doPlayerLearnInstantSpell(cid, newText) == false then
                doRemoveItem(item.uid, 1)
                doCreateItem(emptyCard, 1, toPosition)
                doPlayerSendCancel(cid, 'Hechizo inexistente o mal escrito. Por favor, vuelva a introducirlo.')
              return true
            end

            doRemoveItem(item.uid, 1)
            doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Ha aprendido el hechizo "' .. Belerito .. '". Puede conjurarlo con: ' .. getInstantSpellInfo(false, Belerito).words)

         else
            doRemoveItem(item.uid, 1)
            doCreateItem(emptyCard, 1, toPosition)
            doPlayerSendCancel(cid, 'Ya tenia el hechizo "' .. Belerito .. '" aprendido. Por favor, elija otro.')
        end
    end

  return true
end

Servidor/Data/Creaturescripts/Scripts/... login.lua (el archivo ya existente)
Código:
   registerCreatureEvent(cid, "spellCard")

Si quieres que al escribir la carta vacía, la cual se transforme en una carta escrita, después, el mismo o cualquier otro jugador le haga clíc, y se ejecute el script... Usa éste:
La carta usada será la rellena. Por ejemplo la que posee Id 1954.

Servidor/Data/Actions/... Actions.xml
Código:
<action itemid="1954" event="script" value="spellCard.lua"/>

Servidor/Data/Actions/Scripts/... spellCard.lua
Código:
 local emptyCard = 1947 -- Id de la carta vacía.

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

function onUse(cid, item, fromPosition, itemEx, toPosition)
  local Belerito = string.gsub(getItemText(item.uid), "(%a)([%w_']*)", titleCase)

    if getPlayerLearnedInstantSpell(cid, Belerito) == false then
        if doPlayerLearnInstantSpell(cid, Belerito) == false then
            doRemoveItem(item.uid, 1)
            doCreateItem(emptyCard, 1, toPosition)
            doPlayerSendCancel(cid, 'Hechizo inexistente o mal escrito. Por favor, vuelva a introducirlo.')
          return true
        end

        doRemoveItem(item.uid, 1)
        doSendMagicEffect(fromPosition, CONST_ME_MAGIC_BLUE)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Ha aprendido el hechizo "' .. Belerito .. '". Puede conjurarlo con: ' .. string.gsub(getInstantSpellInfo(false, Belerito).words, "(%a)([%w_']*)", titleCase))

     else
        doRemoveItem(item.uid, 1)
        doCreateItem(emptyCard, 1, toPosition)
        doPlayerSendCancel(cid, 'Ya tenia el hechizo "' .. Belerito .. '" aprendido. Por favor, elija otro.')
    end

  return true
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]

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 .