EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Client.h
Go to the documentation of this file.
1 /*
2  ------------------------------------------------------------------------------------
3  LICENSE:
4  ------------------------------------------------------------------------------------
5  This file is part of EVEmu: EVE Online Server Emulator
6  Copyright 2006 - 2021 The EVEmu Team
7  For the latest information visit https://evemu.dev
8  ------------------------------------------------------------------------------------
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13 
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public License along with
19  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20  Place - Suite 330, Boston, MA 02111-1307, USA, or go to
21  http://www.gnu.org/copyleft/lesser.txt.
22  ------------------------------------------------------------------------------------
23  Author: Zhur
24  Rewrite: Allan
25 */
26 
27 
28 #ifndef EVE_CLIENT_H
29 #define EVE_CLIENT_H
30 
31 
32 #include "ClientSession.h"
33 
34 #include "character/Character.h"
36 #include "inventory/ItemRef.h"
37 #include "packets/Crypto.h"
38 #include "packets/Destiny.h"
39 #include "packets/LSCPkts.h"
40 #include "ship/Ship.h"
42 #include "system/SystemEntity.h"
43 #include "system/SystemGPoint.h"
44 
45 #include "../eve-common/EVE_Missions.h"
46 #include "../eve-common/EVE_Player.h"
47 
48 class CryptoChallengePacket;
50 class PySubStream;
51 class InventoryItem;
52 class SystemManager;
53 class PyServiceMgr;
54 class PyCallStream;
55 class PyTuple;
56 class LSCChannel;
57 class PyAddress;
58 class PyList;
59 class PyDict;
60 class PyPacket;
61 class PyRep;
62 class Scan;
63 class TradeSession;
64 
65 //DO NOT INHERIT THIS OBJECT!
66 class Client
67 : protected EVEClientSession,
68  protected EVEPacketDispatcher
69 {
70 public:
72  // copy c'tor
73  Client(const Client& oth) = delete;
74  // move c'tor
75  Client(Client&& oth) = delete;
76  // copy assignment
77  Client& operator= (const Client& oth) = delete;
78  // move assignment
79  Client& operator= (Client&& oth) = delete;
80 
81  ~Client();
82 
83  // called from main() loop
84  bool ProcessNet();
85  // called by EntityList on 1Hz tic
86  void ProcessClient();
87 
88  bool IsLoaded() { return m_loaded; }
89 
90  PyServiceMgr& services() const { return m_services; }
91  // this should never be null
92  SystemManager* SystemMgr() const { return m_system; }
93  // used in msgs and other places where a const char* is needed instead of me forgetting to use .c_str()
94  const char* GetName() const { return (m_char.get() != nullptr ? m_char->name() : "(null)"); }
95 
96  bool IsAFK() { return m_afk; }
97  void SetAFK(bool set=true) { m_afk = set; }
98 
99 
100  /********************************************************************/
101  /* Session values */
102  /********************************************************************/
103  bool IsValidSession() { return m_validSession; }
105  // these dont always work...still dont know why. fixed. was bad _comp method in PyDict
106  std::string GetAddress() const { return pSession->GetCurrentString( "address" ); }
107  std::string GetLanguageID() const { return pSession->GetCurrentString( "languageID" ); }
108 
109  int32 GetUserID() const { return pSession->GetCurrentInt( "userid" ); }
110  int32 GetAccountType() const { return pSession->GetCurrentInt( "userType" ); }
111 
112  // these below need Session initialized before use (which we dont do for char creation due to errors)
113  int32 GetCharacterID() const { return pSession->GetCurrentInt( "charid" ); }
114  int32 GetStationID() const { return pSession->GetCurrentInt( "stationid" ); }
115  int32 GetStationID2() const { return pSession->GetCurrentInt( "stationid2" ); }
116  int32 GetCloneStationID() const { return pSession->GetCurrentInt( "cloneStationID" ); }
117 
118  int64 GetAccountRole() const { return pSession->GetCurrentLong( "role" ); }
119  int64 GetClientID() const { return pSession->GetCurrentLong( "clientID" ); }
120  //int64 GetSessionID() const { return pSession->GetCurrentLong( "sessionID" ); }
121 
122  double GetCorpTaxRate() { return (m_char.get() != nullptr ? m_char->corpTaxRate() : 0.0); }
123  int32 GetCorporationID() const { return pSession->GetCurrentInt( "corpid" ); }
124  int32 GetCorpHQ() const { return pSession->GetCurrentInt( "hqID" ); }
125  int32 GetAllianceID() const { return pSession->GetCurrentInt( "allianceid" ); }
126  int32 GetWarFactionID() const { return pSession->GetCurrentInt( "warfactionid" ); }
127  int32 GetCorpAccountKey() const { return pSession->GetCurrentInt( "corpAccountKey" ); }
128  // corporation management-type roles (manager, officer, trader) also has container roles
129  int64 GetCorpRole() const { return pSession->GetCurrentLong( "corprole" ); }
130  // access roles everywhere. is joined with other access roles
131  int64 GetRolesAtAll() const { return pSession->GetCurrentLong( "rolesAtAll" ); }
132  // access roles at base. overrides hq if same location
133  int64 GetRolesAtBase() const { return pSession->GetCurrentLong( "rolesAtBase" ); }
134  // access roles at corp HQ.
135  int64 GetRolesAtHQ() const { return pSession->GetCurrentLong( "rolesAtHQ" ); }
136  // access roles for non-station containers with corp hangars
137  int64 GetRolesAtOther() const { return pSession->GetCurrentLong( "rolesAtOther" ); }
138 
139  // fleet data
140  int8 GetFleetRole() { return pSession->GetCurrentInt("fleetrole"); }
141 
142  bool InFleet() { return IsFleetID(m_fleet); }
143  bool IsFleetBoss() { return (IsFleetID(m_fleet) ? ((GetFleetRole() == Fleet::Role::FleetLeader) ? true : false) : false); }
144  bool IsFleetBooster() { return (IsFleetID(m_fleet) ? ((GetFleetRole() == Fleet::Booster::No) ? false : true) : false); }
145 
146  uint32 GetFleetID() const { return m_fleet; }
147  int32 GetWingID() const { return m_wing; }
148  int32 GetSquadID() const { return m_squad; }
149 
150  uint32 GetShipID() const { return m_shipId; }
151  uint32 GetLocationID() const { return m_locationID; }
155  std::string GetSystemName() const { return m_SystemData.name; }
156 
157  // public functions to update client session when char's roles are changed
158  void UpdateCorpSession(CorpData& data);
160 
161  // character data used before session data is initialized
163  void SetChar(CharacterRef charRef) { m_char = charRef; } // only used during char creation
164  CharacterRef GetChar() const { return m_char; }
165  std::string GetCharName() { return m_char->itemName(); }
166  uint32 GetCharID() { return (m_char.get() != nullptr ? m_char->itemID() : 0); } // only used during char creation
167  ShipItemRef GetShip() const { return m_ship; }
168  ShipSE* GetShipSE() { return pShipSE; }
169  ShipItemRef GetPod() const { return m_pod; }
170  uint32 GetPodID() const { return m_pod->itemID(); }
171  float GetBounty() const { return m_char->bounty(); }
172  float GetSecurityRating() const { return m_char->GetSecurityRating(); }
173 
174  bool AddBalance(float amount, uint8 type=Account::CreditType::ISK)
175  { return m_char->AlterBalance(amount, type); }
177  { return m_char->balance(type); }
178 
179  // ship functions
180  void SetPodItem();
181  void CreateShipSE();
182  void SetShip(ShipItemRef shipRef);
183  void CreateNewPod();
184  void UndockFromStation();
185  void DockToStation();
186  void PickAlternateShip();
187  void ResetAfterPodded();
188  void ResetAfterPopped(GPoint& position); // delete killed ship, reset player to pod, add pod to system
189  void Eject(); // only called in space
190  void Board(ShipSE* newShipSE); // only called when in space
191  void BoardShip(ShipItemRef newShipRef); // only called when docked
192 
193 private:
194  // ship MUST be added to system before update (need sysMgr, sysBubble, DestinyMgr)
195  void UpdateNewShip(); // calls destiny update methods
196  // called by Board methods
197  void CheckShipRef(ShipItemRef newShipRef); // can throw
198 
199 public:
200  // misc char functions
201  bool SelectCharacter(int32 char_id=0);
202  bool IsHangarLoaded(uint32 stationID);
203 
204  void WarpIn();
205  void WarpOut();
206  void EnterSystem(uint32 systemID); // only called by gm command, and only if (bubble == null)
207  // this will accept null coords and adjust position to random moon
208  void MoveToLocation(uint32 location, const GPoint &pt);
209  void MoveToPosition(const GPoint &pt);
210  void MoveItem(uint32 itemID, uint32 location, EVEItemFlags flag);
211  void SetCloakTimer(uint32 time=Player::Timer::Default); // send time=0 to disable
212  void SetInvulTimer(uint32 time=Player::Timer::Default); // send time=0 to disable
213  void SetUncloakTimer(uint32 time=Player::Timer::Default); // send time=0 to disable
214  void SetBallParkTimer(uint32 time=Player::Timer::Default); // send time=0 to disable
215  void SetStateTimer(int8 state, uint32 time=Player::Timer::Default); // send time=0 to disable
216  void SetDestiny(const GPoint& pt, bool update=false);
218  void LoadStationHangar(uint32 stationID);
219  void AddStationHangar(uint32 stationID);
220  void RemoveStationHangar(uint32 stationID);
221 
222  //destiny stuff...
223  void SetDockStationID(uint32 stationID) { m_dockStationID = stationID; };
224  void SetDockPoint(GPoint &pt) { m_dockPoint = pt; }
227  bool InPod() { return (m_ship->groupID() == EVEDB::invGroups::Capsule); }
228  bool IsInSpace() { return sDataMgr.IsSolarSystem(m_locationID); }
229  bool IsDocked() { return sDataMgr.IsStation(m_locationID); }
230  bool IsDock() { return (m_clientState == Player::State::Dock); }
231  bool IsIdle() { return (m_clientState == Player::State::Idle); }
232  bool IsJump() { return (m_clientState == Player::State::Jump); }
234  bool IsInvul() { return m_invul; }
235  bool IsLogin() { return m_login; }
236  bool IsUndock() { return m_undock; }
237  bool IsUncloak() { return m_uncloak; }
238  bool HasBeyonce() { return m_beyonce; }
239  bool IsBubbleWait() { return m_bubbleWait; }
240  bool IsSetStateSent() { return m_setStateSent; }
243 
244  void SetInvul(bool invul=false) { m_invul = invul; }
245  void SetUndock(bool undock=false) { m_undock = undock; }
246  void SetBeyonce(bool beyonce=false) { m_beyonce = beyonce; }
247  void SetUncloak(bool uncloak=false) { m_uncloak = uncloak; }
248  void SetBubbleWait(bool wait=false) { m_bubbleWait = wait; }
249  void SetStateSent(bool set=false) { m_setStateSent = set; }
251  void SetSessionChange(bool set=false) { m_sessionChangeActive = set; }
252  void SetBallPark();
253  void StargateJump(uint32 fromGate, uint32 toGate);
254  void CynoJump(InventoryItemRef beacon);
255 
256  bool IsAutoPilot() { return m_autoPilot; }
257  void SetAutoPilot(bool set=false);
258 
259  void JumpInEffect();
260  void JumpOutEffect(uint32 locationID);
261 
262  void CheckBallparkTimer();
263 
264  //jetcan timer
265  bool IsJetcanAvalible();
266  // return time remaining in seconds
269 
270  void SetShowAll(bool set=false) { m_showall = set; }
271  bool IsShowall() { return m_showall; }
272 
273  void SetAutoStop(bool set=false) { m_autoStop = set; }
274  bool AutoStop() { return m_autoStop; }
275 
276  //messages and LSC
277  // error requires dismissal (click 'ok')
278  void SendErrorMsg(const char *fmt, ...);
279  void SendErrorMsg(const char *fmt, va_list args);
280  // notify self-removes after delay
281  void SendNotifyMsg(const char *fmt, ...);
282  void SendNotifyMsg(const char *fmt, va_list args);
283  // info requires dismissal (click 'ok')
284  void SendInfoModalMsg(const char *fmt, ...);
285  void SelfChatMessage(const char *fmt, ...);
286  void SelfEveMail(const char *subject, const char *fmt, ...);
287  void ChannelJoined(LSCChannel *chan);
288  void ChannelLeft(LSCChannel *chan);
289  void UpdateSessionInt( const char *sessionType, int value );
290 
291  PyRep *GetAggressors() const;
292  void QueueDestinyUpdate(PyTuple** update, bool DoPackage=false, bool IsSetState=false);
293  void QueueDestinyEvent(PyTuple** multiEvent);
294  void FlushQueue();
295 
296  // mission
297  void RemoveMissionItem(uint16 typeID, uint32 qty);
298  bool ContainsTypeQty(uint16 typeID, uint32 qty) const;
299  bool IsMissionComplete(MissionOffer& data);
300 
301  // scan
302  Scan* scan() { return m_scan; }
303  void SetScan(Scan* pScan) { m_scan = pScan; }
304  // set scan timer in ms
305  // this is used in scan.cpp after time calc's are done
306  void SetScanTimer(uint16 time, bool useProbe=false) { m_scanTimer.Start(time); m_scanProbe = useProbe; }
307 
308  // trade
309  void SetTradeSession(TradeSession* ts) { m_TS = ts; }
310  void ClearTradeSession() { m_TS = nullptr; }
312 
313  // character notification messages
314  void CharNowInStation();
315  void CharNoLongerInStation(); // clears m_StationData
316 
317  // portrait stuff....
318  bool RecPic() { return m_portrait; }
319  void SetPicRec(bool set=false) { m_portrait = set; }
320 
321  /********************************************************************/
322  /* Server Administration Interface */
323  /********************************************************************/
324  void DisconnectClient();
325  void BanClient();
326 
327  // this will add clone alpha if no clone is found
328  void InitSession( int32 characterID );
329 
330  // skill training timer shit
331  void SetTrainingEndTime(int64 endTime) { m_skillTimer = endTime; }
332 
333 protected:
342  SystemGPoint m_SGP; // interface to my variable 3-d point generating system (which isnt finished yet... -allan)
346  SystemManager* m_system; //we do not own this
347 
348  void ExecuteJump();
349  void ExecuteDriveJump();
350  void DestroyShipSE();
351 
352  //void _AwardBounty(SystemEntity *who);
353 
354  bool m_afk; // for map info (pilots docked and active)
355  bool m_invul;
356  bool m_login;
357  bool m_undock;
358  bool m_loaded;
359  bool m_beyonce;
360  bool m_uncloak;
361  bool m_showall; // boolean for showing all dynamics in system on ships scanner (ROLE_GMH)
362  bool m_autoStop; // boolean for auto-stopping modules when target attrib is full (ROLE_PLAYER)
363  bool m_packaged; // used to correctly package updates into a PackagedAction list
364  bool m_portrait; // used to verify new char pic received
365  bool m_autoPilot; // set true for using autopilot.
366  bool m_scanProbe; // scanning with probes
369  bool m_sessionChangeActive; // used to delay actions requiring destiny updates
370 
373 
376  //uint32 m_toGate;
378  uint32 m_moveSystemID; // holder for jumping to 'systemID'. timer based.
379  uint32 m_dockStationID; // holder for docking to 'stationID'. timer based.
380 
381  Timer m_stateTimer; // state timer to consolidate timers
383  Timer m_scanTimer; // used to delay scan results based on skills, items, and other shit
384  Timer m_cloakTimer; // used for tracking jump cloak
385  Timer m_uncloakTimer; // used for tracking ship actions after cloak module deactivated
387  Timer m_fleetTimer; // used to apply fleet boost on undock and jump when applicable
388  Timer m_clientTimer; // used to give process ticks to docked players (for skill updates...tick cycle consumption negligible)
389  Timer m_jetcanTimer; // used to delay jetcan creation. 3min default
390  Timer m_logoutTimer; // used to hold client object until WarpOut finishes
391  Timer m_sessionTimer; // used to prevent multiple session changes from occurring too fast
392  Timer m_ballparkTimer; // this is to properly send SetState data after a delay (cant do it correctly otherwise)
393 
396 
397  std::set<LSCChannel*> m_channels; //we do not own these.
398  std::map<uint32, bool> m_hangarLoaded;
399 
401 
403 
404  /********************************************************************/
405  /* EVEClientSession interface */
406  /********************************************************************/
407  void _GetVersion( VersionExchangeServer& version );
409  uint32 _GetQueuePosition() { /* hack */ return 1; }
410 
411  /********************************************************************/
412  /* EVEClientLogin statemachine */
413  /********************************************************************/
414  bool _LoginFail(std::string fail_msg);
415  bool _VerifyVersion( VersionExchangeClient& version );
416  bool _VerifyCrypto( CryptoRequestPacket& cr );
417  bool _VerifyLogin( CryptoChallengePacket& ccp );
418  bool _VerifyVIPKey( const std::string& vipKey ) { /* do nothing */ return true; }
419  bool _VerifyFuncResult( CryptoHandshakeResult& result );
420 
421  /********************************************************************/
422  /* EVEPacketDispatcher interface */
423  /********************************************************************/
424 public:
425  void SendSessionChange();
426  void SendNotification(const PyAddress &dest, EVENotificationStream &noti, bool seq=true);
427  void SendNotification(const char *notifyType, const char *idType, PyTuple *payload, bool seq=true);
428  void SendNotification(const char *notifyType, const char *idType, PyTuple **payload, bool seq=true);
429 
430  // this is to check Throw status, to avoid throws/segfault when not applicable (should use try/catch block)
431  bool CanThrow() { return m_canThrow; }
432 
433  bool IsCharCreation() { return m_charCreation; }
434  void CreateChar(bool set) { m_charCreation = set; }
435 
436  void AddBindID(uint32 bindID) { m_bindSet.emplace(bindID); }
437 
438 private:
442 
443  std::set<uint32> m_bindSet;
444 
445 protected:
446  void SendInitialSessionStatus ();
447  void UpdateSession();
448  void _SendPingRequest();
449  void _SendException( const PyAddress& source, int64 callID, MACHONETMSG_TYPE in_response_to, MACHONETERR_TYPE exception_type, PyRep** payload );
450  void _SendCallReturn( const PyAddress& source, int64 callID, PyResult& rsp);
451  void _SendPingResponse( const PyAddress& source, int64 callID );
452 
453  bool Handle_CallReq( PyPacket* packet, PyCallStream& req );
454  bool Handle_Notify( PyPacket* packet );
455  bool Handle_PingReq( PyPacket* packet ) { _SendPingResponse( packet->dest, packet->source.callID ); return true; }
456  bool Handle_PingRsp( PyPacket* packet ) { /* do nothing */ return true; }
457 
458 private:
459  //queues for destiny updates:
460  PyList* m_destinyEventQueue; //we own these. These are events as used in OnMultiEvent
461  PyList* m_destinyUpdateQueue; //we own these. They are the `update` which go into DoDestinyAction
462  void _SendQueuedUpdates();
463 
465 
466  std::map<uint32, uint32> m_lpMap; // corpID/points
467 
468  std::string GetStateName(int8 state);
469 };
470 
471 #endif
int64 GetAccountRole() const
Definition: Client.h:118
bool IsLogin()
Definition: Client.h:235
uint32 GetShipID() const
Definition: Client.h:150
Base Python wire object.
Definition: PyRep.h:66
bool m_setStateSent
Definition: Client.h:368
uint32 GetUserCount()
Definition: Client.cpp:2309
bool IsSessionChange()
Definition: Client.h:241
bool Handle_PingRsp(PyPacket *packet)
Definition: Client.h:456
unsigned __int8 uint8
Definition: eve-compat.h:46
void UpdateSessionInt(const char *sessionType, int value)
Definition: Client.cpp:1965
std::string GetCurrentString(const char *name) const
void SendNotification(const PyAddress &dest, EVENotificationStream &noti, bool seq=true)
Definition: Client.cpp:2245
int64 callID
Definition: PyPacket.h:90
uint32 GetLocationID() const
Definition: Client.h:151
bool IsBoard()
Definition: Client.h:233
float GetSecurityRating() const
Definition: Character.h:289
int64 GetRolesAtBase() const
Definition: Client.h:133
ShipItemRef GetPod() const
Definition: Client.h:169
void SendErrorMsg(const char *fmt,...)
Definition: Client.cpp:2719
void ExecuteDriveJump()
Definition: Client.cpp:1494
SystemData m_SystemData
Definition: Client.h:336
bool m_showall
Definition: Client.h:361
uint32 GetSystemID() const
Definition: Client.h:152
void SendInitialSessionStatus()
Definition: Client.cpp:2007
void ChannelLeft(LSCChannel *chan)
Definition: Client.cpp:1803
int32 GetWingID() const
Definition: Client.h:147
void DisconnectClient()
Definition: Client.cpp:2279
PyServiceMgr & services() const
Definition: Client.h:90
int32 GetSquadID() const
Definition: Client.h:148
bool AddBalance(float amount, uint8 type=Account::CreditType::ISK)
Definition: Client.h:174
float GetSecurityRating() const
Definition: Client.h:172
std::map< uint32, bool > m_hangarLoaded
Definition: Client.h:398
void SetAutoPilot(bool set=false)
Definition: Client.cpp:669
uint32 m_nextNotifySequence
Definition: Client.h:464
int64 GetCorpRole() const
Definition: Client.h:129
void SetTrainingEndTime(int64 endTime)
Definition: Client.h:331
bool m_uncloak
Definition: Client.h:360
void SetPicRec(bool set=false)
Definition: Client.h:319
bool RecPic()
Definition: Client.h:318
Python's dictionary.
Definition: PyRep.h:719
int32 GetCorpHQ() const
Definition: Client.h:124
void JumpOutEffect(uint32 locationID)
Definition: Client.cpp:1628
void _SendPingResponse(const PyAddress &source, int64 callID)
Definition: Client.cpp:2552
bool IsCharCreation()
Definition: Client.h:433
void _SendException(const PyAddress &source, int64 callID, MACHONETMSG_TYPE in_response_to, MACHONETERR_TYPE exception_type, PyRep **payload)
Definition: Client.cpp:2503
bool m_canThrow
Definition: Client.h:439
CharacterRef m_char
Definition: Client.h:340
bool Handle_PingReq(PyPacket *packet)
Definition: Client.h:455
void JumpInEffect()
Definition: Client.cpp:1620
void MoveToLocation(uint32 location, const GPoint &pt)
Definition: Client.cpp:684
std::string name
void UpdateFleetSession(CharFleetData &fleet)
Definition: Client.cpp:1992
void SetPodItem()
Definition: Client.cpp:1038
void ExecuteJump()
Definition: Client.cpp:1475
uint32 GetRegionID() const
Definition: Client.h:154
PyAddress dest
Definition: PyPacket.h:117
ServiceDB m_sDB
Definition: Client.h:335
Client(PyServiceMgr &services, EVETCPConnection **con)
Definition: Client.cpp:59
void FlushQueue()
Definition: Client.cpp:2118
int8 GetFleetRole()
Definition: Client.h:140
int32 m_wing
Definition: Client.h:371
EVEItemFlags
Definition: EVE_Flags.h:13
void SetBallParkTimer(uint32 time=Player::Timer::Default)
Definition: Client.cpp:1515
ClientSession * GetSession()
Definition: Client.h:104
bool m_loaded
Definition: Client.h:358
void MoveItem(uint32 itemID, uint32 location, EVEItemFlags flag)
Definition: Client.cpp:1674
void QueueDestinyEvent(PyTuple **multiEvent)
Definition: Client.cpp:2124
void SetDockPoint(GPoint &pt)
Definition: Client.h:224
void ProcessClient()
Definition: Client.cpp:433
bool m_portrait
Definition: Client.h:364
bool IsMissionComplete(MissionOffer &data)
Definition: Client.cpp:1764
PyList * m_destinyEventQueue
Definition: Client.h:460
void SendInfoModalMsg(const char *fmt,...)
Definition: Client.cpp:2756
bool SelectCharacter(int32 char_id=0)
Definition: Client.cpp:316
int32 GetCharacterID() const
Definition: Client.h:113
int32 GetWarFactionID() const
Definition: Client.h:126
bool IsInvul()
Definition: Client.h:234
bool Handle_Notify(PyPacket *packet)
Definition: Client.cpp:2672
uint32 m_shipId
Definition: Client.h:375
void SetShowAll(bool set=false)
Definition: Client.h:270
int32 GetCorporationID() const
Definition: Client.h:123
void SetBubbleWait(bool wait=false)
Definition: Client.h:248
bool IsUndock()
Definition: Client.h:236
void _GetVersion(VersionExchangeServer &version)
Obtains version.
Definition: Client.cpp:2299
void SetAFK(bool set=true)
Definition: Client.h:97
bool _LoginFail(std::string fail_msg)
Definition: Client.cpp:2440
bool m_autoPilot
Definition: Client.h:365
void CharNowInStation()
Definition: Client.cpp:1837
uint32 m_moveSystemID
Definition: Client.h:378
std::string GetStateName(int8 state)
Definition: Client.cpp:1636
int64 GetClientID() const
Definition: Client.h:119
float bounty() const
Definition: Character.h:287
Timer m_ballparkTimer
Definition: Client.h:392
MACHONETMSG_TYPE
Definition: packet_types.h:70
bool m_undock
Definition: Client.h:357
uint32 GetSessionChangeTime()
Definition: Client.h:242
void CharNoLongerInStation()
Definition: Client.cpp:1811
bool m_sessionChangeActive
Definition: Client.h:369
void SendSessionChange()
Definition: Client.cpp:2048
const char * name()
bool IsInSpace()
Definition: Client.h:228
bool m_charCreation
Definition: Client.h:441
PyRep * GetAggressors() const
Definition: Client.cpp:1389
void SendNotifyMsg(const char *fmt,...)
Definition: Client.cpp:2776
CharacterRef GetChar() const
Definition: Client.h:164
Python tuple.
Definition: PyRep.h:567
void InitSession(int32 characterID)
Definition: Client.cpp:1858
Definition: Ship.h:301
uint32 GetRemainingTime() const
Definition: timer.cpp:114
bool ContainsTypeQty(uint16 typeID, uint32 qty) const
Definition: Client.cpp:1744
int64 GetRolesAtHQ() const
Definition: Client.h:135
signed __int8 int8
Definition: eve-compat.h:45
void SelfEveMail(const char *subject, const char *fmt,...)
Scan * scan()
Definition: Client.h:302
int32 GetAllianceID() const
Definition: Client.h:125
Timer m_logoutTimer
Definition: Client.h:390
Timer m_sessionTimer
Definition: Client.h:391
void ClearTradeSession()
Definition: Client.h:310
std::set< LSCChannel * > m_channels
Definition: Client.h:397
bool Handle_CallReq(PyPacket *packet, PyCallStream &req)
Definition: Client.cpp:2620
void RemoveMissionItem(uint16 typeID, uint32 qty)
Definition: Client.cpp:1711
void SelfChatMessage(const char *fmt,...)
Definition: Client.cpp:2812
bool IsSetStateSent()
Definition: Client.h:240
uint16 groupID() const
signed __int32 int32
Definition: eve-compat.h:49
uint32 m_locationID
Definition: Client.h:377
Timer m_clientTimer
Definition: Client.h:388
void MoveToPosition(const GPoint &pt)
Definition: Client.cpp:928
Timer m_uncloakTimer
Definition: Client.h:385
* args
GPoint m_dockPoint
Definition: Client.h:395
GPoint m_movePoint
Definition: Client.h:394
void CheckBallparkTimer()
Definition: Client.cpp:913
uint32 JetcanTime()
Definition: Client.h:267
std::string GetLanguageID() const
Definition: Client.h:107
float balance(uint8 type)
Definition: Character.cpp:363
Value keeper for single EVE session.
Definition: ClientSession.h:37
bool InPod()
Definition: Client.h:227
void SetUndock(bool undock=false)
Definition: Client.h:245
bool IsIdle()
Definition: Client.h:231
void RemoveStationHangar(uint32 stationID)
Definition: Client.cpp:1656
Definition: gpoint.h:33
bool _VerifyVIPKey(const std::string &vipKey)
Verifies VIP key.
Definition: Client.h:418
bool m_autoStop
Definition: Client.h:362
bool AlterBalance(float amount, uint8 type)
Definition: Character.cpp:375
SystemGPoint m_SGP
Definition: Client.h:342
bool IsBubbleWait()
Definition: Client.h:239
void SetInvul(bool invul=false)
Definition: Client.h:244
bool _VerifyVersion(VersionExchangeClient &version)
Verifies version.
Definition: Client.cpp:2314
Timer m_cloakTimer
Definition: Client.h:384
bool InFleet()
Definition: Client.h:142
EVE derivation of TCP connection.
bool ProcessNet()
Definition: Client.cpp:292
int64 GetCurrentLong(const char *name) const
float GetBounty() const
Definition: Client.h:171
void _SendPingRequest()
Definition: Client.cpp:2528
bool m_afk
Definition: Client.h:354
bool IsDocked()
Definition: Client.h:229
SystemManager * SystemMgr() const
Definition: Client.h:92
bool m_validSession
Definition: Client.h:440
std::map< uint32, uint32 > m_lpMap
Definition: Client.h:466
void SetShip(ShipItemRef shipRef)
Definition: Client.cpp:1278
void CreateChar(bool set)
Definition: Client.h:434
PyList * m_destinyUpdateQueue
Definition: Client.h:461
void ChannelJoined(LSCChannel *chan)
Definition: Client.cpp:1799
void SetAutoStop(bool set=false)
Definition: Client.h:273
bool CanThrow()
Definition: Client.h:431
void SetChar(CharacterRef charRef)
Definition: Client.h:163
bool m_bubbleWait
Definition: Client.h:367
bool IsAFK()
Definition: Client.h:96
void UpdateCorpSession(CorpData &data)
Definition: Client.cpp:1970
TradeSession * GetTradeSession()
Definition: Client.h:311
bool IsShowall()
Definition: Client.h:271
bool IsLoaded()
Definition: Client.h:88
PyServiceMgr & m_services
Definition: Client.h:341
void SetUncloakTimer(uint32 time=Player::Timer::Default)
Definition: Client.cpp:1559
bool IsUncloak()
Definition: Client.h:237
bool HasBeyonce()
Definition: Client.h:238
void PickAlternateShip()
Definition: Client.cpp:1298
void WarpIn()
Definition: Client.cpp:628
uint32 GetConstellationID() const
Definition: Client.h:153
uint32 GetFleetID() const
Definition: Client.h:146
X * get() const
Definition: RefPtr.h:213
void BanClient()
Definition: Client.cpp:2287
int32 GetStationID2() const
Definition: Client.h:115
int32 GetAccountType() const
Definition: Client.h:110
void SetScanTimer(uint16 time, bool useProbe=false)
Definition: Client.h:306
ShipItemRef GetShip() const
Definition: Client.h:167
void SetTradeSession(TradeSession *ts)
Definition: Client.h:309
const char * GetName() const
Definition: Client.h:94
void Board(ShipSE *newShipSE)
Definition: Client.cpp:1086
void ResetAfterPopped(GPoint &position)
Definition: Client.cpp:1209
uint32 GetCharID()
Definition: Client.h:166
void SetStateSent(bool set=false)
Definition: Client.h:249
ShipItemRef m_pod
Definition: Client.h:338
GPoint GetDockPoint()
Definition: Client.h:226
int32 GetCurrentInt(const char *name) const
double GetCorpTaxRate()
Definition: Client.h:122
void SetBallPark()
Definition: Client.cpp:887
void QueueDestinyUpdate(PyTuple **update, bool DoPackage=false, bool IsSetState=false)
Definition: Client.cpp:2131
bool IsFleetBoss()
Definition: Client.h:143
ShipItemRef m_ship
Definition: Client.h:337
Definition: Client.h:66
int64 GetRolesAtAll() const
Definition: Client.h:131
Client & operator=(const Client &oth)=delete
void SetDockStationID(uint32 stationID)
Definition: Client.h:223
void SetUncloak(bool uncloak=false)
Definition: Client.h:247
Client session from server's side.
Definition: EVESession.h:49
unsigned __int32 uint32
Definition: eve-compat.h:50
uint32 systemID
void AddBindID(uint32 bindID)
Definition: Client.h:436
uint32 regionID
bool IsAutoPilot()
Definition: Client.h:256
void WarpOut()
Definition: Client.cpp:647
bool IsJetcanAvalible()
Definition: Client.cpp:1381
int32 GetCloneStationID() const
Definition: Client.h:116
void LoadStationHangar(uint32 stationID)
Definition: Client.cpp:1667
uint32 GetDockStationID()
Definition: Client.h:225
int32 m_squad
Definition: Client.h:372
std::string GetCharName()
Definition: Client.h:165
bool m_packaged
Definition: Client.h:363
void SetInvulTimer(uint32 time=Player::Timer::Default)
Definition: Client.cpp:1579
std::set< uint32 > m_bindSet
Definition: Client.h:443
float GetBalance(uint8 type=Account::CreditType::ISK)
Definition: Client.h:176
Timer m_stateTimer
Definition: Client.h:381
uint32 GetLoyaltyPoints(uint32 corpID)
Definition: Client.cpp:1704
bool IsDock()
Definition: Client.h:230
uint32 GetPodID() const
Definition: Client.h:170
void BoardShip(ShipItemRef newShipRef)
Definition: Client.cpp:1064
Timer m_scanTimer
Definition: Client.h:383
Timer m_invulTimer
Definition: Client.h:386
ShipSE * GetShipSE()
Definition: Client.h:168
signed __int64 int64
Definition: eve-compat.h:51
const std::string & itemName() const
void SetSessionChange(bool set=false)
Definition: Client.h:251
void SetDestiny(const GPoint &pt, bool update=false)
Definition: Client.cpp:847
bool IsJump()
Definition: Client.h:232
void StargateJump(uint32 fromGate, uint32 toGate)
Definition: Client.cpp:1410
void UndockFromStation()
Definition: Client.cpp:975
void SetScan(Scan *pScan)
Definition: Client.h:303
void _SendQueuedUpdates()
Definition: Client.cpp:2170
#define IsFleetID(itemID)
Definition: EVE_Defines.h:225
int32 GetCorpAccountKey() const
Definition: Client.h:127
~Client()
Definition: Client.cpp:226
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type()() itemID() copy() materialLevel()() itemID(attributeID)-Retrieves attribute value." ) COMMAND( setattr
ShipItemRef SpawnNewRookieShip(uint32 stationID)
Definition: Client.cpp:1314
void SetStateTimer(int8 state, uint32 time=Player::Timer::Default)
Definition: Client.cpp:1599
ShipSE * pShipSE
Definition: Client.h:343
float corpTaxRate() const
Definition: Character.h:305
SystemManager * m_system
Definition: Client.h:346
Timer m_jetcanTimer
Definition: Client.h:389
uint32 m_dockStationID
Definition: Client.h:379
int64 GetRolesAtOther() const
Definition: Client.h:137
void ResetAfterPodded()
Definition: Client.cpp:1252
void DockToStation()
Definition: Client.cpp:942
int32 GetStationID() const
Definition: Client.h:114
void EnterSystem(uint32 systemID)
Definition: Client.cpp:679
StationData m_StationData
Definition: Client.h:339
Timer m_pingTimer
Definition: Client.h:382
bool m_login
Definition: Client.h:356
uint32 constellationID
uint32 _GetQueuePosition()
Definition: Client.h:409
void CreateShipSE()
Definition: Client.cpp:1004
bool IsFleetBooster()
Definition: Client.h:144
void DestroyShipSE()
Definition: Client.cpp:1014
Definition: timer.h:30
TradeSession * m_TS
Definition: Client.h:344
PyAddress source
Definition: PyPacket.h:116
void SetSessionTimer()
Definition: Client.h:250
bool m_beyonce
Definition: Client.h:359
ClientSession * pSession
Definition: Client.h:345
void _SendCallReturn(const PyAddress &source, int64 callID, PyResult &rsp)
Definition: Client.cpp:2475
void UpdateSession()
Definition: Client.cpp:1935
Scan * m_scan
Definition: Client.h:334
std::string GetSystemName() const
Definition: Client.h:155
void SetBeyonce(bool beyonce=false)
Definition: Client.h:246
bool _VerifyCrypto(CryptoRequestPacket &cr)
Verifies crypto.
Definition: Client.cpp:2330
void CreateNewPod()
Definition: Client.cpp:1303
void SetCloakTimer(uint32 time=Player::Timer::Default)
Definition: Client.cpp:1533
unsigned __int16 uint16
Definition: eve-compat.h:48
entityID heal the character with the entityID note giving you detailed ship status information gives a list of all dynamic entities and players and their destinyState in this bubble shows some current destiny variables save all kick all and halt server immediate command list all items in current location s gives list of cargo contents and volumes in all holds list current session values show current ship DNA show current objects in their destiny state
void CynoJump(InventoryItemRef beacon)
Definition: Client.cpp:1454
bool m_scanProbe
Definition: Client.h:366
bool AutoStop()
Definition: Client.h:274
int64 m_skillTimer
Definition: Client.h:400
bool _VerifyLogin(CryptoChallengePacket &ccp)
Verifies login.
Definition: Client.cpp:2354
void UpdateNewShip()
Definition: Client.cpp:1025
void StartJetcanTimer()
Definition: Client.h:268
Definition: Scan.h:32
Python list.
Definition: PyRep.h:639
bool IsHangarLoaded(uint32 stationID)
Definition: Client.cpp:1660
bool IsValidSession()
Definition: Client.h:103
std::string GetAddress() const
Definition: Client.h:106
Timer m_fleetTimer
Definition: Client.h:387
void CheckShipRef(ShipItemRef newShipRef)
Definition: Client.cpp:1049
uint32 m_fleet
Definition: Client.h:374
uint32 itemID() const
Definition: InventoryItem.h:98
void AddStationHangar(uint32 stationID)
Definition: Client.cpp:1652
void Eject()
Definition: Client.cpp:1133
MACHONETERR_TYPE
Definition: packet_types.h:92
int8 m_clientState
Definition: Client.h:402
bool _VerifyFuncResult(CryptoHandshakeResult &result)
Verifies function result.
Definition: Client.cpp:2447
bool m_invul
Definition: Client.h:355
#define sDataMgr
void Start(uint32 setTimerTime=0, bool changeResetTimer=true)
Definition: timer.cpp:81
int32 GetUserID() const
Definition: Client.h:109