Ir para conteúdo

Como Configurar Um Npc Para Vender Itens Por Outro Tipo De Moeda Sem Ser O Tradicional Gp


Naelsena

Posts Recomendados

no script do seu npc, no item que ele vende, ao inves de

doPlayerRemoveMoney(cid, 5000)

bote:

doPlayerRemoveItem(cid, 9298, 1)

 

 

Em Rosa: a quantia de GPS que ele ira tirar do player (mais nao sera necessario que voce vai substituir essa parte)

Em Azul: o id do item que voce quer que ele receba inves do gp tradicional

Em Verde: a quantia do item que ele ira receber, por exemplo se for 10 scarab coins voce bota doPlayerRemoveItem(cid, ID DA SCARAB,10)

Link para o comentário
Compartilhar em outros sites

no script do seu npc, no item que ele vende, ao inves de

doPlayerRemoveMoney(cid, 5000)

bote:

doPlayerRemoveItem(cid, 9298, 1)

 

 

Em Rosa: a quantia de GPS que ele ira tirar do player (mais nao sera necessario que voce vai substituir essa parte)

Em Azul: o id do item que voce quer que ele receba inves do gp tradicional

Em Verde: a quantia do item que ele ira receber, por exemplo se for 10 scarab coins voce bota doPlayerRemoveItem(cid, ID DA SCARAB,10)

 

Bem que eu tentei fazer isso só que os NPC aqui não tem essa parte PlayerRemoveMoney, Alguem pode mandar uma script de NPC que tenha isso

Link para o comentário
Compartilhar em outros sites

manda aí o script do 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 shopModule = ShopModule:new()

npcHandler:addModule(shopModule)

 

shopModule:addBuyableItem({'Golden Bow', 'bow'}, 7438, 10000, 'Golden Bow')

shopModule:addBuyableItem({'solar axe', 'axe'}, 7424, 20000, 'Solar Axe')

shopModule:addBuyableItem({'lunar staff', 'staff'}, 2188, 50000, 'Lunar Staff')

 

npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

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

   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
   local money = getPlayerItemCount(cid,[color="#FF00FF"]2159[/color])

   if msgcontains(msg, 'no') and talkState[talkUser] > 0 then
   selfSay("Come back when you have the money!",cid)
   talkState[talkUser] = 2
   else
   end

   if msgcontains(msg, '[color="#00FF00"]sword[/color]') then -- primeiro item (1º de 2)
   selfSay("Do you want buy a [color="#00FF00"]sword[/color] for [color="#FFFF00"]25[/color] scarab coins?",cid)
   talkState[talkUser] = 1
   elseif msgcontains(msg, 'yes') and talkState[talkUser] = 1 then
   if money >= [color="#FFFF00"]25[/color] then
   doPlayerRemoveItem(cid, money, [color="#FFFF00"]25[/color])
   doPlayerAddItem(cid, [color="#0000FF"]2376[/color], 1)
   else        
   selfSay("you don\'t have enough money', cid)
   end

   if msgcontains(msg, 'mace') then -- segundo item (2º de 2)
   selfSay("Do you want buy a mace for 30 scarab coins?",cid)
   talkState[talkUser] = 2
   elseif msgcontains(msg, 'yes') and talkState[talkUser] = 2 then
   if money >= 30 then
   doPlayerRemoveItem(cid, money, 30)
   doPlayerAddItem(cid, 2398, 1)
   else        
   selfSay("you don\'t have enough money', cid)
   end

       end

   return true
end

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

 

 

 

Em Rosa: ID do item que voce quer que o npc receba inves do gp tradicional (no caso usei scarab coin)

Em Verde: NOME do item que o npc vai vender (1º de 2)

Em Amarelo: quantidade de moedas(no caso scarab coin) que o npc vai pedir para vender o item

Em Azul: ID do item que o npc vai vender (1º de 2)

 

 

eu só usei as cores no primeiro item, pois no segundo o procedimento é todo igual, só muda os numeros...se voce quiser adicionar mais algum item pra que o npc venda mais itens só adicionar mais um if, por exemplo:

 

if msgcontains(msg, '[color="#00FF00"]sword[/color]') then -- primeiro item (1º de 2)
   selfSay("Do you want buy a [color="#00FF00"]sword[/color] for [color="#FFFF00"]25[/color] scarab coins?",cid)
   talkState[talkUser] = 1
   elseif msgcontains(msg, 'yes') and talkState[talkUser] = 1 then
   if money >= [color="#FFFF00"]25[/color] then
   doPlayerRemoveItem(cid, money, [color="#FFFF00"]25[/color])
   doPlayerAddItem(cid, [color="#0000FF"]2376[/color], 1)
   else        
   selfSay("you don\'t have enough money', cid)
   end

 

mas lembrese sempre de mudar tudo o que esta colorido e o TALKSTATE, elseif msgcontains(msg, 'yes') and talkState[talkUser] = 1 then no caso esta 1 a cada item que adicionar aumente 1 talkstate, agora nesse ficaria 2, mais como a mace ja usa o talkstate 2, mude pra 3 assim:

 

if msgcontains(msg, '[color="#00FF00"]sword[/color]') then
       selfSay("Do you want buy a [color="#00FF00"]sword[/color] for [color="#FFFF00"]25[/color] scarab coins?",cid)
       talkState[talkUser] = 1
   elseif msgcontains(msg, 'yes') and talkState[talkUser] = 1 then
   if money >= [color="#FFFF00"]25[/color] then
   doPlayerRemoveItem(cid, money, [color="#FFFF00"]25[/color])
   doPlayerAddItem(cid, [color="#0000FF"]2376[/color], 1)
   else        
   selfSay("you don\'t have enough money', cid)
   end

 

 

mas assim ele nao tera o trade window, pra mudar no trade window só mudando na lib dos npcs, e isso afetaria todos eles..

 

 

OBS: fiz esse script postando esse post, nao testei e nao sei se funciona

 

espero ter ajudado :smile_positivo:

Editado por Tozao
Link para o comentário
Compartilhar em outros sites

Eu Coloquei a Script assim ai não mostrou nenhum erro no NPC quando eu abro o serve o NPC aparece normal só que quando eu falo "HI" ele não fala nada deem uma Olhada como coloquei

 

local ke

ywordHandler = 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) end

if(not npcHandler:isFocused(cid)) then

return false

end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local money = getPlayerItemCount(cid,2159)

if msgcontains(msg, 'no') and talkState[talkUser] > 0 then

selfSay("Come back when you have the money!",cid)

talkState[talkUser] = 2

else

end

 

if msgcontains(msg, 'sword') then -- primeiro item (1º de 2)

selfSay("Do you want buy a sword for 25 vip coins?",cid)

talkState[talkUser] = 1

elseif msgcontains(msg, 'yes') and talkState[talkUser] > 1 then

end

if money >= 25 then

doPlayerRemoveItem(cid, money, 25)

doPlayerAddItem(cid, 2376, 1)

else

selfSay('you don\'t have enough money', cid)

end

 

 

if msgcontains(msg, 'mace') then -- segundo item (2º de 2)

selfSay("Do you want buy a mace for 30 scarab coins?",cid)

talkState[talkUser] = 2

elseif msgcontains(msg, 'yes') and talkState[talkUser] > 2 then

if money >= 30 then

doPlayerRemoveItem(cid, money, 30)

doPlayerAddItem(cid, 2398, 1)

else

selfSay('you don\'t have enough money', cid)

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

Não tenho certeza, mas pode ser por causa do talkstate.

Tente usar este script 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 creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end

 

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local money = getPlayerItemCount(cid,2159)

 

if msgcontains(msg, 'no') and talkState[talkUser] > 0 then

selfSay("Come back when you have the money!",cid)

talkState[talkUser] = 2

else

end

 

if msgcontains(msg, 'sword') then -- primeiro item (1º de 2)

selfSay("Do you want buy a sword for 25 scarab coins?",cid)

talkState[talkUser] = 1

elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then

if money >= 25 then

doPlayerRemoveItem(cid, money, 25)

doPlayerAddItem(cid, 2376, 1)

else

selfSay("you don\'t have enough money', cid)

end

 

if msgcontains(msg, 'mace') then -- segundo item (2º de 2)

selfSay("Do you want buy a mace for 30 scarab coins?",cid)

talkState[talkUser] = 2

elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then

if money >= 30 then

doPlayerRemoveItem(cid, money, 30)

doPlayerAddItem(cid, 2398, 1)

else

selfSay("you don\'t have enough money', cid)

end

 

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Não sei se irá funcionar, mas o que vale é a intenção ;x

PS: Eu apenas modifiquei coisas muito pequenas no script do Tozao, os créditos são 100% dele.

Abraço!

Link para o comentário
Compartilhar em outros sites

Usei a Script que o Daniel Oliveira Postou e Modifiquei umas coisas e deu certo Vel ai Daniel

Créditos 100% do Tozao que é o Criador da Script Vlw msm cara ajudou Muito vcs nem sabem o tanto Obrigado vlw msm Mais só ta funcionando a Venda da Sword a Mace não mais pode deixar que agora eu mim viro aki Olha ai como ficou a Script

 

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

 

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local money = getPlayerItemCount(cid,2159)

 

if msgcontains(msg, 'no') and talkState[talkUser] > 0 then

selfSay("Come back when you have the money!",cid)

talkState[talkUser] = 2

else

end

 

if msgcontains(msg, 'sword') then -- primeiro item (1º de 2)

selfSay("Do you want buy a sword for 25 scarab coins?",cid)

talkState[talkUser] = 1

elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then

if money >= 25 then

doPlayerRemoveItem(cid, 2159, 25)

doPlayerAddItem(cid, 2376, 1)

else

selfSay("you don\'t have enough money'", cid)

end

 

if msgcontains(msg, 'mace') then -- segundo item (2º de 2)

selfSay("Do you want buy a mace for 30 scarab coins?",cid)

talkState[talkUser] = 2

elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then

if money >= 30 then

doPlayerRemoveItem(cid, 2159, 30)

doPlayerAddItem(cid, 2398, 1)

else

selfSay("you don\'t have enough money'", cid)

end

 

end

 

return true

 

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

 

Tozao vlw msm cara vc é 10...

 

Obrigado Vlw...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...