NPC de missão

Hudsin
Por Hudsin
em Scripts

Hudsin

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 03/03/07Posts: 150Gênero: MasculinoChar no Tibia: Kaball Madness

Estou configurando NPCs de missão que usam esse script:

 

 

 

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


local talkState = {}
local quest = 76669  -- O que significa esse numero?
local reward = 70000  -- E esse?


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)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(not npcHandler:isFocused(cid)) then
return false
elseif msgcontains(msg, "sim") and talkState[talkUser] == 1 then
npcHandler:say("Muito obrigado! Você será muito bem recompensado {ok}?", cid)
talkState[talkUser] = 2
elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then
npcHandler:say("Certo, entre esse portal, seja cauteloso! Apresse-se!", cid)
setPlayerStorageValue(cid, quest, 2)
talkState[talkUser] = 0
elseif msgcontains(msg, "ajuda") then
local str = getPlayerStorageValue(cid, quest)
if(str < 2) then
npcHandler:say("Aventureiro, eu preciso que você limpe o lugar de onde esses vermes veêm! Elimine 20 rotworms para mim? {sim} ", cid) 
talkState[talkUser] = 1
return true
elseif(str == 2) then
npcHandler:say("Você concluiu a missão, volte para buscar sua recompensa.", cid)
elseif(str == 3) then
npcHandler:say("Muito obrigado por eliminar essas pragas! Aqui está sua recompensa.", cid)
doPlayerAddItem(cid, 2648, 1)
doPlayerAddExp(cid, 3100)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recebeu uma Chain Legs e 3100EXP. Procure Arkires, no cemitério ao norte, ele precisa de sua ajuda. ")
setPlayerStorageValue(cid, quest, 4)
elseif(str == 4) then
npcHandler:say("Você tem feito o suficiente para mim, Siga ao notrte e encontre Arkires, ele precisa de sua ajuda! ", cid)
end
talkState[talkUser] = 0
end
return TRUE
end


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

 

 

 

Minha dúvida é:

Esse script checa se o player ja concluiu a quest caso ele tente fazer a mesma missão outra vez?

Quero que seja possível fazer apenas 1 vez por char.

 

Rep+ pra quem checar p/ mim, obrigado.

aseFp.gif

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Hudsin

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 03/03/07Posts: 150Gênero: MasculinoChar no Tibia: Kaball Madness

Ja ta configurado certo. Só pode fazer uma vez

 

Valeu!

 

Sabe me dizer pra que serve os numeros dessa parte?

local talkState = {}
local quest = 76669 -- O que significa esse numero?
local reward = 70000 -- E esse?

É storage da missao e da recompensa?

aseFp.gif

GustavoCastilho

Soberano!
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 21/07/13Posts: 143

Esses valores são os chamados 'Storage Values'. Eles são como slots de memória: armazenam valores. Quando você cumprir a missão, no caso desse seu script, será armazenado no slot 76669 o valor 1. Caso o player nunca tenha feita tal missão, fica armazenado outro valor, com isso torna-se possível a checagem.

Work hard to be successful!

 

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

GiovaniRodrigo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/09/13Posts: 9

Reward é uma variável que armazena valores, no seu caso ela armazena o valor 70000, no seu script essa variável está inutilizável, já que a mesma não é usada no script.

Poderia ser uma recompensa que o autor do script iria colocar e pode ter esquecido, já que reward em português significa recompensa.

Essa variável reward poderia ser usada da seguinte maneira.

 

 

doPlayerAddMoney(cid, reward)

O script daria ao cid(jogador) 70000 gold coins, já que a variável reward está com o valor 70000, se você alterar esse valor para 50, ele recebera 50 gold coins.

Hudsin

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 03/03/07Posts: 150Gênero: MasculinoChar no Tibia: Kaball Madness

Reward é uma variável que armazena valores, no seu caso ela armazena o valor 70000, no seu script essa variável está inutilizável, já que a mesma não é usada no script.

Poderia ser uma recompensa que o autor do script iria colocar e pode ter esquecido, já que reward em português significa recompensa.

Essa variável reward poderia ser usada da seguinte maneira.

doPlayerAddMoney(cid, reward)

O script daria ao cid(jogador) 70000 gold coins, já que a variável reward está com o valor 70000, se você alterar esse valor para 50, ele recebera 50 gold coins.

Esse 70000 não é um storage p/ ficar armazenado e saber quando já foi ou não recebido a recompensa (reward) ?

aseFp.gif

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

GustavoCastilho

Soberano!
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 21/07/13Posts: 143

 

Reward é uma variável que armazena valores, no seu caso ela armazena o valor 70000, no seu script essa variável está inutilizável, já que a mesma não é usada no script.

Poderia ser uma recompensa que o autor do script iria colocar e pode ter esquecido, já que reward em português significa recompensa.

Essa variável reward poderia ser usada da seguinte maneira.

doPlayerAddMoney(cid, reward)

O script daria ao cid(jogador) 70000 gold coins, já que a variável reward está com o valor 70000, se você alterar esse valor para 50, ele recebera 50 gold coins.

Esse 70000 não é um storage p/ ficar armazenado e saber quando já foi ou não recebido a recompensa (reward) ?

 

 

Pode ser ambos, mas como não foi utilizado no script, não temos como saber. Apesar de eu achar que esse valor (70000) seria o Storage, pois é bem inviável adicionar 700(70000/100) slots de gold para um player. Seria mais viável adicionar 7 Crystal Coins.

Work hard to be successful!

 

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

 

 

Reward é uma variável que armazena valores, no seu caso ela armazena o valor 70000, no seu script essa variável está inutilizável, já que a mesma não é usada no script.

Poderia ser uma recompensa que o autor do script iria colocar e pode ter esquecido, já que reward em português significa recompensa.

Essa variável reward poderia ser usada da seguinte maneira.

doPlayerAddMoney(cid, reward)

O script daria ao cid(jogador) 70000 gold coins, já que a variável reward está com o valor 70000, se você alterar esse valor para 50, ele recebera 50 gold coins.

Esse 70000 não é um storage p/ ficar armazenado e saber quando já foi ou não recebido a recompensa (reward) ?

 

 

Pode ser ambos, mas como não foi utilizado no script, não temos como saber. Apesar de eu achar que esse valor (70000) seria o Storage, pois é bem inviável adicionar 700(70000/100) slots de gold para um player. Seria mais viável adicionar 7 Crystal Coins.

 

 

 

Gustavo, o nome da variavel nao influencia em nada. Eu poderia usar

 

local batata = 70000

 

E usar ela onde eu quiser, pode ser storage, item, quantia de dinheiro... qualquer coisa. A variavel assim serve pra substituir alguma coisa. Ao inves de ficar colocando sempre 70000, eu coloco so batata que o script interpreta direito

GustavoCastilho

Soberano!
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 21/07/13Posts: 143

 

 

 

Reward é uma variável que armazena valores, no seu caso ela armazena o valor 70000, no seu script essa variável está inutilizável, já que a mesma não é usada no script.

Poderia ser uma recompensa que o autor do script iria colocar e pode ter esquecido, já que reward em português significa recompensa.

Essa variável reward poderia ser usada da seguinte maneira.

doPlayerAddMoney(cid, reward)

O script daria ao cid(jogador) 70000 gold coins, já que a variável reward está com o valor 70000, se você alterar esse valor para 50, ele recebera 50 gold coins.

Esse 70000 não é um storage p/ ficar armazenado e saber quando já foi ou não recebido a recompensa (reward) ?

 

 

Pode ser ambos, mas como não foi utilizado no script, não temos como saber. Apesar de eu achar que esse valor (70000) seria o Storage, pois é bem inviável adicionar 700(70000/100) slots de gold para um player. Seria mais viável adicionar 7 Crystal Coins.

 

 

 

Gustavo, o nome da variavel nao influencia em nada. Eu poderia usar

 

local batata = 70000

 

E usar ela onde eu quiser, pode ser storage, item, quantia de dinheiro... qualquer coisa. A variavel assim serve pra substituir alguma coisa. Ao inves de ficar colocando sempre 70000, eu coloco so batata que o script interpreta direito

 

 

Foi por isso que eu disse que não temos como saber. A variável não foi utilizada, mas, utilizando a lógica, ela PODERIA ser um Storage.

Work hard to be successful!

 

Hudsin

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 03/03/07Posts: 150Gênero: MasculinoChar no Tibia: Kaball Madness

Valeu, ambos reputados

aseFp.gif

Beeki

Ex-Coordenador XDev
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 12/03/11Posts: 1900Gênero: MasculinoChar no Tibia: Nokte

Tópico movido para a seção de dúvidas e pedidos resolvidos.

Fabio Augustus - Infraestrutura

Skype: guhsvasc