Jump to content

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

  • Love 3
Link to comment

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

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


  • Read our Rules
  • Activity

    1. 0

      Help with quest

    2. 0

      Will anyone modify the mount?Mounts need to be mounted to increase their stats.

    3. 11

      Lock Picking Skill + Missions

    4. 4

      Quest Deleter

    5. 1

      [SOLUTION IN TOPIC]Loading locale_game.txt raises KeyError

    6. 1

      Binary functions: "GetSlotLocalPosition" & "GetSlotGlobalPosition"

    7. 1

      Binary functions: "GetSlotLocalPosition" & "GetSlotGlobalPosition"

    8. 1

      [SOLUTION IN TOPIC]Loading locale_game.txt raises KeyError

    9. 6

      Skill Book Combination System

  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

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.