Postado Fevereiro 14, 2017 8 anos @Fir3element, sua logica está correta, porém estou certo de que não seria o suficiente para barrar a entrada de novos jogadores caso seja um evento em uma sala ou algo do gênero. Precisamos de uma checagem mais "avançada" aqui. @Tópico Creio que uma das melhores formas de se realizar isso, é realizando uma checagem de quem está participando do evento em questão. Qual evento que é? Enfim, você pode setar em uma tabela o cid de cada personagem que entrar no evento, e junto com este CID o IP do mesmo. Ao tentar entrar outro personagem com o mesmo ip deverá ter uma checagem dentro desta tabela para verificar se já existe algum jogador com este IP dentro do evento. Como fazer: Primeiro você deve declarar uma tabela global onde ficará salvo os dados dos jogadores que entrarão no Evento. Aconselho fazer isso em uma lib. (Estarei assumindo aqui que você utiliza a versão 0.4 ou similar.) Crie ou coloque uma lib qualquer a seguinte declaração: CHECK_MC = { players_cache = { --[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} }, } Após feito isso, você deve adicionar nesta tabela todos os jogadores que entrarem no evento em questão. Entra no arquivo de entrada do evento e adicione o seguinte código: CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} PS: Caso o evento seja um teleport que vai aparecer para os jogadores entrar ou um tile, você pode adicionar esta linha no código do arquivo no movements, mas ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition) if not isPlayer(cid) then return true end doTeleportThing(cid, posiçãoDoEvento) CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} return true end Feito isso, nossa tabela já está adicionando o CID e o IP de cada jogador que entrou dentro do evento. Agora devemos adicionar no mesmo script da entrada do evento, uma checagem para ver se dentro da tabela, já não existe um jogador com o mesmo IP. faremos da seguinte forma: for k, v in pairs(CHECK_MC.players_cache) do if CHECK_MC.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!') return false end end Você deve adicionar esta checagem antes da ação de teleporta o jogador para dentro do evento. Em resumo o script de entrada para o evento ficaria mais ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition) if not isPlayer(cid) then return true end for k, v in pairs(CHECK_MC.players_cache) do if BATTLE_ENFORCE.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!') return false end end doTeleportThing(cid, posiçãoDoEvento) CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} return true end @Matk, arruma essa box code. Citar Essa porra de code box buga todo meu código e fica mal identado tnc. Abraços e boa sorte! @This life is filled with hurt When happiness doesn't work Trust me and take my hand When the lights go out you will understand
Postado Fevereiro 14, 2017 8 anos @Fir3element, sua logica está correta, porém estou certo de que não seria o suficiente para barrar a entrada de novos jogadores caso seja um evento em uma sala ou algo do gênero. Precisamos de uma checagem mais "avançada" aqui. @Tópico Creio que uma das melhores formas de se realizar isso, é realizando uma checagem de quem está participando do evento em questão. Qual evento que é? Enfim, você pode setar em uma tabela o cid de cada personagem que entrar no evento, e junto com este CID o IP do mesmo. Ao tentar entrar outro personagem com o mesmo ip deverá ter uma checagem dentro desta tabela para verificar se já existe algum jogador com este IP dentro do evento. Como fazer: Primeiro você deve declarar uma tabela global onde ficará salvo os dados dos jogadores que entrarão no Evento. Aconselho fazer isso em uma lib. (Estarei assumindo aqui que você utiliza a versão 0.4 ou similar.) Crie ou coloque uma lib qualquer a seguinte declaração:CHECK_MC = {players_cache = { --[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)}},} Após feito isso, você deve adicionar nesta tabela todos os jogadores que entrarem no evento em questão. Entra no arquivo de entrada do evento e adicione o seguinte código: CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} PS: Caso o evento seja um teleport que vai aparecer para os jogadores entrar ou um tile, você pode adicionar esta linha no código do arquivo no movements, mas ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition)if not isPlayer(cid) thenreturn trueenddoTeleportThing(cid, posiçãoDoEvento)CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)}return trueend Feito isso, nossa tabela já está adicionando o CID e o IP de cada jogador que entrou dentro do evento. Agora devemos adicionar no mesmo script da entrada do evento, uma checagem para ver se dentro da tabela, já não existe um jogador com o mesmo IP. faremos da seguinte forma: for k, v in pairs(CHECK_MC.players_cache) doif CHECK_MC.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!')return falseendend Você deve adicionar esta checagem antes da ação de teleporta o jogador para dentro do evento. Em resumo o script de entrada para o evento ficaria mais ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition)if not isPlayer(cid) thenreturn trueendfor k, v in pairs(CHECK_MC.players_cache) doif BATTLE_ENFORCE.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!')return falseendend doTeleportThing(cid, posiçãoDoEvento) CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)}return trueend @Matk, arruma essa box code. Essa porra de code box buga todo meu código e fica mal identado tnc. Abraços e boa sorte!Achei perfeito, irei testar muito bem pensadoEnviado do meu iPhone usando Tapatalk
Postado Fevereiro 19, 2017 8 anos Autor Em 14/02/2017 ás 04:18, login12 disse: @Fir3element, sua logica está correta, porém estou certo de que não seria o suficiente para barrar a entrada de novos jogadores caso seja um evento em uma sala ou algo do gênero. Precisamos de uma checagem mais "avançada" aqui. @Tópico Creio que uma das melhores formas de se realizar isso, é realizando uma checagem de quem está participando do evento em questão. Qual evento que é? Enfim, você pode setar em uma tabela o cid de cada personagem que entrar no evento, e junto com este CID o IP do mesmo. Ao tentar entrar outro personagem com o mesmo ip deverá ter uma checagem dentro desta tabela para verificar se já existe algum jogador com este IP dentro do evento. Como fazer: Primeiro você deve declarar uma tabela global onde ficará salvo os dados dos jogadores que entrarão no Evento. Aconselho fazer isso em uma lib. (Estarei assumindo aqui que você utiliza a versão 0.4 ou similar.) Crie ou coloque uma lib qualquer a seguinte declaração: CHECK_MC = { players_cache = { --[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} }, } Após feito isso, você deve adicionar nesta tabela todos os jogadores que entrarem no evento em questão. Entra no arquivo de entrada do evento e adicione o seguinte código: CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} PS: Caso o evento seja um teleport que vai aparecer para os jogadores entrar ou um tile, você pode adicionar esta linha no código do arquivo no movements, mas ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition) if not isPlayer(cid) then return true end doTeleportThing(cid, posiçãoDoEvento) CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} return true end Feito isso, nossa tabela já está adicionando o CID e o IP de cada jogador que entrou dentro do evento. Agora devemos adicionar no mesmo script da entrada do evento, uma checagem para ver se dentro da tabela, já não existe um jogador com o mesmo IP. faremos da seguinte forma: for k, v in pairs(CHECK_MC.players_cache) do if CHECK_MC.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!') return false end end Você deve adicionar esta checagem antes da ação de teleporta o jogador para dentro do evento. Em resumo o script de entrada para o evento ficaria mais ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition) if not isPlayer(cid) then return true end for k, v in pairs(CHECK_MC.players_cache) do if BATTLE_ENFORCE.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!') return false end end doTeleportThing(cid, posiçãoDoEvento) CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} return true end @Matk, arruma essa box code. Abraços e boa sorte! Irei testar, li o code e creio que está funcionando perfeitamente, quando tiver tempo vou tentar implantar e breve posto o resultado aqui! Obrigado a todos que tentaram ajudar de alguma forma!
Postado Fevereiro 21, 2017 8 anos Em 14/02/2017 ás 05:18, login12 disse: @Fir3element, sua logica está correta, porém estou certo de que não seria o suficiente para barrar a entrada de novos jogadores caso seja um evento em uma sala ou algo do gênero. Precisamos de uma checagem mais "avançada" aqui. @Tópico Creio que uma das melhores formas de se realizar isso, é realizando uma checagem de quem está participando do evento em questão. Qual evento que é? Enfim, você pode setar em uma tabela o cid de cada personagem que entrar no evento, e junto com este CID o IP do mesmo. Ao tentar entrar outro personagem com o mesmo ip deverá ter uma checagem dentro desta tabela para verificar se já existe algum jogador com este IP dentro do evento. Como fazer: Primeiro você deve declarar uma tabela global onde ficará salvo os dados dos jogadores que entrarão no Evento. Aconselho fazer isso em uma lib. (Estarei assumindo aqui que você utiliza a versão 0.4 ou similar.) Crie ou coloque uma lib qualquer a seguinte declaração: CHECK_MC = { players_cache = { --[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} }, } Após feito isso, você deve adicionar nesta tabela todos os jogadores que entrarem no evento em questão. Entra no arquivo de entrada do evento e adicione o seguinte código: CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} PS: Caso o evento seja um teleport que vai aparecer para os jogadores entrar ou um tile, você pode adicionar esta linha no código do arquivo no movements, mas ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition) if not isPlayer(cid) then return true end doTeleportThing(cid, posiçãoDoEvento) CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} return true end Feito isso, nossa tabela já está adicionando o CID e o IP de cada jogador que entrou dentro do evento. Agora devemos adicionar no mesmo script da entrada do evento, uma checagem para ver se dentro da tabela, já não existe um jogador com o mesmo IP. faremos da seguinte forma: for k, v in pairs(CHECK_MC.players_cache) do if CHECK_MC.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!') return false end end Você deve adicionar esta checagem antes da ação de teleporta o jogador para dentro do evento. Em resumo o script de entrada para o evento ficaria mais ou menos assim: function onStepIn(cid, item, position, fromPosition, toPosition) if not isPlayer(cid) then return true end for k, v in pairs(CHECK_MC.players_cache) do if BATTLE_ENFORCE.players_cache[k].ip == getPlayerIp(cid) then doPlayerSendCancel(cid, 'Você não pode entrar com MC neste evento!') return false end end doTeleportThing(cid, posiçãoDoEvento) CHECK_MC.players_cache[getPlayerGUID(cid)] = {ip = getPlayerIp(cid)} return true end @Matk, arruma essa box code. Abraços e boa sorte! @login12 Poderia simplificar mais como deve ser feita a instalação do sistema no serve agradeço se possivel! :D
Postado Fevereiro 21, 2017 8 anos 23 minutos atrás, frank007 disse: @login12 Poderia simplificar mais como deve ser feita a instalação do sistema no serve agradeço se possivel! :D Já está simplificado ;p @This life is filled with hurt When happiness doesn't work Trust me and take my hand When the lights go out you will understand
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.