Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Alguem consegue colocar nesse scripts para bloquear que varios player no mesmo ip consegue pegar a recompença

somente 1 char por ip? e possivel?

 

actions

Spoiler

local i = {
    [1] = {id = 9980, c = 5},
    [2] = {id = 9941, c = 5},
    [3] = {id = 11249, c = 2},
    [4] = {id = 6570, c = 1},
    [5] = {id = 6571, c = 1}
}
local st = 7021
function onUse(cid, item, frompos, item2, topos)
if getPlayerStorageValue(cid, st) <= 0 then
a = math.random(1, #i)
doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))
doPlayerSendTextMessage(cid,22,"Você recebeu "..i[a].c.." " .. getItemNameById(i[a].id) .. ".")
setPlayerStorageValue(cid, st, os.time() + 1 * 24 * 60 * 1000)
for x=1, i[a].c do
doPlayerAddItem(cid, i[a].id, 1)
end
else
doPlayerSendCancel(cid, "Desculpe, você pode obter as recompensas apenas uma vez por dia.")
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
end
return true
end

 

 

Editado por mateusmoretti (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 9 months later...

Qual a versão do seu TFS? @mateusmoretti

 

Execute esse código SQL no seu banco de dados:

CREATE TABLE player_ip_storage(
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	player_id INT NOT NULL,
	ip CHAR(15) NOT NULL,
	storage INT NOT NULL
);

ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);

 

Crie um arquivo chamado nazo-functions.lua em data/lib e adicione o seguinte conteúdo:
 

-- by Nazo (tibiaking.com)
-- IP Storage System

function getIpQuestStatus(cid, storage)
	storages = db.getResult("SELECT * FROM `player_ip_storage` WHERE `ip` = \"" .. doConvertIntegerToIp(getPlayerIp(cid)) .. "\" and `storage` = "..storage..";")
	if(storages:getID() ~= -1) then
		return false
	end
	return true
end

function setIpQuestStatus(cid, storage)
	db.executeQuery("INSERT INTO player_ip_storage(player_id, ip, storage) VALUES("..getPlayerGUID(cid)..",\""..doConvertIntegerToIp(getPlayerIp(cid)).."\","..storage..")")
	return true
end

 

Agora, quando você tiver uma quest, adicione na verificação a função getIpQuestStatus na checagem junto, e quando finalizar a quest utilize o setIpQuestStatus, com os parâmetros cid e número da storage, porém a função só armazena que essa storage tem algo no banco de dados, ou seja, a quest já foi feita, você não armazena o valor da storage junto (como a função normal que geralmente adiciona "1" na storage).

 

Exemplo de quest abaixo:

-- by Nazo (tibiaking.com)
config = {
	storage = 123123,	-- storage da quest
	premio = {2160, 1}	-- {itemid, quantia}
}
function onUse(cid, item, frompos, item2, toPosition)
	queststatus = getPlayerStorageValue(cid,config.storage)
	if(queststatus == -1 and getIpQuestStatus(cid, config.storage)) then	-- note que eu só adicionei a função, nenhuma comparação, explicarei abaixo do código
		doPlayerSendTextMessage(cid,22,"Tome seu prêmio.")
		doPlayerAddItem(cid,config.premio[1],config.premio[2])
		setPlayerStorageValue(cid,config.storage,1)
		setIpQuestStatus(cid,config.storage)								-- função que adiciona a storage no banco de dados
	else
		doPlayerSendTextMessage(cid,22,"Você já fez esta quest.")
	end
end

 

Explicação básica do motivo da função não possuir comparação na verificação e ficar como a seguir:
 

if(getIpQuestStatus(cid, config.storage)) then

Quando você faz um if, com uma função dentro sem comparações, ela continuará o bloco de comando apenas se o retorno da mesma for verdadeiro, assim quando você faz a quest, e usa o get, o get retorna falso, e isso cancela a condição e vai para o "else".

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

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo