125 Commits

Author SHA1 Message Date
akkadius
ca7dd7d741 - Improved speed of character database conversion x1000 by changing query style
- Adjusted AA MySQL saves for 100x speed increase
- Removed StoreCharacter lookup methods as they will no longer be necessary
- Some other cleanup
2014-09-06 13:53:54 -05:00
Akkadius
4432c07081 State of Commit: Testable if you ask me (Akkadius) what you need to do
- Need to convert a list of functions and columns and should be ready to start intensive testing phase
 - All preliminary tests show things working great

- All of player profile is saved and loaded from the database
- DBAsync has been completely removed from all code
	- Removed zone/dbasync.cpp/.h
	- Removed common/dbasync.cpp/.h
	- Removed dbasync from cmake commmon and zone
- Cleaned up a ton of functions
- Added several tables to world CheckDatabaseConversions script:
	- `character_skills`
	- `character_languages`
	- `character_bind`
	- `character_alternate_abilities`
	- `character_currency`
	- `character_data`
	- `character_spells`
	- `character_memmed_spells`
	- `character_disciplines`
	- `character_material`
	- `character_tribute`
	- `character_bandolier`
	- `character_potionbelt`
- Character select now loads from `character_data`
- Character creation now creates to `character_data`
- Updated function Database::UpdateName to use `character_data`
- Updated function Database::CheckUsedName to use `character_data`
- Updated function Database::MoveCharacterToZone to use `character_data`
- Updated function Database::SetLoginFlags to use `character_data`
- Updated function Database::SetFirstLogon to use `character_data`
- Updated function Database::SetLFG to use `character_data`
- Removed CopyCharacter functions and commands, to be recreated later since it never worked to begin with
- Removed SharedDatabase::SetPlayerProfile
- Trimmed down redundant case switch statements for World sendpackets to QueryServ
- Added Character Methods to Database class:
	Loads:
		bool	LoadCharacterBandolier(uint32 character_id, PlayerProfile_Struct* pp);
		bool	LoadCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp);
		bool	LoadCharacterPotions(uint32 character_id, PlayerProfile_Struct* pp);
	Saves:
		bool	SaveCharacterBindPoint(uint32 character_id, uint32 zone_id, uint32 instance_id, float x, float y, float z, float heading, uint8 is_home);
		bool	SaveCharacterCurrency(uint32 character_id, PlayerProfile_Struct* pp);
		bool	SaveCharacterData(uint32 character_id, uint32 account_id, PlayerProfile_Struct* pp);
		bool	SaveCharacterAA(uint32 character_id, uint32 aa_id, uint32 current_level);
		bool	SaveCharacterSpellSwap(uint32 character_id, uint32 spell_id, uint32 from_slot, uint32 to_slot);
		bool	SaveCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);
		bool	SaveCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);
		bool	SaveCharacterMaterialColor(uint32 character_id, uint32 slot_id, uint32 color);
		bool	SaveCharacterSkill(uint32 character_id, uint32 skill_id, uint32 value);
		bool	SaveCharacterLanguage(uint32 character_id, uint32 lang_id, uint32 value);
		bool	SaveCharacterDisc(uint32 character_id, uint32 slot_id, uint32 disc_id);
		bool	SaveCharacterTribute(uint32 character_id, PlayerProfile_Struct* pp);
		bool	SaveCharacterBandolier(uint32 character_id, uint8 bandolier_id, uint8 bandolier_slot, uint32 item_id, uint32 icon, const char* bandolier_name);
		bool	SaveCharacterPotionBelt(uint32 character_id, uint8 potion_id, uint32 item_id, uint32 icon);
	Deletes:
		bool	DeleteCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);
		bool	DeleteCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);
		bool	DeleteCharacterDisc(uint32 character_id, uint32 slot_id);
		bool	DeleteCharacterBandolier(uint32 character_id, uint32 band_id);
2014-09-04 07:24:17 -05:00
Akkadius
0a9222e1ee - 2014-09-01 23:54:15 -05:00
Akkadius
e0db3c0b60 Fixed Character select to be loaded from new character data tables 2014-09-01 22:17:06 -05:00
Akkadius
6497bdf45a More stuff 2014-08-31 21:31:44 -05:00
Akkadius
ca430e2494 Fix void Database::GetCharName(uint32 char_id, char* name)
Increased MAX_PP_SPELLBOOK to 720 for UF/RoF
Increased MAX_PP_MEMSPELL to 12
Implemented up to 12 spell slots
Fix for public_note default value in bool BaseGuildManager::DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank)
Updated all CastSpell entries to use the appropriate slot type defines located now in zone/common.h
Fixed Guild Loading from character_data
Fixed #guild list
Refactored Merchantlist loading
Refactored Temp Merchantlist loading
Gutted most of dbasync

Added:
LoadCharacterSpellBook(uint32 character_id, PlayerProfile_Struct* pp);
LoadCharacterMemmedSpells(uint32 character_id, PlayerProfile_Struct* pp);
LoadCharacterLanguages(uint32 character_id, PlayerProfile_Struct* pp);
LoadCharacterBindPoint(uint32 character_id, PlayerProfile_Struct* pp);
SaveCharacterSpellSwap(uint32 character_id, uint32 spell_id, uint32 from_slot, uint32 to_slot);
SaveCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);
SaveCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);
DeleteCharacterSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);
DeleteCharacterMemorizedSpell(uint32 character_id, uint32 spell_id, uint32 slot_id);

Removed Zone::LoadTempMerchantData_result(MYSQL_RES* result)
Removed Zone::LoadMerchantData_result(MYSQL_RES* result)
Removed SharedDatabase::GetPlayerProfile
Removed SharedDatabase::SetPlayerProfile
Removed SharedDatabase::SetPlayerProfile_MQ
Removed Zone::DBAWComplete(uint8 workpt_b1, DBAsyncWork* dbaw) from zone.cpp
2014-08-31 17:52:43 -05:00
akkadius
4071d88290 At point of commit:
Basic character data, currency and AA are being loaded/saved from the database, currently working on the rest right now.
- Character blob removed from load for testing. Lots of cleanup yet to be done so don't judge code yet.

Saves:
- Two FULL saves when looting a corpse, this has been reduced to just currency saves on initial loot and trimmed to one save since AddToMoneyPP did it already
- Every time a player moves coin with any situation (Splits/Trades/Merchant/Skills/Bank Coin Exchange/Coin Moves), a full save is made, this is now just a currency save
- Every time a player skilled up at a skill vendor, a full blob save hit was made, this is not just a currency hit
2014-08-31 02:53:59 -05:00
akkadius
633583c266 Created character_lookup table for applications that mirrors all character_ table fields minus blob fields for application lookups
- A 2.4GB character_ table will take 7 seconds to query on a SSD versus .1s on the character_lookup table
	- This also causes applications like Magelo to burst reads of the entire character table because of the blob fields that come with the reads, as much as 500-600MB/s even if a indexed id filter is provided
	- This field is synchronized on player save and has 0.001s DB hit
	- When we split out from the blob, ideally this table can be removed, but it really does no harm in mirroring data when a 2.6GB character table mirrors everything subtracting blob data down to 8MB
	- Required SQL: utils\sql\git\required\2014_08_24_character_lookup.sql
2014-08-24 08:52:14 -05:00
akkadius
7f89191ffc Changed zone process window title format, example: 'crushbone :: clients: 6 inst_id: 1 inst_ver: 0 :: port: 7015'
Most of the following changes are QueryServ related, fully implemented its original functionality to be able to offload
	intensive or metric based logging to a remote server process that could exist on another server entirely
Implemented Player Event Logging Types (Go to table `qs_player_events`):
		1 = Player_Log_Quest,
		2 = Player_Log_Zoning,
		3 = Player_Log_Deaths,
		4 = Player_Log_Connect_State,
		5 = Player_Log_Levels,
		6 = Player_Log_Keyring_Addition,
		7 = Player_Log_QGlobal_Update,
		8 = Player_Log_Task_Updates,
		9 = Player_Log_AA_Purchases,
		10 = Player_Log_Trade_Skill_Events,
		11 = Player_Log_Issued_Commands,
		12 = Player_Log_Money_Transactions,
		13 = Player_Log_Alternate_Currency_Transactions,
		- All QueryServ logging will be implemented with a front end in EoC 2.0 very soon
Changed all QS Error related logging to 'QUERYSERV__ERROR'
(Natedog) (Crash Fix) Legacy MySQL bug revert for loading AA's COALESCE( from COALESCE (
Implemented Perl Quest objects (LUA still needed to be exported):
	- quest::qs_send_query("MySQL query") - Will send a raw query to the QueryServ process, useful for custom logging
	- quest::qs_player_event(char_id, event_desc); - Will process a quest type event to table `qs_player_events`
Added MySQL Tables:
	- `qs_player_aa_rate_hourly`
	- `qs_player_events`
	- Source table structures from:
		- utils\sql\git\queryserv\required\08_23_2014_player_events_and_player_aa_rate_hourly
		To get the complete QueryServ schema, source from here:
		- utils\sql\git\queryserv\required\Complete_QueryServ_Table_Structures.sql
Added rules for each logging type, source rules here with them enabled by default:
	- utils\sql\git\queryserv\required\Complete_QueryServ_Rules_Enabled.sql
Spawn related logging cleanup
General code cleanup
Added queryserv.cpp and queryserv.h with QueryServ class
2014-08-23 23:59:20 -05:00
KimLS
07a2cbe9a5 Renamed zone files 2014-08-21 23:46:01 -07:00
KimLS
7fc21b9e3a Tons of renames 2014-08-21 19:33:02 -07:00
Michael Cook (mackal)
a4a8a1aba5 Clean up some compiler warnings with Stop_Return 2014-08-21 17:54:49 -04:00
akkadius
a5020a68f0 Implemented a Stop_Return feature (Accidental item handin prevention) that will be symmetrically used with plugin::return_items that I am currently running live testing on EZ before releasing to EQEmu. This does not hurt to have this in the source.
Fixed crash where 'attacker' validation is not being checked
Removed petition console spam that does not follow traditional logging and is useless
Made fix with SympatheticProcChances where it was checking for TempItem->Focus.Effect instead of TempItemAug->Focus.Effect
2014-08-19 10:55:29 -05:00
Russell Kinasz
1ba4b6fc31 Implemented Raid OOC Regen 2014-08-12 15:18:11 -07:00
Uleat
8b14c21a24 More numeric to constant conversions..should be most of them... Please report any inventory abnormalities. 2014-07-31 07:52:38 -04:00
Uleat
36a2d52f1c More 'dictionary' updates..added 'constants' files to client translators..started replacement of hard-coded inventory values. 2014-07-27 20:35:43 -04:00
Uleat
d7c2d6108f Added the initial references for two new dictionaries - EmuConstants and EQLimits..more to come. 2014-07-16 21:23:16 -04:00
KayenEQ
35e72692c1 Implemented SE_FactionModPct - Modifies faction gains and losses by percent. 2014-07-02 11:54:59 -04:00
KayenEQ
58175a5442 Update to SE_BalanaceMana, SE_BalanceHP to support limit value which caps max mana/hp that can be taken per player. 2014-06-23 08:37:23 -04:00
KayenEQ
41b190930f Kayen: Implemented SE_Metabolism - Modifies food/drink consumption rates. [Data for AA is already in database] 2014-06-22 23:10:29 -04:00
SecretsOTheP
9502f0aadf Revert "It's never ogre with these hatelist crashes.."
This reverts commit dffee38dc622254a9847e1a09d79c572d1aaf388.
2014-04-23 12:50:25 -04:00
SecretsOTheP
6aa0c9d694 hatelist fixes to fixes to fixes 2014-04-22 13:37:35 -04:00
SecretsOTheP
dd1f5f6a11 More hatelist fixes. Trying to nail the crash :S 2014-04-22 13:24:07 -04:00
SecretsOTheP
87994ebfba smoke commits everyday 2014-04-20 00:26:54 -04:00
Akkadius
0b2281967b Added #command error message suppression for those who don't want to see 'Command is not recognized' constantly
- You need to have rule 'Chat:SuppressCommandErrors' set to true, this is set to false by default
	- Required SQL: 2014_04_18_Suppress_Command_Error.sql
2014-04-18 19:37:26 -05:00
Akkadius
884b0291f7 Exported $client->SendMarqueeMessage(type, priority, fade_in, fade_out, duration, msg) - Will be available for simple plugin use
Exported $client->ExpeditionMessage(THIS, ExpdID, Message) - In use with custom expedition mod that will be released soon
2014-04-15 12:00:33 -05:00
Uleat
d939820918 Fix for unconscious ability skillups.
Fix for zone crash related to item==nullptr in Client::SummonItem().
2014-03-31 03:21:22 -04:00
KayenEQ
21bdc8c5b6 Coverted melee and magic runes to use bonuses.
Removed all the old rune flags now that none of them are used.
Fixed issues where runes would not fade properly if damage = remaing rune amount
Fixed issue where runes would stop absorbing damage if you had multiple runes.
2014-03-12 05:14:19 -04:00
Michael Cook (mackal)
00068158c1 Melee Crits, HoTs, DoTs messages should now filter correctly
Clients that also support seeing others DoTs will now see them
if they don't filter them.

    Note: HoTs 'mine only' doesn't seem to be different from 'show'
2014-03-02 22:10:32 -05:00
Michael Cook (mackal)
e0edd7a290 Added FilteredMessage functions that better use ServerFilters
These functions are currently unused, but should work nicely.
I didn't add overloads to separate them from the others for now
2014-03-01 00:16:37 -05:00
Michael Cook (mackal)
808977f69a (Performance) Corpse drag will now fetch entity by ID 2014-02-20 01:35:59 -05:00
KimLS
1ec0add76f Make sure some strings coming from the client are actually null terminated. 2014-02-10 21:00:25 -08:00
Michael Cook (mackal)
6a8a6e530b Some clean up related to the entity_list changes 2014-02-10 12:16:14 -05:00
SecretsOTheP
f074ead7f6 demonstar55's entity list changes (slightly modified) and a crash fix for the #repop command used in rapid succession. 2014-02-10 10:39:12 -05:00
Michael Cook (mackal)
a55c095d1b Forgot to make m_AssistExemption default to 0 2014-01-22 01:08:42 -05:00
KimLS
88ba962a4c Merge branch 'master' of github.com:EQEmu/Server 2014-01-16 13:08:24 -08:00
KimLS
0315d15ce8 Reversed event_command return value, may cause visual issues if you already updated your code but easy to fix. Return 1 instead of return 0 on event_command dispatch 2014-01-16 13:08:04 -08:00
Michael Cook (mackal)
4216627604 Prefer prefix ++/-- on non-primitive types
Postfix ++/-- might cause the creation of a tmp instance
that might be optimized out. Mights are bad. Prefix doesn't
have this problem.
2014-01-13 22:14:02 -05:00
Michael Cook (mackal)
821ba8b701 Change faction messages to use String IDs. 2014-01-11 13:20:01 -05:00
Michael Cook (mackal)
fdced53be1 Add pet size preservation like live
Run the SQL!!
2014-01-09 14:25:29 -05:00
Michael Cook (mackal)
a9b4e7819f Add some overflow protection for emotes
Clients crash if the emote is too large, despite the client
using a 1024 char buffer...
2014-01-04 01:34:58 -05:00
KimLS
30e8eac46e Hopefully this is a fix for issue #100 -- Uninitialized alt currency variable causing db corruption. 2013-12-24 13:21:11 -08:00
SecretsOTheP
a7c15ef598 Secrets: Added functionality to Perl/Server for $client->PlayMP3("name of file"). 2013-12-24 01:28:32 -05:00
KimLS
2ac1f37b02 More work on Client Marquee messages. 2013-12-23 17:35:58 -08:00
Michael Cook (mackal)
5ac23a2f8f Added facing check to auto attack LoS code
The Mob::InFrontMob check uses 56 degrees which is where the
client will generate the "You cannon see your target." message.
There were still a few weird angles that I was able to still
attack, but in like 99% of the cases it should work ...
2013-12-20 17:47:28 -05:00
Leere
6a95abb01f Fix for auto-consume drinking message 2013-11-16 03:40:35 +01:00
Uleat
e3805d5920 Converted SkillType typedef enumeration to SkillUseTypes enumeration 2013-10-27 13:03:41 -04:00
Uleat
3e6be197e6 Changed ItemTypes to ItemUseTypes 2013-10-27 09:04:52 -04:00
Uleat
0d5fc26841 Converted MATERIAL defines to MaterialUseSlots enumeration 2013-10-27 08:01:37 -04:00
Uleat
cab77e83da High level debug (12) compile failure fix - I searched for as many as I could find with GrepWin, so there may be a few out there still 2013-10-27 03:13:10 -04:00