DE
pedido

NPC que viaja sem falar "yes"

Por Dennyz Dias, 26 de set. de 2015 em Scripts

resolvido
script
12
1.9k
Dennyz DiasD
26 de setembro de 2015 às 15:30

Eai galera blz

 

Bem queria pedi uma ajuda axo nao e só eu que queria isso é

Sim bastante nego tambem

 

Gostaria de deixar os npc de barco do meu servidor pra viajar sem falar "yes"

 

Exemplo o cara fala hi carlin e ja viaja

Sem precisa fala yes

 

Se alguem puder ajudar

REPP ++

 

Obrigado

julhinhuuJ
26 de setembro de 2015 às 15:42

Também preciso desse npc.

Editado Setembro 26 por julhinhokullitz

zipter98Z
26 de setembro de 2015 às 16:41
Melhor resposta


local config = {

effect = xxx, --Efeito.

price = xxx, --Preço para viajar.

destinations = {

--["message"] = toPos,

--Ex.:

["carlin"] = {x = xxx, y = yyy, z = zzz},

["yalahar"] = {x = x, y = y, z = z},

}

}

 

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

function creatureSayCallback(cid, type, msg)

msg = msg:lower()

if not npcHandler:isFocused(cid) then

return false

elseif not config.destinations[msg] then

return selfSay("This option isn't available.", cid)

elseif getPlayerMoney(cid) < config.price then

return selfSay("You do not have enough money.", cid)

end

 

doPlayerRemoveMoney(cid, config.price)

doTeleportThing(cid, config.destinations[msg])

doSendMagicEffect(getThingPos(cid), config.effect)

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Editado Setembro 27 por zipter98

Dennyz DiasD
26 de setembro de 2015 às 23:14
local destinations = {
    --["message"] = toPos,
    --Ex.:
    ["carlin"] = {x = xxx, y = yyy, z = zzz},
    ["yalahar"] = {x = x, y = y, z = z},
}

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
function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    
    return destinations[msg] and doTeleportThing(cid, destinations[msg]) or selfSay("This option isn't available.", cid)
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())             

Manoow configurei tudo serto mais sempre da isso ao viajar

 

This option isn't available.

 

n da nenhum erro

zipter98Z
27 de setembro de 2015 às 01:05

Letras maiúsculas e minúsculas fazem diferença neste caso. Logo, se for configurado "carlin" e você digitar "Carlin" o NPC lhe responderá que a opção não está disponível.

Levando isso em consideração, você provavelmente está enviando uma mensagem que não foi configurada na tabela destinations.

julhinhuuJ
27 de setembro de 2015 às 01:37

Coloca mais o menos assim:

local destinations = {
["carlin"] = {x =1234, y = 1234, z = 1},   -- 1º destino
["thais"] = {x =1234, y = 1234, z = 2},   -- 2º destino e assim por diante 

}

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
function creatureSayCallback(cid, type, msg)
if not npcHandler:isFocused(cid) then
return false
end

return destinations[msg] and doTeleportThing(cid, destinations[msg]) or selfSay("This option isn't available.", cid)
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Letras maiúsculas e minúsculas fazem diferença neste caso. Logo, se for configurado "carlin" e você digitar "Carlin" o NPC lhe responderá que a opção não está disponível.

Levando isso em consideração, você provavelmente está enviando uma mensagem que não foi configurada na tabela destinations.

 

Zipter não se poderia colocar esta parte assim:

local destinations = {
["carlin","Carlin"] = {x =1234, y = 1234, z = 1}, 
["thais", "Thais"] = {x =1234, y = 1234, z = 2},

}
zipter98Z
27 de setembro de 2015 às 02:28
Uma opção é a seguinte:

Abaixo de:

function creatureSayCallback(cid, type, msg)

coloque:

msg = msg:lower()

Assim, a mensagem do jogador será passada para letras minúsculas.

Exemplo: "Carlin" seria interpretado como "carlin".

julhinhuuJ
27 de setembro de 2015 às 02:35

 

Uma opção é a seguinte:
Abaixo de:
function creatureSayCallback(cid, type, msg)
coloque:
msg = msg:lower()
Assim, a mensagem do jogador será passada para letras minúsculas.
Exemplo: "Carlin" seria interpretado como "carlin".

 

 

Agora sim, o npc está perfeito só falta o Dennyz testa no otserver dele.

 

 

Dennyz DiasD
27 de setembro de 2015 às 11:11

manoow fico Shoow

 

porem player viaja mesmo sem grana

 

da pra por 1 preço?

 

i se der da pra bota um efeito

 

quando viaja

 

aii fexo

 

 

Editado Setembro 27 por Dennyz Dias

zipter98Z
27 de setembro de 2015 às 14:27

OK, código editado.

Dennyz DiasD
27 de setembro de 2015 às 14:38

OK, código editado.

Assim

HAHAHA

 

Obrigado zipter98

 

Tu eo cara

 

do jeito que eu queria

 

Editado Setembro 27 por Dennyz Dias

MudrockM
27 de setembro de 2015 às 14:40

Tópico movido para dúvidas / pedidos resolvidos.