Jump to content
Close
Sign in to follow this  
Phineasz

Scripting Old Kaio

Recommended Posts

Tentei pegar dois Script diferentes de alguns Npc e configurar os dois para rodar em um Script, mas não deu muito certo. Eu estava tentando fazer com que o Npc verifique se o Player tem a Storage e Teleportasse ele, e se não tiver, ele manda uma mensagem que para ter acesso a área, é preciso de x item. E assim que ele voltar com o x item para o Npc, ele já é Teleportado direto, o item é removido, e ele ganha a storage. Rep+ para quem ajudar, obrigado desde já.

 

Script

Spoiler

xml

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Old Kaio" script="data/npc/scripts/old kaio.lua" walkinterval="0" floorchange="0">
<health now="100" max="100"/>
<look type="224"/>
    <parameters>
        <parameter key="module_shop" value="1" />
        <parameter key="message_greet" value="Quer ir para sacred heaven?." />
    </parameters>
</npc>

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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 talkState = {}

local items = {
    item1 = {13215},
}
local counts = {
    count1 = {1},
}
local DESTINO = {x=604, y=398, z=9}

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, "yes") then
     elseif getPlayerStorageValue(cid,4150) == 1 then
        if getPlayerItemCount(cid, items.item1[1]) >= counts.count1[1] then
          doPlayerRemoveItem(cid, items.item1[1], counts.count1[1])
          setPlayerStorageValue(cid, 4150, 1)
            doSendMagicEffect(getThingPos(cid), 10)
            npcHandler:releaseFocus(cid)
            doTeleportThing(cid, DESTINO)
            doSendMagicEffect(DESTINO, 10)
        elseif getPlayerStorageValue(cid,4150) ~= 1 then
           else
            selfSay("Voce ainda nao possui o acesso a Poeira Sagrada, traga-a ate mim para poder passar.", cid)
         end
    end     
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

O Npc me respondia da seguinte forma.

19:43 R3NN4N [600]: hi
19:43 Old Kaio: Quer ir para sacred heaven?.

19:43 R3NN4N [600]: yes

 

Após a fala dele, ele não fazia mais nada. Sem erro na distro, nem nada, ele apenas não Teleportava e nem falava se precisava do x item



                     Ajudei você? Ótimo, Boa Sorte!!

 

«Projetos:»

Baiak Alpha

 

«Tópicos:»

Widget Gesior

[Solução] Códigos vem com caracteres especias

 

          «Mapas:»        

Cidade [8.60]

Cave de Gelo [8.60]

Cave de Boss [8.60]

 

«Sites:»

DBO Discord

NTO Discord

Baiak Alpha

Share this post


Link to post
Share on other sites

@Phineasz 

Spoiler

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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 talkState = {}

local t = {

	item = 13215, -- itemID
	amount = 1, -- Quantidade
	storage = 4150, -- Storage
	pos = {x = 604, y = 398, z = 9} -- Nova posição
}

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, "yes") and getPlayerStorageValue(cid, t.storage) == 1 then
	if getPlayerItemCount(cid, t.item) >= t.amount then
		doPlayerRemoveItem(cid, t.item, t.amount)
		setPlayerStorageValue(cid, t.storage, 1)
		doSendMagicEffect(getThingPos(cid), 10)
		doTeleportThing(cid, t.pos)
		doSendMagicEffect(t.pos, 10)
		npcHandler:releaseFocus(cid)
	else
		selfSay("Mensagem caso o player nao possua o item.", cid)
	end
else
	selfSay("Mensagem caso o player nao tenha a storage == 1.", cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 


Share this post


Link to post
Share on other sites

@JoviM Funcionou valeu



                     Ajudei você? Ótimo, Boa Sorte!!

 

«Projetos:»

Baiak Alpha

 

«Tópicos:»

Widget Gesior

[Solução] Códigos vem com caracteres especias

 

          «Mapas:»        

Cidade [8.60]

Cave de Gelo [8.60]

Cave de Boss [8.60]

 

«Sites:»

DBO Discord

NTO Discord

Baiak Alpha

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...