Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Spells Hiraishin Ni No Dan Seal e Hiraishin Ni No Dan


Ir para solução Resolvido por marcot,

Posts Recomendados

Fala galerinha do TK tudo beleza?? então hoje venho com mais um pedido, gostaria de pedir a script das Spells Hiraishin Ni No Dan Seal e  Hiraishin Ni No Dan

Gostaria que funciona-se assim:

 

Script 1

ao usar hiraishin ni no dan seal no player X eu faria um selamento  que durace X tempo

ao usar hiraishin ni no dan seal aparecera um effect Y ao player X que foi selado

Apos o tempo X estiver esgotado aparecera uma mensagem ao usuário da spell hiraishin ni no dan seal dizendo "a Spell Expirou" e a spell  se desfaça e não poderei ativá-la com  hiraishin ni no dan

Fim do Script

 

Script 2

ao usar hiraishin ni no dan eu teleport até o player X  que foi selado pela spell hiraishin ni no dan seal

se eu não tiver usado hiraishin ni no dan seal apareça uma mensagem dizendo "Você não usou a spell de selamento então você não pode ativa-la" 

se eu usei o hiraishin ni no dan seal então faça  a spell hiraishin ni o dan é ativada eu eu sou teleportado até o player
Fim Do Script

 

Espero ter cido claro pois não sou muito bom em explicar script e como funcionam ^^ 

 

 

 

Link para o post
Compartilhar em outros sites

se ngm fizer até amanha eu faço p vc

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  Em 02/01/2018 em 22:43, xWhiteWolf disse:

se ngm fizer até amanha eu faço p vc

Mostrar mais  

@xWhiteWolf não sei se tem muita gente enteresada nessa spell pois vi varios topicos com titulos parecidos so que nenhum como eu queria e fui pedir ajuda falaram para eu criar a até hj nada

Editado por hallanehallex (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

cara eu n tive tempo hoje, vou tentar fazer amanhã. Me manda pm umas 15h q ai qnd eu chegar do trabalho eu tento resolver rapidinho

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  Em 05/01/2018 em 00:10, xWhiteWolf disse:

cara eu n tive tempo hoje, vou tentar fazer amanhã. Me manda pm umas 15h q ai qnd eu chegar do trabalho eu tento resolver rapidinho

Mostrar mais  

 

15 Hrs nao pudir , mas mando meu hello agr

Editado por BangxD (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

 

  Em 04/01/2018 em 19:56, hallanehallex disse:

@UP

Mostrar mais  

Tenho um Spell similar a esse que está pedindo.

Depois que você "selar" essa magia no adversário passará 6 segundos ( configuravél )

e seu char irá teleportar para o player que você "selou" a magia

  Mostrar conteúdo oculto

 

  Mostrar conteúdo oculto

Aqui funcionou Perfeitamente , espero que aí também funcione. ;D

Link para o post
Compartilhar em outros sites
  Em 07/01/2018 em 16:58, zLockey9 disse:

 

Tenho um Spell similar a esse que está pedindo.

Depois que você "selar" essa magia no adversário passará 6 segundos ( configuravél )

e seu char irá teleportar para o player que você "selou" a magia

  Mostrar conteúdo oculto

 

  Mostrar conteúdo oculto

Aqui funcionou Perfeitamente , espero que aí também funcione. ;D

Mostrar mais  

@zLockey9 ja vi essa spell em um topico em que o WhiteWolf respondeu mais eu queria igual a do Nto WoNo que no caso é igual o que eu disse la no começo do topico 1 spell e selamento e outra de teleport

Link para o post
Compartilhar em outros sites

Bom, eu tentei fazer o bruto, se faltar alguma coisa me dá o toque. Eu preferi fazer por talkaction pra deixar mais fácil o codigo, porque daria muito trampo negócio de guardar o nome do jogador que o player marcou fora do script.

 

Vá em data/talkactions/talkactions.xml e adicione as tags:

<talkaction words="hiraishin ni no dan seal" script="hiraishin no jutsu.lua" />
<talkaction words="hiraishin ni no dan" script="teleport hiraishin.lua" />

Agora em data/talkactions/scripts/ crie os arquivos hiraishin no jutsu.lua e teleport hiraishin.lua.

 

hiraishin no jutsu.lua

local config = {
	storage = 49608,
	time = 6
}

local errorMsg = {
	pz = "Voce so pode usar este jutsu fora do PZ.",
	playerOnly = "Voce so pode usar este jutsu em players.",
	alreadyMarked = "Voce ja marcou um jogador."
}

function onSay(cid, words, param)
	caster = cid
	target = getPlayerByName (param)
	
	if getTilePzInfo(getPlayerPosition(caster)) == FALSE and getTilePzInfo(getPlayerPosition(target)) == FALSE then
		if isPlayer (target) == TRUE then
			if getPlayerStorageValue (cid, config.storage) <= 0 then
				setPlayerStorageValue(cid, config.storage, 1)
				doPlayerSendTextMessage(cid,22, "Voce marcou o player ".. getPlayerName(target))
				local struct = {
					left = config.time, 
					player = cid,
					target = target
				}
				addEvent(teleportIsTrue, 1000, struct)
			elseif getPlayerStorageValue (cid, config.storage) > 0 then
				doSendMagicEffect(getPlayerPosition(cid), 2) 
				doPlayerSendCancel (cid, errorMsg.alreadyMarked)
			end
		else
			doPlayerSendCancel (cid, errorMsg.playerOnly)
		end
	else
		doPlayerSendCancel (cid, errorMsg.pz)
	end
end

function teleportIsTrue (struct)
	if struct.left ~= 0 then
		if getPlayerStorageValue (struct.player, config.storage) == 2 then
			doTeleportThing(struct.player, getThingPos(struct.target))
			setPlayerStorageValue(struct.player, config.storage, 0)
			doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.")
			return TRUE
		end
		doPlayerSendTextMessage(struct.player,22, struct.left .. " segundos restantes.")
		struct.left = struct.left - 1
		addEvent (teleportIsTrue, 1000, struct)
	elseif struct.left == 0 then
		doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.")
		setPlayerStorageValue(struct.player, config.storage, 0)
	else
		return FALSE
	end
end

 

hiraishin teleport.lua

local config = { 
	storage = 49608
}

function onSay (cid, words, param)
	if getPlayerStorageValue (cid, config.storage) == 1 then
		setPlayerStorageValue(cid, config.storage, 2)
	else
		doPlayerSendTextMessage(cid,22, "Voce nao marcou nenhum jogador.")
	end
end

Testei em Aries Server to Tibia 8.1 - Version 4.0 based on OTServ SVN Version 0.6.0 e funcionou normalmente, caso dê algum erro me envie o que houve no console.

Espero ter ajudado!

Link para o post
Compartilhar em outros sites

Antes de tudo @topic, me desculpa eu ando muito sem tempo ultimamente e fds eu costumo ficar sem pc então foi duplamente mais dificil arrumar um tempo pra abrir o sv e fazer os scripts.
Eu tentei entrar hoje para escrever pelo menos umas dicas de como alguém poderia fazer para te ajudar mas me deparei com a resposta do marcot q num olhar rápido aparenta estar funcional.

@marcot
você podia tanto ter salvo o nome do player no storage quanto salvar o uid dele (q é um numero). A unica preocupação é q dependendo do tamanho máximo q o storage está definido na sua source (e no seu banco de dados) o valor poderia ultrapassar mas isso é relativamente fácil de contornar (dividir o numero em 3 storages, por ex)

Eu gostei da forma q vc criou uma structure, isso mostra que você tem conhecimento em outras linguagens.
Vou testar seu código depois.

Geralmente os programadores q eu conheço não aceitam tão bem dicas, então espero q você não seja como eles e leve para o pessoal:

1- Use variaveis locais

        caster = cid
	target = getPlayerByName (param)

Principalmente com coisas que podem ser executadas ao mesmo tempo. Elas são mais rápidas!

2- TRUE e FALSE são variaveis, use true e false (minusculo)

3- Evite redundancias.

getTilePzInfo(getPlayerPosition(caster)) == FALSE

é muito mais fácil fazer if not getTilePzInfo(getPlayerPosition(caster))

Ou no caso de If X == 1 then use if X then (o mesmo pra X == true)


De resto, curti seu estilo, obrigado por atender ao pedido do tópico. ^^(y)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  Em 08/01/2018 em 23:11, xWhiteWolf disse:

Antes de tudo @topic, me desculpa eu ando muito sem tempo ultimamente e fds eu costumo ficar sem pc então foi duplamente mais dificil arrumar um tempo pra abrir o sv e fazer os scripts.
Eu tentei entrar hoje para escrever pelo menos umas dicas de como alguém poderia fazer para te ajudar mas me deparei com a resposta do marcot q num olhar rápido aparenta estar funcional.

@marcot
você podia tanto ter salvo o nome do player no storage quanto salvar o uid dele (q é um numero). A unica preocupação é q dependendo do tamanho máximo q o storage está definido na sua source (e no seu banco de dados) o valor poderia ultrapassar mas isso é relativamente fácil de contornar (dividir o numero em 3 storages, por ex)

Eu gostei da forma q vc criou uma structure, isso mostra que você tem conhecimento em outras linguagens.
Vou testar seu código depois.

Geralmente os programadores q eu conheço não aceitam tão bem dicas, então espero q você não seja como eles e leve para o pessoal:

1- Use variaveis locais

        caster = cid
	target = getPlayerByName (param)

Principalmente com coisas que podem ser executadas ao mesmo tempo. Elas são mais rápidas!

2- TRUE e FALSE são variaveis, use true e false (minusculo)

3- Evite redundancias.

getTilePzInfo(getPlayerPosition(caster)) == FALSE

é muito mais fácil fazer if not getTilePzInfo(getPlayerPosition(caster))

Ou no caso de If X == 1 then use if X then (o mesmo pra X == true)


De resto, curti seu estilo, obrigado por atender ao pedido do tópico. ^^(y)

Mostrar mais  

@xWhiteWolf,

Então, eu estou começando a mexer com LUA ainda, comecei pra valer na semana passada... Antigamente eu mexia com otserver (quando tinha uns 12 anos) mas eu sempre reutilizava scripts para tentar fazer outros e nunca sabia nada sobre a sintaxe de programação (como condicionais ou iteradores) o que me limitava muito. Agora já sei ou pouco mais, ai ajuda.

Obrigado pelas dicas.

 

Sobre a segunda eu tenho um pouco de medo porque ao menos na versão 8.1 o TRUE e FALSE são definidos no global.lua como 0 e 1, e não sabia se em lua é feito igual em C++ (0 = false e o restante = true). Sobre a redundancia na terceira acho que entra um pouco na segunda, no servidor 8.1 que tenho enfrentei problemas quando nao colocava a redundância em alguns scripts, mas eu vi que no outro source que tenho já não dava erro (TFS). Tipo, eu meio que sei sobre isso, mas tenho medo pelo desconhecimento ainda das sources e de LUA em si...

 

O storage eu nao consigo trocar ainda porque sou meio que fechado com 8.1 e se não me engano ele não aceita storage com strings (e ele não usa banco de dados, mas arquivos de texto para armazenar os personagens). (P.S.: Mt obrigado pela dica do uid do jogador, acho que ja da pra usar em uns scripts que eu estava pensando)

Editado por marcot (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@marcot seu começo foi bem parecido com o meu, continue treinando e sucesso. Se tiver qualquer duvida pode chegar no privado :D

Lua entende nil e false como false. Qualquer outra coisa é considerado verdadeiro. Se souber um pouco de inglês aqui tá a definição de acordo com o wiki da linguagem:

 

  Mostrar conteúdo oculto



 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  Em 08/01/2018 em 22:48, marcot disse:

Bom, eu tentei fazer o bruto, se faltar alguma coisa me dá o toque. Eu preferi fazer por talkaction pra deixar mais fácil o codigo, porque daria muito trampo negócio de guardar o nome do jogador que o player marcou fora do script.

 

Vá em data/talkactions/talkactions.xml e adicione as tags:

<talkaction words="hiraishin ni no dan seal" script="hiraishin no jutsu.lua" />
<talkaction words="hiraishin ni no dan" script="teleport hiraishin.lua" />

Agora em data/talkactions/scripts/ crie os arquivos hiraishin no jutsu.lua e teleport hiraishin.lua.

 

hiraishin no jutsu.lua

local config = {
	storage = 49608,
	time = 6
}

local errorMsg = {
	pz = "Voce so pode usar este jutsu fora do PZ.",
	playerOnly = "Voce so pode usar este jutsu em players.",
	alreadyMarked = "Voce ja marcou um jogador."
}

function onSay(cid, words, param)
	caster = cid
	target = getPlayerByName (param)
	
	if getTilePzInfo(getPlayerPosition(caster)) == FALSE and getTilePzInfo(getPlayerPosition(target)) == FALSE then
		if isPlayer (target) == TRUE then
			if getPlayerStorageValue (cid, config.storage) <= 0 then
				setPlayerStorageValue(cid, config.storage, 1)
				doPlayerSendTextMessage(cid,22, "Voce marcou o player ".. getPlayerName(target))
				local struct = {
					left = config.time, 
					player = cid,
					target = target
				}
				addEvent(teleportIsTrue, 1000, struct)
			elseif getPlayerStorageValue (cid, config.storage) > 0 then
				doSendMagicEffect(getPlayerPosition(cid), 2) 
				doPlayerSendCancel (cid, errorMsg.alreadyMarked)
			end
		else
			doPlayerSendCancel (cid, errorMsg.playerOnly)
		end
	else
		doPlayerSendCancel (cid, errorMsg.pz)
	end
end

function teleportIsTrue (struct)
	if struct.left ~= 0 then
		if getPlayerStorageValue (struct.player, config.storage) == 2 then
			doTeleportThing(struct.player, getThingPos(struct.target))
			setPlayerStorageValue(struct.player, config.storage, 0)
			doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.")
			return TRUE
		end
		doPlayerSendTextMessage(struct.player,22, struct.left .. " segundos restantes.")
		struct.left = struct.left - 1
		addEvent (teleportIsTrue, 1000, struct)
	elseif struct.left == 0 then
		doPlayerSendTextMessage(struct.player,22, "Voce perdeu sua marcacao.")
		setPlayerStorageValue(struct.player, config.storage, 0)
	else
		return FALSE
	end
end

 

hiraishin teleport.lua

local config = { 
	storage = 49608
}

function onSay (cid, words, param)
	if getPlayerStorageValue (cid, config.storage) == 1 then
		setPlayerStorageValue(cid, config.storage, 2)
	else
		doPlayerSendTextMessage(cid,22, "Voce nao marcou nenhum jogador.")
	end
end

Testei em Aries Server to Tibia 8.1 - Version 4.0 based on OTServ SVN Version 0.6.0 e funcionou normalmente, caso dê algum erro me envie o que houve no console.

Espero ter ajudado!

Mostrar mais  

@marcot  mano não esta funcionando e não esta apresentando nenhum erro no console, é como se simplesmente ele não estivesse adicionada no servidor

OBS: não teria como fazer elas como spells ?? porque eu queria colocar em uma vocation especifica

 

Link para o post
Compartilhar em outros sites

Em qual versão de TFS você está testando?

P.S.: Dá pra colocar por vocation com talkaction também

 

Usou as aspas? exemplo: 

hiraishin ni no dan seal "JogadorX
Editado por marcot (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  Em 09/01/2018 em 02:10, marcot disse:

Em qual versão de TFS você está testando?

P.S.: Dá pra colocar por vocation com talkaction também

 

Usou as aspas? exemplo: 

hiraishin ni no dan seal "JogadorX

 

Mostrar mais  

@marcot  eu uso TFS Source 0.3.6 Crying Damon

 

P.S.: Se eu não usar as " Aspas " Fica Livre para todos os player poder usar ??

Link para o post
Compartilhar em outros sites

Na versão que testei só funcionava quando abria as aspas. Eu so vou terminar um script aqui e ja olho esse em uma versão mais recente de tibia

0cc47e0d7fcb80abc89fba8f887baa1c.gif

hiraishin "Teste3

teleport

/\ foram as hotkeys usadas pra teleportar, mas por conta das tags que usei diferentes pra deixar mais rápido

Editado por marcot (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  Em 09/01/2018 em 02:27, marcot disse:

Na versão que testei só funcionava quando abria as aspas. Eu so vou terminar um script aqui e ja olho esse em uma versão mais recente de tibia

0cc47e0d7fcb80abc89fba8f887baa1c.gif

hiraishin "Teste3

teleport

/\ foram as hotkeys usadas pra teleportar, mas por conta das tags que usei diferentes pra deixar mais rápido

 

Expand   Mostrar mais  

ao invez de colocar o nome da pessoa como vc deu o exemplo hiraishin "Teste3  tem como colocar a vocation por exemplo hiraishin"230-246 para X vocation pode usar essa spell/talkaction ??

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo