Spieler Detector?

04/23/2015 11:03 MaxChri#1
Hey Community,

ich bin gerade dabe ein Auto-Bann System zu erstellen, welches teilweise per Quest laufen soll.

Nun habe ich mich gefragt, ob es vielleicht irgendein Befehl gibt, welcher alle Spieler in der Umgebung auflisten kann. Also wenn ich jetzt z.B mit meinem GM Char irgendwo hin gehe, dass die Quest dann per Bestätigung einmal alle Spieler auflistet, welche momentan in der Umgebung des GM Chars sind. Ist sowas überhaupt möglich?

Liebe Grüße
Max
04/23/2015 11:44 DasSchwarzeT#2
Sollte über LUA + Python kein Problem werden
04/24/2015 09:58 socressor#3
Flag beim Einloggen / Ausloggen setzen (je nach Mapindex) und einer neuen Tabellen spalte in der Player Tabelle hinzufügen (boolean).

Dann halt neuen Questbefehl per mysql Abfrage (z.B. SELECT id FROM player.player WHERE FLAG = TRUE;)

Bei Fragen, melden :)
04/24/2015 11:04 MaxChri#4
Quote:
Originally Posted by socressor View Post
Flag beim Einloggen / Ausloggen setzen (je nach Mapindex) und einer neuen Tabellen spalte in der Player Tabelle hinzufügen (boolean).

Dann halt neuen Questbefehl per mysql Abfrage (z.B. SELECT id FROM player.player WHERE FLAG = TRUE;)

Bei Fragen, melden :)
Danke hab dich angeschrieben :)
04/24/2015 11:18 rollback#5
Code:
quest getmapplayers begin
	state start begin
		when login begin
			mysql_query("UPDATE player.player SET current_map = "..pc.get_map_index().." WHERE id = "..pc.get_player_id().." LIMIT 1;")
		end
		when logout begin
			mysql_query("UPDATE player.player SET current_map = 0 WHERE id = "..pc.get_player_id().." LIMIT 1;")
		end
		when login with pc.is_gm() begin
			send_letter("Spieler auf Map")
		end
		when button or info with pc.is_gm() begin
			getmapplayers.show_menu(getmapplayers.query1(pc.get_map_index()))
		end
		function show_menu(query)
			say("Auf deiner aktuellen Map befinden sich "..table.getn(query.name).." Spieler.")
			local s = select("Spielernamen anzeigen", "Spieler auf Map suchen", "Map eines Spielers suchen", "Abbrechen")
			if s == 1 then
				for _,tbl in pairs(query.name) do
					if modulo_bool(_, 12) then
						wait()
					end
					say(tbl)
				end
			elseif s == 2 then
				say("Gib den Mapindex ein")
				getmapplayers.show_menu(query1(input()))
			elseif s == 3 then
				say("Gib den Namen des Spielers ein")
				getmapplayers.show_menu(query2(input()))
			else
				return
			end
		end
		function query1(val)
			return mysql_query("SELECT name FROM player.player WHERE current_map = "..val..";")
		end
		function query2(val)
			return mysql_query("SELECT name FROM player.player WHERE name = '"..val.."' LIMIT 1;")
		end
	end
end
Sollte so gehen, kostet aber relativ viel Leistung (bei jedem Login / Logout eine Query)
04/24/2015 17:23 MaxChri#6
Quote:
Originally Posted by definitely not Sensenmann View Post
Code:
quest getmapplayers begin
	state start begin
		when login begin
			mysql_query("UPDATE player.player SET current_map = "..pc.get_map_index().." WHERE id = "..pc.get_player_id().." LIMIT 1;")
		end
		when logout begin
			mysql_query("UPDATE player.player SET current_map = 0 WHERE id = "..pc.get_player_id().." LIMIT 1;")
		end
		when login with pc.is_gm() begin
			send_letter("Spieler auf Map")
		end
		when button or info with pc.is_gm() begin
			show_menu(query1(pc.get_map_index()))
		end
		function show_menu(query)
			say("Auf deiner aktuellen Map befinden sich "..table.getn(query.name).." Spieler.")
			local s = select("Spielernamen anzeigen", "Spieler auf Map suchen", "Map eines Spielers suchen", "Abbrechen")
			if s == 1 then
				for _,tbl in pairs(query.name) do
					if modulo_bool(_, 12) then
						wait()
					end
					say(tbl)
				end
			elseif s == 2 then
				say("Gib den Mapindex ein")
				show_menu(query1(input()))
			elseif s == 3 then
				say("Gib den Namen des Spielers ein")
				show_menu(query2(input()))
			else
				return
			end
		end
		function query1(val)
			return mysql_query("SELECT name FROM player.player WHERE current_map = "..val..";")
		end
		function query2(val)
			return mysql_query("SELECT name FROM player.player WHERE name = '"..val.."' LIMIT 1;")
		end
	end
end
Sollte so gehen, kostet aber relativ viel Leistung (bei jedem Login / Logout eine Query)
Danke aber bekomme leider einen Error "Error occured on compile .."
04/24/2015 17:25 rollback#7
Und was steht da noch ausser error ... ?^^
04/24/2015 18:38 MaxChri#8
Quote:
Originally Posted by definitely not Sensenmann View Post
Und was steht da noch ausser error ... ?^^
Nichts weiter :( Wenn ich die Datei in den Questordner schiebe und in der Console die Quests reloade, kommt der Fehler. Aber was die Ursache ist, steht da nicht >_<