Ir para conteúdo

Pergunta

Hey,

 

então, o script da talkaction fui eu que fiz, tentei colocar na pokedex e não consegui.

O script da talkaction diz quantas stones faltam para seu pokémon chegar ao boost +50, a dex também funciona assim, mas caso algum jogador use a dex no seu pokémon, irá mostrar o boost do pokémon dele e quantas stones faltam para este chegar ao boost +50.

O dalvorsn me ajudou a colocar o script na pokedex e a simplificá-lo, então, créditos dele.

Muito obrigado, @dalvorsn!

Eu editei a pergunta, pois o dalvorsn me ajudou por mensagem.

 

Script para quem quiser:

data/lib/pokedex system.lua

coloquem isso nas primeiras linhas:

  Mostrar conteúdo oculto

 

procure por

table.insert(stt, "Name: "..name.."\n")

e embaixo coloque

local others = {"Steelix", "Dragonite", "Skarmory", "Scizor", "Salamence"}	if not virtual and isPlayer(getCreatureMaster(item2.uid)) then		if isInArray(others, name) then			local boost = getItemAttribute(ball.uid, "boost") or 0			local stones = metalcrystal[boost]			local calculo = 70 - stones			table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.\n")		else			local boost = getItemAttribute(ball.uid, "boost") or 0			local stones = normais[boost]			local calculo = 338 - stones			table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.\n")		end	end

em "local others ="

vocês vão colocar os pokémon que são boostados com Crystal/Metal/Ancient Stone, caso no seu ot tenha o sistema desse tipo de pokémon ser boostado com 1 stone por boost até o boost 30, e nos próximos boosts, ser boostado com 2 stones por boost.

 

Se você não quer esse sistema ou não tem esse sistema, deixe assim:

 

if not virtual and isPlayer(getCreatureMaster(item2.uid)) then	if isInArray(others, name) then		local boost = getItemAttribute(ball.uid, "boost") or 0		local stones = normais[boost]		local calculo = 338 - stones		table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.\n")	endend

 

 

Caso você queira que seja por talkaction e não na dex, use esse script:

 

data/talkactions/scripts

crie um arquivo .lua

stonestofifty.lua:

  Mostrar conteúdo oculto

 

talkactions.xml:

  Mostrar conteúdo oculto

 

Editado por Bodak Reborn
Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 1
  Em 26/04/2016 em 22:15, Bodak Reborn disse:

Perdão pela demora, não tinha visto.

Bom, eu sou iniciante em lua, faz uns 3 dias que comecei a mexer em códigos de fato e isso é avançado demais para mim, mas obrigado pelo código, vou estudá-lo!

Em pokedex system.lua, embaixo de 

table.insert(stt, "Name: "..name.."\n")

eu coloquei

table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.")

apenas para testar e apareceu lá, só estava com o problema que eu citei no tópico.

Tem alguma função para saber se o pokémon é selvagem? Se tiver, com getCreatureMaster e essa função funcionaria perfeitamente.

Expand  

faz um if com o getCreatureMaster(pokemon_uid), caso atrelado ao isPlayer. Inclusive faça os calculos dentro do if, porque eles dependem da existencia do master pra procurar a pokebola.

 

if isPlayer(getCreatureMaster(pokemon_uid)) then   table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.")end

 

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692185
Compartilhar em outros sites

  • 0
  • Diretor

Aviso!

NÃO CRIE TÓPICOS DE SUPORTE NESTA SEÇÃO

Menu -> Fóruns -> Tutoriais e Suporte

 

PRESTE MAIS ATENÇÃO DA PROXIMA VEZ

 

Algum Coordernador mova o tópico fazendo favor.

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692165
Compartilhar em outros sites

  • 0

Sorry,

 

era pro titulo ser "Ajuda para complementar + código", postei aqui porque se alguém precisasse desse script, não procuraria na área de suporte.

 

Perdão novamente.

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692167
Compartilhar em outros sites

  • 0

Que tal primeiro reduzir o code usando loops e matematica?

function getStoneCountByLevel(fromLevel, toLevel, increase_interval)	local sum = 0	local a = math.ceil(fromLevel/increase_interval)	for i = fromLevel, toLevel do 		sum = sum + a		if (i % increase_interval) == 0 then			a = a + 1		end	endend

E sim, voce pode fazer pegando o master da creature, porem leve em conta que nem todos os pokemons tem master, alguns sao selvagens, logo em alguns não deve ser exibido o boost.

 

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692170
Compartilhar em outros sites

  • 0
  • Diretor
  Em 26/04/2016 em 20:49, Bodak Reborn disse:

Sorry,

 

era pro titulo ser "Ajuda para complementar + código", postei aqui porque se alguém precisasse desse script, não procuraria na área de suporte.

 

Perdão novamente.

Expand  

 

Entendo, normal postar na área errado. Todo mundo tem sua primeira vez certo? Mais não seria melhor resolver o que você estava querendo primeiro que no caso seria na área de suporte e quando consiguisse resolver você criava um tópico aqui e postasse o seu código completo + explicação?

 

Até eu estou confuso hehe

 

Espero que alguém consiga te ajudar, boa sorte! xD

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692171
Compartilhar em outros sites

  • 0
  Em 26/04/2016 em 20:54, dalvorsn disse:

Que tal primeiro reduzir o code usando loops e matematica?

function getStoneCountByLevel(fromLevel, toLevel, increase_interval)	local sum = 0	local a = math.ceil(fromLevel/increase_interval)	for i = fromLevel, toLevel do 		sum = sum + a		if (i % increase_interval) == 0 then			a = a + 1		end	endend

E sim, voce pode fazer pegando o master da creature, porem leve em conta que nem todos os pokemons tem master, alguns sao selvagens, logo em alguns não deve ser exibido o boost.

 

Expand  

Perdão pela demora, não tinha visto.

Bom, eu sou iniciante em lua, faz uns 3 dias que comecei a mexer em códigos de fato e isso é avançado demais para mim, mas obrigado pelo código, vou estudá-lo!

Em pokedex system.lua, embaixo de 

table.insert(stt, "Name: "..name.."\n")

eu coloquei

table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.")

apenas para testar e apareceu lá, só estava com o problema que eu citei no tópico.

Tem alguma função para saber se o pokémon é selvagem? Se tiver, com getCreatureMaster e essa função funcionaria perfeitamente.

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692174
Compartilhar em outros sites

  • 0

@Yan Liima, aprecio sua vontade de manter a comunidade em ordem, mas cuidado com sub-moderação. Peço pra que qnd vc encontrar algo fora das regras, apenas utilize o botão de Denunciar post e informe o ocorrido. ^^

 

@Bodak Reborn, mais atenção na hora de criar tópicos amigo, por favor.

 

Agradeço a compreensão.

Tópico movido para a área correta.

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692177
Compartilhar em outros sites

  • 0

Eu fiz o que você disse, deu esse erro na distro:

(luaGetCreatureMaster) Creature not found

E continua com o mesmo erro

@dalvorsn

Editado por Bodak Reborn
Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692189
Compartilhar em outros sites

  • 0

@dalvorsn, eu tentei com item2.uid e getPlayerSlotItem(cid,8).uid.

Ambos não funcionaram, mas o item2.uid não deu aquele erro na distro.

 

Não entendi muito bem o código que tu mandou, ainda tenho aprofundar mais um pouco nos meus estudos... então usei o código que eu fiz.

Código da pokedex: 

  Mostrar conteúdo oculto

 

Editado por Bodak Reborn
Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692195
Compartilhar em outros sites

  • 0

Certo, tinha uma coisa que eu não previa, o parametro usado pra o uid algumas vezes pode ser uma string, no caso de serem virtuais(não tenho certeza mas talvez os selvagens ele considere como "virtuais". A função faz exatamente a mesma coisa, so que ela tem parametros extra, que é o level de destino, caso queira usar e nao for 50, e o intervalo em de boost que ele usa pra incrementar uma stone. Na tabela que tu fez de 4 em 4 boost ele aumenta uma stone no numero necessario para adicionar o boost. De todo modo simplifiquei a função, deixando os dois parametros como opcionais e com valores default de 50 e 4;

 

Segue o codigo ajustado, credio que agora funcione

  Mostrar conteúdo oculto

 

Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692210
Compartilhar em outros sites

  • 0

@dalvorsn,

removi o end que estava fechando a função e dando o bug na distro

	if not virtual and isPlayer(getCreatureMaster(item2.uid)) then		local boost = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "boost") or 0		local calculo = getStoneCountByLevel(boost)		table.insert(stt, "Boost level: +"..boost..".\n"..calculo.." stones left to +50.")	endend --esse aqui

e dei return sum na função getStoneCountByLevel, já que o calculo tava dando nulo.

 

Primeiro erro:

Continua com o mesmo erro quando outros players dão dex.

 

Segundo erro:

O calculo da função tá errado, eu testei com um pokémon +4 e no código dizia faltavam 335 stones para o +50, o certo seria 334.

Editado por Bodak Reborn
Link para o comentário
https://xtibia.com/forum/topic/240575-ajuda-para-complementar-c%C3%B3digo/#findComment-1692212
Compartilhar em outros sites

×
×
  • Criar Novo...