[Tutorial] NPC que compra pokémon

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Tutorial] NPC que compra pokémon

Mensagem por Aott em Dom Jun 17, 2012 12:48 pm

Bom galera, hoje eu vou ensinar a como colocar no seu server um npc que compra todos os pokemons que vc quiser e com o preço que vc quiser, e tb ensinarei a adicionar mais pokemons e a mudar o preço. O npc que eu tenho aqui no meu server, vende pokemons de johto também, mas se seu server não tiver johto você pode tira-los.

Primeiro vá em Data->Npc, copie e cole qualquer arquivo.xml de lá e renomeie para comprapoke.xml, substitua o que tem dentro por isso:

<?xml version="1.0"?> <npc name="Berilo" script="data/npc/scripts/comprapoke.lua" walkinterval="5000" floorchange="0">
<health now="100" max="100"/> <look type="143" head="78" body="88" legs="0" feet="88" addons="3"/>
<parameters>
<parameter key="message_greet" value="Hi |PLAYERNAME|, do you want to sell your {pokemon}?"/>
</parameters>
</npc>

Agora na mesma pasta vc vai ver uma outra pasta chamada scripts, vá lá copie e cole qualquer arquivo.xml de lá e renomeie para comprapoke.lua, substitua o que tem dentro por isso:

Código:
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 
 
    function pairsByKeys (t, f) -- function for alphabetical order in list
      local a = {}
      for n in pairs(t) do table.insert(a, n) end
      table.sort(a, f)
      local i = 0
      local iter = function ()
        i = i + 1
        if a[i] == nil then return nil
        else return a[i], t[a[i]]
        end
      end
      return iter
    end
 
local Pokemons = {
["mew"] = {price = 500000},
["mewtwo"] = {price = 500000},
["lugia"] = {price = 700000},
["celebi"] = {price = 500000},
["moltres"] = {price = 400000},
["zapdos"] = {price = 400000},
["articuno"] = {price = 400000},
["bayleef"] = {price = 400000},
["chikorital"] = {price = 200000},
["meganium"] = {price = 600000},
["cyndaquil"] = {price = 200000},
["quilava"] = {price = 400000},
["typhlosion"] = {price = 600000},
["teddiursa"] = {price = 200000},
["ursaring"] = {price = 500000},
["wobbuffet"] = {price = 300000},
["stantler"] = {price = 320000},
["noctowl"] = {price = 350000},
["houndour"] = {price = 100000},
["houndoom"] = {price = 300000},
["gligar"] = {price = 350000},
["hoothoot"] = {price = 150000},
["scizor"] = {price = 800000},
["steelix"] = {price = 800000},
["hitmontopl"] = {price = 800000},
["pichu"] = {price = 500000},
["tyrogue"] = {price = 500000},
["swablu"] = {price = 500000},
["suicune"] = {price = 900000},
["entei"] = {price = 900000},
["raikou"] = {price = 900000},
["skarmory"] = {price = 900000},
["electabuzz"] = {price = 50000},
["seel"] = {price = 10000},
["dewgong"] = {price = 25000},
["arcanine"] = {price = 30000},
["muk"] = {price = 20000},
["shellder"] = {price = 5000},
["cloyster"] = {price = 30000},
["onix"] = {price = 35000},
["drowzee"] = {price = 10000},
["hypno"] = {price = 25000},
["kingler"] = {price = 15000},
["corphish"] = {price = 10000},
["crawdaunt"] = {price = 20000},
["exeggutor"] = {price = 20000},
["marowak"] = {price = 25000},
["hitmonlee"] = {price = 50000},
["hitmonchan"] = {price = 50000},
["lickitung"] = {price = 40000},
["weezing"] = {price = 25000},
["rhyhorn"] = {price = 10000},
["rhydon"] = {price = 25000},
["tangela"] = {price = 20000},
["kangaskhan"] = {price = 40000},
["kingdra"] = {price = 50000},
["togepi"] = {price = 10000},
["togetic"] = {price = 20000},
["shuppet"] = {price = 10000},
["banette"] = {price = 20000},
["duskull"] = {price = 20000},
["dusclops"] = {price = 30000},
["seaking"] = {price = 15000},
["buizel"] = {price = 10000},
["starmie"] = {price = 20000},
["mime jr"] = {price = 10000},
["mr.mime"] = {price = 35000},
["scyther"] = {price = 50000},
["smoochum"] = {price = 10000},
["jynx"] = {price = 35000},
["magmar"] = {price = 50000},
["politoed"] = {price = 40000},
["poliwrath"] = {price = 30000},
["gyarados"] = {price = 30000},
["lapras"] = {price = 50000},
["eevee"] = {price = 10000},
["porygon"] = {price = 70000},
["omanyte"] = {price = 15000},
["omastar"] = {price = 50000},
["kabuto"] = {price = 15000},
["kabutops"] = {price = 50000},
["aerodactyl"] = {price = 100000},
["snorlax"] = {price = 60000},
["dratini"] = {price = 15000},
["dragonair"] = {price = 30000},
["dragonite"] = {price = 50000},
["ivysaur"] = {price = 20000},
["venusaur"] = {price = 30000},
["charmander"] = {price = 5000},
["charmeleon"] = {price = 15000},
["charizard"] = {price = 30000},
["squirtle"] = {price = 5000},
["wartortle"] = {price = 15000},
["blastoise"] = {price = 30000},
["fearow"] = {price = 20000},
["lucario"] = {price = 35000},
["arbok"] = {price = 20000},
["pikachu"] = {price = 15000},
["sandslash"] = {price = 30000},
["nidorina"] = {price = 10000},
["nidoqueen"] = {price = 25000},
["nidorino"] = {price = 10000},
["nidoking"] = {price = 25000},
["clefairy"] = {price = 15000},
["clefable"] = {price = 25000}
}
 
 local idballs = { [2532] = {2531}, [2653] = {2557},
[2654] = {2525}, [2652] = {2524}, [2195] = {2523}, [2531] = {2532}, [2557] = {2653}, [2525] = {2654}, [2524] = {2652}, [2523] = {2195},
} local balls = idballs[getPlayerSlotItem(cid,8).itemid]
 
 
 if(msgcontains(msg, "pokemon") or msgcontains(msg, "pokemon")) then
selfSay("What pokemon you want to sell? Or you might want to see a {list}?", cid) 
talkState[talkUser] = 1
elseif (msgcontains(msg, "list") or msgcontains(msg, "LIST")) and talkState[talkUser] == 1 then local str = ""
str = str .. "Pokemon Prices :\n\n" for name, pos in pairsByKeys(Pokemons) do
str = str..name.." = "..pos.price.."\n" end
str = str .. "" 
doShowTextDialog(cid, 6579, str) 
elseif Pokemons[msg]  and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, 25000) == 5 then        return selfSay('Você está montando.',cid)
elseif getPlayerStorageValue(cid, 23000) == 5 then return selfSay('Get off of your pokemon, please!',cid)
elseif #getCreatureSummons(cid) >= 1 then
return selfSay('Could call your pokemon back to the poke ball?',cid)
elseif balls == nil then return selfSay('Put your pokemon in the poke ball slot, so I can review it!',cid) end local a = getItemAttribute(getPlayerSlotItem(cid,8).uid,"name") if string.find(tostring(a),msg) then
doRemoveItem(getPlayerSlotItem(cid,8).uid, 1)
doPlayerAddMoney(cid, Pokemons[msg].price) 
selfSay('Thank you!', cid) else
selfSay('You don't have a '..msg..' for sell, sorry!', cid) end
elseif msg == "no" and talkState[talkUser] >= 1 then 
selfSay("Then not.", cid) 
talkState[talkUser] = 0 
npcHandler:releaseFocus(cid)  end  return TRUE  end

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

Agora vou explicar como adicionar e excluir, vcs com certeza devem estar vendo aquela parte com o nome dos pokes no segundo código. Para vc adicionar mais um basta colocar uma linha dessa em baixo:

["NOMEDOPOKE"] = {price = PREÇODOPOKE},

Então, vc deve alterar as informações acima e pronto, vc já pode editar o seu NPC que compra pokemons! ^^

Pra excluir basta apagar a linha do pokemon no script.

Revisão das frases em inglês: rodri123

Observação: no final da linha do pokemon coloque sempre uma virgula, a não ser q o pokemon seja o ultimo da lista, se for o ultimo não vai precisar!


Última edição por vt12345 em Dom Jun 17, 2012 12:54 pm, editado 1 vez(es)
avatar
Aott
Membro
Membro

Mensagens : 17
Placar : 34
Data de inscrição : 29/04/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Tutorial] NPC que compra pokémon

Mensagem por [PS]Killer em Dom Jun 17, 2012 12:53 pm

muito bom o tutorial Rep + sem duvida alguma continue assim
avatar
[PS]Killer
Membro
Membro

Mensagens : 19
Placar : 23
Data de inscrição : 15/06/2012
Idade : 23

Ver perfil do usuário http://pstrong.forumeiros.com/

Voltar ao Topo Ir em baixo

Re: [Tutorial] NPC que compra pokémon

Mensagem por Xisto em Seg Jun 18, 2012 7:56 pm

Bem, seria melhor se fosse um sistema de EGG !

Eu tenho aqui, se quiser eu passo.
avatar
Xisto
Membro
Membro

Mensagens : 27
Placar : 41
Data de inscrição : 12/06/2012

Ver perfil do usuário http://pokexstreet.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: [Tutorial] NPC que compra pokémon

Mensagem por Aott em Seg Jun 18, 2012 8:02 pm

O sistema de egg é algo totalmente diferente amigo mas se vc quiser postar fique a vontade, o forum é livre pra quem quiser postar etc
avatar
Aott
Membro
Membro

Mensagens : 17
Placar : 34
Data de inscrição : 29/04/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Tutorial] NPC que compra pokémon

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum