Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Não poder mover players no trainers


Ir para solução Resolvido por FlavioHulk,

Posts Recomendados

Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website).

TFS 0.4

 

Qual erro está surgindo/O que você procura?

Procuro um sistema que faça os jogadores não mover ninguém dos trainers, aonde está azul é onde os jogadores não vão poder mover ninguém.

Olhe na imagem abaixo.

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

1065281887_Semttulo.png.58d25345f9d32d97bc2c57277c7dcb4c.png

 

Rap ++ pra quem me ajudar.

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites
4 horas atrás, lordzetros disse:

Colega, acho que já temos esse script no fórum.

 

Segue o link: 

 

 

é isso que eu quero, mas ai o script precisa por posição , mas oque eu quero é um que não precise de posição porque tem muitos pisos e eu quero que só nos pisos azuls em action o uniqueid

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites

Screenshot_34.png.bfa551dba238d4767f46018dff484cfe.png

Cantos superiores e inferiores da área azul.

 

Em data/creaturescripts/scripts/pushTrainers.lua adicione:

--[[
Script - Lordzetros
Pedido - Christinacsa
Fórum TibiaKing
]]

local config = {
supEsquerdo = {x = 1016, y = 1024, z = 7}, -- Canto superior esquerdo da área que você quer que os jogadores não puxem
infDireito = {x = 1018, y = 1026, z = 7}, -- Canto inferior direito da área que você quer que os jogadores não puxem
msgFalha = "Não é permitido puxar o player desta área." -- Mensagem quando o jogador tentar puxar da área
}

function calcula_posicoes(sup,inf)
  pos_t = {}
  for l = sup.y, inf.y do
    for j = sup.x, inf.x do
      table.insert(pos_t, {x = j, y = l, z = sup.z})
    end
  end
  return pos_t
end

function onPush(cid, target)
	local tabela = calcula_posicoes(config.supEsquerdo, config.infDireito)
	if isPlayer(target) and isInArray(getCreaturePosition(target)) then
		doPlayerSendCancel(cid, config.msgFalha) 
	end
   return false
end

 

Em data/creaturescripts/creaturescripts.xml  adicione essa linha de código abaixo de alguma outra semelhante:

<event type = "push" name ="pushTrainer" event ="script" value ="pushTrainers.lua" />

 

Em data/creaturescripts/scripts/login.lua antes do último return true, cole isto:

registerCreatureEvent(cid, "pushTrainer")

 

Não pude testar por conta das sources do servidor que baixei para testar scripts, mas caso tenha algum erro, estarei para ajudar. 

[É pra funcionar], haha.

 

Editado por lordzetros (veja o histórico de edições)

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Link para o post
Compartilhar em outros sites
6 horas atrás, lordzetros disse:

Screenshot_34.png.bfa551dba238d4767f46018dff484cfe.png

Cantos superiores e inferiores da área azul.

 

Em data/creaturescripts/scripts/pushTrainers.lua adicione:


--[[
Script - Lordzetros
Pedido - Christinacsa
Fórum TibiaKing
]]

local config = {
supEsquerdo = {x = 1016, y = 1024, z = 7}, -- Canto superior esquerdo da área que você quer que os jogadores não puxem
infDireito = {x = 1018, y = 1026, z = 7}, -- Canto inferior direito da área que você quer que os jogadores não puxem
msgFalha = "Não é permitido puxar o player desta área." -- Mensagem quando o jogador tentar puxar da área
}

function calcula_posicoes(sup,inf)
  pos_t = {}
  for l = sup.y, inf.y do
    for j = sup.x, inf.x do
      table.insert(pos_t, {x = j, y = l, z = sup.z})
    end
  end
  return pos_t
end

function onPush(cid, target)
	local tabela = calcula_posicoes(config.supEsquerdo, config.infDireito)
	if isPlayer(target) and isInArray(getCreaturePosition(target)) then
		doPlayerSendCancel(cid, config.msgFalha) 
	end
   return false
end

 

Em data/creaturescripts/creaturescripts.xml  adicione essa linha de código abaixo de alguma outra semelhante:


<event type = "push" name ="pushTrainer" event ="script" value ="pushTrainers.lua" />

 

Em data/creaturescripts/scripts/login.lua antes do último return true, cole isto:


registerCreatureEvent(cid, "pushTrainer")

 

Não pude testar por conta das sources do servidor que baixei para testar scripts, mas caso tenha algum erro, estarei para ajudar. 

[É pra funcionar], haha.

 

 

Só uma sugestão, use o script do amigo acima, mas não coloque as posições como ele falou, coloque da area toda dos trainers, pelo que entendi tem vários trainers em uma area.

Pega o primeiro sqm de < /\ e o ultimo de > \/ e coloque as posições.

 

Ou tenho esse que é por targeting, como prefereir:

Então se o player estiver atacando os monstros da lista, não tem como puxar ele.

 

creaturescripts/creaturescripts.xml

<event type="push" name="Anti-Push" event="script" value="anti-push.lua"/>

creaturescripts/scripts/anti-push.lua

local targetList, GAMEMASTER = {"Purching Bag", "Monstro2", "Monstro3"}, 5
function onPush(cid, target)
    if(getPlayerAccess(cid) < GAMEMASTER) then
        if((target ~= cid and isPlayer(target)) and (getCreatureTarget(target) > 0 and isInArray(targetList, getCreatureName(getCreatureTarget(target)):lower()))) then
            doPlayerSendCancel(cid, "You cannot move this object.")
            return false
        end
    end
 
    return true
end

 

asdukeeh.jpg

Link para o post
Compartilhar em outros sites
14 horas atrás, lordzetros disse:

Screenshot_34.png.bfa551dba238d4767f46018dff484cfe.png

Cantos superiores e inferiores da área azul.

 

Em data/creaturescripts/scripts/pushTrainers.lua adicione:


--[[
Script - Lordzetros
Pedido - Christinacsa
Fórum TibiaKing
]]

local config = {
supEsquerdo = {x = 1016, y = 1024, z = 7}, -- Canto superior esquerdo da área que você quer que os jogadores não puxem
infDireito = {x = 1018, y = 1026, z = 7}, -- Canto inferior direito da área que você quer que os jogadores não puxem
msgFalha = "Não é permitido puxar o player desta área." -- Mensagem quando o jogador tentar puxar da área
}

function calcula_posicoes(sup,inf)
  pos_t = {}
  for l = sup.y, inf.y do
    for j = sup.x, inf.x do
      table.insert(pos_t, {x = j, y = l, z = sup.z})
    end
  end
  return pos_t
end

function onPush(cid, target)
	local tabela = calcula_posicoes(config.supEsquerdo, config.infDireito)
	if isPlayer(target) and isInArray(getCreaturePosition(target)) then
		doPlayerSendCancel(cid, config.msgFalha) 
	end
   return false
end

 

Em data/creaturescripts/creaturescripts.xml  adicione essa linha de código abaixo de alguma outra semelhante:


<event type = "push" name ="pushTrainer" event ="script" value ="pushTrainers.lua" />

 

Em data/creaturescripts/scripts/login.lua antes do último return true, cole isto:


registerCreatureEvent(cid, "pushTrainer")

 

Não pude testar por conta das sources do servidor que baixei para testar scripts, mas caso tenha algum erro, estarei para ajudar. 

[É pra funcionar], haha.

 

 

então nesse seu sistema eu posso adicionar varias outras posições?

 

 

7 horas atrás, DukeeH disse:

Só uma sugestão, use o script do amigo acima, mas não coloque as posições como ele falou, coloque da area toda dos trainers, pelo que entendi tem vários trainers em uma area.

Pega o primeiro sqm de < /\ e o ultimo de > \/ e coloque as posições.

 

Ou tenho esse que é por targeting, como prefereir:

Então se o player estiver atacando os monstros da lista, não tem como puxar ele.

 

creaturescripts/creaturescripts.xml

 


<event type="push" name="Anti-Push" event="script" value="anti-push.lua"/>

 

creaturescripts/scripts/anti-push.lua

 


local targetList, GAMEMASTER = {"Purching Bag", "Monstro2", "Monstro3"}, 5

	function onPush(cid, target)

	    if(getPlayerAccess(cid) < GAMEMASTER) then

	        if((target ~= cid and isPlayer(target)) and (getCreatureTarget(target) > 0 and isInArray(targetList, getCreatureName(getCreatureTarget(target)):lower()))) then

	            doPlayerSendCancel(cid, "You cannot move this object.")

	            return false

	        end

	    end

	 

	    return true

	end


 

 

Irei testar achei uma boa ideia

@DukeeH 

Olha deu error na terceira linha 

1094671329_Sem1.thumb.png.b527b28565e87622acff4c0f5d6a5351.png

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites

@Christinacsa 

function isPosInArray(array, pos)

   for _, v in pairs(array) do

          if v.x == pos.x and v.y == pos.y and v.z == pos.z then

                 return true

          end

   end

   return false

end

local pos = {

   {x = 56, y = 201, z = 6},
}

function onPush(cid, target)

   if isPlayer(target) and isPosInArray(pos, getThingPos(target)) then

          doPlayerSendCancel(cid, "Você não pode empurrar players nesta area.")

          return false

   end

   return true

end

login.lua

registerCreatureEvent(cid, "PushPlayerThere")

 

 

xml

 

<event type="push" name="PushPlayerThere" event="script" value="PushPlayer.lua" />

 

 

 

Link para o post
Compartilhar em outros sites

@Celulose Como funciona ?  é colocando a posição da onde o jogador vai ficar e do trainer? e da pra eu por outras posições ???

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites

@Christinacsa então, nesse script que fiz você pode bloquear o push em toda área de trainer, assim fica mais fácil, assim como o Dukee citou.
Na imagem que postei com a resposta, você pode colocar a posição do canto superior esquerdo da área de treino e o canto inferior direito, tudo configurável no script. Assim essa área toda delimitada por você, fica proibido de algum player dá push em alguém.

Screenshot_33.png.c7c9a29b0e6e4d44ffef7ad03aa9a2f8.png

Um exemplo acima.

Editado por lordzetros (veja o histórico de edições)

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Link para o post
Compartilhar em outros sites

@Christinacsa

 

exemplo.

 

function isPosInArray(array, pos)

   for _, v in pairs(array) do

          if v.x == pos.x and v.y == pos.y and v.z == pos.z then

                 return true

          end

   end

   return false

end

local pos = {

   {x = 56, y = 201, z = 6}
    {x = 57, y = 198, z = 6},
   {x = 53, y = 198, z = 6},
   {x = 54, y = 198, z = 6}
}

function onPush(cid, target)

   if isPlayer(target) and isPosInArray(pos, getThingPos(target)) then

          doPlayerSendCancel(cid, "Você não pode empurrar players nesta area.")

          return false

   end

   return true

end

 

 

A Posição que você colocar não vai conseguir empurra o player.

 

Link para o post
Compartilhar em outros sites

@Celulose Esse foi o problema que ele citou no tópico antes, nesse script a pessoa tem que configurar sqm por sqm de onde o push não aconteça...

Feliz daquele que ensina o que sabe, e aprende o que ensina.

 

               

star-wars-animated-gif-23.gif

Link para o post
Compartilhar em outros sites

@lordzetros no caso só criar com a função getCreatureTarget(target)

ao dar target em tal bixo não pode mover

local targetList = {"Purching Bag"}
	function onPush(cid, target)
	        if((target ~= cid and isPlayer(target)) and (getCreatureTarget(target) > 0 and isInArray(targetList, getCreatureName(getCreatureTarget(target)):lower()))) then
	            doPlayerSendCancel(cid, "You cannot move this object.")
	            return false
	    end
	    return true
	end

 

Link para o post
Compartilhar em outros sites
local config = {
	targetList = {
		[1] = 'purching bag',
		-- [2] = 'outro nome de criatura' <= exemplo
	}

	access = 3 -- Gamemaster
}

function onPush(cid, target)
	if getPlayerAccess(cid) >= config.access then
		return true
	end

	if target == cid or not isPlayer(target) then
		return true
	end

	if (getCreatureTarget(target) > 0 and isInArray(config.targetList, getCreatureName(getCreatureTarget(target)):lower())) then
		doPlayerSendCancel(cid, "You cannot move this player.")
		return false
	end

	return true
end

 

Link para o post
Compartilhar em outros sites

@FlavioHulk data/creaturescripts/scripts/NoPushTrainers.lua:7: '}' expected (to close '{' at line 1) near 'access'
[22/10/2018 2:16:58] [Error - Event::checkScript] Cannot load script (data/creaturescripts/scripts/NoPushTrainers.lua)
[22/10/2018 2:16:58] data/creaturescripts/scripts/NoPushTrainers.lua:7: '}' expected (to close '{' at line 1) near 'access'

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites
  • Solução
local config = {
	targetList = {
		[1] = 'purching bag'
	},
	access = 3 -- Gamemaster
}

function onPush(cid, target)
	if getPlayerAccess(cid) >= config.access then
		return true
	end

	if target == cid or not isPlayer(target) then
		return true
	end

	if (getCreatureTarget(target) > 0 and isInArray(config.targetList, getCreatureName(getCreatureTarget(target)):lower())) then
		doPlayerSendCancel(cid, "You cannot move this player.")
		return false
	end

	return true
end

 

Link para o post
Compartilhar em outros sites

@FlavioHulk precisa por algo no login.lua ? tô conseguindo mover um char que tá treinando 

Obs : Tô testando com acc player.

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites
Em 21/10/2018 em 01:11, Christinacsa disse:

Em data/creaturescripts/creaturescripts.xml  adicione essa linha de código abaixo de alguma outra semelhante:


<event type = "push" name ="pushTrainer" event ="script" value ="pushTrainers.lua" />

 

Em data/creaturescripts/scripts/login.lua antes do último return true, cole isto:


registerCreatureEvent(cid, "pushTrainer")

Precisa sim...

Link para o post
Compartilhar em outros sites

@FlavioHulk Funcionou cara te amo <3

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

Link para o post
Compartilhar em outros sites

Mano você tem como me ajudar em 1 coisa? eu queria que quando os jogadores upassem 50 e 50 level ele recebesse uma msg em laranja mostrando alguma magia desbloqueada quando ele upou o 50/100/150/200 etc..

Exemplo : Muito bem "JOGADOR" você acaba de upar o 50 e desbloquear uma spell "MAGIA" digite !tecnicas para ver outras.

Meu Servidor Minecraft : Ip - Skylowcraft.minecraftbr.net:25585 = Servidor 24hrs Sem Lag , Sem Hackers (1.7.2) Servidor De Fullpvp e Survival - Vamos Colocar Minigames!.

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo