jemand ne idee wie man beim Offline message system einfügen kann, das man keine Offline Nachricht an jemanden schreiben kann der online ist? Aktuell geht dies und diese Nachricht wird dann nach einem Relogg zugestellt. Ist ja aber unnötig das dies geht sofern der jenige sowieso online ist. Ich weis leider nicht wie man für sowas eine Python abfrage macht.
Hier der Link vom Offline Message system:
oder hier direkt die teile die in den Client kommen:
if localeInfo.WHISPER_ERROR.has_key(mode):
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, name + " ist Offline. Setze # vor deine Nachricht um ihm eine Offline-Nachricht zu senden z.B. #Nachricht")
else:
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))
self.interface.RecvWhisper(name)
quest offline_message begin
state start begin
when login begin
cmdchat("OFFLINE_MESSAGE index/"..q.getcurrentquestindex())
offline_message.player_has_offline_box(pc.get_player_id())
local messages, currentMessages = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..pc.get_player_id()..".txt", "r"),{}
for line in messages:lines() do
if line=="0" then return end
table.insert(currentMessages, line)
end
for i=1, table.getn(currentMessages) do
cmdchat("OFFLINE_MESSAGE text/"..currentMessages[i])
end
offline_message.refresh_offline_box(pc.get_player_id())
end
when button begin
cmdchat("getinputbegin")
local MSG1 = input(cmdchat("OFFLINE_MESSAGE msg1/"))
local MSG2 = input(cmdchat("OFFLINE_MESSAGE msg2/"))
local MSG3 = input(cmdchat("OFFLINE_MESSAGE msg3/"))
cmdchat("getinputend")
local name = split(MSG1, "^")[1]
local playerid = mysql_query("SELECT id FROM player.player WHERE name = '"..name.."';").id
if playerid==nil then syschat("< Offline Message System > Diesen Spieler gibt es nicht.") return end
playerid = playerid[1]
offline_message.player_has_offline_box(playerid)
local messages, currentMessages = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "r"),{}
for line in messages:lines() do
if line!="0" then
table.insert(currentMessages, line)
end
end
MSG = (split(MSG1, "^")[2]..":$["..os.date("%d.%m.%y$%H:%M").."]:$"..MSG2..""..MSG3)
table.insert(currentMessages, MSG)
local newMessages = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "w+")
for i = 1, table.getn(currentMessages) do
newMessages:write(currentMessages[i].."\\n")
end
newMessages:close()
end
function player_has_offline_box(playerid)
local txt = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "r")
if txt == nil then
offline_message.refresh_offline_box(playerid)
end
end
function refresh_offline_box(playerid)
local txt = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "w+")
txt:write("0")
txt:close()
end
end
end
quest offline_message begin
state start begin
when login begin
cmdchat("OFFLINE_MESSAGE index/"..q.getcurrentquestindex())
offline_message.player_has_offline_box(pc.get_player_id())
local messages, currentMessages = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..pc.get_player_id()..".txt", "r"),{}
for line in messages:lines() do
if line=="0" then return end
table.insert(currentMessages, line)
end
for i=1, table.getn(currentMessages) do
cmdchat("OFFLINE_MESSAGE text/"..currentMessages[i])
end
offline_message.refresh_offline_box(pc.get_player_id())
end
when button begin
cmdchat("getinputbegin")
local MSG1 = input(cmdchat("OFFLINE_MESSAGE msg1/"))
local MSG2 = input(cmdchat("OFFLINE_MESSAGE msg2/"))
local MSG3 = input(cmdchat("OFFLINE_MESSAGE msg3/"))
cmdchat("getinputend")
local name = split(MSG1, "^")[1]
local playerid = mysql_query("SELECT id FROM player.player WHERE name = '"..name.."';").id
if playerid==nil then syschat("< Offline Message System > Diesen Spieler gibt es nicht.") return end
playerid = playerid[1]
offline_message.player_has_offline_box(playerid)
local messages, currentMessages = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "r"),{}
for line in messages:lines() do
if line!="0" then
table.insert(currentMessages, line)
end
end
MSG = (split(MSG1, "^")[2]..":$["..os.date("%d.%m.%y$%H:%M").."]:$"..MSG2..""..MSG3)
table.insert(currentMessages, MSG)
local newMessages = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "w+")
for i = 1, table.getn(currentMessages) do
newMessages:write(currentMessages[i].."\\n")
end
newMessages:close()
end
function player_has_offline_box(playerid)
local txt = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "r")
if txt == nil then
offline_message.refresh_offline_box(playerid)
end
end
function refresh_offline_box(playerid)
local txt = io.open("/usr/home/game/share/locale/germany/quest/OFFLINE_MESSAGE/"..playerid..".txt", "w+")
txt:write("0")
txt:close()
end
end
end
if u_vid == 0 then syschat ("< Offline Message Aystem > Du kannst keinen ... Spieler, eine offl.. Nachr.. versenden.") return end
habe es nun so:
Code:
local u_vid = find_pc_by_name(sname)
local name = split(MSG1, "^")[1]
local playerid = mysql_query("SELECT id FROM player.player WHERE name = '"..name.."';").id
if playerid==nil then syschat("Diesen Spieler gibt es nicht.") return end
if u_vid == 0 then syschat ("Dieser Spieler ist derzeit online. Die Nachricht wurde gelöscht.") return end
jedoch wird die nachricht auch nicht mehr durchgestellt nachdem der Charakter offline ist. Sprich die Meldung erscheint wenn er On & Off ist.
local u_vid = find_pc_by_name(sname)
local name = split(MSG1, "^")[1]
local playerid = mysql_query("SELECT id FROM player.player WHERE name = '"..name.."';").id
if playerid==nil then syschat("Diesen Spieler gibt es nicht.") return end
if u_vid == 0 then syschat ("Dieser Spieler ist derzeit online. Die Nachricht wurde gelöscht.") return end
jedoch wird die nachricht auch nicht mehr durchgestellt nachdem der Charakter offline ist. Sprich die Meldung erscheint wenn er On & Off ist.
Code:
local name = split(MSG1, "^")[1]
local u_vid = find_pc_by_name(name)
local playerid = mysql_query("SELECT id FROM player.player WHERE name = '"..name.."';").id
if playerid==nil then syschat("Diesen Spieler gibt es nicht.") return end
if u_vid == 0 then syschat ("Dieser Spieler ist derzeit online. Die Nachricht wurde gelöscht.") return end
local name = split(MSG1, "^")[1]
local u_vid = find_pc_by_name(name)
local playerid = mysql_query("SELECT id FROM player.player WHERE name = '"..name.."';").id
if playerid==nil then syschat("Diesen Spieler gibt es nicht.") return end
if u_vid == 0 then syschat ("Dieser Spieler ist derzeit online. Die Nachricht wurde gelöscht.") return end
so ggf.?
Leider immernoch.
€€
Ein Kollege hat mir geholfen. <= war die korrekte abfrage nach dem Status. == hat gefailt
gibts denn keine andere option dafür? also für die online/offline prüfung? Außer es halt per questflag abzufragen weil das bisschen aufwändig ist
Eine direkte Prüfung ob der Spieler Online / Offline ist, ist soweit ich weiß ohne Source nicht möglich. Man kann lediglich Prüfen wann der Spieler zuletzt Online war.
[R]Offline Message System 06/18/2013 - Metin2 PServer Guides & Strategies - 11 Replies Hi dear people epvp. :pimp:
Some turks said that my nickname used elsewhere. My answers : f**k *** :bandit:
Anyway let's move on reach topic.
First Pictures :
http://i.imgur.com/F3tGUDD.jpg
[Release] Iphone-System (Offline Message System) 04/19/2013 - Metin2 PServer Guides & Strategies - 74 Replies Da ich dafür kein nutzen mehr habe und dies nun alles per Python geregelt habe (ein Dankeschön an .Nova, der mir dabei geholfen hat).
Release ich mein iPhone System. mit dem konnte man Nachrichten ingame an andere Spieler senden.
Lief knapp halbes (server ist seit 2 monaten down) jahr und bisher tratt auch nie ein Fehler auf...
Quest ist im Anhang sowie die Datenbank...
Fuktionen: