Ir para conteúdo

Npc Pra Trocar Itens


paulinuu

Posts Recomendados

Bom , a minha ideia é de um npc que troque itens porque eu tenho um server com itens vips ai eu queria exemplo eu tenho arma vip de kina qro trocar por uma arma vip de mage .

 

exemplo :

npc :o que voce deseja trocar ?

player: arma de kina

npc : arma de kina pelo o que ?

player : arma de mage ?

npc : voce deseja trocar arma vip de kina por arma vip de mage ?

player : yes

npc : seu item foi trocado !

 

era mais ou menos assim

Link para o comentário
Compartilhar em outros sites

Va em data/npc e crie um npc com o nome que quiser, aqui estarei usando o nome troca, bom então vamos la...

Cole isto:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<npc name="Troca" script="data/npc/scripts/troca.lua" floorchange="0" access="5" level="1" maglevel="1">

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

<look type="128" head="94" body="94" legs="94" feet="76" addons="3" corpse="2212"/>

<parameters>

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

<parameter key="message_greet" value="Olá |PLAYERNAME|. Eu troco armas de kina por armas de sorc" />

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

</parameters>

</npc>

 

 

Agora vá em scripts e crie um script .lua chamado troca, e cole isto:

 

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

 

if(msgcontains(msg, 'arma de kina') or msgcontains(msg, 'arma de kina')) then

selfSay('Voce quer trocar sua arma de kina por uma de sorc?', cid)

talkState[talkUser] = 1

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

if(getPlayerItemCount(cid, 2431) >= 1) then

if(doPlayerRemoveItem(cid, 2431, 1) == TRUE) then

doPlayerAddItem(cid, 2190)

selfSay('Here you are.', cid)

else

selfSay('Desculpe, voce nao tem o item.', cid)

end

else

selfSay('Desculpe, voce nao tem o item.', cid)

end

talkState[talkUser] = 0

elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then

talkState[talkUser] = 0

selfSay('Ok then.', cid)

 

 

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

LEGENDA:

AZUL: MENSSAGENS DO PLAYER

VERMELHO: MENSSAGENS DO NPC

LARANJA: O ID DA ARMA DO KINGHT (A ARMA QUE O PLAYER VAI DAR PRO NPC)

ROSA: ID DA ARMA DO SORC (A ARMA QUE O NPC VAI DAR PRO PLAYER)

 

BOM, É ISTO :D ESPERO TER AJUDADO

Link para o comentário
Compartilhar em outros sites

Va em data/npc e crie um npc com o nome que quiser, aqui estarei usando o nome troca, bom então vamos la...

Cole isto:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<npc name="Troca" script="data/npc/scripts/troca.lua" floorchange="0" access="5" level="1" maglevel="1">

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

<look type="128" head="94" body="94" legs="94" feet="76" addons="3" corpse="2212"/>

<parameters>

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

<parameter key="message_greet" value="Olá |PLAYERNAME|. Eu troco armas de kina por armas de sorc" />

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

</parameters>

</npc>

 

 

Agora vá em scripts e crie um script .lua chamado troca, e cole isto:

 

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

 

if(msgcontains(msg, 'arma de kina') or msgcontains(msg, 'arma de kina')) then

selfSay('Voce quer trocar sua arma de kina por uma de sorc?', cid)

talkState[talkUser] = 1

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

if(getPlayerItemCount(cid, 2431) >= 1) then

if(doPlayerRemoveItem(cid, 2431, 1) == TRUE) then

doPlayerAddItem(cid, 2190)

selfSay('Here you are.', cid)

else

selfSay('Desculpe, voce nao tem o item.', cid)

end

else

selfSay('Desculpe, voce nao tem o item.', cid)

end

talkState[talkUser] = 0

elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then

talkState[talkUser] = 0

selfSay('Ok then.', cid)

 

 

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

LEGENDA:

AZUL: MENSSAGENS DO PLAYER

VERMELHO: MENSSAGENS DO NPC

LARANJA: O ID DA ARMA DO KINGHT (A ARMA QUE O PLAYER VAI DAR PRO NPC)

ROSA: ID DA ARMA DO SORC (A ARMA QUE O NPC VAI DAR PRO PLAYER)

 

BOM, É ISTO :D ESPERO TER AJUDADO

 

 

sim , valeu pela ajuda mas tipo eu tava fazendo uma bem parecida só que dai eu nao consigo faze ele troca mais de um item vou dar um exeplo mais detalhado de como seria

 

 

existe um set de mage , um set de kina , um set de pally

 

ae o caraa é kina tem o set mas enjuo de joga de kina ai ele tem o set vai la troca

ai ele qr trocar o helmet vip dele por um item qlqr de mage ou de pally ai no caso como eu faço pra adc o treco de remove tal item e na msg ?

 

 

pra ficar mais claro assim , ele no que eu estou pensando faria o seguinte o npc ele trocaria qlqr item vip q eu adicionasse ali como sendo item vip nao apenas 1 pelo outro

no caso um player q apenas tivesse 1 item vip poderia trocar esse item por qualquer item do set de qualquer vocaçao

 

ex : se eu so kina tenho apenas uma bota vip mas qro joga de mage com uma wand vip ai eu vo no npc troco essa bota por uma arma ou qlqr outro item

 

nao sei se ficou claro pq eu so meio confuso msm , mas msm assim obrigado

Link para o comentário
Compartilhar em outros sites

Aaah sim, entendi...

Vou colocar aqui um npc que da pra você colocar varios itens para trocar, aqui vai o script, depois você edita ele :p

No caso, voc~e teria que fazer varias vezes isto, pq o player teria que falar "trocar minha vip boots em uma vip wand", você teria que colocar todos os itens de todas as formas, entendeu ?

 

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

 

-- ASSASSIN START --

function AssassinFirst(cid, message, keywords, parameters, node)

 

if(not npcHandler:isFocused(cid)) then

return false

end

 

 

if getPlayerItemCount(cid,2498) >= 2 then

if doPlayerRemoveItem(cid,2498,2) then

npcHandler:say('Here is your item!', cid)

doPlayerAddItem(cid,5884,1)

end

else

npcHandler:say('You don\'t have these items!', cid)

end

end

 

 

function AssassinSecond(cid, message, keywords, parameters, node)

 

if(not npcHandler:isFocused(cid)) then

return false

end

 

 

 

if getPlayerItemCount(cid,2475) >= 4 then

if doPlayerRemoveItem(cid,2475,4) then

npcHandler:say('Here is your item!', cid)

doPlayerAddItem(cid,5885,1)

end

else

npcHandler:say('You don\'t have these items!', cid)

end

end

 

function AssassinFourth(cid, message, keywords, parameters, node)

 

if(not npcHandler:isFocused(cid)) then

return false

end

 

 

 

 

if getPlayerItemCount(cid,2195) >= 1 then

if doPlayerRemoveItem(cid,2195,1) then

npcHandler:say('Here is your item!', cid)

doPlayerAddItem(cid,5891,1)

end

else

npcHandler:say('You don\'t have these items!', cid)

end

 

end

 

function AssassinThird(cid, message, keywords, parameters, node)

 

if(not npcHandler:isFocused(cid)) then

return false

end

 

 

 

if getPlayerItemCount(cid,2392) >= 3 then

if doPlayerRemoveItem(cid,2392,3) then

npcHandler:say('Here is your item!', cid)

doPlayerAddItem(cid,5904,1)

end

else

npcHandler:say('You don\'t have these items!', cid)

 

end

 

end

-- ASSASSIN END --

 

keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "I can exchange 2 royal helmets for fighting spirit, 4 warrior helmets for warrior\'s sweat, 3 fire swords for magic sulphur and boots of haste for enchanted chicken wing."})

 

local node1 = keywordHandler:addKeyword({'fighting spirit'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to trade 2 royal helmets for a fighting spirit?'})

node1:addChildKeyword({'yes'}, AssassinFirst, {npcHandler = npcHandler, onlyFocus = true, reset = true})

node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got the neccessary items.', reset = true})

 

local node2 = keywordHandler:addKeyword({'warrior sweat'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to trade 4 warrior helmets for warrior\'s sweat?'})

node2:addChildKeyword({'yes'}, AssassinSecond, {npcHandler = npcHandler, onlyFocus = true, reset = true})

node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got the neccessary items.', reset = true})

 

local node6 = keywordHandler:addKeyword({'enchanted chicken wing'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to trade boots of haste for a enchanted chicken wing?'})

node6:addChildKeyword({'yes'}, AssassinFourth, {npcHandler = npcHandler, onlyFocus = true, reset = true})

node6:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got the neccessary items.', reset = true})

 

local node3 = keywordHandler:addKeyword({'magic sulphur'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to trade 3 fire swords for some magic sulphur?'})

node3:addChildKeyword({'yes'}, AssassinThird, {npcHandler = npcHandler, onlyFocus = true, reset = true})

node3:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got the neccessary items.', reset = true})

 

local node4 = keywordHandler:addKeyword({'warriors sweat'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to trade your 4 warrior helmets for warrior\'s sweat?'})

node4:addChildKeyword({'yes'}, AssassinSecond, {npcHandler = npcHandler, onlyFocus = true, reset = true})

node4:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got the neccessary items.', reset = true})

 

local node5 = keywordHandler:addKeyword({'warrior\'s sweat'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to trade your 4 warrior helmets for warrior\'s sweat?'})

node5:addChildKeyword({'yes'}, AssassinSecond, {npcHandler = npcHandler, onlyFocus = true, reset = true})

node5:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then. Come back when you got the neccessary items.', reset = true})

 

npcHandler:addModule(FocusModule:new())

 

Qualquer duvida, pode me perguntar... caso você não saiba como editar ele...

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

bom , esse novo script ai até troca varios itens mas 1 pelo outro assim se eu tenho um bota com essa script ai eu poderia trocar 1 bota por outra bota e nao trocar essa minha bota por qlqr item , nem se eu adicionar outras tags trocando o id da bota por outro item pq qndo eu adicionasse o msgcontains('botavip') a script iria embaralhar eu tava pensando assim ó o npc trocaria o item mas ele definiria o item q ele daria apos a escolha do player e ai adicionaria uma nova tag assim mais ou menos dps q ele ja disse q qr troca a bota vip o npc iria perguntar por qual item vc qr trocar sua bota vip ? ai sim o player escolheria o item q ele quer ja nessa script ele fala q qr troca a bota ja por um item estipulado pelo npc

 

 

mas valeu ai cara vc ta ajudando demais

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

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