tenta assim ![]()
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 onCreatureSayCallback(cid, type, msg)
local config = {
price = 50000,
delay = 3 * 1,
control = {10555, 10556},
eggn = 12319
}
if not npcHandler:isFocused(cid) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, "care") then
local p = (config.price % 1000 == 0 and (config.price / 1000) or config.price)
if getPlayerStorageValue(cid, config.control) > os.time() then
selfSay("Sorry, but I am already caring one of your eggs.", cid)
else
selfSay("Do you want me to take care of your egg for ".. p .." ".. (p == config.price and "" or "k") .."?", cid)
talkState[talkUser] = 1
end
elseif msgcontains(msg, "check") then
if getPlayerStorageValue(cid, config.control[2]) == 1 then
selfSay("Hello, do you came to pick up your egg?", cid)
talkState[talkUser] = 2
else
selfSay("Sorry, but I am not caring eggs from you.", cid)
end
elseif msgcontains(msg, "back") then
local t = getPlayerStorageValue(cid, config.control[1])
if getPlayerStorageValue(cid, config.control[2]) == -1 then
selfSay("Sorry, but I am not caring eggs from you.", cid)
else
if t < os.time() then
doPlayerAddItem(cid, 12310, 1)
selfSay("Yay, your egg has started to hatch, take it.", cid)
setPlayerStorageValue(cid, config.control[1], -1)
setPlayerStorageValue(cid, config.control[2], -1)
else
selfSay("I will be caring your egg for more ".. (math.floor((t - os.time()) / 60) > 0 and "".. math.floor((t - os.time()) / 60) .." minutes and" or "") .." ".. (t - os.time()) % 60 .." seconds.", cid)
end
end
end
if talkState[talkUser] == 1 then
if msgcontains(msg, "yes") then
if getPlayerStorageValue(cid, config.control[2]) == -1 then
if getPlayerItemCount(cid, 12319) < 1 then
SelfSay("desculpe mais você não tem o egg!", cid)
talkState[talkUser] = 0
return true
end
if doPlayerRemoveMoney(cid, config.price) then
doPlayerRemoveItem(cid, 12319, 1)
setPlayerStorageValue(cid, config.control[2], 1)
setPlayerStorageValue(cid, config.control[1], os.time()+config.delay)
selfSay("Okay! Check back soon.",cid)
else
selfSay("Sorry, you don't have enough money. You need more ".. (config.price - getPlayerMoney(cid)) .." dollars.", cid)
end
else
selfSay("I am already taking care of a egg for you.", cid)
end
elseif msgcontains(msg, "no") then
selfSay("Too pricey for you, heh?", cid)
end
elseif talkState[talkUser] == 2 then
local x = getPlayerStorageValue(cid, config.control)
local t = getPlayerStorageValue(cid, config.control[1])
if msgcontains(msg, "yes") then
if x > os.time() then
doPlayerAddItem(cid, 12310, 1)
doItemSetAttribute(item, "description", "A hatched egg.")
selfSay("Take it!", cid)
setPlayerStorageValue(cid, control[2], -1)
setPlayerStorageValue(cid, control[1], -1)
else
selfSay("Sorry, but your egg need care for more ".. (math.floor((t - os.time()) / 3) > 0 and "".. math.floor((t - os.time()) / 3) .." minutes and" or "") .." ".. (t - os.time()) % 3 .." seconds.", cid)
end
end
end
return true
end
npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME|. I am a pet egg carer. Do you want me to {care} your pet eggs? Also you can {check} the egg status and if you have any egg here, you can get it {back}.")
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, onCreatureSayCallback)
npcHandler:addModule(FocusModule:new())








info
Grupo: Campones
Registrado: 18/06/07
Posts: 78
Reputação: +14
Ola,
Eu estava usando meu npc de Egg System(SkyDangerous) normalmente, mas agora mexi em alguma coisa que esta interferindo na checagem de tal item... Então gostaria que algúem me desse uma ajudinha no que está faltando pois não sou muito experiente em script.
• Eplicação da função do npc:
Ao falar "hi" o npc diz que ele pode cuidar dos eggs, ao falar "care" ele pede um preço + o egg para ser cuidado, ao falar "yes" remove o price + o egg da bag, e assim começa uma contagem de tempo, ai você pode checar o tempo do egg "check", ou pega-lo devolta "back". Quando passar o tempo, você diz "back" e recebe um novo egg(chocado).
• Problema:
Quando eu digo "yes" o npc retira do player o preço(5000 dollar) e também o egg(id: 12319) e começa a contagem normalmente, massss ele não está checando se possúi o egg, removendo mesmo assim os 2 itens pedidos. Ai da pra falar "yes" sem ter o egg, só o dinheiro.
• Possível solução:
Fazer uma função if PlayerRemoveItem(cid, 12319,1) fazer o npc exigir o egg falando "You don't have an egg" junto com o dinheiro cobrado.
• Script (modificado):
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 onCreatureSayCallback(cid, type, msg)
local config = {
price = 50000,
delay = 3 * 1,
control = {10555, 10556},
eggn = 12319
}
if not npcHandler:isFocused(cid) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, "care") then
local p = (config.price % 1000 == 0 and (config.price / 1000) or config.price)
if getPlayerStorageValue(cid, config.control) > os.time() then
selfSay("Sorry, but I am already caring one of your eggs.", cid)
else
selfSay("Do you want me to take care of your egg for ".. p .." ".. (p == config.price and "" or "k") .."?", cid)
talkState[talkUser] = 1
end
elseif msgcontains(msg, "check") then
if getPlayerStorageValue(cid, config.control[2]) == 1 then
selfSay("Hello, do you came to pick up your egg?", cid)
talkState[talkUser] = 2
else
selfSay("Sorry, but I am not caring eggs from you.", cid)
end
elseif msgcontains(msg, "back") then
local t = getPlayerStorageValue(cid, config.control[1])
if getPlayerStorageValue(cid, config.control[2]) == -1 then
selfSay("Sorry, but I am not caring eggs from you.", cid)
else
if t < os.time() then
doPlayerAddItem(cid, 12310, 1)
selfSay("Yay, your egg has started to hatch, take it.", cid)
setPlayerStorageValue(cid, config.control[1], -1)
setPlayerStorageValue(cid, config.control[2], -1)
else
selfSay("I will be caring your egg for more ".. (math.floor((t - os.time()) / 60) > 0 and "".. math.floor((t - os.time()) / 60) .." minutes and" or "") .." ".. (t - os.time()) % 60 .." seconds.", cid)
end
end
end
if talkState[talkUser] == 1 then
if msgcontains(msg, "yes") then
if getPlayerStorageValue(cid, config.control[2]) == -1 then
if doPlayerRemoveMoney(cid, config.price) then
doPlayerRemoveItem(cid, 12319, 1)
setPlayerStorageValue(cid, config.control[2], 1)
setPlayerStorageValue(cid, config.control[1], os.time()+config.delay)
selfSay("Okay! Check back soon.",cid)
else
selfSay("Sorry, you don't have enough money. You need more ".. (config.price - getPlayerMoney(cid)) .." dollars.", cid)
end
else
selfSay("I am already taking care of a egg for you.", cid)
end
elseif msgcontains(msg, "no") then
selfSay("Too pricey for you, heh?", cid)
end
elseif talkState[talkUser] == 2 then
local x = getPlayerStorageValue(cid, config.control)
local t = getPlayerStorageValue(cid, config.control[1])
if msgcontains(msg, "yes") then
if x > os.time() then
doPlayerAddItem(cid, 12310, 1)
doItemSetAttribute(item, "description", "A hatched egg.")
selfSay("Take it!", cid)
setPlayerStorageValue(cid, control[2], -1)
setPlayerStorageValue(cid, control[1], -1)
else
selfSay("Sorry, but your egg need care for more ".. (math.floor((t - os.time()) / 3) > 0 and "".. math.floor((t - os.time()) / 3) .." minutes and" or "") .." ".. (t - os.time()) % 3 .." seconds.", cid)
end
end
end
return true
end
npcHandler:setMessage(MESSAGE_GREET, "Hello, |PLAYERNAME|. I am a pet egg carer. Do you want me to {care} your pet eggs? Also you can {check} the egg status and if you have any egg here, you can get it {back}.")
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, onCreatureSayCallback)
npcHandler:addModule(FocusModule:new())
Roxo: local do problema (eu acho).
Preciso de ajuda, sempre resolvi tudo aqui pelo Xtibia, tem muita gente legal aqui, obrigado.
Editado Fevereiro 2 por 0BoM