ich habe mal wieder was für euch. Es ist ein Verwarn-System ich habe es geschrieben da ihr das wahrscheinlich auch kennt ein User wird beleidigt und die GM´s können nichts machen außer vllt. Chatblock. So hat mann die Gelegenheit als Teamler einen User zu verwarnen nach 3,5,7 und 10 Verwarnungen wird das System automatisch Aktiv und je nach Verwarnung gibt es eine Strafe z.b
| Verwarnungen | Strafe |
|---|---|
| 3 | 3h Bann |
| 5 | 1 Tages Bann |
| 7 | 3 Tages Bann |
| 10 | Perma. Bann |
Ihr könnt die Dauer natürlich anpassen. Außerdem wird die Verwarnung automatisch in eine Log Tabelle eingetragen damit der SA die Verwarnungen immer nach vollziehen kann oder bei Perma. Bann hinterlegen kann.
Quest:
PHP Code:
quest verwarn_system begin
state start begin
function get_warn(id)
return tonumber(mysql_query("SELECT warn FROM account.account WHERE id = "..string.format("%d", id)..";").warn[1])
end
function set_warn(id)
mysql_query("update account.account set warn = warn + 1 where id = "..id..";")
end
function warn_log(id, name, grund, teamler)
mysql_query("insert into log.warn_log values("..tonumber(id)..",'"..name.."','"..grund.."','"..teamler.."');")
end
function exit_player(name)
local player = pc.select(name)
cmdchat("exit")
pc.select(player)
end
when 9009.chat."Verwarn-System" with pc.is_gm() begin
say_title("Verwarn-System[ENTER]")
say("Was möchtest du machen?")
if select("Spieler Verwarnen","Abbruch") == 2 then return end
say_title("Verwarn-System[ENTER]")
say("Wenn möchtest du verwarnen?")
local name = input()
local f_name = find_pc_by_name(name)
if name == pc.get_name() then
say_title("Verwarn-System[ENTER]")
say("Du kannst dich nicht selber verwarnen.")
return
elseif not f_name or f_name == 0 then
say_title("Verwarn-System[ENTER]")
say("Fehler!")
return
end
local sel = pc.select(f_name)
local get_name = pc.get_name()
local get_id = pc.get_account_id()
pc.select(sel)
local myname = pc.get_name()
local qry = {
[3] = {3,3}, --- 2te Zahl ist die Stunden Bann Zeit
[5] = {5,24}, --- 2te Zahl ist die Stunden Bann Zeit
[7] = {7,72}, --- 2te Zahl ist die Stunden Bann Zeit
}
say_title("Verwarn-System[ENTER]")
say("Spieler: "..get_name)
say("Account ID: "..get_id)
say("Verwarnungen: "..verwarn_system.get_warn(get_id))
if select("Verwarnen","Abbruch") == 2 then return end
say_title("Verwarn-System[ENTER]")
say("Grund für die Verwarnung:")
local gru = tostring(input())
if type(gru) ~= "string" or gru == nil then say_title("Verwarn-System[ENTER]") say("Du musst einen Fehler gemacht haben.") return end
verwarn_system.warn_log(get_id, get_name, gru, myname)
verwarn_system.set_warn(get_id)
local x = pc.select(f_name)
chat("Du hast eine Verwarnung erhalten. Pass auf!!")
pc.select(x)
syschat("Der Spieler hat erfolgreich eine Verwarnung erhalten.")
if verwarn_system.get_warn(get_id) == qry[verwarn_system.get_warn(get_id)][1] then
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL "..qry[verwarn_system.get_warn(get_id)][2].." HOUR WHERE id = "..get_id..";")
verwarn_system.exit_player(f_name)
end
if verwarn_system.get_warn(get_id) == 10 then
mysql_query("update account.account set status = 'BLOCK' where id = "..get_id..";")
verwarn_system.exit_player(f_name)
end
end
end
end
Quest Update:
- Gibt Verwarnungen ohne das der Spieler auf der gleichen Map oder gar online sein muss.
- Bei dieser Version erhält der Spieler keine Nachricht das er eine Verwarnung erhalten hat.
(Kann ich aber bei Wunsch in dieser Version auch einbauen)
PHP Code:
quest verwarn_system begin
state start begin
function get_warn(id)
return tonumber(mysql_query("SELECT warn FROM account.account WHERE id = "..string.format("%d", id)..";").warn[1])
end
function set_warn(id)
mysql_query("update account.account set warn = warn + 1 where id = "..id..";")
end
function get_id_by_playername(name)
local get_id_by_playername = mysql_query("select account_id from player.player where name = '"..name.."';")
return tonumber(get_id_by_playername[1][1])
end
function is_player_online(name)
local is_player_online = mysql_query("select count(*) from player.player where name = '"..name.."';")
return tonumber(is_player_online[1][1])
end
function warn_log(id, name, grund, teamler)
mysql_query("insert into log.warn_log values("..tonumber(id)..",'"..name.."','"..grund.."','"..teamler.."');")
end
function exit_player(name)
if find_pc_by_name(name) == 0 or not find_pc_by_name(name) then
chat("Der Spieler kann nicht gekikt werden da er")
chat("entweder Offline ist oder nicht auf der gleichen")
chat("Map. Jetzt musst du ihn manuel kiken um")
chat("die Strafe zu vollziehen.")
else
local player = pc.select(name)
cmdchat("exit")
pc.select(player)
end
end
when 9009.chat."Verwarn-System" with pc.is_gm() begin
say_title("Verwarn-System[ENTER]")
say("Was möchtest du machen?")
if select("Spieler Verwarnen","Abbruch") == 2 then return end
say_title("Verwarn-System[ENTER]")
say("Wenn möchtest du verwarnen?")
local name = input()
local f_name = find_pc_by_name(name)
local s_name = verwarn_system.is_player_online(name)
if name == pc.get_name() then
say_title("Verwarn-System[ENTER]")
say("Du kannst dich nicht selber verwarnen!")
return
end
if s_name ~= 1 then
say_title("Verwarn-System[ENTER]")
say("Der Spieler exitiert nicht!")
return
end
local myname = pc.get_name()
local get_id = verwarn_system.get_id_by_playername(name)
local qry = {
[3] = {3,3}, --- 2te Zahl ist die Stunden Bann Zeit
[5] = {5,24}, --- 2te Zahl ist die Stunden Bann Zeit
[7] = {7,72}, --- 2te Zahl ist die Stunden Bann Zeit
}
say_title("Verwarn-System[ENTER]")
say("Spieler: "..name)
say("Account ID: "..get_id)
say("Verwarnungen: "..verwarn_system.get_warn(get_id))
if select("Verwarnen","Abbruch") == 2 then return end
say_title("Verwarn-System[ENTER]")
say("Grund für die Verwarnung:")
local gru = tostring(input())
if type(gru) ~= "string" or gru == nil then say_title("Verwarn-System[ENTER]") say("Du musst einen Fehler gemacht haben.") return end
verwarn_system.warn_log(get_id, name, gru, myname)
verwarn_system.set_warn(get_id)
syschat("Der Spieler hat erfolgreich eine Verwarnung erhalten.")
if verwarn_system.get_warn(get_id) == qry[verwarn_system.get_warn(get_id)][1] then
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL "..qry[verwarn_system.get_warn(get_id)][2].." HOUR WHERE id = "..get_id..";")
verwarn_system.exit_player(name)
end
if verwarn_system.get_warn(get_id) == 10 then
mysql_query("update account.account set status = 'BLOCK' where id = "..get_id..";")
verwarn_system.exit_player(name)
end
end
end
end
Quest mit Chat(untested da ich gerade fertig mit Hausaufgaben bin)
PHP Code:
quest verwarn_system begin
state start begin
function get_warn(id)
return tonumber(mysql_query("SELECT warn FROM account.account WHERE id = "..string.format("%d", id)..";").warn[1])
end
function set_warn(id)
mysql_query("update account.account set warn = warn + 1 where id = "..id..";")
end
function get_id_by_playername(name)
local get_id_by_playername = mysql_query("select account_id from player.player where name = '"..name.."';")
return tonumber(get_id_by_playername[1][1])
end
function is_player_online(name)
local is_player_online = mysql_query("select count(*) from player.player where name = '"..name.."';")
return tonumber(is_player_online[1][1])
end
function warn_log(id, name, grund, teamler)
mysql_query("insert into log.warn_log values("..tonumber(id)..",'"..name.."','"..grund.."','"..teamler.."');")
end
function get_msg(id)
local get_msg = mysql_query("select warn_pn from account.account where id = "..id..";")
return tonumber(get_msg[1][1])
end
function exit_player(name)
local map = mysql_query("select map_index from player.player where name = '"..name.."';")
if map ~= pc.get_map_index() then
return
else
local player = pc.select(name)
cmdchat("exit")
pc.select(player)
end
end
when login with verwarn_system.get_msg(verwarn_system.get_id_by_playername(pc.get_name())) >= 1 begin
chat("Du hast eine Verwarnung erhalten. Pass auf!")
mysql_query("update account.account set warn_pn = 0 where id = "..pc.get_account_id()..";")
end
when 9009.chat."Verwarn-System" with pc.is_gm() begin
say_title("Verwarn-System[ENTER]")
say("Was möchtest du machen?")
if select("Spieler Verwarnen","Abbruch") == 2 then return end
say_title("Verwarn-System[ENTER]")
say("Wenn möchtest du verwarnen?")
local name = input()
local f_name = find_pc_by_name(name)
local s_name = verwarn_system.is_player_online(name)
if name == pc.get_name() then
say_title("Verwarn-System[ENTER]")
say("Du kannst dich nicht selber verwarnen!")
return
end
if s_name ~= 1 then
say_title("Verwarn-System[ENTER]")
say("Der Spieler exitiert nicht!")
return
end
local myname = pc.get_name()
local get_id = verwarn_system.get_id_by_playername(name)
local map_index = mysql_query("select map_index from player.player where name = '"..name.."';")
local qry = {
[3] = {3,3}, --- 2te Zahl ist die Stunden Bann Zeit
[5] = {5,24}, --- 2te Zahl ist die Stunden Bann Zeit
[7] = {7,72}, --- 2te Zahl ist die Stunden Bann Zeit
}
say_title("Verwarn-System[ENTER]")
say("Spieler: "..name)
say("Account ID: "..get_id)
say("Verwarnungen: "..verwarn_system.get_warn(get_id))
if select("Verwarnen","Abbruch") == 2 then return end
say_title("Verwarn-System[ENTER]")
say("Grund für die Verwarnung:")
local gru = tostring(input())
if type(gru) ~= "string" or gru == nil then say_title("Verwarn-System[ENTER]") say("Du musst einen Fehler gemacht haben.") return end
verwarn_system.warn_log(get_id, name, gru, myname)
verwarn_system.set_warn(get_id)
if map_index ~= pc.get_map_index() then
chat("Der Spieler ist nicht Online oder auf einer anderen Map!")
chat("Sobald er Online kommt oder sich relogt erhält")
chat("er die Nachricht.")
mysql_query("update account.account set warn_pn = warn_pn + 1 where id = "..get_id..";")
syschat("Der Spieler hat erfolgreich eine Verwarnung erhalten.")
if verwarn_system.get_warn(get_id) == qry[verwarn_system.get_warn(get_id)][1] then
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL "..qry[verwarn_system.get_warn(get_id)][2].." HOUR WHERE id = "..get_id..";")
verwarn_system.exit_player(name)
end
else
local x = pc.select(name)
chat("Du hast eine Verwarnung erhalten. Pass auf!")
pc.select(x)
syschat("Der Spieler hat erfolgreich eine Verwarnung erhalten.")
if verwarn_system.get_warn(get_id) == qry[verwarn_system.get_warn(get_id)][1] then
mysql_query("UPDATE account.account SET availDt = NOW() + INTERVAL "..qry[verwarn_system.get_warn(get_id)][2].." HOUR WHERE id = "..get_id..";")
verwarn_system.exit_player(name)
end
end
end
end
end
Warn Querys:
PHP Code:
ALTER TABLE `account` add `warn` int(10) NOT NULL DEFAULT '0';
ALTER TABLE `account` add `warn_pn` int(1) NOT NULL DEFAULT '0';
Log:
PHP Code:
CREATE TABLE `warn_log` (
`id` int(20) DEFAULT NULL,
`name` varchar(25) DEFAULT '',
`grund` text,
`teamler` varchar(25) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Special Thanks:Quote:
Das mit dem Client schließen funktioniert aber auch nur dann, wenn der GM sich im selben Channel wie der Spieler befindet, sollteste evlt noch dazu schreiben. :P
- iSouli~
- Seven
- .iRemix
Kind Regards






