LoginServer support via database for max createable Chars per acct, and ceteran EXP bonus display requires SQL update.
This commit is contained in:
parent
e7000037b4
commit
d2eb5f23d8
3 changed files with 43 additions and 3 deletions
EQ2/source/LoginServer
|
@ -1001,3 +1001,39 @@ void LoginDatabase::UpdateAccountIPAddress(int32 account_id, int32 address){
|
|||
Query query;
|
||||
query.RunQuery2(Q_UPDATE, "update account set ip_address='%s' where id=%lu", inet_ntoa(in), account_id);
|
||||
}
|
||||
|
||||
//devn00b: There is no rulesystem for login, so im going to use login_config for future things like this.
|
||||
//devn00b: Returns the number of characters a player may create per account. This should be set by server owners -> login,
|
||||
//devn00b: However, better semi-working for now than not working at all.
|
||||
//devn00b: TODO: EQ2World sends max char per acct.
|
||||
int8 LoginDatabase::GetMaxCharsSetting() {
|
||||
//live defaults to 7 for GOLD members.
|
||||
int8 max_chars = 7;
|
||||
Query query;
|
||||
MYSQL_ROW row;
|
||||
|
||||
MYSQL_RES* result = query.RunQuery2(Q_SELECT, "select config_value from login_config where config_name='max_characters_per_account'");
|
||||
if (result && mysql_num_rows(result) == 1) {
|
||||
row = mysql_fetch_row(result);
|
||||
if (row[0])
|
||||
max_chars = atoi(row[0]);
|
||||
}
|
||||
//if nothing else return the default.
|
||||
return max_chars;
|
||||
}
|
||||
|
||||
//TODO: EQ2World sends the servers max level for each server so we can do this correctly.
|
||||
int16 LoginDatabase::GetAccountBonus(int32 acct_id) {
|
||||
int32 bonus = 0;
|
||||
Query query;
|
||||
MYSQL_ROW row;
|
||||
|
||||
//pull all characters greater than the max level setting in the login_config table.
|
||||
MYSQL_RES* result = query.RunQuery2(Q_SELECT, "SELECT COUNT(id) FROM login_characters WHERE LEVEL >= (SELECT config_value FROM login_config WHERE config_name='max_level_for_vet_reward') AND account_id=%i", acct_id);
|
||||
if (result && mysql_num_rows(result) == 1) {
|
||||
row = mysql_fetch_row(result);
|
||||
if(row[0])
|
||||
bonus = atoi(row[0]);
|
||||
}
|
||||
return bonus;
|
||||
}
|
|
@ -84,6 +84,8 @@ public:
|
|||
void SetServerEquipmentAppearances(int32 server_id, map<int32, LoginEquipmentUpdate> equip_updates); // JohnAdams: login appearances
|
||||
int32 GetLoginCharacterIDFromWorldCharID(int32 server_id, int32 char_id); // JohnAdams: login appearances
|
||||
void RemoveDeletedCharacterData();
|
||||
int8 GetMaxCharsSetting();
|
||||
int16 GetAccountBonus(int32 acct_id);
|
||||
DatabaseNew dbLogin;
|
||||
};
|
||||
#endif
|
|
@ -6,9 +6,11 @@
|
|||
*/
|
||||
#include "PacketHeaders.h"
|
||||
#include "../common/MiscFunctions.h"
|
||||
#include "LoginDatabase.h"
|
||||
#include "LWorld.h"
|
||||
|
||||
extern LWorldList world_list;
|
||||
extern LoginDatabase database;
|
||||
|
||||
void LS_DeleteCharacterRequest::loadData(EQApplicationPacket* packet){
|
||||
InitializeLoadData(packet->pBuffer, packet->size);
|
||||
|
@ -27,7 +29,7 @@ EQ2Packet* LS_CharSelectList::serialize(int16 version){
|
|||
account_info.account_id = account_id;
|
||||
account_info.unknown1 = 0xFFFFFFFF;
|
||||
account_info.unknown2 = 0;
|
||||
account_info.maxchars = 10;
|
||||
account_info.maxchars = 7; //live has a max of 7 on gold accounts base.
|
||||
account_info.unknown4 = 0;
|
||||
AddData(account_info);
|
||||
}
|
||||
|
@ -36,12 +38,12 @@ EQ2Packet* LS_CharSelectList::serialize(int16 version){
|
|||
account_info.account_id = account_id;
|
||||
account_info.unknown1 = 0xFFFFFFFF;
|
||||
account_info.unknown2 = 0;
|
||||
account_info.maxchars = 30; //devn00b:Corrected unknown and increased maxchars from 10 to 30.
|
||||
account_info.maxchars = database.GetMaxCharsSetting();
|
||||
account_info.unknown4 = 0;
|
||||
for (int i = 0; i < 3; i++)
|
||||
account_info.unknown5[i] = 0xFFFFFFFF;
|
||||
account_info.unknown5[3] = 0;
|
||||
account_info.vet_adv_bonus = 1;
|
||||
account_info.vet_adv_bonus = database.GetAccountBonus(account_id);
|
||||
account_info.vet_trade_bonus = 0;
|
||||
AddData(account_info);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue