Ir para conteúdo
Entre para seguir isso  
Wantedzin

PokeDex (Básica)

Recommended Posts

Wantedzin    0
Wantedzin

Nome: Pokedex (Básica)

Autor: Wantedzin (Perdigues)

Versão Testada: TFS 0.3.6 (Nescessário ter o OTAL)

 

Agradecimentos ao:

MaXwEllDeN - Pela idéa de criar uma pasta pokedex pra ler os scripts.

rd_caldas - Pelas ajudas com alguns scripts que me prporcionaram o conehcimento pra fazer este script.

crimm - Da otland pela base do script.

felipedaniel - pela função de mostrar quantos pokemons vc já tem liberado.

 

 

Bom o script está simples mas esta bem funcional vamos ao script:

 

Na pasta actions abra a pasta scripts, crie uma pasta chamada pokemon e dentro dela um arquivo LUA e nomeie-o para pokedex.lua e cole isso:

 

[spoiler=pokedex.lua]

function onUse(cid, item, fromPos, itemEx, toPos)

local pokemon = itemEx.uid
local pokemons = {
{"Bulbasaur", "1.txt", 11395, 20, 100, "Bulbasaur", 99101},
{"Ivysaur", "2.txt", 11396, 20, 100, "Ivysaur", 99102},
}

for _,n in pairs(pokemons) do
   if isSummon(pokemon) then
           local Dex = io.open('data/pokedex/' .. n[2],'r')
                    if getCreatureName(pokemon) == n[1] and getPlayerLevel(cid) >= n[4] and getPlayerStorageValue(cid, n[7]) <= 0 then 
                       doShowTextDialog(cid, n[3], Dex:read("*all"))
                       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have unlocked " .. n[6] .. " in your pokedex")
                       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have gained " .. n[5] .. " experience points.")
                       doPlayerAddExperience(cid, n[5])
                       setPlayerStorageValue(cid, n[7], 1)
                    elseif getCreatureName(pokemon) == n[1] and getPlayerLevel(cid) < n[4] and getPlayerStorageValue(cid, n[7]) <= 0 then
                       doShowTextDialog(cid, n[3], Dex:read("*all"))
                       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need level " .. n[4] .. " to unlock this pokemon.")
                    elseif getCreatureName(pokemon) == n[1] and getPlayerStorageValue(cid, n[7]) >= 1 then
                       doShowTextDialog(cid, n[3], Dex:read("*all"))
                    end
                    Dex:close()   
   elseif isMonster(pokemon) then
            local Dex = io.open('data/pokedex/' .. n[2],'r')
                    if getCreatureName(pokemon) == n[1] and getPlayerStorageValue(cid, n[7]) <= 0 then
                       doShowTextDialog(cid, n[3], Dex:read("*all"))
                          doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have unlocked " .. n[6] .. " in your pokedex")
                       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have gained " .. n[5] .. " experience points.")
                          doPlayerAddExperience(cid, n[5])
                          setPlayerStorageValue(cid, n[7], 1)
                    elseif getCreatureName(pokemon) == n[1] and getPlayerStorageValue(cid, n[7]) >= 1 then
                       doShowTextDialog(cid, n[3], Dex:read("*all"))
                    end
                       Dex:close()
   end
end

local store = {99100, 99101, 99102, 99103, 99104, 99105, 99106, 99107, 99108, 99109}
local unlock = {}
               for i = 1, #store do
                       if getPlayerStorageValue(cid, store[i]) > 0 then
                               table.insert(unlock, 1)
                       end
               end

       if isPlayer(itemEx.uid) then
               doPlayerSendTextMessage(cid, 27, "You have unlocked " .. #unlock .. "/151 pokemons in your PokeDex")
       end
return true
end

 

 

agora vá na pasta actions e abra o actions.xml e adicione esta tag em qualquer lugar:

 

[spoiler=actions.xml]

        
<action itemid="xxxx" event="script" value="pokemon/pokedex.lua" allowfaruse="1" blockwalls="1"/>

 

 

substitua o xxxx pelo item que quer usar como pokedex.

 

agora nas pasta data crie uma outra pasta chamada pokedex esalve este texto dentro da pasta pokedex e nomeie-o para o nome desejado.

 

[spoiler=exemplo.txt]

Name: Bulbasaur
Type: Grass
Reuires Level: 20

Moves:
Quick Attack - m1 - level 20
Razor Leaf - m2 - level 20
Vine Whip - m3 - level 20
Headbutt - m4 - level 20
Leech Seed - m5 - level 22
Solar Beam - m6 - level 40
Sleep Powder - m7 - level 35
Stun Spore - m8 - level 28
Poison Powder - m9 - level 26

Evolutions:

Bulbasaur, requires level 20
Ivysaur, requires level 40
Vanusaur, requires level 80

Habilities:
Cut

 

 

No caso do meu script está pela ordem dos pokemons como são 151 meus scripts vão de 1 a 151 de acordo com a ordem da pokedex.

 

Agora vamos aprender a configurar os scripts:

 

[spoiler=Configurando]no pokedex.lua temos:

 

local pokemons = {

{"Bulbasaur", "1.txt", 11395, 20, 100, "name", 99101},

{"Squirtle", "2.txt", 11401, 20, 500, 99102},

}

 

Verde - É o nome que o monster deve ter para que o script funcione.

Laranja - É o nome do arquivo.txt que ele vai buscar as informações deste pokemon (é o arquivo.txt que vc crio na ultima etapa)

OBS: se o noem do script for BuLBasaur.txt deve ser adicionado como BuLBasaur.txt pois é case sensitive.)

Rosa - É a imagem do pokemon que vai aparecer na janelinha com o texto.

Azul - O level que o pokemon pode ser usado(usado pra se for um summon ele não dar a xp)

Vermelho - Experiência que o player ganha ao usar a Pokedex no monstro a primeira vez.

PRETO NEGRITO - é a mensgaem que vai aparecer com o nome do Pokemoné desnecessário amis pra mim tem uma outra utilidade

mas tah ai uma coisa a mais pra vcs editarem...caso não queiram apenas substitua isso nas tags ("You have unlocked " .. n[6] .. " in your pokedex", por "You have unlocked " .. n[1] .. " in your pokedex" e tah pronto)

SUBLINHADO - É o storage value que será adicionado ao player quando ele usar a Pokedex no pokemon a primeira vez.

(OBS: Cada pokemon deve ter seu storage value diferente se não os cript não funciona corretamente)

 

Ultima observação ao final deve-se adicionar uma virgula antes de criar um novo pokemon, reparem no exemplo:

 

{"Bulbasaur", "1.txt", 11395, 20, 100, "name", 99101},

 

Ao final temos sublinhado a storage value, ai vem uma chave( } ) fechando a tabela e após a chave temos a virgula.

antes de adicionar uma nova chave abaixo deve-se ter uma virgula ou o script não funciona.

 

 

[spoiler=Screenshots]

60900849.jpg

60900849.jpg

 

Ao dar dex no summon abre a janela com a imagem do pokemon e as informações dele. Recebe também a mensagem de experiencia e o nome do pokemon que foi liberado.

84783972.jpg

60900849.jpg

 

Nessa imagem o char de teste tenta usar a Pokedex em um summon no caso o pokemon do ADM e veja a mensagem que ele recebe em azul.

69102170.jpg

69102170.jpg

 

O mesmo char de teste no level 4 usa dex no mesmo pokemon só que desta vez ele é monster e a experiencia é adicionada ao player e ele pode ver o pokemon. A caixa com informações também é mostrada.

 

 

 

 

Bom se não funcionar será nescessário adicionar isso:

 

[spoiler=isSummon]

function isSummon(sid)
   for i, pid in ipairs(getPlayersOnline()) do
       for c, cid in pairs(getCreatureSummons(pid)) do
           if (cid == sid) then
               return true
           end
       end 
   end
   return false
end 

 

 

Isso deve ser adicionado na pasta lib do seu otserver.

 

O que faz esta versão:

 

- Diferencia monstros de summons ou seja se o monstro for um summon assim como no Pokemon Online você precisa ter o level dele para poder usar a pokedex nele a ganhar a experiencia que cada pokemon da. Este script faz a mesma coisa. Se for monstro por ele poder te atacar você ganha a experiencia se for summon checa o level e compara com o do pokemon.

 

---

 

Bom é isso tá simples mais também não vou sair distribuindo tudo 100% feito.Até porquê qualquer um poderia pegar e falar que os erver tem pokedex. Então tah ai usem como base para novos scripts melhores.

Fiz esse em 20 minutos e liberei pra vcs só pra ver se diminui os pedidos deste script em lojas da OTNET.

 

Quem gostou dá um Thanks.

Se te ajudei doe V$ pra mim :yes:

 

É meu primeiro script pra OTNET espero que tanham gostado.

 

 

---------- EDITANDO

 

Versão da Pokedex Atualizada

agora com função de mostrar quantos pokemons já foram liberados na sua pokedex.

 

Agradecer muito ao felipedaniel

que foi quem criou essa parte do script

e contribuiu pra que esse script evolui-se mais uma vez

 

Bom só postando como fazer pra confirar este novo script:

 

local store = {99100, 99101, 99102, 99103, 99104, 99105, 99106, 99107, 99108, 99109}

 

Como podem ver essa é uam nova tabela que foi adicionada

ela é bem smples cada storage value que você adicionar a um pokemon na primeira tabela deve ser adicionado aqui também

se vc tiver usando storages value de 1 a 151 por exemplo deve-se colocar na tabela:

 

local store = {1, 2, 3, 4, 5, ..., 150, 151}

 

Bom é isso valeu pessoal...

Gostou agradece...

 

-------------- UPDATE

 

Pasta pokedex com a informação de uns 120 pokemons....

Tah ai agradeçam o felipedaniel pq o cara além de ter vontade tah afim mesmo

de ajudar vcs...

 

http://sharex.xpg.com.br/files/2929513081/pokedex.rar.html

 

tah ai o link pras txt dos pokemons

o link foi feito pelo felipedaniel

todos os thanks são pra ele...

sugiro q todos q usarem doem V$ pra ele....

o cara merece....

 

Valeu moçada...

Editado por Wantedzin
Adicionar a função isSummon

Compartilhar este post


Link para o post
Antharaz    4
Antharaz

Aprovado e movido

Compartilhar este post


Link para o post
MaXwEllDeN    13
MaXwEllDeN

Legal Wanted (:

Parabéns

 

--

local Dex = io.open('data/pokedex/' .. n[2],'r')

creio que é só por /pokedex/

local Dex = io.open('/pokedex/' .. n[2],'r')

mas assim tmb vai :D

Editado por MaXwEllDeN

Compartilhar este post


Link para o post
Antharaz    4
Antharaz
Legal Wanted (:

Parabéns

 

--

local Dex = io.open('data/pokedex/' .. n[2],'r')

creio que é só por /pokedex/

local Dex = io.open('/pokedex/' .. n[2],'r')

mas assim tmb vai :D

 

 

Na verdade 'data/pokedex/' e '/pokedex/' não darão o mesmo resultado, já que a primeira entrará na pasta pokedex dentro da pasta data e a outra na pasta pokedex fora da pasta data.

 

Logo é tudo uma questão de onde está os .txt

Compartilhar este post


Link para o post
Elwyn    106
Elwyn

Ficou massa a sua pokedex, toda vez que vejo um bom script fico pensando em um melhor pra tentar fazer. '-'

 

Mais sempre desisto no meio do caminho. ahsuahsuasa

Compartilhar este post


Link para o post
allansmidi    0
allansmidi

aí cara ,parabens , muiito bom...

 

 

editando aqui , consegui o que eu tava em duvida , vlw!

Editado por allansmidi

Compartilhar este post


Link para o post
leocurvelo11    0
leocurvelo11

Boa cara , sistema perfeito!

 

Vai ajuda mta gente mesmo! Vlw =D

Compartilhar este post


Link para o post
MaXwEllDeN    13
MaXwEllDeN

@Anthaz

hehe :$

 

@Wanted

se der manda por pm teu distro com o cliente, ou só o cliente e o serv que vc ta usando, que talvez eu faça um pokedistro( com os sistemas de fly, surf, ride catch e talz{tudo perfect, feito pelo Mkalo}) e poste aqui pra galera (:

Editado por MaXwEllDeN

Compartilhar este post


Link para o post
ADM MaX DE    0
ADM MaX DE
@Anthaz

tou ligado pow que dá no msm, mas por assim fica 4 caracters menor :D

 

Ensistiu no erro amigo. :palm:

 

Se você por data, ele vai buscar o arquivo na pasta data do seu servidor (onde tem as pastas: action, movements, talkactions, etc), se você não por, vai buscar na pasta do ot server (na que fica o config.lua)

Sendo assim, não é a mesma coisa.

 

----------@

topic:

 

Legalzinho seu script, mas tem alguns erros ae, principalmente no ingles, melhora isso ae! :no:

Fora isto, está bom!

Agora faça para que quando der use com a poke dex no player, apareça uma tabela com os pokemons que ele abriu (use as storages que você usa no script para identifica-los)

(;

 

Att~ MaX

Compartilhar este post


Link para o post
MaXwEllDeN    13
MaXwEllDeN

@ADM MaX DE

li errado :D, ai coloquei que dava no mesmo, hehe!

Compartilhar este post


Link para o post
Wantedzin    0
Wantedzin

HEhehehe realmente não dá no mesmo

to atualizando pra versão 2.0 com todos os bugs corrigidos...

Quanto aos erros de inglês...nem vo fala nada...

mas taha ew vejam lá que eu to alterando em 10 minutos retirados mtos bugs..

 

 

----edit

 

Pronto tah atualizado

quem tava com a versão antiga só pegar a nova...

Editado por Wantedzin

Compartilhar este post


Link para o post
AkillesW    6
AkillesW

to com um bug aki:

data/actions/scripts/pokemon/pokedex.lua:onUse

Description:

data/actions/scripts/pokemon/pokedex.lua:28: attempt to index local 'Dex' < a nil value>

stack traceback:

data/actions/scripts/pokemon/pokedex.lua:28: in function <data/actions/scripts/pokemon/pokedex.lua:1>

Compartilhar este post


Link para o post
Antharaz    4
Antharaz

@AkillesW

Provavelmente você não colocou os .txt em 'data/pokedex/' ou colocou o nome dos .txt errado na table.

Compartilhar este post


Link para o post
Wantedzin    0
Wantedzin
to com um bug aki:

 

é como falou o Antharaz

ou então vc deve etr usado o script antigo que depois de dar dex algumas vezes ele dá esse erro mesmo...

Eu ajeitei e corrigi alguns bugs se for o caso atualize ou veja se os txt estão nos lugares corretos...

Compartilhar este post


Link para o post
LEFT4CREATE    0
LEFT4CREATE

UOW, que script limds mano! parabéns e obrigado por postar!

Compartilhar este post


Link para o post
AkillesW    6
AkillesW

@Antharaz

 

vlw isso mesmo

erro besta o meu :/

Compartilhar este post


Link para o post
xhaos    0
xhaos

cara que lindso *-*

 

gostaria de saber se tem como vc por pra quando usar em vc , aparecer os quais estao abertos e fexar , e poder abrir eles :P

 

vlw

Compartilhar este post


Link para o post
warzin    0
warzin

Olá,Uso The Forgotten Server (TFS) 8.54 0.3.6.3293

nenhum erro no console,só que na hora de dar o Dex aparece You Cannot Use This Object.

essa versão de script é somente 8.54?

se for somente 8.54,se conseguirem criar uma para versões mais atuais,seria muito grato e estou disposto a agradecer com V$

abraços

Compartilhar este post


Link para o post
otswe    0
otswe

[28/10/2010 15:45:11] [Error - Action Interface]

[28/10/2010 15:45:11] data/actions/scripts/pokedex.lua:onUse

[28/10/2010 15:45:11] Description:

[28/10/2010 15:45:11] data/actions/scripts/pokedex.lua:10: attempt to call global 'isSummon' (a nil value)

[28/10/2010 15:45:11] stack traceback:

[28/10/2010 15:45:11] data/actions/scripts/pokedex.lua:10: in function <data/actions/scripts/pokedex.lua:1>

Compartilhar este post


Link para o post
xhaos    0
xhaos

@otswe

 

coloque em seu 050-function.lua essa tag la no final

 

function isSummon(sid)

for i, pid in ipairs(getPlayersOnline()) do

for c, cid in pairs(getCreatureSummons(pid)) do

if (cid == sid) then

return true

end

end

end

return false

end

 

e pronto , test denovo :P

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×