Kiosks: Difference between revisions
From OuroDev
Line 5: | Line 5: | ||
Three basic columns: | Three basic columns: | ||
* ContainerId / SubId: Unique primary key to add multiple rows per character | *ContainerId / SubId: Unique primary key to add multiple rows per character | ||
* Name: numeric ID of entry in vars.attribute | *Name: numeric ID of entry in vars.attribute | ||
The remaining columns follow this format, “Category_Period,” e.g. General_Today, Kills_ThisMonth, Time_ThisWeek. | The remaining columns follow this format, “Category_Period,” e.g. General_Today, Kills_ThisMonth, Time_ThisWeek. | ||
Line 17: | Line 17: | ||
===DBServer=== | ===DBServer=== | ||
# DBServer loads vars.attribute | #DBServer loads vars.attribute | ||
# Each var name is read into a global stashtable. The name are lowercased for case-insensitivity. | #Each var name is read into a global stashtable. The name are lowercased for case-insensitivity. | ||
# DBServer reads dbo.Stats and compiles a list of top | #DBServer reads dbo.Stats and compiles a list of top stats per unique Name in a valid time period. | ||
# DBServer broadcasts top | #DBServer regenerates, rotates, and broadcasts top stats periodically to all connected MapServers. | ||
===MapServer=== | ===MapServer=== | ||
# MapServer registers stat tables based off villain groups, zones, and common names — does not read vars.attribute. Names must be lowercased during this registration function to match DBServer broadcasts. | #MapServer registers stat tables based off villain groups, zones, and common names — does not read vars.attribute. Names must be lowercased during this registration function to match DBServer broadcasts. | ||
# MapServer receives broadcasted stats and stores them in memory. | #MapServer receives broadcasted stats and stores them in memory. | ||
# MapServer records player statistics and flushes individual player’s updated stats to the database when the player is unloaded (zone transfer or logging out). DBServer reads the database and requires this data to be flushed to account for new stats. | #MapServer records player statistics and flushes individual player’s updated stats to the database when the player is unloaded (zone transfer or logging out). DBServer reads the database and requires this data to be flushed to account for new stats. | ||
# If a client opens a relevant kiosk and topic, it generates HTML and sends it to the client. MapServer regenerates and sends new HTML each time a topic is loaded. | #If a client opens a relevant kiosk and topic, it generates HTML and sends it to the client. MapServer regenerates and sends new HTML each time a topic is loaded. | ||
===Client=== | ===Client=== | ||
# Client renders HTML in uiSMFView. | #Client renders HTML in uiSMFView. |
Revision as of 02:01, 30 May 2021
Schema
cohdb.dbo.Stats
Three basic columns:
- ContainerId / SubId: Unique primary key to add multiple rows per character
- Name: numeric ID of entry in vars.attribute
The remaining columns follow this format, “Category_Period,” e.g. General_Today, Kills_ThisMonth, Time_ThisWeek.
Actions and events in MapServer increment or add to these columns.
Process
DBServer
- DBServer loads vars.attribute
- Each var name is read into a global stashtable. The name are lowercased for case-insensitivity.
- DBServer reads dbo.Stats and compiles a list of top stats per unique Name in a valid time period.
- DBServer regenerates, rotates, and broadcasts top stats periodically to all connected MapServers.
MapServer
- MapServer registers stat tables based off villain groups, zones, and common names — does not read vars.attribute. Names must be lowercased during this registration function to match DBServer broadcasts.
- MapServer receives broadcasted stats and stores them in memory.
- MapServer records player statistics and flushes individual player’s updated stats to the database when the player is unloaded (zone transfer or logging out). DBServer reads the database and requires this data to be flushed to account for new stats.
- If a client opens a relevant kiosk and topic, it generates HTML and sends it to the client. MapServer regenerates and sends new HTML each time a topic is loaded.
Client
- Client renders HTML in uiSMFView.