Ir para conteúdo

Sistema De Enquete E De Report (com Anti-flood)


Eventide

Posts Recomendados

primeiro, gostaria de dizer que ambos os scripts foram feitos para este duelo:

http://forums.######/showthread.php?t=63138

Report:

Nome do script: sistema de report

Versão: acredito que de 8.1 pra cima pegue.

Autor: Eventide

 

Script:



	function onSay(cid, words, param)
	local names = {}
		if isInArray(names, getPlayerName(cid)) then  --// anti-flood
			return FALSE --// end the script
		else 
			local enc = {report = tostring(param), name = getPlayerName(cid)} ---// table with variables
			io.open(w, "reports.txt") --// opening the report log
			io.write("reports.txt", tostring(enc.report)"by".. enc.name .."/n") --// writing the report
			io.close("reports.txt") --//closing the report log
			table.insert(names, enc.name) --// anti-flood
			addEvent(ArrayClean, 100, arr) --// 100 is the exhaust time in micro seconds.
		end
	end
	function ArrayClean(arr)
for rox = 1,#names do
		if names[rox] == name then
			table.remove(names, rox) --//exhaust.
		break
		end
end
end





Como Instalar:

primeiro vá até a pasta data/talkactions/scripts do seu servidor copie e cole um script qualquer e renomeie para report.lua e copie e cole o script dentro dele, logo depois crie um arquivo chamado reports.txt e não escreva nada nele.

depois va até data/talkactions e abra o arquivo talkactions.xml, escreva o seguinte dentro dele:

<talkaction words="!report" script="report.lua" />

e... pronto :D

 

 

 

 

 

 

 

 

Enquete:

nome do script: sistema de enquete

versão: 8.1+

autor: Haxy

 

Script:



--[[

Primeiramente gostaria de dizer que o script foi dedicado ao duelo:

[URL]http://forums.######/showthread.php?p=515871[/URL]

O código esta livre para uso, estudo e/ou modificações, desde que mantido os créditos.


Créditos: Haxy

]]--

local cmds = { -- Atenção, abaixo seguem os comandos do sistema, caso deseje mudar, mude também em talkactions.xml
cmdAbrirVot = '/ligarvota', -- Ligar a votação, e em seguida, após as aspas, a mensagem
cmdFecharVot = '/fechavota', -- Encerrar votação
cmdVotar = '!votar' -- Para votar, e após as aspas, sim ou nao, caso contrario o volo não será contabilizado	
}
local basicConfig = {
access = 3, -- Access minimo para abrir e fechar votações
storagePower = 27900, -- Storage value sobre se o sistema esta ligado ou desligado
strS = 27901, -- Votos Sim
strN = 27902 -- Votos Não
}


local playersVotaram = {}

function onSay(cid, words, param)

if words == cmds.cmdAbrirVot and getPlayerAccess(cid) >= basicConfig.access then -- (Z)
	if getGlobalStorageValue(basicConfig.storagePower) == -1 then -- (ZA)
		setGlobalStorageValue(basicConfig.storagePower,1)
		print('Votacao iniciada por ' .. getPlayerName(cid) .. ', com a seguinte pergunta:\n'..param)
		doPlayerSay(cid,'/B Votação iniciada:\n'..param..'\nUse: '.. cmds.cmdVotar..' "sim para votar sim\n'.. cmds.cmdVotar ..' "nao para votar nao.',1)
	else -- (ZA)
		doPlayerSendCancel(cid,'No momento já existe uma votação no ar, digite: ' .. cmds.cmdFecharVot .. ' para finalizar a atual e começar uma nova.')
	end-- (ZA)
elseif words == cmds.cmdVotar then -- (Z)
	if getGlobalStorageValue(basicConfig.storagePower) == 1 then -- (ZC)
		local vot = 0
		for i = 0,#playersVotaram do -- (ZD)
			if getPlayerName(cid) == playersVotaram[i] then -- (ZDA)
				vot = 1
				break
			else -- (ZDA)
				vot = 0
			end -- (ZDA)
		end -- (ZD)
		if vot == 0 then -- (ZE)
			if param == 'sim' then -- (ZEA)
				if getGlobalStorageValue(basicConfig.strS) == -1 then -- (ZEAA)
					setGlobalStorageValue(basicConfig.strS,1)
				else -- (ZEAA)
					setGlobalStorageValue(basicConfig.strS,getGlobalSt  orageValue(basicConfig.strS)+1)
				end -- (ZEAA)
				doPlayerSendTextMessage(cid,22,'Obrigado pelo seu voto.')
				print(getPlayerName(cid)..' votou sim.')
				table.insert(playersVotaram,getPlayerName(cid))
			elseif param == 'nao' then -- (ZEA)
				if getGlobalStorageValue(basicConfig.strN) == -1 then -- (ZEAB)
					setGlobalStorageValue(basicConfig.strN,1)
				else -- (ZEAB)
					setGlobalStorageValue(basicConfig.strN,getGlobalSt  orageValue(basicConfig.strN)+1)
				end -- (ZEAB)
				print(getPlayerName(cid)..' votou nao.')
				doPlayerSendTextMessage(cid,22,'Obrigado pelo seu voto.')
				table.insert(playersVotaram,getPlayerName(cid))
			else -- (ZEA)
				doPlayerSendCancel(cid,'Desculpe, não entendemos seu voto, use apenas as opções \'sim\' e \'nao\'.')
			end -- (ZEA)
		else -- (ZE)
			doPlayerSendCancel(cid,'Desculpe, mas você não pode votar mais de uma vez em uma unica votação.')
		end -- (ZE)
	else -- (ZC)
		doPlayerSendCancel(cid,'Não esta ocorrendo votações no momento.')
	end -- (ZC)
elseif words == cmds.cmdFecharVot and getPlayerAccess(cid) >= basicConfig.access then -- (Z)
	if getGlobalStorageValue(basicConfig.storagePower) == 1 then -- (ZB)
		if getGlobalStorageValue(basicConfig.strS) == -1 then -- (ZBA)
			setGlobalStorageValue(basicConfig.strS,0)
		end -- (ZBA)
		if getGlobalStorageValue(basicConfig.strN) == -1 then -- (ZBB)
			setGlobalStorageValue(basicConfig.strN,0)
		end -- (ZBB)
		doPlayerSay(cid,'/B A votação terminou, Resultado:\nSIM > ' ..getGlobalStorageValue(basicConfig.strS).. ' x ' ..getGlobalStorageValue(basicConfig.strN)..' < NÃO.',1)
		print('Votacao terminada em Sim '..getGlobalStorageValue(basicConfig.strS).. 'x' .. getGlobalStorageValue(basicConfig.strN) ..' Nao.')
		playersVotaram = nil
		setGlobalStorageValue(basicConfig.storagePower,-1)		
		setGlobalStorageValue(basicConfig.strS,-1)		
		setGlobalStorageValue(basicConfig.strN,-1)					
	else -- (ZB)
		doPlayerSendCancel(cid,'Não existe uma votação iniciada.')
	end -- (ZB)
end -- (Z)

end

--[[

MODO DE USO!

1° Digitar, /ligarvota "PERGUNTA AQUI
2° Quando quiser encerrar a votação digitar: /fechavota
3° Após o encerramento os resultados terem sido mostrados, use o comando /reload talk

Obrigado 

]]--



 

Como instalar:

va na pasta data/talkactions/scripts do seu servidor copie e cole um arquivo qualquer renomeie para votesys.lua, e cole o script dentro dele.

logo depois va até a pasta data/talkactions e abra o arquivo talkactions.xml, copie e cole isso nele:

<talkaction words="/ligarvota" script="votesys.lua" />
<talkaction words="/fechavota" script="votesys.lua" />
<talkaction words="!votar" script="votesys.lua" />



Editado por Eventide
Link para o comentário
Compartilhar em outros sites

@tibiaa4e

o comando print, exibe um texto no executável do servidor... :-)

e o code em c++ q vc se refere deve ser o ctrl+r, esse sistema é por talk, vc só precisa dizer !report "texto e ele cria um report no arquivo txt chamado reports.txt, e no final fica o nome do usuário, ai caso seja flood, o usuário pode ser imediatamente banido... :-)

@dandarox & gabriel

valeu, que pena que o de enquete não é meu, o que eu fiz foi o de report. T.T

Link para o comentário
Compartilhar em outros sites

@bolhinha

que trade ? ¬¬"

 

@fliper

xô ve o tópico ? :-)

 

@mimow

o de report eu testei em 8.22, mas talvez pegue em 8.1

o de enquete, eu testei junto com o autor(haxy) em um ot 8.1 :-)

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...