ArcEmu: Table Mailbox And Other Troubles With Mail System - ArcEmu

Jump to content

Toggle shoutbox Lastest Announcements

dfighter  : (07 December 2014 - 12:06 PM) Arcemu is in hibernation mode, please read http://arcemu.org/fo...showtopic=26903
dfighter  : (01 January 2013 - 05:56 PM) Arcemu wishes you all a happy new year!
Hasbro  : (12 September 2012 - 10:01 AM) Please excuse our outage from the web! Our web host had a major malfunction!
dfighter  : (01 September 2012 - 04:05 PM) Since the spam bots just don't want to stop, I've enabled admin verification when registering.
dfighter  : (23 January 2012 - 09:56 PM) Please note that from now on you will need to confirm your email on the wiki in order to edit it!
Hasbro  : (31 December 2011 - 12:50 PM) Happy New Years all!
Navid  : (26 December 2011 - 04:09 AM) Merry Christmas !!!!!! Happy holidays all :)
WAmadeus  : (24 December 2011 - 03:54 PM) Merry Christmas to all!
dfighter  : (24 December 2011 - 11:05 AM) The Arcemu team wishes y'all a Merry Christmukkah!
Hasbro  : (05 October 2011 - 12:53 PM) Looking for web designers for upcoming web related project. If you're interested in designing user interfaces contact me
dfighter  : (02 September 2011 - 03:47 PM) So who here wants vehicles in Arcemu? :P http://arcemu.org/fo...showtopic=25440
Hasbro  : (14 August 2011 - 03:25 PM) Join us on irc, grab an irc client and connect to irc.freenode.net join channel #arcemu /server irc.freenode.net:6667 /join #arcemu
jackpoz  : (03 August 2011 - 05:33 AM) to all Lua Engine (old one) users: please check http://arcemu.org/fo...showtopic=25274
Hasbro  : (20 May 2011 - 05:27 PM) Looking for people experienced with CMake configuration and setup! Contact me asap
Hasbro  : (15 May 2011 - 05:03 PM) ArcEmu is recruiting C++ programmers, contact Hasbro if interested.
paroxysm  : (03 May 2011 - 06:26 PM) Updated luabridge gossip example to describe the whole gossip creation process rather than just how to create menu. Gossip tutorial
paroxysm  : (23 April 2011 - 11:35 AM) Lua writers can refer to the Luabridge Tutorials section in the Wiki to learn how to write gossip code correctly.
Hasbro  : (20 April 2011 - 05:22 PM) Thank you for your continuous contribution of bug reports, we are working on them.
Hasbro  : (17 April 2011 - 03:20 AM) Please consider donating to support our bills. Donations can be sent using PayPal to donations@arcemu.org - Thank you for your support.
paroxysm  : (10 April 2011 - 12:43 AM) Refer to the Luabridge Tutorials section in the Wiki to learn the new syntax of luabridge.
Resize Shouts Area

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Table Mailbox And Other Troubles With Mail System

#1 User is offline   Magnifikator 

  • Interested
  • PipPipPipPip
  • Group: Members
  • Posts: 398
  • Joined: 05-October 11
  • Gender:Male
  • Location:Switzerland
  • Server OS:Windows

Posted 03 April 2012 - 11:14 AM

Hi

I'm just trying to put a wow mail by our web cms (PHP) into the mailbox table in the char database.

I discovered some problems:

1.
The SQL structure has a fault:
message_id is the primary key in this table. But the sql structure gives them a default value of 0. This is obviously wrong. There should be no default value and the field should be set to autoincrement. Than it's much easier to INSERT a new mail f.ex. by PHP. This should be changed.
And on this point somebody also should check if the table mailbox_insert_queue is still needed. I don't think so. The structure of this table differs quite a lot the the table mailbox.

2.
How is the value in the fields expiry_time and delivery_time calculated? It's something like a timestamp. But I couln't figure out how to make it.

3.
When I enter an external mail into the db I expected that after some time the mail will reached the player in game. It works, but only if the player relogs. In the world.conf is an entry ReloadDelay. But I don't know what's the unit of this value: ms, seconds, minutes ?. I tried it with '2' and with '60'. But nothing happens.

4.
Is the core deleting automatically old mails ? I don't think so. I believe I have very old mails in the db of players they never come back and read their mails.
Try out the LoE ArcEmu World database. Please visit dev.LandOfElves.net.

Posted Image


0

#2 User is offline   niru4l 

  • Member
  • Pip
  • Group: Members
  • Posts: 14
  • Joined: 09-December 10
  • Gender:Male

Posted 04 April 2012 - 04:45 AM

2. They are calculated with a unix timestamp
You have to calculate it like this:
currentunixtime + timetillexpiry
1 day equals 86400

3. Seems like mails from database are just loaded when player is doing login. while player is online all is just cached by the server (don't know how to explain it correct)
You could make a thread which loads mails from a custom table in which your php script inserts them.
Then it checks if player who should recive the mail is online.
If he's online you can add the message to his mailbox storage else you put the data in the mailbox_table


4. Yes that's right there's just a function which erases expired mails from a player when he looks in his mailbox.

Take a look at MailSystem.h and MailSystem.cpp

Edit: There is a big difference between mailbox_insert_queue & mailbox.

The table mailbox contains all mails. The table mailbox_insert_queue contains mails which can be insert by other applications or scripts.


updated wiki: http://www.arcemu.or...x#delivery_time
You just need the mailbox_insert_queue. I found out that there's a thread which checks the entrys from mailbox_insert_queue and sends them to the players.
0

#3 User is offline   Magnifikator 

  • Interested
  • PipPipPipPip
  • Group: Members
  • Posts: 398
  • Joined: 05-October 11
  • Gender:Male
  • Location:Switzerland
  • Server OS:Windows

Posted 09 April 2012 - 03:20 AM

Thanks, it's really only a timestamp.

In PHP f.ex. can done simply by time(). Shame over me, could have tested it before asking :D

And thank you for editing the wiki, I have noted it already :)

Looking to this post http://arcemu.org/fo...showtopic=25905 I'm asking myself if mail_insert_queue table is working. I will try that. I only was surprised that the sql structure differs so much. On the other side if it's only loaded when the player login into the game - what is the different meaning of these 2 tables ?

I think I really have to study MailSystem.cpp :D
Try out the LoE ArcEmu World database. Please visit dev.LandOfElves.net.

Posted Image


0

#4 User is offline   dfighter 

  • Titles are overrated
  • PipPipPipPipPipPipPipPipPipPip
  • Group: Administrator
  • Posts: 5,189
  • Joined: 14-June 08
  • IRC:dfighter
  • Gender:Male
  • Server OS:Linux

Posted 09 April 2012 - 08:56 PM

The table mailbox is where Arcemu stores the ingame mail.
On the other hand mailbox_insert_queue was added so you can inject mail into the game from an outside application, like a PHP script.
It is periodically checked and the content is delivered.
"The demand for free goods is infinite."
0

#5 User is offline   Magnifikator 

  • Interested
  • PipPipPipPip
  • Group: Members
  • Posts: 398
  • Joined: 05-October 11
  • Gender:Male
  • Location:Switzerland
  • Server OS:Windows

Posted 13 April 2012 - 04:37 PM

Thanks, will try that.
Try out the LoE ArcEmu World database. Please visit dev.LandOfElves.net.

Posted Image


0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users