Ir para conteúdo

Featured Replies

Postado
  • Autor
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

  • Respostas 22
  • Visualizações 1.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • local config = { targetList = { [1] = 'purching bag' }, access = 3 -- Gamemaster } function onPush(cid, target) if getPlayerAccess(cid) >= config.access then return true end if target =

Posted Images

Postado

@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" />

 

 

 

Postado

@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)

Postado

@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.

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo