Jump to content
×
×
  • Create New...

Report System


luzzo

Recommended Posts

M2 Download Center

Download Here ( Internal )

Hi metin2dev today i wanna release this system that i wrote long time ago.

 

What u need is mysql_utility( for the query) if u have 34 k rev or lower  or just replay mysql_utily call with the newest of 40 k rev or your's one.

 

 

With this system player can report another for using bug , flame or others or you can use this function to check when boss wass killed or something like this.

 

 

 

Quest:

quest system_segnalazioni begin
	state start begin
		when login or levelupo with pc.get_level() >= 1 begin
			set_state("segnalazione")
		end
	end
	state segnalazione begin 
		when letter  begin
			send_letter("Segnala Player")
		end
		when button or info begin
			say_title("Old World - Segnalazione Player")
			say("")
			say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
			local info = select("Informazioni","Area Report","Esci")
			if info == 1 then
				say_title("Old World - Info segnalazioni")
				say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
				say("Indice:")
				say("1- Come reportare")
				say("2- Motivazioni report")
				say("3- Avvertenze")
				say("4- Domande Frequenti")
				say_reward("Inserisci la pagina da visitare")
				local pag = tonumber(input())
				if pag == nil or pag == "" or pag > 5 then
					say_title("Old World - Info segnalazioni")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say_reward("Devi inserire un indice valido")					
				elseif pag == 1 then
					say_title("Old World - Info segnalazioni - Pag 1")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say("Per reportare un personaggio e' ")
					say("sufficiente compilare corretamente")
					say("tutti i campi di input proposti")
					say("Ricorda di trovarti nella stessa")
					say("mappa del player da reportare.")
				elseif pag == 2 then
					say_title("Old World - Info segnalazioni - Pag 2")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say("Le Motivazioni della segnalazione:")
					say("-Spam")
					say("-Cheat")
					say("-Bug Using")
					say("-Torpiloquio")
					say("-Offese")
					say_reward("Motivazioni differenti da queste")
					say_reward("verranno considerate come abuso.")
					say_reward("Gli abusi se gravi possono portare")
					say_reward("al ban temporaneo o permanente.")					
				elseif pag == 3 then
					say_title("Old World - Info segnalazioni - Pag 3")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say("Avvertenze:")
					say("-Verificare di compilare ogni campo in")
					say(" modo corretto")
					say("-Non abusare dello strumento segnalazioni")
					say(" o potreste essere bannati")
					say("-Verificate che effetivamente il pg")
					say(" che reportate stia commettendo una ")
					say("inflazione.")
					say("Fate sempre uno screen e postatelo ")
					say("nell'apposita sezione sul forum con")
					say("ora e data")
				elseif pag == 4 then
					say_title("Old World - Info segnalazioni - Pag 4")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say("Domande Frequenti")
					say_light_blue("D: Se segnalo un player verra' bannato?")
					say_light_yellow("R: Ovviamente no, verranno fatti dei controlli")
					say_light_blue("D: Quante volte posso segnalare un player?")
					say_light_yellow("R: Quante volte vuoi, ma ricorda di segnalarlo")
					say_light_yellow("R: solo una volta per infrazione.")
					say_light_blue("D: Se segnalo piu' volte cosa succede?")
					say_light_yellow("R: Segnalazioni multiple per una stessa")
					say_light_yellow("R: inflazione vengono considerate come abuso.")
					wait()
					say_title("Old World - Info segnalazioni - Pag 4")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say("Domande Frequenti")
					say_light_blue("D: Cosa succede se abuso del sistema?")
					say_light_yellow("R: Abusare delle segnalazioni comporta")
					say_light_yellow("R: ammonizioni,ban temporanei e permanenti.")
					say_light_blue("D: Se segnalo un player da piu' pg?")
					say_light_yellow("R: Anche questo vieone considerato")
					say_light_yellow("R: un abuso.")
					say_light_blue("D: Sono stato segnalato molte volte..")
					say_light_blue("D: Ora verro' bannato?")
					say_light_yellow("R: Non non verrai bannato a meno che")
					say_light_yellow("R: dai controlli non risultera' che hai")
					say_light_yellow("R: commesso qualche inflazione.")
					wait()
					say_title("Old World - Info segnalazioni - Pag 4")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say("Domande Frequenti")
					say_light_blue("D: Per segnalare una persona nel modo corretto")
					say_light_blue("D: basta fare la segnalazione in game?")
					say_light_yellow("R: No, non basta.Devi fare uno screen")
					say_light_yellow("R: e postarlo sul forum nell apposita")
					say_light_yellow("R: sezione per dare credito a quello che dici.")
					say_light_blue("D: Ho letto tutto le info ma ho paura di")
					say_light_blue("D: commettere un abuso.Cosa faccio?")
					say_light_yellow("R: Se non sei sicuro , chiedi maggiori")
					say_light_yellow("R: informazioni allo staff di Old World")					
				end
			elseif info == 2 then
				say_title("Old World - Segnalazione Player")
				say("")
				say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
				say("Inserisci il codice di verifica per il report")
				local a = math.random(1,100)
				local b = math.random(1,100)
				say("La somma di "..a.."+"..b.."= ? ")
				local c = tonumber(input())
				if c == a+b then
					say_title("Old World - Segnalazione Player")
					say("")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say("Inserisci il personaggio da reportare")
					local reported = input()
					if reported == nil or reported == "" then
						say_title("Old World - Segnalazione Player")
						say("")
						say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
						say("Il campo di input e' vuoto, devi inserire")
						say("un nome valido.")
						say_reward("Non abusare del sistema o verrano")
						say_reward("presi provvedimenti nei tuoi confronti")
					else
						say_title("Old World - Segnalazione Player")
						say("")
						say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
						say_light_blue("Nome personaggio da reportare "..reported)
						say_reward("Inserisci la motivazione.")
						local motivation = input()
						if motivation == nil or motivation == "" then
							say_title("Old World - Segnalazione Player")
							say("")
							say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
							say_light_blue("Nome personaggio da reportare "..reported)
							say_reward("Non puoi lasciare il campo vuoto")
							say_reward("Non abusare del sistema o verrano")
							say_reward("presi provvedimenti nei tuoi confronti")
						else
							local vi = find_pc_by_name(reported)
							say_title("Old World - Segnalazione Player")
							say("")
							say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
							say_light_blue("Nome personaggio da reportare "..reported)
							if vi == 0 then
								say_reward("Il player non e' stato trovato")
								say_reward("o non e' nella tua mappa")
							else
								say_light_yellow("Vuoi procedere con il report?")
								local conf = select("Si","No")
								if conf == 1 then
									say_title("Old World - Segnalazione Player")
									say("Riepilogo report")
									say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
									local name = pc.get_name()
									local who_report = pc.get_name()
									local who_report_id = pc.get_player_id()
									local reported_id = pc.get_playere_id(reported)
									local map = info_mappa()
									local x = pc.get_player_x(reported)
									local y = pc.get_player_y(reported)
									local data = os.date("%d/%m/%Y - %H:%M")									
									say_light_yellow("Nome : "..reported)
									say_light_yellow("Luogo : "..map)
									say_light_yellow("Cordinate :"..x..","..y)
									say_light_yellow("Data :"..data)
									say_light_yellow("Motivazione :"..motivation )
									say_light_yellow("Numero report a carico :"..nreportc(reported))
									pc.report_player(reported,reported_id,who_report,who_report_id,x,y,map,data,motivation)
									wait()
									say_title("Old World - Segnalazione Player")
									say("")
									say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
									say_reward("La segnalazione e' stata inviata,")
									say_reward("ti ringraziamo per la tua collaborazione")
									say_reward("Ti ricordiamo di non abusare e/o inviare")
									say_reward("falsi report o potresti essere bannato")									
								else
									say_title("Old World - Segnalazione Player")
									say("Riepilogo report")
									say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
									say_reward("Prosegui la segnalazione quando ")
									say_reward("sarai sicuro")
								end
							end
						end
					end			
				else 
					say_title("Old World - Segnalazione Player")
					say("")
					say("Nome reporter: "..pc.get_name()..".Numero report:"..nreport())
					say_reward("Hai inserito un codice non valido")
				end
			elseif info == 3 then
				return
			end
		end		
	end
end

In questlib.lua

---------Inizio Report System-----
function nreport()
	local id_pg = pc.get_player_id()
	local result, nreport = execute_query("playerold","SELECT who_report_id FROM report_system WHERE who_report_id='"..id_pg.."'")
	local nrep = table.getn(nreport)
	return nrep
end
function nreportc(reported)
	local result, nreport = execute_query("playerold","SELECT reported FROM report_system WHERE reported='"..reported.."'")
	local nrep = table.getn(nreport)
	return nrep
end
function pc.report_player(reported,reported_id,who_report,who_report_id,x,y,map,data,motivation)
	local result, reporting = execute_query("playerold", "insert into report_system (id,reported,reported_id,who_report,who_report_id,x,y,map,data,motivazione)VALUES('','"..reported.."','"..reported_id.."','"..who_report.."','"..who_report_id.."','"..x.."','"..y.."','"..map.."','"..data.."','"..motivation.."');")
end
function pc.get_player_x(reported)
	local result, cx = execute_query("playerold","SELECT x FROM player WHERE name='"..reported.."' ")
	local x = tonumber(cx[1][1])
	return x
end
function pc.get_player_y(reported)
	local result, cy = execute_query("playerold","SELECT y FROM player WHERE name='"..reported.."' ")
	local y = tonumber(cy[1][1])
	return y
end
function pc.get_playere_id(reported)
	local result, id = execute_query("playerold","SELECT id FROM player WHERE name='"..reported.."' ")
	local idr = tonumber(id[1][1])
	return idr
end

In questfunction

nreport
nreportc
pc.report_player
pc.get_player_x
pc.get_player_y
pc.get_playere_id

Sql Table;

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `report_system`
-- ----------------------------
DROP TABLE IF EXISTS `report_system`;
CREATE TABLE `report_system` (
  `id` int(40) NOT NULL AUTO_INCREMENT,
  `reported` varchar(12) NOT NULL,
  `reported_id` int(12) NOT NULL,
  `who_report` varchar(12) NOT NULL,
  `who_report_id` int(12) NOT NULL,
  `x` int(12) NOT NULL,
  `y` int(12) NOT NULL,
  `map` int(12) NOT NULL,
  `data` varchar(20) NOT NULL,
  `motivazione` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2824 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of report_system
-- ----------------------------
INSERT INTO `report_system` VALUES ('12', 'Anubis', '1035', 'Anubis', '1035', '957114', '255093', '0', '15/11/2013 -', 'Prova');

Example for killing mob:

when 2490.kill with pc.get_level() >= 86 begin			
			notice_all("L'eroe " .. pc.get_name() .. " e il suo gruppo hanno ucciso il Beran Setau.")
			notice_all("Il leggendario boss accasciandosi al suolo,")
			notice_all("lascia cadere un drop misterioso.")
			pc.add_honor_mob(pc.get_honor_mob_point()+1)
			pc.add_honor_mobt(pc.get_honor_mobt_point()+1)
			pc.add_honor_point(pc.get_honor_point()+2)
			pc.add_honor_pointt(pc.get_honor_pointt()+2)
			local corazze  = {11297,11497,11697,11897}
			local fiori = {50721,50722,50723,50724,50725,50726,50727,50728}
			local perle = {27992,27993,27994}
			local a = math.random(1,100)
			local b = math.random(1,100)
			local cor = math.random(1,4)
			local cor1 = math.random(1,4)
			local fior = math.random(1,8)
			local fior1 = math.random(1,8)
			local fior2 = math.random(1,8)
			local perb = math.random(1,100)
			local perb1 = math.random(1,100)
			local perbl = math.random(1,100)
			local perbl1 = math.random(1,100)
			local perr = math.random(1,100)
			local perr1 = math.random(1,100)
			local elmi = {12260,12530,12390,12670}
			local armi75 = {180,3160,190,2170,1130,5120}
			local elmp = math.random(1,100)
			local elm = math.random(1,4)
			local arm75 = math.random(1,100)
			local arma75= math.random(1,6)
			local elisir = math.random(1,100)
			game . drop_item_with_ownership (71035, 1 )
			game . drop_item_with_ownership (71035, 1 )
			if elisir < 50 then
				game . drop_item_with_ownership (71035, 1 )
			end
			if elisir < 25 then
				game . drop_item_with_ownership (71035, 1 )
			end
			
			game . drop_item_with_ownership (71123, 1 )
			if a < 50 then
				game . drop_item_with_ownership (71123, 1 )
			end
			game . drop_item_with_ownership (71129, 1 )
			if b < 50 then
				game . drop_item_with_ownership (71129, 1 )
			end	
			game . drop_item_with_ownership (corazze[cor], 1 )
			game . drop_item_with_ownership (corazze[cor1], 1 )
			game . drop_item_with_ownership (fiori[fior], 100 )
			game . drop_item_with_ownership (fiori[fior1], 100 )
			game . drop_item_with_ownership (fiori[fior2], 100 )
			game . drop_item_with_ownership (perle[1], 1 )
			game . drop_item_with_ownership (perle[2], 1 )
			game . drop_item_with_ownership (perle[3], 1 )
			if perb < 50 then
				game . drop_item_with_ownership (perle[1], 2 )
			end
			if perbl < 50 then
				game . drop_item_with_ownership (perle[2], 2 )
			end
			if perr < 50 then
				game . drop_item_with_ownership (perle[3], 2 )
			end
			if perb1 < 30 then
				game . drop_item_with_ownership (perle[1], 3 )
			end
			if perbl1 < 30 then
				game . drop_item_with_ownership (perle[2], 3 )
			end
			if perr1 < 30 then
				game . drop_item_with_ownership (perle[3], 3 )
			end
			if elmp < 50 then
				game . drop_item_with_ownership (elmi[elm], 1 )
			end
			if arm75 < 20 then
				chat("Hai droppato un'arma 75")
				local data = os.date("%d/%m/%Y - %H:%M")
				pc.report_player(pc.get_name(),pc.get_player_id(),"SYSTEM",0,pc.get_x(),pc.get_y(),pc.get_map_index(),data,armi75[arma75])
				game . drop_item_with_ownership (armi75[arma75], 1 )
			end
			
		end

There is just a little "bug" concerting x y of reported player but u can solve it easily buy using vid and select

 

 

 

Reguards

  • Metin2 Dev 3
  • Love 3
Link to comment
Share on other sites

you can manage better with that. Char log  is linked with log.log table.

By using another table u can manage better information about report without using query to find something.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.