|
You last visited: Today at 08:11
Advertisement
Offline Message System Python frage
Discussion on Offline Message System Python frage within the Metin2 Private Server forum part of the Metin2 category.
05/16/2016, 19:35
|
#1
|
elite*gold: 17
Join Date: May 2014
Posts: 2,103
Received Thanks: 1,292
|
Offline Message System Python frage
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:
uiwhisper.py
Code:
if self.targetName==player.GetName():
chat.AppendChat(chat.CHAT_TYPE_INFO, "< Offline Message System > Du kannst dir selber keine Offline Nachrichten senden!")
return
text = text.replace("#", "", 1)
if text[0]==" ":
text = text.replace(" ", "", 1)
String1 = self.targetName+"^"+player.GetName()
String2 = ""
String3 = ""
i = 0
if len(text)>=50:
while i <= (len(text)-1):
if i<=50:
String2 = (String2 + text[i])
else:
String3 = (String3 + text[i])
i = i + 1
else:
String2 = text
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, self.targetName, player.GetName() + " : " + text)
import constInfo
import event
constInfo.OFFLINE_MESSAGE[1] = (String1)
constInfo.OFFLINE_MESSAGE[2] = (String2.replace(" ", "$"))
constInfo.OFFLINE_MESSAGE[3] = (String3.replace(" ", "$"))
event.QuestButtonClick(constInfo.OFFLINE_MESSAGE[0])
self.chatLine.SetText("")
return
net.SendWhisperPacket(self.targetName, text)
self.chatLine.SetText("")
chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, self.targetName, player.GetName() + " : " + text)
game.py
Code:
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)
Code:
def __OfflineMessage(self, i):
CMD = i.split("/")
if CMD[0]=="index":
constInfo.OFFLINE_MESSAGE[0] = int(CMD[1])
elif CMD[0]=="text":
NEU = CMD[1].split(":", 1)
chat.AppendWhisper(chat.WHISPER_TYPE_SYSTEM, NEU[0], CMD[1].replace("$", " "))
self.interface.RecvWhisper(NEU[0])
elif CMD[0]=="msg1":
net.SendQuestInputStringPacket(str(constInfo.OFFLINE_MESSAGE[1]))
elif CMD[0]=="msg2":
net.SendQuestInputStringPacket(str(constInfo.OFFLINE_MESSAGE[2]))
elif CMD[0]=="msg3":
net.SendQuestInputStringPacket(str(constInfo.OFFLINE_MESSAGE[3]))
quest:
Code:
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
|
|
|
05/16/2016, 20:39
|
#2
|
elite*gold: 0
Join Date: Dec 2014
Posts: 1,018
Received Thanks: 499
|
post mal die quest.
|
|
|
05/16/2016, 21:03
|
#3
|
elite*gold: 17
Join Date: May 2014
Posts: 2,103
Received Thanks: 1,292
|
Quote:
Originally Posted by BizepsSupportAccount
post mal die quest.
|
ganz vergessen
Code:
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
|
|
|
05/16/2016, 22:17
|
#4
|
elite*gold: 0
Join Date: Dec 2014
Posts: 1,018
Received Thanks: 499
|
edit: bin am Handy aber probier das mal.
local u_vid == find_pc_by_name (sname)
dannach unter der playerid abfrage, das hier:
if u_vid == 0 then syschat ("< Offline Message Aystem > Du kannst keinen ... Spieler, eine offl.. Nachr.. versenden.") return end
|
|
|
05/16/2016, 23:02
|
#5
|
elite*gold: 17
Join Date: May 2014
Posts: 2,103
Received Thanks: 1,292
|
Quote:
Originally Posted by BizepsSupportAccount
edit: bin am Handy aber probier das mal.
local u_vid == find_pc_by_name (sname)
dannach unter der playerid abfrage, das hier:
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.
|
|
|
05/16/2016, 23:05
|
#6
|
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
|
Quote:
Originally Posted by xSaito
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.
|
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
so ggf.?
|
|
|
05/16/2016, 23:12
|
#7
|
elite*gold: 17
Join Date: May 2014
Posts: 2,103
Received Thanks: 1,292
|
Quote:
Originally Posted by byte xGr33n
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
so ggf.?
|
Leider immernoch.
€€
Ein Kollege hat mir geholfen. <= war die korrekte abfrage nach dem Status. == hat gefailt
|
|
|
05/21/2016, 21:05
|
#8
|
elite*gold: 150
Join Date: Sep 2010
Posts: 1,049
Received Thanks: 275
|
Du weißt aber schon das find_pc_by_name nicht channel übergreifend und map übergreifend funtzt
Gesendet von meinem S30 mit Hilfe von Elitepvpers, bereitgestellt von appyet.com
|
|
|
06/12/2016, 02:15
|
#9
|
elite*gold: 17
Join Date: May 2014
Posts: 2,103
Received Thanks: 1,292
|
Quote:
Originally Posted by gerald500
Du weißt aber schon das find_pc_by_name nicht channel übergreifend und map übergreifend funtzt
Gesendet von meinem S30 mit Hilfe von Elitepvpers, bereitgestellt von appyet.com
|
gibts dafür eine andere möglichkeit, die auch map und ch übergreifend ist?
|
|
|
06/12/2016, 18:50
|
#10
|
elite*gold: 0
Join Date: Dec 2014
Posts: 1,018
Received Thanks: 499
|
Quote:
Originally Posted by xSaito
gibts dafür eine andere möglichkeit, die auch map und ch übergreifend ist?
|
Muss man im Source lösen.
|
|
|
06/12/2016, 19:28
|
#11
|
elite*gold: 17
Join Date: May 2014
Posts: 2,103
Received Thanks: 1,292
|
Quote:
Originally Posted by BizepsSupportAccount
Muss man im Source lösen.
|
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
|
|
|
06/12/2016, 23:12
|
#12
|
elite*gold: 0
Join Date: Dec 2014
Posts: 1,018
Received Thanks: 499
|
Quote:
Originally Posted by xSaito
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.
|
|
|
06/16/2016, 19:17
|
#13
|
elite*gold: 150
Join Date: Sep 2010
Posts: 1,049
Received Thanks: 275
|
Quote:
Originally Posted by xSaito
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
|
via client quest kommi kannste vielleicht im clienten was einbauen.
login geht ja über quest und bei logouts char wechsel und spiel beenden schickste was an den server
|
|
|
Similar Threads
|
[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:
|
All times are GMT +1. The time now is 08:12.
|
|