BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido] Npc que de acceso a un area

[Pedido] Npc que de acceso a un area

#1 [Pedido] Npc que de acceso a un area el Dom Jun 29, 2014 3:21 pm

Alarcon10


Miembro
Buenas a todos, como dice el titulo, ocupo un npc que te pida cierto ítem X, si se lo entregas, te de acceso a una zona, dicha zona tendrá a su entrada unos sqm que dejen entrar a los que tienen el acceso y se los niegue a quienes no.

Se que es algo larguito pero, si me pudieran ayudar se los agradecería muchísimo
El servidor es OTX versión no se cual, pero es el OTX Emporia


Muchísimas gracias

#2 Re: [Pedido] Npc que de acceso a un area el Lun Jun 30, 2014 10:39 am

Belerofonte


Administrador
Servidor/Data/Movements/Movements.xml y en una de las líneas pegas la siguiente:
Código:
<movevent type="StepIn" actionid="11602" event="script" value="NombreDelLUA.lua"/>
El número que le hayas puesto al ActionID es el que le has de poner al los tiles del inicio de la zona.

Luego te vas a tu Servidor/Data/Movements/Scripts/... copias un archivo.lua cualquiera de los que haya y lo pegas en esa misma carpeta, le cambias el nombre que tenga por el de NombreDelLUA, lo abres & sutitúyes todo lo que haya dentro a cambio de lo siguiente:
Código:
local Config = {
  StrArea = 78565, -- Mismo número del Storage que le hayas puesto al NPC.
  Msg = "Antes has de hablar con Aurelio." -- Mensaje que le saldrá al jugador que no tenga el Storage requerido.
  }
function onStepIn(cid, item, pos, fromPos, toPos)
    if isPlayer(cid) and getPlayerStorageValue(cid, Config.StrArea) ~= 2 then
        doSendMagicEffect(pos, CONST_ME_POFF)
        doTeleportThing(cid, fromPos)
        doPlayerSendCancel(cid, Config.Msg)
    end
  return true
end



Servidor/Data/Npc/... haces un archivo.xml y en el cual pones lo siguiente:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Aurelio" script="daStr.lua" walkinterval="2000" floorchange="0">
  <health now="100" max="100"/>
  <look type="130" head="57" body="116" legs="97" feet="114" addons="0"/>
   <parameters>
        <parameter key="message_greet" value="Uhmmmm... Oh! hola |PLAYERNAME|! {Storage}? Ah! no... nada! por aqui no hay ningun {storage}! {Storage}?, que es eso? No se de que me hablas..."/>
    </parameters>
</npc>


Luego Servidor/Data/Npc/Scripts/... haces un archivo.lua y en el cual pones lo siguiente:
Código:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)       npcHandler:onCreatureAppear(cid)       end
function onCreatureDisappear(cid)     npcHandler:onCreatureDisappear(cid)       end
function onCreatureSay(cid, type, msg)     npcHandler:onCreatureSay(cid, type, msg)     end
function onThink()         npcHandler:onThink()           end

local Config = {
StrArea = 78565, -- Número del Storage Value que gustes, que no esté siendo usado por otro script.
NeedID = 2244 -- ID del objeto requerido entregar al NPC.
}
function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
      return false
    end

  local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if msgcontains(msg, "storage") then -- Palabra clave que ha de decir el jugador para dar paso a las siguientes conversaciones.
        if getPlayerStorageValue(cid, Config.StrArea) == -1 then
            selfSay("Creo que el storage que buscas se fue corriendo por alla... bueno vale me has pillado, no se mentir. Pero solamente te lo dare si a cambio me das " .. getItemNameById(Config.NeedID) .. ". Trato hecho?", cid) -- Cuando el jugador habla con el NPC (haya dicho la palabra clave) por primera vez o no aceptó la misión anteriormente.
            talkState[talkUser] = 1
         elseif getPlayerStorageValue(cid, Config.StrArea) == 1 then
             selfSay("Eso que huelo no seran " .. getItemNameById(Config.NeedID) .. "!?", cid) --Cuando el jugador habla con el NPC (haya dicho la palabra clave) después de haber aceptado la misión.
             talkState[talkUser] = 1
         else
             selfSay("Ya no me quedan mas storages!", cid) -- Cuando el jugador habla con el NPC (haya dicho la palabra clave) y ya haya completado la misión anteriormente.
        end
     elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
         if getPlayerStorageValue(cid, Config.StrArea) == -1 then
             selfSay("Prometido pues!. Vuelve cuando las tengas.", cid) -- Contestación del NPC después de que el jugador haya aceptado la misión.
             setPlayerStorageValue(cid, Config.StrArea, 1)
          else
              if doPlayerRemoveItem(cid, Config.NeedID, 1) then
                  selfSay("Ya son mias! muhAUHuahUAHUhauHAUHha... huahaAHUAHuhahauAUHAUAHAUHAUHAAARRGGHH!!!! Ejemm!!... storage?... uhmmmm... Ah!, si. Todo tuyo!", cid) -- Contestación del NPC cuando se le haya entragado el objeto y con ello el jugador adquirido el Storage de acceso al área.
                  setPlayerStorageValue(cid, Config.StrArea, 2)
                  else
                      selfSay("Ahgg, no trates de estafarme, malandro! Eso no son " .. getItemNameById(Config.NeedID) .. "!!", cid) -- Cuando el jugador afirme "yes" tener el objeto, pero en realidad no lo tenga.
              end
         end
         talkState[talkUser] = 0
     elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then
         selfSay("Si yo no tengo " .. getItemNameById(Config.NeedID) .. ", tu no tendras {storage}!!.", cid) -- Contestación del NPC si el jugador niega "no" cumplir la misión o entregar el objeto requerido.
         talkState[talkUser] = 0
    end
  return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Ya editas las variables , palabra {clave} y contastaciones del NPC dependiéndo de las mini explicaciones que te dejé a su derecha.

Fuentes: [Tienes que estar registrado y conectado para ver este vínculo]



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: [Pedido] Npc que de acceso a un area el Lun Jun 30, 2014 1:43 pm

Alarcon10


Miembro
Muchismimas gracias bro, desde luego que me funciono, una duda, los storages puede ser el que yo guste verda, claro siempre y cuando ya no este en uso pero, cual es el numero máximo
Saludos +

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 .