Ir para conteúdo
  • Cadastre-se

(Resolvido)Old Kaio


Ir para solução Resolvido por Agaka,

Posts Recomendados

  • Moderador

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

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Solução

@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())

 

 

Link para o post
Compartilhar em outros sites
  • Moderador

@JoviM Funcionou valeu

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • 9 months later...
  • Moderador

@JoviM Pode rever o script pra mim de novo pfv? Antes estava funcionando normal, agora tudo que eu falo ele fala que eu não tenho o item, nem a storage, mas eu configurei pra ele pegar o Gold, com ID 2160 só pra testes, mas ele só fica falando isso

image.thumb.png.7a233e8e280e1f7328eb85d5a444f19f.png

 

Eu deixei o script assim

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Old Supremo Kaio" script="old kaio.lua" floorchange="0">
<health now="100" max="100"/>
<look type="457"/>
<parameters>
    <parameter key="message_greet" value="Quer ir para Sacred Heaven?"/>
</parameters>
</npc>

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 = 2160,
    amount = 1,
    storage = 4150,
    pos = {x = 368, y = 797, z = 14}
}

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("Sinto muito mais voce nao tem a Poeira Sagrada... Dizem que ela pode ser encontada na quest Reborn...", cid)
    end
else
    selfSay("Sinto muito mais voce nao tem a Poeira Sagrada... Dizem que ela pode ser encontada na quest Reborn...", cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo