Ir para conteúdo
  • Cadastre-se

(Resolvido)Bloquear login se player tiver shareando account (IP diferente na mesma account)


Ir para solução Resolvido por WooX,

Posts Recomendados

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

TFS 0.4

Base: 

Existe alguma maneira de bloquear o login de um player tipo...
eu sou o dono da accont... dai fulano vai sharear comigo (fulano tem outro ip diferente do meu), dai quando fulano logasse na minha conta ele seria kickado
tem alguma forma de fazer isso? eu tenho um script aqui de anti-mc como base, ja tentei mudar um monte de linha pra ver se eu conseguia mas n foi =s

Resumo: eu queria que o dono da account pudesse logar livremente quantos char quisesse na conta dele, e se outro player com outro IP tentasse logar, ele seria kickado.

Esse Script do anti-MC que tentei construir como base nesse que eu queria:

Spoiler

local config = {
                max = 4,         -- número de players permitido com o mesmo ip
                group_id = 1  -- kikar apenas player com o group id 1
}
local accepted_ip_list = {} -- lista dos players permitidos a usar MC, exemplo: {"200.85.3.60", "201.36.5.222"}
local function antiMC(p)
                if #getPlayersByIp(getPlayerIp(p.pid)) >= p.max then
                                doRemoveCreature(p.pid)
                end
                return true
end
function onLogin(cid)
                if getPlayerGroupId(cid) <= config.group_id then
                                if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) == false then
                                                addEvent(antiMC, 1000, {pid = cid, max = config.max+1})
                                end
                end
                return true
end


Ajuda nois lindo =c

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

up

 

Cara, IPs geralmente não são fixos por padrão, muito provedor não da esse "luxo" pro cliente. Eu consigo fazer pra ti, mas te garanto que isso vai merda.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

tipo, eu uso o "premium account" como VIP no meu server, ai alguns players shaream a mesma account pra dividir o preço da VIP, por isso que eu queria o script =C

Edit: tem problema nao se der merda, eu queria pelo menos testar mesmo

Link para o post
Compartilhar em outros sites
17 minutos atrás, poko360 disse:

tipo, eu uso o "premium account" como VIP no meu server, ai alguns players shaream a mesma account pra dividir o preço da VIP, por isso que eu queria o script =C

Edit: tem problema nao se der merda, eu queria pelo menos testar mesmo

 

Mas mesmo utilizando a mesma conta, eles não podem utilizar 2 characters ao mesmo tempo (a não ser que você tenha ativado essa opção). Vou codar algo e já já posto aqui.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
Em 27/03/2018 em 15:56, poko360 disse:

@Way20
  ok
(sim eu ativei no config pra logar varios na mesma acc)

 

Testa ai.

function onLogin(cid)
	for _, pid in pairs(getPlayersByAccountId(getPlayerAccountId(cid))) do
		if getPlayerIp(cid) ~= getPlayerIp(pid) then
			return false
		end
	end
	return true
end

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

A solução mais simples seria você fazer o que o amigo falou, desativar a entrada de mais de um char por conta. Evitaria ter que usar esse script que, como o outro amigo bem idsse, pode dar merda. Pode ter player que o roteador gere um ip diferente sempre que é desligado (como eu já tive), e isso com certeza vai frustrar essa galera.

Link para o post
Compartilhar em outros sites
3 horas atrás, gabriel28 disse:

A solução mais simples seria você fazer o que o amigo falou, desativar a entrada de mais de um char por conta. Evitaria ter que usar esse script que, como o outro amigo bem idsse, pode dar merda. Pode ter player que o roteador gere um ip diferente sempre que é desligado (como eu já tive), e isso com certeza vai frustrar essa galera.

 

Eu tinha entendido errado o que ele pediu, da maneira que eu fiz não vai dar merda não. Eu achei que ele queria bloquear (banir) quem não fosse o dono oficial da account, da maneira que fiz vai permitir somente 1 pessoa por IP na acc, seja ela o dono ou não. Acho que era isso que ele queria, só resta testar e ver se vai funcionar.

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

@Way20  funcionou perfeitamente, mas tipo eu queria colocar um aviso pra quando ele logasse e depois de 5 segundos ele seria kickado novamente

aonde eu posso colocar essas linhas?
 

Citar

 

local txt = [[
[O dono da account ja esta online]

voce nao pode logar na conta com outra pessoa online
Voce sera kickado em 5 segundos...
]]
doPlayerPopupFYI(cid, txt)
addEvent(doRemoveCreature, 5*1000, cid, true)

 

 

Link para o post
Compartilhar em outros sites

@gabriel28 entao n da em nada, quando um roteador é desligado o tibia nao desloga? ao meu ver n iria afetar em nada, pq tipo o script seria em si pra bloquear 2 pessoas com ips diferentes logando na mesma conta, se o roteador desligar a pessoa sera kickada da mesma forma nao?

Link para o post
Compartilhar em outros sites

@poko360 Eu tinha entendido errado o script. Pensei que ele salvaria o ip no primeiro login e caso houvesse uma conexão com um ip diferente depois, impediria, dai o que eu disse seria um problema, mas pelo que vi agora com atenção, não é assim. 

Link para o post
Compartilhar em outros sites
17 horas atrás, poko360 disse:

@Way20  funcionou perfeitamente, mas tipo eu queria colocar um aviso pra quando ele logasse e depois de 5 segundos ele seria kickado novamente

aonde eu posso colocar essas linhas?
 

 

 

local removeTime = 5 -- Segundos
local removeMsg = "You're gonna be disconnected in "..removeTime.." seconds for sharring the account."

function onLogin(cid)
	for _, pid in pairs(getPlayersByAccountId(getPlayerAccountId(cid))) do
		if getPlayerIp(cid) ~= getPlayerIp(pid) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, removeMsg)
			addEvent(function()
				doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
				doRemoveCreature(cid)
			end, removeTime*1000)
			break
		end
	end
	return true
end

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
7 horas atrás, Way20 disse:

 


local removeTime = 5 -- Segundos
local removeMsg = "You're gonna be disconnected in "..removeTime.." seconds for sharring the account."

function onLogin(cid)
	for _, pid in pairs(getPlayersByAccountId(getPlayerAccountId(cid))) do
		if getPlayerIp(cid) ~= getPlayerIp(pid) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, removeMsg)
			addEvent(function()
				doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
				doRemoveCreature(cid)
			end, removeTime*1000)
			break
		end
	end
	return true
end

 

 

caralho, tu é genial.

Link para o post
Compartilhar em outros sites

@Way20  opa way, eu percebi um pequeno bugzinho, os account managers so podem fazer a conta 1 pessoa por vez, tem como tipo colocar pra "ignorar" o script pros acc manager? grato

Link para o post
Compartilhar em outros sites
  • Solução
7 minutos atrás, poko360 disse:

@Way20  opa way, eu percebi um pequeno bugzinho, os account managers so podem fazer a conta 1 pessoa por vez, tem como tipo colocar pra "ignorar" o script pros acc manager? grato

 

Testa ai.

local removeTime = 5 -- Segundos
local removeMsg = "You're gonna be disconnected in "..removeTime.." seconds for sharring the account."

function onLogin(cid)
	if getCreatureName(cid):lower() ~= "account manager" then
		for _, pid in pairs(getPlayersByAccountId(getPlayerAccountId(cid))) do
			if getPlayerIp(cid) ~= getPlayerIp(pid) then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, removeMsg)
				addEvent(function()
					doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
					doRemoveCreature(cid)
				end, removeTime*1000)
				break
			end
		end
	end
	return true
end

 

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites

pegou nao, ta kickando ainda :'(

@Way20 ah nao, error meu, eu botei em outro script :facepalm:, funcionou ,mt obrigado

Editado por poko360 (veja o histórico de edições)
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