Commit Graph

528 Commits

Author SHA1 Message Date
horn
771aafc499 Core/Calendar: Completely rewrite and fix most of the calendar system
There are still some issues that need to be fixed, for more info see CalendarHandler.cpp TODO part.
Some unblizzlike behaviour possible, we don't have a lot of sniffs.
Big thanks to @Warpten, he joined my project and helped a lot.

IMPORTANT NOTE: Read / append packed time functions in ByteBuffer.h are not correct, they need to be fixed in order to have event times accurate

Signed-off-by: Nay <dnpd.dd@gmail.com>
2012-11-18 22:42:28 +00:00
Spp
9074c11a90 Core/Dungeon Finder: Update "Current group roles" according to people in queue.
Core/Dungeon Finder: Properly update internal lfg group structure at server load
2012-10-29 20:13:42 +01:00
Spp
d0334bf948 Core/Dungeon Finder: Some optimizations.
- Store teleport coordinates to avoid recalculations each time someone has to be teleported
- Correct teleport error msg when player is charming or using vehicle
- Internal changes in storage types
- Proper code for missing achievement lock type
- Better debug msgs
- Trying to get rid of "Player*" and "Group*" inside LFGMgr as much as possible (Step 1)
2012-10-18 09:15:10 +02:00
Spp
358c6a26d6 Core: Warning fixes (Also some -pedantic under game folder) 2012-09-10 13:04:31 +02:00
Nay
e3d9768a50 Core: Fix many "errors"/warnings and coding style (3)
Game

Errors were found using Cppcheck, open-source static analysis tool
2012-08-30 22:44:33 +01:00
Vincent-Michael
6891fe6248 Core/Battlefield: Add missing stuff for wintergrasp 2012-08-21 23:03:30 +02:00
Spp
984493108b Core/Logging: Fix incorrect error level for some warden messages
Core/Logging: Fix incorrect filter type for many network messages
Core/Logging: Use OPCODE filter type for network messages related to wrong packets
2012-08-21 22:12:55 +02:00
Spp
13aa00d5f2 Core/Logging: Restore dumping packets in binary format 2012-08-17 10:36:48 +02:00
Spp
55ce180f28 Core/Logging: Add Asyncronous logging with Loggers ("What to log") and Appenders ("Where to log") system. Will allow to select to full log some parts of core while others are not even logged.
- Logging System is asyncronous to improve performance.
- Each msg and Logger has a Log Type and Log Level assigned. Each msg is assigned the Logger of same Log Type or "root" Logger is selected if there is no Logger configured for the given Log Type
- Loggers have a list of Appenders to send the msg to. The Msg in the Logger is not sent to Appenders if the msg LogLevel is lower than Logger LogLevel.
- There are three (at the moment) types of Appenders: Console, File or DB (this is WIP, not working ATM). Msg is not written to the resource if msg LogLevel is lower than Appender LogLevel.
- Appender and Console Log levels can be changed while server is active with command '.set loglevel (a/l) name level'

Explanation of use with Sample config:

Appender.Console.Type=1       (1 = Console)
Appender.Console.Level=2      (2 = Debug)

Appender.Server.Type=2        (2 = File)
Appender.Server.Level=3       (3 = Info)
Appender.Server.File=Server.log

Appender.SQL.Type=2           (2 = File)
Appender.SQL.Level=1          (1 = Trace)
Appender.SQL.File=sql.log

Appenders=Console Server      (NOTE: SQL has not been included here... that will make core ignore the config for "SQL" as it's not in this list)

Logger.root.Type=0            (0 = Default - if it's not created by config, server will create it with LogLevel = DISABLED)
Logger.root.Level=5           (5 = Error)
Logger.root.Appenders=Console

Logger.SQL.Type=26            (26 = SQL)
Logger.SQL.Level=3            (2 = Debug)
Logger.SQL.Appenders=Console Server SQL

Logger.SomeRandomName.Type=24 (24 = Guild)
Logger.SomeRandomName.Level=5 (5 = Error)
Loggers=root SQL SomeRandomName

* At loading Appender SQL will be ignored, as it's not present on "Appenders"

* sLog->outDebug(LOG_FILTER_GUILD, "Some log msg related to Guilds")
  - Msg is sent to Logger of Type LOG_FILTER_GUILD (24). Logger with name SomeRandomName is found but it's LogLevel = 5 and Msg LogLevel=2... Msg is not logged

* sLog->outError(LOG_FILTER_GUILD, "Some error log msg related to Guilds")
  - Msg is sent to Logger of Type LOG_FILTER_GUILD (24). Logger with name SomeRandomeName is found with proper LogLevel but Logger does not have any Appenders assigned to that logger... Msg is not logged

* sLog->outDebug(LOG_FILTER_SQL, "Some msg related to SQLs")
  - Msg is sent to Logger SQL (matches type), as it matches LogLevel the msg is sent to Appenders Console, Server and SQL
    - Appender Console has lower Log Level: Msg is logged to Console
    - Appender Server has higher Log Level: Msg is not logged to file
    - Appender SQL has lower Log Level: Msg is logged to file sql.log

* sLog->outDebug(LOG_FILTER_BATTLEGROUND, "Some msg related to Battelgrounds")
  - Msg is sent to Logger root (Type 0) as no Logger was found with Type LOG_FILTER_BATTLEGROUND (13). As Logger has higher LogLevel msg is not sent to any appender

* sLog->outError(LOG_FILTER_BATTLEGROUND, "Some error msg related to Battelgrounds")
  - Msg is sent to Logger root (Type 0) as no Logger was found with Type LOG_FILTER_BATTLEGROUND (13). Msg has lower LogLevel and is sent to Appender Console
    - Appender Console has lower LogLevel: Msg is logged to Console
2012-08-03 14:20:18 +02:00
kaelima
c6c23b7f7e Core/DungeonFinder:
- Prevent players from vote kicking in combat (basic implementation, still needs a timer) partially closes #2563
- Prevent players from teleporting to a finished dungeon using macro commands. Closes #6748

Also add a missing change for ff77610e1d thanks 2010phenix for the hint.
2012-06-12 18:14:52 +02:00
Nay
f6fc2ef8cf Fix non PCH build 2012-06-10 03:28:51 +02:00
kaelima
d3c45cc3f2 Fixed build and removed an unused variable 2012-06-04 09:14:31 +02:00
kaelima
d86246b861 Core/Logging: Add optional binary packet logger usable with WowPacketParser, and remove the now useless WorldLog.
TODO: Port this to .pkt 3.1 format
2012-06-04 08:52:12 +02:00
kaelima
f1e6601032 Core/Protocol:
- Allow CMSG_LOGOUT_CANCEL to be recieved during serverside logout process (ignore it however, it's too late to abort)
- Fix STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT opcodes because of m_playerRecentlyLogout being set false too early in some cases
2012-05-27 19:57:49 +02:00
kaelima
624aab7d77 Core/Session: Fixed error "received unexpected opcode CMSG_CANCEL_TRADE" when a player is logging out. 2012-05-26 18:15:07 +02:00
kaelima
c40d86f05f Core/Protocol: Fix struct and make use of CMSG_UPDATE_PROJECTILE_POSITION. 2012-05-25 16:44:34 +02:00
kaelima
66d42b4f29 Core/Protocol: Process CMSG_UPDATE_MISSILE_TRAJECTORY packets 2012-05-23 14:24:45 +02:00
kaelima
c3287fee06 Core/SmartAI:
- Improve an error msg in ProcessAction
- Allow dist/angle to be 0.0f and set default if negative when using SMART_ACTION_FOLLOW
- Some minor cleanup in Opcodes.cpp, all smsg's should have Handle_ServerSide
2012-05-19 13:04:58 +02:00
Nay
fc0950dbf3 SQLS: Correct comments for 2012_02_16_00_world_conditions.sql
(Core/Opcs: Use Handle_NULL for an unused opcode)

Closes #6517 (pr)
2012-05-19 11:48:41 +01:00
kaelima
7f51c399c6 Core/DBLayer: CHAR_DEL_CHAR_AURA_FROZEN query should be asynchronous
Closes issue #6273

Also corrected one opcode name in Opcodes.cpp (changes nothing)
2012-04-30 02:07:59 +02:00
kaelima
afb202869d Core/Protocol: Rename opcode SMSG_LFG_BOOT_PLAYER to SMSG_LFG_BOOT_PROPOSAL_UPDATE. (same opcode had two different names in core) 2012-04-08 03:13:50 +02:00
Gyx
5b7493fc66 Core/Misc: Code style and remove unused define.
Signed-off-by: Gyx <2359980687@qq.com>
2012-03-29 14:43:34 +08:00
Shauren
a3d7caba8a Core/Opcodes: Defined a new opcode 2012-03-16 12:34:37 +01:00
Machiavelli
03a24a84e4 Core/Units:
- Implement UNIT_FIELD_HOVERHEIGHT (requires DB data). This field, sent in update object packet, will determine the height at which a creature hovers if it has movementflag_hover applied. Note that hovering will now update the server-sided z-coordinate by the value of this field, and that all subsequent positional updates to the client will need to send z coordinate MINUS the hover height offset, or the hoverheight will be visually doubled client side.
- Correct our usage of movementflag_flying, movementflag_can_fly, movementflag_hover and movementflag_disable_gravity (previously levitate), and how they relate to InhabitType in the database. This fixes "flying creatures on steroids" bug (wings flapping too fast), and potentially a lot of visual issues in AI scripts. Note that a lot of scripts still set wrong movementflags, these need to be fixed on a case by case basis.
- Send correct packets for SPELL_AURA_FEATHER_FALL, SPELL_AURA_WATER_WALK and SPELL_AURA_HOVER apply/unapply.
- Send correct packet contents for movement update in Unit::SetSpeed.
- Misc. cleanup in affected scripts.
2012-03-12 00:53:45 +01:00
Spp
f1949b20a6 Some random cleanup here and there 2012-03-09 13:42:52 +01:00
leak
66fc6482de Core/Warden: Switch to multi-threaded packet processing for warden 2012-02-28 23:05:30 +01:00
Spp
32eab3dca7 Core/Calendar: WIP Calendar. 2012-02-24 20:11:29 +01:00
leak
8e3a4b956e Core/Warden: Base implementation for Warden functionality
Note: The default config file action for clients failing the checks can be changed for each check via the characters.warden_action table

Credits to TOM_RUS
2012-02-19 13:51:16 +01:00
Spp
c9762b0e38 Core: Change Handlers location 2012-01-26 10:54:53 +01:00
Subv2112
3d4f55723c Core/SAI: Linked events should be executed after the event that linked them is executed.
Core/SAI: Allow SMART_EVENT_GO_STATE_CHANGED to use ActionInvoker target

Signed-off-by: Subv2112 <s.v.h21@hotmail.com>
2012-01-22 20:36:01 -05:00
Fredi
d03894536f Core/IO: Corrected SMSG_AUCTION_OWNER_NOTIFICATION packet structure 2012-01-14 19:40:13 -02:00
Subv2112
f4075f0f94 Core/LFG:
Fix priority of the player when its added to the lfg group
        Better implementation of the Dungeon Deserter debuff
        Rewrite the NeedBeforeGreed loot
        Fixed players being shown as Unknown Entity when entering the lfg group
        Some incremental optimizations after original patch
Thanks to Retriman and Paecman for base implementation

Signed-off-by: Machiavelli <machiavelli.trinity@gmail.com>
2012-01-14 17:37:28 +01:00
Machiavelli
dbbac0bdaa Core/Movement: Implement spline movement subsystem.
Spline movement controls movements of server-side controlled units (monster movement, taxi movement, etc).
Proper implementation of effects such as charge, jump, cyclic movement will rely on it.
However, need improve our states system before.

Technical changes:

* Added linear, catmullrom and bezier3 splines which based on client's algorthims. They can be reused for proper transport position interpolation.
* Precission increased. There are no more position desync issues since client's position calculation formulas used.
* Now possible to move by paths with multiple points, send whole path to client.

--
Original author of research and implementation: SilverIce. Massive kudos.
Original port for Trinity (ref #4629) Chaplain and Venugh
With the following incremental fixes during my review:

- Restore flightmaster end grid pre-loading
- Fix uninitialized Creature::m_path_id
- Add missing trinity_string entries for .movegens command
- Fix a bug in WaypointMovementGenerator that would trigger unexpected pausing at waypoints for various amounts of time

Known issues:
- Errors like WaypointMovementGenerator::LoadPath creature XXX (Entry: YYYYY GUID: ZZZZZZ) doesn't have waypoint path id: 0.
This is caused by bad DB data. This commit didn't "break" it.

Do not forget to re-run CMake before compiling.
2012-01-14 15:36:07 +01:00
Machiavelli
2293d2d7df Core/Movement: Prevent IdleMovementGenerator being put into MOTION_SLOT_IDLE and MOTION_SLOT_ACTIVE simultaneously 2012-01-13 16:43:49 +01:00
Subv2112
d02c781241 Core/Gossips: Fixed questgiver GOs that also have gossip menus, fixed gossip option selecting on GOs
Signed-off-by: Subv2112 <s.v.h21@hotmail.com>
2012-01-09 09:29:45 -05:00
Subv2112
5584354444 Core/Players: Fix crash in LoadFromDB
Closes #4724
Closes #4673
2012-01-08 18:37:16 +00:00
Kaelima
e457649170 Merge pull request #4714 from elecyb/mover
Core-Vehicles: Change player mover when add/remove passenger (thanks Sub...
2012-01-08 06:41:02 -08:00
elecyb
fc4b033715 Core-Vehicles: Change player mover when add/remove passenger (thanks Subv)
Core-Misc: Restore correct mover for victim of possesion spell.

Closes #4704, #4707
2012-01-08 03:56:33 -03:00
Machiavelli
1dc6f6a2da Merge pull request #4646 from elecyb/crash1
Core/PacketIO: Fix crash and exploit caused when client sends tampered m...
2012-01-07 03:58:42 -08:00
danik
b35f831f2b Core/PacketIO: Prevented excessive WhoOpcode spam - solves possible crash/lag method 2012-01-06 19:36:17 +01:00
elecyb
7d7bb8363d Core/PacketIO: Fix crash and exploit caused when client sends tampered mover guids
Closes: #4056
2012-01-05 18:34:56 -03:00
Shocker
1a1d8a100b Core/Guilds: Players should be removed from guild when changing faction
Closes #4623
2012-01-05 00:50:33 +02:00
kandera
46fb199ee1 Core/Quests: Add implementation of seasonal quest reset. uses a new table much like character_queststatus_weekly. fixed typo where WEEKLY was WEKLY. Attempt 2 2012-01-04 07:59:32 -05:00
leak
ced346076b Merge pull request #4567 from Kiperr/master
Happy new year!
2011-12-31 16:13:28 -08:00
leak
cdbeb42e0f Core/DBLayer: Refactor prepared statement defines to new format (char db) 2012-01-01 01:09:38 +01:00
kiper
8299627ed9 Update headers for 2012. HAPPY NEW YEAR!!! 2012-01-01 00:32:13 +01:00
leak
73cf793e56 Core/DBLayer: Refactor prepared statement defines Note:
The new format for the middle section is a 3-letter upper case abbreviation of the sql command being executed (select -> SEL, update -> UPD, etc.)
{DB}_{SEL/INS/UPD/DEL/REP}_{Summary of data changed}
2011-12-31 20:14:38 +01:00
leak
8adac3f246 Core/DBLayer: Convert PExecute() queries to prepared statements No. 3 2011-12-31 00:32:05 +01:00
leak
ef17c05dec Core/DBLayer: Convert PExecute() queries to prepared statements No. 1 2011-12-25 18:13:21 +01:00
leak
41888f63c9 Core/DBLayer: Proper code style on recently refactored code 2011-12-25 14:26:50 +01:00