Atrinik Server 2.5
include/newclient.h
Go to the documentation of this file.
00001 /************************************************************************
00002 *            Atrinik, a Multiplayer Online Role Playing Game            *
00003 *                                                                       *
00004 *    Copyright (C) 2009-2011 Alex Tokar and Atrinik Development Team    *
00005 *                                                                       *
00006 * Fork from Daimonin (Massive Multiplayer Online Role Playing Game)     *
00007 * and Crossfire (Multiplayer game for X-windows).                       *
00008 *                                                                       *
00009 * This program is free software; you can redistribute it and/or modify  *
00010 * it under the terms of the GNU General Public License as published by  *
00011 * the Free Software Foundation; either version 2 of the License, or     *
00012 * (at your option) any later version.                                   *
00013 *                                                                       *
00014 * This program is distributed in the hope that it will be useful,       *
00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00017 * GNU General Public License for more details.                          *
00018 *                                                                       *
00019 * You should have received a copy of the GNU General Public License     *
00020 * along with this program; if not, write to the Free Software           *
00021 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.             *
00022 *                                                                       *
00023 * The author can be reached at admin@atrinik.org                        *
00024 ************************************************************************/
00025 
00044 #ifndef NEWCLIENT_H
00045 #define NEWCLIENT_H
00046 
00053 #define MAXSOCKBUF (64 * 1024)
00054 
00059 #define MAXSOCKBUF_IN (3 * 1024)
00060 
00066 #define CS_QUERY_YESNO      0x1
00067 
00068 #define CS_QUERY_SINGLECHAR 0x2
00069 
00070 #define CS_QUERY_HIDEINPUT  0x4
00071 
00079 #define FLOAT_MULTI 100000
00080 
00081 #define FLOAT_MULTF 100000.0
00082 
00088 #define CS_STAT_HP              1
00089 #define CS_STAT_MAXHP           2
00090 #define CS_STAT_SP              3
00091 #define CS_STAT_MAXSP           4
00092 #define CS_STAT_STR             5
00093 #define CS_STAT_INT             6
00094 #define CS_STAT_WIS             7
00095 #define CS_STAT_DEX             8
00096 #define CS_STAT_CON             9
00097 #define CS_STAT_CHA             10
00098 #define CS_STAT_EXP             11
00099 #define CS_STAT_LEVEL           12
00100 #define CS_STAT_WC              13
00101 #define CS_STAT_AC              14
00102 #define CS_STAT_DAM             15
00103 #define CS_STAT_ARMOUR          16
00104 #define CS_STAT_SPEED           17
00105 #define CS_STAT_FOOD            18
00106 #define CS_STAT_WEAP_SP         19
00107 #define CS_STAT_RANGE           20
00108 #define CS_STAT_TITLE           21
00109 #define CS_STAT_POW             22
00110 #define CS_STAT_GRACE           23
00111 #define CS_STAT_MAXGRACE        24
00112 #define CS_STAT_FLAGS           25
00113 #define CS_STAT_WEIGHT_LIM      26
00114 #define CS_STAT_EXT_TITLE       27
00115 #define CS_STAT_REG_HP          28
00116 #define CS_STAT_REG_MANA        29
00117 #define CS_STAT_REG_GRACE       30
00118 #define CS_STAT_TARGET_HP       31
00119 
00120 #define CS_STAT_ACTION_TIME     36
00121 #define CS_STAT_RANGED_DAM 37
00122 #define CS_STAT_RANGED_WC 38
00123 #define CS_STAT_RANGED_WS 39
00124 
00125 #define CS_STAT_RESIST_START    100
00126 #define CS_STAT_RESIST_END      117
00127 #define CS_STAT_RES_PHYS        100
00128 #define CS_STAT_RES_MAG         101
00129 #define CS_STAT_RES_FIRE        102
00130 #define CS_STAT_RES_ELEC        103
00131 #define CS_STAT_RES_COLD        104
00132 #define CS_STAT_RES_CONF        105
00133 #define CS_STAT_RES_ACID        106
00134 #define CS_STAT_RES_DRAIN       107
00135 #define CS_STAT_RES_GHOSTHIT    108
00136 #define CS_STAT_RES_POISON      109
00137 #define CS_STAT_RES_SLOW        110
00138 #define CS_STAT_RES_PARA        111
00139 #define CS_STAT_TIME            112
00140 #define CS_STAT_RES_FEAR        113
00141 #define CS_STAT_RES_DEPLETE     114
00142 #define CS_STAT_RES_DEATH       115
00143 #define CS_STAT_RES_HOLYWORD    116
00144 #define CS_STAT_RES_BLIND       117
00145 
00146 #define CS_STAT_SKILLEXP_START      118
00147 #define CS_STAT_SKILLEXP_END        129
00148 #define CS_STAT_SKILLEXP_AGILITY    118
00149 #define CS_STAT_SKILLEXP_AGLEVEL    119
00150 #define CS_STAT_SKILLEXP_PERSONAL   120
00151 #define CS_STAT_SKILLEXP_PELEVEL    121
00152 #define CS_STAT_SKILLEXP_MENTAL     122
00153 #define CS_STAT_SKILLEXP_MELEVEL    123
00154 #define CS_STAT_SKILLEXP_PHYSIQUE   124
00155 #define CS_STAT_SKILLEXP_PHLEVEL    125
00156 #define CS_STAT_SKILLEXP_MAGIC      126
00157 #define CS_STAT_SKILLEXP_MALEVEL    127
00158 #define CS_STAT_SKILLEXP_WISDOM     128
00159 #define CS_STAT_SKILLEXP_WILEVEL    129
00160 
00161 #define CS_STAT_PROT_START 130
00162 #define CS_STAT_PROT_END 149
00163 
00170 #define SF_FIREON           1
00171 #define SF_RUNON            2
00172 #define SF_BLIND            4
00173 #define SF_XRAYS            8
00174 #define SF_INFRAVISION      16
00175 
00182 #define COLOR_WHITE "ffffff"
00183 
00184 #define COLOR_ORANGE "ff9900"
00185 
00186 #define COLOR_NAVY "00ffff"
00187 
00188 #define COLOR_RED "ff3030"
00189 
00190 #define COLOR_GREEN "00ff00"
00191 
00192 #define COLOR_BLUE "0080ff"
00193 
00194 #define COLOR_GRAY "999999"
00195 
00196 #define COLOR_BROWN "c07f40"
00197 
00198 #define COLOR_PURPLE "cc66ff"
00199 
00200 #define COLOR_PINK "ff9999"
00201 
00202 #define COLOR_YELLOW "ffff33"
00203 
00204 #define COLOR_DK_NAVY "00c4c2"
00205 
00206 #define COLOR_DK_GREEN "006600"
00207 
00208 #define COLOR_DK_ORANGE "ff6600"
00209 
00210 #define COLOR_BRIGHT_PURPLE "ff66ff"
00211 
00212 #define COLOR_HGOLD "d4d553"
00213 
00214 #define COLOR_DGOLD "999900"
00215 
00216 #define COLOR_BLACK "000000"
00217 
00224 #define NDI_SAY 0x0100
00225 
00226 #define NDI_SHOUT 0x0200
00227 
00228 #define NDI_TELL 0x0400
00229 
00230 #define NDI_PLAYER 0x0800
00231 
00232 #define NDI_EMOTE 0x01000
00233 
00236 #define NDI_ANIM 0x02000
00237 
00238 #define NDI_ALL 0x20000
00239 
00247 enum
00248 {
00250     a_none,
00252     a_readied,
00254     a_wielded,
00256     a_worn,
00258     a_active,
00260     a_applied
00261 };
00262 
00264 #define F_APPLIED       0x000F
00265 
00266 #define F_ETHEREAL      0x0080
00267 
00268 #define F_INVISIBLE     0x0100
00269 
00270 #define F_UNPAID        0x0200
00271 
00272 #define F_MAGIC         0x0400
00273 
00274 #define F_CURSED        0x0800
00275 
00276 #define F_DAMNED        0x1000
00277 
00278 #define F_OPEN          0x2000
00279 
00280 #define F_NOPICK        0x4000
00281 
00282 #define F_LOCKED        0x8000
00283 
00284 #define F_TRAPPED       0x10000
00285 
00292 #define UPD_LOCATION 1
00293 
00294 #define UPD_FLAGS 2
00295 
00296 #define UPD_WEIGHT 4
00297 
00298 #define UPD_FACE 8
00299 
00300 #define UPD_NAME 16
00301 
00302 #define UPD_ANIM 32
00303 
00304 #define UPD_ANIMSPEED 64
00305 
00306 #define UPD_NROF 128
00307 
00308 #define UPD_DIRECTION 256
00309 
00310 #define UPD_TYPE 512
00311 
00312 #define UPD_ANIM_NO_INV 1024
00313 
00318 typedef struct SockList
00319 {
00321     int len;
00322 
00324     unsigned char *buf;
00325 } SockList;
00326 
00328 typedef struct CS_Stats
00329 {
00331     int ibytes;
00332 
00334     int obytes;
00335 
00337     short max_conn;
00338 
00340     time_t time_start;
00341 } CS_Stats;
00342 
00344 typedef struct _srv_client_files
00345 {
00347     char *file;
00348 
00350     size_t len;
00351 
00353     size_t len_ucomp;
00354 
00356     unsigned long crc;
00357 } _srv_client_files;
00358 
00360 #define SRV_FILE_SPELLS_FILENAME "client_spells_v2"
00361 
00362 #define SRV_CLIENT_SKILLS_FILENAME "client_skills_v2"
00363 
00365 enum
00366 {
00367     SRV_CLIENT_SKILLS,
00368     SRV_CLIENT_SPELLS,
00369     SRV_CLIENT_SETTINGS,
00370     SRV_CLIENT_ANIMS,
00371     SRV_CLIENT_BMAPS,
00372     SRV_CLIENT_HFILES,
00373     SRV_FILE_UPDATES,
00374     SRV_FILE_SPELLS_V2,
00375     SRV_SERVER_SETTINGS,
00376     SRV_CLIENT_ANIMS_V2,
00377     SRV_CLIENT_EFFECTS,
00378     SRV_CLIENT_SKILLS_V2,
00379     /* last index */
00380     SRV_CLIENT_FILES
00381 };
00382 
00383 extern _srv_client_files SrvClientFiles[SRV_CLIENT_FILES];
00384 
00385 extern CS_Stats cst_tot, cst_lst;
00386 
00387 #define DATA_PACKED_CMD 0x80
00388 
00390 enum
00391 {
00392     DATA_CMD_NO,
00393     DATA_CMD_SKILL_LIST,
00394     DATA_CMD_SPELL_LIST,
00395     DATA_CMD_SETTINGS_LIST,
00396     DATA_CMD_ANIM_LIST,
00397     DATA_CMD_BMAP_LIST,
00398     DATA_CMD_HFILES_LIST
00399 };
00400 
00402 #define SOCKET_SET_BINARY_CMD(__s__, __bc__) \
00403     (__s__)->buf[0] = __bc__;                \
00404     (__s__)->len = 1
00405 
00412 enum
00413 {
00414     BINARY_CMD_COMC = 1,
00415     BINARY_CMD_MAP2,
00416     BINARY_CMD_DRAWINFO,
00417     BINARY_CMD_DRAWINFO2,
00418     BINARY_CMD_FILE_UPD,
00419     BINARY_CMD_ITEMX,
00420     BINARY_CMD_SOUND,
00421     BINARY_CMD_TARGET,
00422     BINARY_CMD_UPITEM,
00423     BINARY_CMD_DELITEM,
00424     BINARY_CMD_STATS,
00425     BINARY_CMD_IMAGE,
00426     BINARY_CMD_FACE1,
00427     BINARY_CMD_ANIM,
00428     BINARY_CMD_SKILLRDY,
00429     BINARY_CMD_PLAYER,
00430     BINARY_CMD_MAPSTATS,
00431     BINARY_CMD_SPELL_LIST,
00432     BINARY_CMD_SKILL_LIST,
00433     BINARY_CMD_CLEAR,
00434     BINARY_CMD_ADDME_SUC,
00435     BINARY_CMD_ADDME_FAIL,
00436     BINARY_CMD_VERSION,
00437     BINARY_CMD_BYE,
00438     BINARY_CMD_SETUP,
00439     BINARY_CMD_QUERY,
00440     BINARY_CMD_DATA,
00441     BINARY_CMD_NEW_CHAR,
00442     BINARY_CMD_ITEMY,
00443     BINARY_CMD_BOOK,
00444     BINARY_CMD_PARTY,
00445     BINARY_CMD_QUICKSLOT,
00447     BINARY_CMD_SHOP,
00448     BINARY_CMD_QLIST,
00449     BINARY_CMD_REGION_MAP,
00453     BINARY_CMD_READY,
00454     BINARY_CMD_KEEPALIVE,
00455 
00456     /* old, unused or outdated crossfire cmds! */
00457     BINARY_CMD_MAGICMAP,
00458     BINARY_CMD_DELINV,
00459     BINARY_CMD_REPLYINFO,
00460     BINARY_CMD_IMAGE2,
00461     BINARY_CMD_FACE,
00462     BINARY_CMD_FACE2,
00463 
00464     /* last entry */
00465     BINAR_CMD
00466 };
00467 
00468 #define MAP_UPDATE_CMD_SAME 0
00469 #define MAP_UPDATE_CMD_NEW 1
00470 #define MAP_UPDATE_CMD_CONNECTED 2
00471 
00477 #define CMD_QUICKSLOT_SET 1
00478 
00479 #define CMD_QUICKSLOT_SETSPELL 2
00480 
00481 #define CMD_QUICKSLOT_UNSET 3
00482 
00489 #define QUICKSLOT_TYPE_ITEM 1
00490 
00491 #define QUICKSLOT_TYPE_SPELL 2
00492 
00500 #define CMD_TARGET_SELF 0
00501 
00502 #define CMD_TARGET_ENEMY 1
00503 
00504 #define CMD_TARGET_FRIEND 2
00505 
00507 #endif