Ir para conteúdo

Problema No Npc King Tibianus


Jonasman

Posts Recomendados

Galera, primeiro descupa se to postando no lugar errado é q so novato no xtibia, mais vamo ao problema

seguinte meu mapa é 8.60 global full(Real Server 3.3 (8.6)) e estou com dois problemas. 1º no king tibianus toda ves que vou comprar a promotion ele nao vende, ele ate pergunta se quero compra mais quando digo yes ele nao reage a nada fica sem faze nada e o char continua na mesma

script dele:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="King Tibianus" script="data/npc/scripts/Sell/promotion.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="332" head="21" body="87" legs="107" feet="95" addons="0"/>

<parameters>

<parameter key="message_greet" value="Hi there, how's it hanging, |PLAYERNAME|!"/>

<parameter key="message_farewell" value="Good bye, |PLAYERNAME|!"/>

<parameter key="module_keywords" value="1" />

<parameter key="keywords" value="hail king;job;promotion;" />

<parameter key="keyword_reply1" value="I greet thee, my loyal subject |PLAYERNAME|." />

<parameter key="keyword_reply2" value="I am your sovereign, King Tibianus III, and it's my duty to provide justice and guidance for my subjects." />

<parameter key="keyword_reply3" value="Do you want to be promoted in your vocation for 20000 gold?" />

 

<parameter key="module_shop" value="1"/>

<parameter key="shop_sellable" value="" />

<parameter key="shop_buyable" value="" />

</parameters>

</npc>

 

2º é o npc naji que nao devolve a grana. ele guarda faz tudo menos quando vai saca o grana(withdraw)

script dele:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Naji" script="bank.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="129" head="57" body="132" legs="114" feet="132" addons="0"/>

<parameters>

<parameter key="message_greet" value="Welcome to the Tibian {bank}, |PLAYERNAME|! What can I do for you?"/>

<parameter key="message_farewell" value="Good bye."/>

<parameter key="module_keywords" value="1" />

<parameter key="keywords" value="bank;job;" />

<parameter key="keyword_reply1" value="We can change money for you. You can also access your bank account." />

<parameter key="keyword_reply2" value="I work in this bank. I can change money for you and help you with your bank account." />

 

<parameter key="module_shop" value="1"/>

<parameter key="shop_sellable" value="" />

<parameter key="shop_buyable" value="" />

</parameters>

</npc>

 

por favor me ajudem

qualquer coisa add ai

jonathan-slip1@hotmail.com

vlw

Link para o comentário
Compartilhar em outros sites

A blz entao ai vai

king tibianus::

 

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 node1 = keywordHandler:addKeyword({'promot'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 20000 gold coins. Do you want me to promote you?'})

node1:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, cost = 20000, level = 20, promotion = 1, text = 'Congratulations! You are now promoted.'})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true})

--[[

local node2 = keywordHandler:addKeyword({'epic'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can epicize you for 200000 gold coins. Do you want me to epicize you?'})

node2:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, cost = 200000, level = 120, promotion = 2, text = 'Congratulations! You are now epicized.'})

node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true})

]]--

 

npcHandler:addModule(FocusModule:new())

 

 

 

 

 

 

 

 

e naji

 

 

 

local config = {

transferDisabledVocations = {0} -- disable non vocation characters

}

 

local talkState = {}

local count = {}

local transfer = {}

 

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

 

if(not getPlayerBalance) then

getPlayerBalance = function(cid)

local result = db.getResult("SELECT `balance` FROM `players` WHERE `id` = " .. getPlayerGUID(cid))

if(result:getID() == -1) then

return false

end

 

local value = tonumber(result:getDataString("balance"))

result:free()

return value

end

 

doPlayerSetBalance = function(cid, balance)

db.executeQuery("UPDATE `players` SET `balance` = " .. balance .. " WHERE `id` = " .. getPlayerGUID(cid))

return true

end

 

doPlayerWithdrawMoney = function(cid, amount)

local balance = getPlayerBalance(cid)

if(amount > balance or not doPlayerAddMoney(cid, amount)) then

return false

end

 

doPlayerSetBalance(cid, balance - amount)

return true

end

 

doPlayerDepositMoney = function(cid, amount)

if(not doPlayerRemoveMoney(cid, amount)) then

return false

end

 

doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)

return true

end

 

doPlayerTransferMoneyTo = function(cid, target, amount)

local balance = getPlayerBalance(cid)

if(amount > balance) then

return false

end

 

local tid = getPlayerByName(target)

if(tid > 0) then

doPlayerSetBalance(tid, getPlayerBalance(tid) + amount)

else

if(playerExists(target) == FALSE) then

return false

end

 

db.executeQuery("UPDATE `player_storage` SET `value` = `value` + '" .. amount .. "' WHERE `player_id` = (SELECT `id` FROM `players` WHERE `name` = '" .. escapeString(player) .. "') AND `key` = '" .. balance_storage .. "'")

end

 

doPlayerSetBalance(cid, getPlayerBalance(cid) - amount)

return true

end

end

 

local function getPlayerVocationByName(name)

local result = db.getResult("SELECT `vocation` FROM `players` WHERE `name` = " .. db.escapeString(name))

if(result:getID() == -1) then

return false

end

 

local value = result:getDataString("vocation")

result:free()

return value

end

 

local function isValidMoney(money)

return (isNumber(money) and money > 0 and money < 4294967296)

end

 

local function getCount(string)

local b, e = string:find("%d+")

local money = b and e and tonumber(string:sub(b, e)) or -1

if(isValidMoney(money)) then

return money

end

return -1

end

 

function greetCallback(cid)

talkState[cid], count[cid], transfer[cid] = 0, nil, nil

return true

end

 

function creatureSayCallback(cid, type, msg)

 

if(not npcHandler:isFocused(cid)) then

return false

end

 

---------------------------- help ------------------------

if msgcontains(msg, 'advanced') then

if isInArray(config.transferDisabledVocations, getPlayerVocation(cid)) then

selfSay("Once you are on the Tibian mainland, you can access new functions of your bank account, such as transferring money to other players safely or taking part in house auctions.", cid)

else

selfSay("Renting a house has never been this easy. Simply make a bid for an auction. We will check immediately if you have enough money.", cid)

end

talkState[cid] = 0

elseif msgcontains(msg, 'help') or msgcontains(msg, 'functions') then

selfSay("You can check the {balance} of your bank account, {deposit} money or {withdraw} it. You can also {transfer} money to other characters, provided that they have a vocation.", cid)

talkState[cid] = 0

elseif msgcontains(msg, 'bank') then

npcHandler:say("We can change money for you. You can also access your bank account.", cid)

talkState[cid] = 0

elseif msgcontains(msg, 'job') then

npcHandler:say("I work in this bank. I can change money for you and help you with your bank account.", cid)

talkState[cid] = 0

---------------------------- balance ---------------------

elseif msgcontains(msg, 'balance') then

selfSay("Your account balance is " .. getPlayerBalance(cid) .. " gold.", cid)

talkState[cid] = 0

---------------------------- deposit ---------------------

elseif msgcontains(msg, 'deposit all') and getPlayerMoney(cid) > 0 then

count[cid] = getPlayerMoney(cid)

if not isValidMoney(count[cid]) then

selfSay("Sorry, but you can't deposit that much.", cid)

talkState[cid] = 0

return false

end

 

if count[cid] < 1 then

selfSay("You don't have any money to deposit in you inventory..", cid)

talkState[cid] = 0

else

selfSay("Would you really like to deposit " .. count[cid] .. " gold?", cid)

talkState[cid] = 2

end

elseif msgcontains(msg, 'deposit') then

selfSay("Please tell me how much gold it is you would like to deposit.", cid)

talkState[cid] = 1

elseif talkState[cid] == 1 then

count[cid] = getCount(msg)

if isValidMoney(count[cid]) then

selfSay("Would you really like to deposit " .. count[cid] .. " gold?", cid)

talkState[cid] = 2

else

selfSay("Is isnt valid amount of gold to deposit.", cid)

talkState[cid] = 0

end

elseif talkState[cid] == 2 then

if msgcontains(msg, 'yes') then

if not doPlayerDepositMoney(cid, count[cid]) then

selfSay("You don\'t have enough gold.", cid)

else

selfSay("Alright, we have added the amount of " .. count[cid] .. " gold to your balance. You can withdraw your money anytime you want to. Your account balance is " .. getPlayerBalance(cid) .. ".", cid)

end

elseif msgcontains(msg, 'no') then

selfSay("As you wish. Is there something else I can do for you?", cid)

end

talkState[cid] = 0

---------------------------- withdraw --------------------

elseif msgcontains(msg, 'withdraw') then

