Ir para conteúdo
  • Cadastre-se

(Resolvido)Tile que passa apenas 1 player por IP!


Ir para solução Resolvido por Storm,

Posts Recomendados

  • Solução

Antes , vamos as explicações

 

POS1 = Coloque as posições na script , igual na imagem que darei de exemplo

POS2 = Coloque as posições na script , igual na imagem que darei de exemplo

TILE = Tile que vai conter um action ID 

expli.thumb.png.38ef471a2bd52dddc4e553d0c62656ea.png

 

Movements.XML

	<movevent type="StepIn" actionid="43358" event="script" value="tileip.lua"/>

Movements/scripts

function getPlayersInArea(pos1, pos2) 
playersInArea = {}
for x = pos1.x, pos2.x do
for y = pos1.y, pos2.y do
for z = pos1.z, pos2.z do
totalArea = {x = x, y= y, z = z}
playerz = getTopCreature(totalArea)
if isPlayer(playerz.uid) then
table.insert(playersInArea, getPlayerIp(playerz.uid))
end
end
end
end
return playersInArea
end

function onStepIn(cid, item, position, fromPosition)

local pos1 = {x = 92, y = 114, z = 7}
local pos2 = {x = 98, y = 120, z = 7}
local t = getPlayersInArea(pos1, pos2)
local value = getPlayerIp(cid)

      if not isPlayer(cid) then
      return true
      end
      
      if t then 
      if isInArray(t, value) then
     	 doTeleportThing(cid, fromPosition, false)
	     doSendMagicEffect(position, CONST_ME_MAGIC_BLUE)     
         doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode entrar aqui com mais de um IP")
         return false
      end
      end
end

 

Link para o post
Compartilhar em outros sites

@Sttorm 

Cara nessa sua ideia ai funcionou Perfeitamente !!! {eu testei desse jeito ai e pegou normal}

Porem nao foi do jeito que eu estava querendo usar por que, o action desse tile so fica valendo enquanto o 1 que passou tiver entre a pos1 e pos2

depois que ele sair entre a pos1 e pos2 o mc pode entrar .

e eu queria mais ou menos assim:

 

 

 

onde ta la o tile seria la exatamente onde eu queria que o player nao passasse! e o portal e que iria aparecer na hora do evento, e o portal tele transposta o

player bastante longe de onde é a pos 1 e pos 2 ! 

ve isso ai pra mim , Vlw !

 

 

kk.jpg

Link para o post
Compartilhar em outros sites
1 hora atrás, Jociel disse:

@Sttorm 

Cara nessa sua ideia ai funcionou Perfeitamente !!! {eu testei desse jeito ai e pegou normal}

Porem nao foi do jeito que eu estava querendo usar por que, o action desse tile so fica valendo enquanto o 1 que passou tiver entre a pos1 e pos2

depois que ele sair entre a pos1 e pos2 o mc pode entrar .

e eu queria mais ou menos assim:

 

 

 

onde ta la o tile seria la exatamente onde eu queria que o player nao passasse! e o portal e que iria aparecer na hora do evento, e o portal tele transposta o

player bastante longe de onde é a pos 1 e pos 2 ! 

ve isso ai pra mim , Vlw !

 

 

kk.jpg


È só você colocar na pos1 e pos2 as coodernadas do local onde o player é enviado ao entrar no teleport , colocar a action no piso em baixo do teleporte e no remeres colocar como uma area de no-logout.

Link para o post
Compartilhar em outros sites

@Sttorm 

Vlw ! Funcionou Perfeitamente ! Obrigado Rep +

 

so uma duvida a pos1 e pos2 é do mesmo jeito de fromx e toy certo?

eu fiz assim e funcionou 

Obrigado mais uma vez >D

Link para o post
Compartilhar em outros sites
local ip = {}
local function checkPlayerIp(cid)
   if not isPlayer(cid) then
      return
   end

   if ip[getPlayerIp(cid)] == true then
      return true
   end
   return false
end

function onStepIn(cid, item, position, fromPosition)
   if not isPlayer(cid) then 
      return true 
   end

   if checkPlayerIp(cid) then
      doTeleportThing(cid, fromPosition, false)
      doSendMagicEffect(position, CONST_ME_MAGIC_BLUE
      doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode entrar aqui com mais de um IP")
   else
      ip[getPlayerIp(cid)] = true
   end
   return true
end

Tentei uma chance frustrada kk !

Link para o post
Compartilhar em outros sites
13 horas atrás, FlavioHulk disse:

local ip = {}
local function checkPlayerIp(cid)
   if not isPlayer(cid) then
      return
   end

   if ip[getPlayerIp(cid)] == true then
      return true
   end
   return false
end

function onStepIn(cid, item, position, fromPosition)
   if not isPlayer(cid) then 
      return true 
   end

   if checkPlayerIp(cid) then
      doTeleportThing(cid, fromPosition, false)
      doSendMagicEffect(position, CONST_ME_MAGIC_BLUE
      doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode entrar aqui com mais de um IP")
   else
      ip[getPlayerIp(cid)] = true
   end
   return true
end

Tentei uma chance frustrada kk !

no caso o seu é uma action né?

 

Link para o post
Compartilhar em outros sites

@FlavioHulk 

o seu funcionou da seguinte maneira depois q o player passa registra a ip dele e assim impossibilitando outro player da mesma ip passar ate ai ok

mais mesmo quando o player sair do lugar , o outro de mesma ip nao pode passar , porem esse action podera ser util em alguns evento que for aberto e so usar o

comando /attr action

 

Vlw por tentar ajudar , e tbm irei usar seu script Obrigado! Rep+

Link para o post
Compartilhar em outros sites
18 minutos atrás, Jociel disse:

@FlavioHulk 

o seu funcionou da seguinte maneira depois q o player passa registra a ip dele e assim impossibilitando outro player da mesma ip passar ate ai ok

mais mesmo quando o player sair do lugar , o outro de mesma ip nao pode passar , porem esse action podera ser util em alguns evento que for aberto e so usar o

comando /attr action

 

Vlw por tentar ajudar , e tbm irei usar seu script Obrigado! Rep+

Realmente funciona dessa maneira, porém é o que está descrito no tópico haha, valeu !

Link para o post
Compartilhar em outros sites
  • 7 months later...
  • 4 years later...
Em 21/05/2018 em 11:27, Storm disse:

Antes , vamos as explicações

 

POS1 = Coloque as posições na script , igual na imagem que darei de exemplo

POS2 = Coloque as posições na script , igual na imagem que darei de exemplo

TILE = Tile que vai conter um action ID 

expli.thumb.png.38ef471a2bd52dddc4e553d0c62656ea.png

 

Movements.XML


	<movevent type="StepIn" actionid="43358" event="script" value="tileip.lua"/>

Movements/scripts


function getPlayersInArea(pos1, pos2) 
playersInArea = {}
for x = pos1.x, pos2.x do
for y = pos1.y, pos2.y do
for z = pos1.z, pos2.z do
totalArea = {x = x, y= y, z = z}
playerz = getTopCreature(totalArea)
if isPlayer(playerz.uid) then
table.insert(playersInArea, getPlayerIp(playerz.uid))
end
end
end
end
return playersInArea
end

function onStepIn(cid, item, position, fromPosition)

local pos1 = {x = 92, y = 114, z = 7}
local pos2 = {x = 98, y = 120, z = 7}
local t = getPlayersInArea(pos1, pos2)
local value = getPlayerIp(cid)

      if not isPlayer(cid) then
      return true
      end
      
      if t then 
      if isInArray(t, value) then
     	 doTeleportThing(cid, fromPosition, false)
	     doSendMagicEffect(position, CONST_ME_MAGIC_BLUE)     
         doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode entrar aqui com mais de um IP")
         return false
      end
      end
end

 

Alguma forma de adicionar mais 2 andares nesse script? Meu castelo tem 3 pisos, pelo que vi ele so bloqueia uma area especifica, teria como bloquear os dois andares de cima tambem ?

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