Register for your free account! | Forgot your password?

You last visited: Today at 08:22

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C++/Source] Whisper ReportSystem

Discussion on [C++/Source] Whisper ReportSystem within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
TiRez's Avatar
 
elite*gold: 125
Join Date: Aug 2012
Posts: 641
Received Thanks: 2,461
[C++/Source] Whisper ReportSystem

Ahoi Seemänner!

Ich hab mal wieder was für euch. Der Titel ist zwar, dass es ein Report-System ist, aber eigentlich ist es ein Caching-System für private Nachrichten - das Report-System ist nur eine Verwendungsmöglichkeit davon, die ich mit Release (das Report-System ist gekennzeichnet mit #ifdef's)

[Nicht interessanter Teil für diejenigen, die das System nur einbauen möchten]
Soo, was tut dieses sogenannte Caching-System genau? Es speichert alle privaten Nachrichten in den Speicher (RAM) und löscht sie nach fünf Minuten wieder. Das Report-System besitzt ebenso ein eigenes Caching-System für das Abspeichern in der Datenbank (da die normalen Nachrichten nur in den Cache geschrieben werden): sobald ein Spieler gemeldet wurde, werden nach fünf Minuten das erste Mal Nachrichten in die Datenbank geschrieben (beide Namen & Nachrichten) - allerdings maximal bis zu 15 Nachrichten pro Spieler werden alle 5 Minuten gespeichert, sollten mehr geschrieben worden sein, so werden diese nach und nach alle 5 Minuten abgearbeitet. Noch zu sagen wäre, dass alle Teile in "std::queue"'s eingereiht werden, so dass die benötigte CPU-Zeit auf ein Minimum reduziert sein sollte; falls jemand hinweise zur Performance hat, nehme ich sie gern entgegen
[Ende dieses Teils]

Ich würde dieses System allerdings in Verbindung mit einem HP-Admin-Skript nutzen, da es doch sehr aufwendig sein kann, per Hand die Reports in der Datenbank durchzugehen...

Nochmal kurz und knapp: Dieses System ermöglicht es, im "Flüstern"-Fenster Spieler zu melden, wodurch beide Spieler + alle Nachrichten in den letzten fünf Minuten und alle Nachrichten in Zukunft in den Server geschrieben werden (in die neu erstellten Tabellen durch die .sql).
Attached Files
File Type: rar ReportSystem.rar (15.2 KB, 486 views)
TiRez is offline  
Thanks
14 Users
Old 02/09/2015, 12:09   #2
 
elite*gold: 2785
Join Date: Dec 2014
Posts: 403
Received Thanks: 1,354
Sehr gut gemacht, mir gefällt was du in lezter Zeit Releast

Mit freundlichen Grüßen
.Kori
.K0rí is offline  
Old 02/09/2015, 12:31   #3
 
DasSchwarzeT's Avatar
 
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,938
Idee hapert ein bisschen, wenn man jemanden beleidigt könnte man danach einfach 15x a schreiben und alle "Beweise" wären wieder weg. Wenn man unendlich viele Nachrichten speichert könnte man mega easy die DB zumüllen (ich denke daher auch deine 5 min + 15 Nachrichten pro Spieler).
Da müsste man wiederum am WhisperPacket Sicherheitsmaßnahmen treffen. Alternativ könnte man das ganze auch auf eine zusätzliche Datenbank setzen, die nicht so wichtig ist. Umsetzung der Idee ist gut, die Idee an sich hat jedoch noch ein paar Lücken, danke trotzdem.
DasSchwarzeT is offline  
Old 02/09/2015, 12:48   #4
 
TiRez's Avatar
 
elite*gold: 125
Join Date: Aug 2012
Posts: 641
Received Thanks: 2,461
@Noo'DasSchwarzeT:
Nein, das ist falsch. Es werden alle Nachrichten, die in den fünf Minuten vor dem Report geschrieben wurden, gespeichert und alle Nachrichten, die danach geschrieben werden. Ich habe lediglich eingebaut, dass er alle 5 Minuten maximal 15 Nachrichten pro Person in die Datenbank schreibt & sobald er das getan hat, gibt er diese 15 Nachrichten zum Löschen aus dem Cache frei. Solange die Nachrichten nicht gespeichert wurden, werden sie unter keinen Umständen aus dem Cache gelöscht. Sobald der Server heruntergefahren wird, werden alle Nachrichten in die Datenbank geschrieben, die noch nicht gespeichert wurden.

Somit soll lediglich abgesichert werden, dass nicht plötzlich 1000 Nachrichten reingeschrieben werden müssen o.ä..
Es gehen keine Nachrichten verloren.

Kind Regards
TiRez is offline  
Old 02/09/2015, 12:58   #5
 
Poccix's Avatar
 
elite*gold: 44
Join Date: Dec 2009
Posts: 1,696
Received Thanks: 3,835
Sieht gut aus du Pott-Verkäufer.
Hoffe man sieht noch mehr Modifikationen, hast schon ein bisschen was drauf
Poccix is offline  
Thanks
1 User
Old 02/09/2015, 13:11   #6
 
EULOG1SON's Avatar
 
elite*gold: 0
Join Date: Jun 2013
Posts: 196
Received Thanks: 50
Any image?
EULOG1SON is offline  
Old 02/09/2015, 13:13   #7
 
DasSchwarzeT's Avatar
 
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,938
Quote:
Originally Posted by TiRez View Post
@Noo'DasSchwarzeT:
Nein, das ist falsch. Es werden alle Nachrichten, die in den fünf Minuten vor dem Report geschrieben wurden, gespeichert und alle Nachrichten, die danach geschrieben werden.
Kind Regards
Dann reported man seinen 2. Account und spammt mit diesem den 1. Account mit 10 Nachrichten/Sekunde zu. Wenn man sich paar Kumpels schnappt und die das alles machen ist die DB schneller "voll" als gewollt.
DasSchwarzeT is offline  
Thanks
3 Users
Old 02/09/2015, 13:42   #8
 
TiRez's Avatar
 
elite*gold: 125
Join Date: Aug 2012
Posts: 641
Received Thanks: 2,461
Quote:
Originally Posted by Isaac™ View Post
Sieht gut aus du Pott-Verkäufer.
Besser als
[12:57:14] Isaac™ | poccix | lucas: Ich erteile Loginerlaubnisse
[12:57:21] Isaac™ | poccix | lucas: Fertige die Anfragen ab

Quote:
Originally Posted by Noo'DasSchwarzeT View Post
Dann reported man seinen 2. Account und spammt mit diesem den 1. Account mit 10 Nachrichten/Sekunde zu. Wenn man sich paar Kumpels schnappt und die das alles machen ist die DB schneller "voll" als gewollt.
Nunja, dagegen habe ich auf meinem Server eine Whisper-Sperre (Limitierung der Nachrichten pro Minute), da sonst der Whisper-Kickhack ebenso funktionieren würde. Des Weiteren - das würde dir gar nichts bringen. Wie bereits gesagt, er speichert maximal 15 Nachrichten pro User alle 5 Minuten - er würde über einen Tag lang jeweils 15 Nachrichten speichern & es gäbe kein einziges Problem. Dann dumpst du am nächsten Tag die Logs & löschst sie - und nichts ist mehr da. Du kannst damit gar nichts erreichen, diese paar Einträge mit etwas Text machen der Datenbank nichts aus. Die Log-Tabelle hat oft über 10k Einträge oder über 100k Einträge - und es macht gar nichts aus.
Ich versteh deine Sorgen, aber darüber hab ich mir schon einige Gedanken gemacht; bin aber jederzeit bereit, Hinweise zu hören

Quote:
Any image?
Well... it's just a small button in the "whisper"-window which you can click and the player is reported. Nothing more^^
TiRez is offline  
Thanks
2 Users
Old 02/09/2015, 16:09   #9
 
Alergix2's Avatar
 
elite*gold: 103
Join Date: Aug 2014
Posts: 1,425
Received Thanks: 315
Bester Typ <3
Danke
Alergix2 is offline  
Old 02/09/2015, 17:44   #10
 
Da' Real Pαιη's Avatar
 
elite*gold: 0
Join Date: Aug 2013
Posts: 568
Received Thanks: 701
Sehr nützlich danke (Y)
Da' Real Pαιη is offline  
Old 02/14/2015, 19:13   #11
 
elite*gold: 0
Join Date: Feb 2015
Posts: 50
Received Thanks: 59
Hey,

Habe folgendes Problem..

Bei mir scheitert es beim compilen an folgender Stelle. (in der input_main.cpp)

CWhisperManager::instance().AddMessage(ch->GetName(), ch->GetPlayerID(), szOpponentName, dwOpponentPID, buf);



Kann mir wer weiterhelfen?

Vielen Dank
Freezy01
Freezy01 is offline  
Old 02/14/2015, 22:08   #12
 
Myrelle's Avatar
 
elite*gold: 2
Join Date: Aug 2012
Posts: 1,242
Received Thanks: 2,071
Schickes Ding Danke
Myrelle is offline  
Reply


Similar Threads Similar Threads
Whisper bug in 5165 source.
01/10/2011 - CO2 Private Server - 3 Replies
I have a problem with my server, when someone whispers another character and they are both in a guild they would both crash after a while from whispering each other. I don't know how to fix this problem, am using a 5165 source. P.S: They must be in a guild or they won't crash.
[Release] No whisper's command (Impulse's source)
07/23/2010 - CO2 PServer Guides & Releases - 2 Replies
Here. First define in entity.cs public bool nowhsp = false; then goto packethandler.cs and where whisper is handled make it this foreach (Client.GameState pClient in ServerBase.Kernel.GamePool.Values) {
Whisper Alert!!!Alerts you when you get a whisper.
06/16/2007 - CO2 Bots & Macros - 37 Replies
Hey Hey, This was requested on forum somewhere..lol My 3rd and I think useful contribution. It will alert you if you have a whisper when marketing. Settings: Desktop 1024,768 CO 1024,768 Whisper color=Dark Blue (Set in your chat options) *make sure no chats other than Whisper are using Dark Blue.



All times are GMT +2. The time now is 08:22.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.