selfSay("Please tell me how much gold you would like to withdraw.", cid)

talkState[cid] = 6

elseif talkState[cid] == 6 then

count[cid] = getCount(msg)

if isValidMoney(count[cid]) then

selfSay("Are you sure you wish to withdraw " .. count[cid] .. " gold from your bank account?", cid)

talkState[cid] = 7

else

selfSay("Is isnt valid amount of gold to withdraw.", cid)

talkState[cid] = 0

end

elseif talkState[cid] == 7 then

if msgcontains(msg, 'yes') then

if not doPlayerWithdrawMoney(cid, count[cid]) then

selfSay("There is not enough gold on your account. Your account balance is " .. getPlayerBalance(cid) .. ". Please tell me the amount of gold coins you would like to withdraw.", cid)

talkState[cid] = 0

else

selfSay("Here you are, " .. count[cid] .. " gold. Please let me know if there is something else I can do for you.", cid)

talkState[cid] = 0

end

elseif msgcontains(msg, 'no') then

selfSay("As you wish. Is there something else I can do for you?", cid)

talkState[cid] = 0

end

---------------------------- transfer --------------------

elseif msgcontains(msg, 'transfer') then

selfSay("Please tell me the amount of gold you would like to transfer.", cid)

talkState[cid] = 11

elseif talkState[cid] == 11 then

count[cid] = getCount(msg)

if getPlayerBalance(cid) < count[cid] then

selfSay("You dont have enough money on your bank account.", cid)

talkState[cid] = 0

return true

end

 

if isValidMoney(count[cid]) then

selfSay("Who would you like transfer " .. count[cid] .. " gold to?", cid)

talkState[cid] = 12

else

selfSay("Is isnt valid amount of gold to transfer.", cid)

talkState[cid] = 0

end

elseif talkState[cid] == 12 then

transfer[cid] = msg

 

if getCreatureName(cid) == transfer[cid] then

selfSay("Ekhm, You want transfer money to yourself? Its impossible!", cid)

talkState[cid] = 0

return true

end

 

if isInArray(config.transferDisabledVocations, getPlayerVocation(cid)) then

selfSay("Your vocation cannot transfer money.", cid)

talkState[cid] = 0

end

 

if playerExists(transfer[cid]) then

selfSay("So you would like to transfer " .. count[cid] .. " gold to \"" .. transfer[cid] .. "\" ?", cid)

talkState[cid] = 13

else

selfSay("Player with name \"" .. transfer[cid] .. "\" doesnt exist.", cid)

talkState[cid] = 0

end

elseif talkState[cid] == 13 then

if msgcontains(msg, 'yes') then

local targetVocation = getPlayerVocationByName(transfer[cid])

if not targetVocation or isInArray(config.transferDisabledVocations, targetVocation) or not doPlayerTransferMoneyTo(cid, transfer[cid], count[cid]) then

selfSay("This player does not exist on this world or have no vocation.", cid)

else

selfSay("You have transferred " .. count[cid] .. " gold to \"" .. transfer[cid] .."\".", cid)

transfer[cid] = nil

end

elseif msgcontains(msg, 'no') then

selfSay("As you wish. Is there something else I can do for you?", cid)

end

talkState[cid] = 0

---------------------------- money exchange --------------

elseif msgcontains(msg, 'changhdeytwetdfnkjipe gçlPAOKDKold') then

npcHandler:say("How many platinum coins would you like to get?", cid)

talkState[cid] = 14

elseif talkState[cid] == 14 then

if getCount(msg) == -1 or getCount(msg) == 0 then

npcHandler:say("Hmm, can I help you with something else?", cid)

talkState[cid] = 0

else

count[cid] = getCount(msg)

npcHandler:say("So you would like me to change " .. count[cid] * 100 .. " of your gold coins into " .. count[cid] .. " platinum coins?", cid)

talkState[cid] = 15

end

elseif talkState[cid] == 15 then

if msgcontains(msg, 'ylllkkassieieiieees') then

if doPlayerRemoveItem(cid, 2148, count[cid] * 100) then

doPlayerAddItem(cid, 2152, count[cid])

npcHandler:say("Here you are.", cid)

else

npcHandler:say("Sorry, you do not have enough gold coins.", cid)

end

else

npcHandler:say("Well, can I help you with something else?", cid)

end

talkState[cid] = 0

elseif msgcontains(msg, 'chansaffsdgsdgge platasdfgasddfsdhcbxinum') then

npcHandler:say("Would you like to change your platinum coins into gold or crystal?", cid)

talkState[cid] = 16

elseif talkState[cid] == 16 then

if msgcontains(msg, 'gosassadasddadgfsdgld') then

npcHandler:say("How many platinum coins would you like to change into gold?", cid)

talkState[cid] = 17

elseif msgcontains(msg, 'crysfafasrteyiukjhgnstal') then

npcHandler:say("How many crystal coins would you like to get?", cid)

talkState[cid] = 19

else

npcHandler:say("Well, can I help you with something else?", cid)

talkState[cid] = 0

end

elseif talkState[cid] == 17 then

if getCount(msg) == -1 or getCount(msg) == 0 then

npcHandler:say("Hmm, can I help you with something else?", cid)

talkState[cid] = 0

else

count[cid] = getCount(msg)

npcHandler:say("So you would like me to change " .. count[cid] .. " of your platinum coins into " .. count[cid] * 100 .. " gold coins for you?", cid)

talkState[cid] = 18

end

elseif talkState[cid] == 18 then

if msgcontains(msg, 'yeasasass') then

if doPlayerRemoveItem(cid, 2152, count[cid]) then

npcHandler:say("Here you are.", cid)

doPlayerAddItem(cid, 2148, count[cid] * 100)

else

npcHandler:say("Sorry, you do not have enough platinum coins.", cid)

end

else

npcHandler:say("Well, can I help you with something else?", cid)

end

talkState[cid] = 0

elseif talkState[cid] == 19 then

if getCount(msg) == -1 or getCount(msg) == 0 then

npcHandler:say("Hmm, can I help you with something else?", cid)

talkState[cid] = 0

else

count[cid] = getCount(msg)

npcHandler:say("So you would like me to change " .. count[cid] * 100 .. " of your platinum coins into " .. count[cid] .. " crystal coins for you?", cid)

talkState[cid] = 20

end

elseif talkState[cid] == 20 then

if msgcontains(msg, 'yasdcsxxcsxxxxes') then

if doPlayerRemoveItem(cid, 2152, count[cid] * 100) then

npcHandler:say("Here you are.", cid)

doPlayerAddItem(cid, 2160, count[cid])

else

npcHandler:say("Sorry, you do not have enough platinum coins.", cid)

end

else

npcHandler:say("Well, can I help you with something else?", cid)

end

talkState[cid] = 0

elseif msgcontains(msg, 'changeadsdxxxsadas crysaddxxxxxasstal') then

npcHandler:say("How many crystal coins would you like to change into platinum?", cid)

talkState[cid] = 21

elseif talkState[cid] == 21 then

if getCount(msg) == -1 or getCount(msg) == 0 then

npcHandler:say("Hmm, can I help you with something else?", cid)

talkState[cid] = 0

else

count[cid] = getCount(msg)

npcHandler:say("So you would like me to change " .. count[cid] .. " of your crystal coins into " .. count[cid] * 100 .. " platinum coins for you?", cid)

talkState[cid] = 22

end

elseif talkState[cid] == 22 then

if msgcontains(msg, 'yeghdfghfdghhs') then

if doPlayerRemoveItem(cid, 2160, count[cid]) then

npcHandler:say("Here you are.", cid)

doPlayerAddItem(cid, 2152, count[cid] * 100)

else

npcHandler:say("Sorry, you do not have enough crystal coins.", cid)

end

else

npcHandler:say("Well, can I help you with something else?", cid)

end

talkState[cid] = 0

elseif msgcontains(msg, 'chansadsadasdxxxvvvvccccccge') then

npcHandler:say("There are three different coin types in Tibia: 100 gold coins equal 1 platinum coin, 100 platinum coins equal 1 crystal coin. So if you'd like to change 100 gold into 1 platinum, simply say '{change gold}' and then '1 platinum'.", cid)

talkState[cid] = 0

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_GREET, greetCallback)

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

essa é a fala do naji quando da o problema:

12:38 Naji: Welcome to the Tibian bank, Jonas Man! What can I do for you?

12:38 Jonas Man [82]: balance

12:38 Naji: Your account balance is 12002400 gold.

12:38 Jonas Man [82]: withdraw 1230

12:38 Naji: Please tell me how much gold you would like to withdraw.

12:38 Jonas Man [82]: yes

12:38 Naji: Is isnt valid amount of gold to withdraw.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...