BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

change name doll

change name doll

#1 change name doll el Dom Dic 21, 2014 11:25 pm

jefrisitohxd


Novato
Buenas en mi ot tengo el comando de changename y funciona perfectamente pero quiero qe me remueva un item ejemplo qe yo ponga el item 2289 y si ni tengo el item no haga el comando aqui les dejo el script qe tengo

Código:
local itemId, count, maxTextLenght, delay = 2345, 1, 15, 2 * 1000
local blacklistParam = {"god", "cm", "gm", "tutor", "tester"}

 
function onSay(cid, words, param, channel)
  local text, continue = "You will be kicked in 2 seconds.", true
  local stringSpaceStart, stringSpaceEnd = string.find(param, "[%s]*")
  if(db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";"):getID() ~= -1) then
      text, continue = "That name is already in use.", false
  elseif(getPlayerItemCount(cid, itemId) < count) then
      text, continue = "Te cambiaste el nombre exitosamente.", true
  elseif(not getTilePzInfo(getCreaturePosition(cid))) then
      text, continue = "You must be inside a protection zone to use this command.", false
  elseif(not tostring(param)) then
      text, continue = "Invalid parameter.", false
  elseif((stringSpaceEnd - stringSpaceStart) > 1) then
      text, continue = "Parameter contains too much spaces.", false
  elseif(string.len(tostring(param)) > maxTextLenght) then
      text, continue = "You can use a maximum of " .. maxTextLenght .. " characters.", false
  elseif(string.find(param:lower(), "[^%l%s]") ~= nil) then
      text, continue = "You can not use symbols.", false
  else
      for blacklist = 1, table.maxn(blacklistParam) do
        if(string.find(param:lower(), blacklistParam[blacklist]) ~= nil) then
            text, continue = "Invalid name entry.", false
            break
        end
      end
  end
 
  if(continue == false) then
      doPlayerSendCancel(cid, text)
      return true
  end
 
  db.executeQuery("UPDATE `players` SET `name` = " .. db.escapeString(param) .. " WHERE `id` = " .. getPlayerGUID(cid) .. ";")
  doPlayerRemoveItem(cid, itemId, count)
  doPlayerSendTextMessage(cid, 25, text)
  addEvent(function(cid, forceLogout)
      if(isPlayer(cid)) then
        doRemoveCreature(cid, forceLogout)
      end
  end, delay, cid, false)
  return true
end

#2 Re: change name doll el Lun Dic 22, 2014 7:03 am

Belerofonte


Administrador
Código:
  local c = {
    itemId = 2289, -- ID del objeto requerido.
    count = 1, -- Cantidad del objeto requerido anterior.
    minTextLenght = 4, -- Mínimos carácteres permitidos.
    maxTextLenght = 15, -- Máximos carácteres permitidos.
    delay = 2, -- Segundos que tardará en desconectarse automáticamente el jugador tras cambiarse el nombre.
  }
  local blacklistParam = {"god", "cm", "gm", "tutor", "tester"} -- Palabras no permitidas.

    
function onSay(cid, words, param, channel)
  local text, continue = "You will be kicked in " .. c.delay .. " seconds.", true
  local stringSpaceStart, stringSpaceEnd = string.find(param, "[%s]*")
    if(db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";"):getID() ~= -1) then
        text, continue = "That name is already in use.", false
     elseif(getPlayerItemCount(cid, c.itemId) < c.count) then
        text, continue = "You must to have " .. c.count .. " " .. getItemNameById(c.itemId) .. ".", false
     elseif(not getTilePzInfo(getCreaturePosition(cid))) then
        text, continue = "You must be inside a protection zone to use this command.", false
     elseif(not tostring(param)) then
        text, continue = "Invalid parameter.", false
     elseif((stringSpaceEnd - stringSpaceStart) > 1) then
        text, continue = "Parameter contains too much spaces.", false
     elseif(string.len(tostring(param)) < c.minTextLenght) then
        text, continue = "You can use a minimum of " .. c.minTextLenght .. " characters.", false
     elseif(string.len(tostring(param)) > c.maxTextLenght) then
        text, continue = "You can use a maximum of " .. c.maxTextLenght .. " characters.", false
     elseif(string.find(param:lower(), "[^%l%s]") ~= nil) then
        text, continue = "You can not use symbols.", false
       else
        for blacklist = 1, table.maxn(blacklistParam) do
            if(string.find(param:lower(), blacklistParam[blacklist]) ~= nil) then
                text, continue = "Invalid name entry.", false
              break
            end
        end
    end

    if(continue == false) then
        doPlayerSendCancel(cid, text)
      return true
    end

    db.executeQuery("UPDATE `players` SET `name` = " .. db.escapeString(param) .. " WHERE `id` = " .. getPlayerGUID(cid) .. ";")
    doPlayerRemoveItem(cid, c.itemId, c.count)
    doPlayerSendTextMessage(cid, 25, text)
    addEvent(function(cid, forceLogout)
        if(isPlayer(cid)) then
            doRemoveCreature(cid, forceLogout)
        end
    end, c.delay * 1000, cid, false)
  return true
end

Estaba bien incluso tenía eso incluido apenas faltaba cambiar algún que otro simbolillo puesto incorrectamente.
Y le añadí la condición de que tenga X configurable mínimos carácteres el nombre, porque de la otra forma el jugador podía no ponerse ningún nombre ._.



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: change name doll el Lun Dic 22, 2014 12:38 pm

jefrisitohxd


Novato
Gracias Men

#4 Re: change name doll el Vie Ene 23, 2015 2:20 pm

jpvenditti


Novato
Quisiera saber que debo realizar para incorporar ese comando a mi ot

#5 Re: change name doll el Vie Ene 23, 2015 3:06 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Quisiera saber que debo realizar para incorporar ese comando a mi ot

Servidor/Data/Talkactions/... Talkactions.xml
<talkaction access="0-3" words="!name" event="script" value="changeName.lua"/>
El comando a pronunciar (que quieras poner), seguido del nombre nuevo. Por ejemplo, en el juego se tendrá que decir: !name jpvenditti

El nombre del archivo.lua que contenga ese script, ubicado en: Servidor/Data/Talkactions/Scripts/... copias un archivo.lua cualquiera de los que haya y lo pegas en esa misma carpeta, le cambias el nombre que tenga por ése que le hayas puesto ahí. Lo abres y sustituyes todo lo que haya dentro a cambio de ese script de arriba.



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]

#6 Re: change name doll Hoy a las 12:16 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: 1 Registrado, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: vicente9908

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 .