⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 item.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 4 页
字号:
#include "version.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <errno.h>#include "common.h"#include "char.h"#include "char_data.h"#include "battle.h"#include "item.h"#include "buf.h"#include "function.h"#include "magic_base.h"static int ITEM_tblen = 0;static int ITEM_idxlen = 0;static ITEM_exists* ITEM_item;static int          ITEM_itemnum;static int			ITEM_UseItemnum=0;static char* ITEM_checkString( char* string );static int ITEM_getRandomValue( char*  string,int* randomwidth, int num );static int ITEM_isstring1or0( char*  string,int* randomwidth, int num );#ifdef _SIMPLIFY_ITEMSTRINGtypedef struct ITEM_tag_intDataSetting{	char*   dumpchar;	int     defaults;	int table;}ITEM_intDataSetting;typedef struct ITEM_tag_charDataSetting{	char*   dumpchar;	char*   defaults;	int table;}ITEM_charDataSetting;static ITEM_intDataSetting ITEM_setintdata[]={	{"id",		0,			ITEM_ID },	{"bi",		0,			ITEM_BASEIMAGENUMBER },	{"cs",		0,			ITEM_COST },	{"ep",		ITEM_OTHER,	ITEM_TYPE },	{"ft",		0,			ITEM_ABLEUSEFIELD },	{"tg",		0,			ITEM_TARGET },	{"lv",		0,			ITEM_LEVEL },#ifdef _ITEM_MAXUSERNUM	{"dib",		-1,			ITEM_DAMAGEBREAK },#endif#ifdef _ITEMSET4_TXT	{"upin",	1,			ITEM_USEPILENUMS },	{"canpile",	0,			ITEM_CANBEPILE },	{"nestr",	0,			ITEM_NEEDSTR },	{"nedex",	0,			ITEM_NEEDDEX },	{"netra",	0,			ITEM_NEEDTRANS },	{"neprof",	0,			ITEM_NEEDPROFESSION },#endif#ifdef _TAKE_ITEMDAMAGE	{"dmce",	0,			ITEM_DAMAGECRUSHE },	{"mdmce",	0,			ITEM_MAXDAMAGECRUSHE },#endif#ifdef _ADD_DEAMGEDEFC	{"otdmag",	0,			ITEM_OTHERDAMAGE },	{"otdefc",	0,			ITEM_OTHERDEFC },#endif#ifdef _SUIT_ITEM	{"nsuit",	0,			ITEM_SUITCODE },#endif	{"ann",		0,			ITEM_ATTACKNUM_MIN },	{"anx",		0,			ITEM_ATTACKNUM_MAX },	{"ma",		0,			ITEM_MODIFYATTACK },	{"md",		0,			ITEM_MODIFYDEFENCE },	{"mh",		0,			ITEM_MODIFYQUICK}, //ITEM_MODIFYHP }, ITEM_MODIFYQUICK	{"mm",		0,			ITEM_MODIFYHP}, //ITEM_MODIFYMP }, ITEM_MODIFYHP	{"mq",		0,			ITEM_MODIFYMP}, //ITEM_MODIFYQUICK }, ITEM_MODIFYMP	{"ml",		0,			ITEM_MODIFYLUCK },	{"mc",		0,			ITEM_MODIFYCHARM },	{"mv",		0,			ITEM_MODIFYAVOID },	{"mat",		0,			ITEM_MODIFYATTRIB },	{"mav",		0,			ITEM_MODIFYATTRIBVALUE },	{"mid",		-1,			ITEM_MAGICID },	{"mpr",		0,			ITEM_MAGICPROB },	{"mu",		0,			ITEM_MAGICUSEMP },#ifdef _ITEMSET5_TXT	{"arr",		0,			ITEM_MODIFYARRANGE },	{"seqce",	0,			ITEM_MODIFYSEQUENCE },	{"iapi",	0,			ITEM_ATTACHPILE },	{"hirt",	0,			ITEM_HITRIGHT },#endif#ifdef _ITEMSET6_TXT	{"neguard",	0,			ITEM_NEGLECTGUARD},#endif	{"mrf",		0,			ITEM_MERGEFLG},};static ITEM_charDataSetting     ITEM_setchardata[]={	{"na",			"",	ITEM_NAME },        /*  ITEM_NAME   */	{"sn",			"",	ITEM_SECRETNAME },        /*  ITEM_SCRETNAME  */	{"en",			"",	ITEM_EFFECTSTRING },        /*  ITEM_EFFECTSTRING  */	{"ar",			"",	ITEM_ARGUMENT },        /*  ITEM_ARGUMENT   */#ifdef _ITEM_INSLAY	{"acode",		"",	ITEM_TYPECODE }, /*ITEM_TYPECODE,*/	{"inlaycode",	"",	ITEM_INLAYCODE}, /*ITEM_INLAYCODE,*/#endif	{"cdk",			"",	ITEM_CDKEY },       /*  ITEM_CDKEY   */#ifdef _ITEM_FORUSERNAMES	{"forname",		"",	ITEM_FORUSERNAME },		//ITEM_FORUSERNAME,	{"forcdkey",	"",	ITEM_FORUSERCDKEY },		//ITEM_FORUSERCDKEY#endif#ifdef _UNIQUE_P_I	{"ucode",		"",	ITEM_UNIQUECODE},    /*  ITEM_UNIQUECODE  */#endif	};static ITEM_charDataSetting     ITEM_setmemdata={	"",  "", -1         /*  ITEM_MEMO  */};#elsetypedef struct ITEM_tag_intDataSetting{	char*   dumpchar;	int     defaults;}ITEM_intDataSetting;typedef struct ITEM_tag_charDataSetting{	char*   dumpchar;	char*   defaults;}ITEM_charDataSetting;static ITEM_intDataSetting ITEM_setintdata[ITEM_DATAINTNUM]={	{"id",  0},                 /*  ITEM_ID */	{"bi",  0},                 /*  ITEM_ITEMBASEIMAGENUMBER */	{"cs",  0},                 /*  ITEM_COST    */	{"ep",  ITEM_OTHER},        /*  ITEM_TYPE   */	{"ft",  0},					/*  ITEM_ABLEUSEFIELD */	{"tg",  0},					/*  ITEM_TARGET */	{"lv",  0},                 /*  ITEM_LEVEL  */#ifdef _ITEM_MAXUSERNUM	{"dib", -1},					/*ITEM_DAMAGEBREAK*/#endif#ifdef _ITEMSET4_TXT	{"upin", 1},				//ITEM_USEPILENUMS,	{"canpile", 0},				//ITEM_CANBEPILE	{"nestr", 0},				//ITEM_NEEDSTR,	{"nedex", 0},				//ITEM_NEEDDEX,	{"netra", 0},				//ITEM_NEEDTRANS,	{"neprof", 0},				//ITEM_NEEDPROFESSION,#endif#ifdef _TAKE_ITEMDAMAGE	{"dmce", 0},				/*ITEM_DAMAGECRUSHE*/	{"mdmce",0},				//ITEM_MAXDAMAGECRUSHE#endif#ifdef _ADD_DEAMGEDEFC	{"otdmag", 0},				//ITEM_OTHERDAMAGE,	{"otdefc", 0},				//ITEM_OTHERDEFC,#endif#ifdef _SUIT_ITEM	{"nsuit", 0},				//ITEM_SUITCODE,#endif	{"ann",  0},                /*  ITEM_ATTACKNUM_MIN  */	{"anx",  0},                /*  ITEM_ATTACKNUM_MAX  */	{"ma",  0},                 /*  ITEM_MODIFYATTACK    */	{"md",  0},                 /*  ITEM_MODIFYDEFENCE  */	{"mh",  0},                 /*  ITEM_MODIFYHP    */	{"mm",  0},                 /*  ITEM_MODIFYMP    */	{"mq",  0},                 /*  ITEM_MODIFYQUICK */	{"ml",  0},                 /*  ITEM_MODIFYLUCK */	{"mc",  0},                 /*  ITEM_MODIFYCHARM */	{"mv",  0},                 /*  ITEM_MODIFYAVOID */	{"mat",  0},				/*  ITEM_MODIFYATTRIB */	{"mav",  0},				/*  ITEM_MODIFYATTRIBVALUE */	{"mid", -1},				/*  ITEM_MAGICID	*/	{"mpr", 0},					/*  ITEM_MAGICPROB  */	{"mu",  0},					/*  ITEM_MAGICUSEMP  */#ifdef _ITEMSET5_TXT	{"arr",  0},					/*ITEM_MODIFYARRANGE*/	{"seqce",  0},					//ITEM_MODIFYSEQUENCE,	{"iapi", 0},					//ITEM_ATTACHPILE	{"hirt", 0},					//ITEM_HITRIGHT		//额外命中#endif#ifdef _ITEMSET6_TXT	{"neguard", 0},					//ITEM_NEGLECTGUARD//	{"bemerge", 0},					//ITEM_BEMERGE#endif	{"mpo",  0},					/*  ITEM_POISON  */	{"mpa",  0},					/*  ITEM_PARALYSIS  */	{"msl",  0},					/*  ITEM_SLEEP  */	{"mst",  0},					/*  ITEM_STONE  */	{"mdr",  0},					/*  ITEM_DRUNK  */	{"mco",  0},					/*  ITEM_CONFUSION  */	{"mcr",  0},					/*  ITEM_CRITICAL  */	{"ua",  -1},					/*  ITEM_USEACTION */	{"drlo",FALSE},             /*  ITEM_DROPATLOGOUT   */	{"valo",FALSE},             /*  ITEM_VANISHATLOGOUT */	{"ioed",TRUE},              /*  ITEM_ISOVERED   */	{"cpm", TRUE},              /*  ITEM_CANPETMAIL   */	{"cmf", TRUE},              /*  ITEM_CANMERGEFROM   */	{"cmt", TRUE},              /*  ITEM_CANMERGETO   */    {"ingv0",0},                /*  ITEM_INGVALUE0 */    {"ingv1",0},    {"ingv2",0},    {"ingv3",0},    {"ingv4",0},	{"ipt",  0},				/*  ITEM_PUTTIME    */	{"ll",  0},					/*  ITEM_LEAKLEVEL  */	{"mrf",  0},				/*  ITEM_MERGEFLG  */	{"clv", 0},					/*	ITEM_CRUSHLEVEL */	{"v1",  0},                 /*  ITEM_VAR1  */	{"v2",  0},                 /*  ITEM_VAR2  */	{"v3",  0},                 /*  ITEM_VAR3  */	{"v4",  0},                 /*  ITEM_VAR4  */};static ITEM_charDataSetting     ITEM_setchardata[ITEM_DATACHARNUM]={	{"na",  ""},        /*  ITEM_NAME   */	{"sn",  ""},        /*  ITEM_SCRETNAME  */	{"en",  ""},        /*  ITEM_EFFECTSTRING  */	{"ar",  ""},        /*  ITEM_ARGUMENT   */#ifdef _ITEM_INSLAY	{"acode",   ""}, /*ITEM_TYPECODE,*/	{"inlaycode",   ""}, /*ITEM_INLAYCODE,*/#endif	{"cdk",  ""},       /*  ITEM_CDKEY   */#ifdef _ITEM_FORUSERNAMES	{"forname",  ""},		//ITEM_FORUSERNAME,	{"forcdkey",  ""},		//ITEM_FORUSERCDKEY#endif// CoolFish: 2001/10/11#ifdef _UNIQUE_P_I	{"ucode",   ""},    /*  ITEM_UNIQUECODE  */#endif	    {"ingn0", ""},      /*  ITEM_INGNAME0 */    {"ingn1", ""},    {"ingn2", ""},    {"ingn3", ""},    {"ingn4", ""},	{"inif",    ""},    /*  ITEM_PREOVERFUNC    */	{"preof",   ""},    /*  ITEM_PREOVERFUNC    */	{"posof",   ""},    /*  ITEM_POSTOVERFUNC    */	{"wf",      "ITEM_DeleteTimeWatched"},    /*  ITEM_WATCHFUNC  */	{"usef",    ""},    /*  ITEM_USEFUNC  */	{"atchf",   ""},     /*  ITEM_ATTACH  */	{"dtchf",   ""},     /*  ITEM_DETACH  */	{"attaf",   ""},     /*  ITEM_ATTACKFUNC */	{"pickupf",   ""},   /*  ITEM_PICKUPFUNC  */#ifdef _Item_ReLifeAct	{"relifes",   ""},	/*ITEM_DIERELIFEFUNC*/#endif};static ITEM_charDataSetting     ITEM_setmemdata={	"",  ""          /*  ITEM_MEMO  */};#endiftypedef enum{	ITEM_INTENTRY=0,	ITEM_CHARENTRY=1,	ITEM_INTFUNC=2,	ITEM_CHARFUNC=3,}ITEM_DATATYPECATEGORY;static struct ITEM_itemconfentry{	char*   entryname;	ITEM_DATATYPECATEGORY   type;	int     index;	void*   func;}ITEM_itemconfentries[]={	{"name",        ITEM_CHARFUNC, 	ITEM_NAME,          	ITEM_checkString},	{"secretname",  ITEM_CHARFUNC, 	ITEM_SECRETNAME,    	ITEM_checkString},	{"effectstring",ITEM_CHARFUNC, 	ITEM_EFFECTSTRING,  	ITEM_checkString},	{"argument",    ITEM_CHARENTRY, ITEM_ARGUMENT,          NULL},#ifdef _ITEM_INSLAY	{"acode",		ITEM_CHARENTRY, ITEM_TYPECODE,		NULL},	{"inlaycode",	ITEM_CHARENTRY, ITEM_INLAYCODE,		NULL},#endif	{"initfunc",    ITEM_CHARENTRY, ITEM_INITFUNC,          NULL},	{"preoverfunc", ITEM_CHARENTRY, ITEM_PREOVERFUNC,       NULL},	{"postoverfunc",ITEM_CHARENTRY, ITEM_POSTOVERFUNC,      NULL},	{"watchfunc",   ITEM_CHARENTRY, ITEM_WATCHFUNC,         NULL},	{"usefunc",     ITEM_CHARENTRY, ITEM_USEFUNC,           NULL},	{"attachfunc",  ITEM_CHARENTRY, ITEM_ATTACHFUNC,        NULL},	{"detachfunc",  ITEM_CHARENTRY, ITEM_DETACHFUNC,        NULL},	{"dropfunc",  	ITEM_CHARENTRY, ITEM_DROPFUNC,  	    NULL},	{"pickupfunc",  ITEM_CHARENTRY, ITEM_PICKUPFUNC,        NULL},#ifdef _Item_ReLifeAct	{"relifefunc",  ITEM_CHARENTRY, ITEM_DIERELIFEFUNC,        NULL},#endif	{"id",			ITEM_INTENTRY,	ITEM_ID,				NULL},	{"imagenumber",	ITEM_INTENTRY,	ITEM_BASEIMAGENUMBER,	NULL},	{"cost",        ITEM_INTENTRY,	ITEM_COST,  			NULL},	{"type",        ITEM_INTENTRY,	ITEM_TYPE,  			NULL},	{"fieldtype",   ITEM_INTENTRY,	ITEM_ABLEUSEFIELD,  		NULL},	{"target",   	ITEM_INTENTRY,	ITEM_TARGET,  			NULL},	{"level",       ITEM_INTENTRY,	ITEM_LEVEL, 			NULL},#ifdef _ITEM_MAXUSERNUM	{"dambreak",       ITEM_INTENTRY,	ITEM_DAMAGEBREAK, 			NULL},#endif#ifdef _ITEMSET4_TXT	{"upinums",     ITEM_INTENTRY,	ITEM_USEPILENUMS, 			NULL},	{"campile",     ITEM_INTENTRY,	ITEM_CANBEPILE, 			NULL},	{"nestr",		ITEM_INTENTRY,	ITEM_NEEDSTR, 			NULL},	{"nedex",		ITEM_INTENTRY,	ITEM_NEEDDEX, 			NULL},	{"netra",		ITEM_INTENTRY,	ITEM_NEEDTRANS, 			NULL},	{"neprof",      ITEM_INTENTRY,	ITEM_NEEDPROFESSION, 			NULL},#endif#ifdef _TAKE_ITEMDAMAGE	{"damcrushe",	ITEM_INTENTRY,	ITEM_DAMAGECRUSHE,	NULL},	{"maxdmce",	ITEM_INTENTRY,	ITEM_MAXDAMAGECRUSHE,	NULL},#endif#ifdef _ADD_DEAMGEDEFC	{"otdmags",	ITEM_INTENTRY,	ITEM_OTHERDAMAGE,	NULL},	{"otdefcs",	ITEM_INTENTRY,	ITEM_OTHERDEFC,	NULL},#endif#ifdef _SUIT_ITEM	{"nsuit",	ITEM_INTENTRY,	ITEM_SUITCODE,	NULL},				//ITEM_SUITCODE,#endif	{"attacknum_min",ITEM_INTENTRY,	ITEM_ATTACKNUM_MIN, 	NULL},	{"attacknum_max",ITEM_INTENTRY,	ITEM_ATTACKNUM_MAX, 	NULL},	{"attack",      ITEM_INTFUNC,	ITEM_MODIFYATTACK,		ITEM_getRandomValue},	{"defence",  	ITEM_INTFUNC,	ITEM_MODIFYDEFENCE,		ITEM_getRandomValue},	{"quick",       ITEM_INTFUNC,	ITEM_MODIFYQUICK,		ITEM_getRandomValue},	{"hp",       	ITEM_INTFUNC,	ITEM_MODIFYHP,			ITEM_getRandomValue},	{"mp",       	ITEM_INTFUNC,	ITEM_MODIFYMP,			ITEM_getRandomValue},	{"luck",        ITEM_INTFUNC,	ITEM_MODIFYLUCK,		ITEM_getRandomValue},	{"charm",       ITEM_INTFUNC,	ITEM_MODIFYCHARM,		ITEM_getRandomValue},	{"avoid",       ITEM_INTFUNC,	ITEM_MODIFYAVOID,		ITEM_getRandomValue},	{"attrib",      ITEM_INTENTRY,	ITEM_MODIFYATTRIB,		NULL},	{"attribvalue", ITEM_INTENTRY,	ITEM_MODIFYATTRIBVALUE,NULL},	{"magicid",     ITEM_INTENTRY,  ITEM_MAGICID,           NULL},	{"magicprob",   ITEM_INTENTRY,  ITEM_MAGICPROB,         NULL},	{"magicusemp",  ITEM_INTENTRY,  ITEM_MAGICUSEMP,        NULL},#ifdef _ITEMSET5_TXT	{"arr",			ITEM_INTENTRY,	ITEM_MODIFYARRANGE,		NULL},	{"seqce",			ITEM_INTENTRY,	ITEM_MODIFYSEQUENCE,		NULL},	{"iapi",		ITEM_INTENTRY,	ITEM_ATTACHPILE,		NULL},	{"hirt",		ITEM_INTENTRY,	ITEM_HITRIGHT,		NULL},#endif#ifdef _ITEMSET6_TXT	{"neguard",		ITEM_INTENTRY,	ITEM_NEGLECTGUARD,		NULL},//	{"bemerge",		ITEM_INTENTRY,	ITEM_BEMERGE,		NULL},#endif	{"poison",      ITEM_INTFUNC,	ITEM_POISON,		ITEM_getRandomValue},	{"paralysis",   ITEM_INTFUNC,	ITEM_PARALYSIS,		ITEM_getRandomValue},	{"sleep",   	ITEM_INTFUNC,	ITEM_SLEEP,			ITEM_getRandomValue},	{"stone",   	ITEM_INTFUNC,	ITEM_STONE,			ITEM_getRandomValue},	{"drunk",   	ITEM_INTFUNC,	ITEM_DRUNK,			ITEM_getRandomValue},	{"confusion",   ITEM_INTFUNC,	ITEM_CONFUSION,		ITEM_getRandomValue},	{"critical",   	ITEM_INTFUNC,	ITEM_CRITICAL,		ITEM_getRandomValue},	{"useaction",	ITEM_INTENTRY,   ITEM_USEACTION,   		NULL},	{"dropatlogout",ITEM_INTFUNC,   ITEM_DROPATLOGOUT,   	ITEM_isstring1or0},	{"vanishatdrop",ITEM_INTFUNC,   ITEM_VANISHATDROP,   	ITEM_isstring1or0},	{"isovered",    ITEM_INTFUNC,   ITEM_ISOVERED,   	ITEM_isstring1or0},	{"canpetmail",  ITEM_INTFUNC,   ITEM_CANPETMAIL,   	ITEM_isstring1or0},	{"canmergefrom",ITEM_INTFUNC,   ITEM_CANMERGEFROM,   	ITEM_isstring1or0},	{"canmergeto",	ITEM_INTFUNC,   ITEM_CANMERGETO,   	ITEM_isstring1or0},    {"ingname0",    ITEM_CHARENTRY,  ITEM_INGNAME0,       NULL},    {"ingvalue0",   ITEM_INTENTRY, ITEM_INGVALUE0,      NULL},    {"ingname1",    ITEM_CHARENTRY,  ITEM_INGNAME1,       NULL},    {"ingvalue1",   ITEM_INTENTRY, ITEM_INGVALUE1,      NULL},    {"ingname2",    ITEM_CHARENTRY,  ITEM_INGNAME2,       NULL},    {"ingvalue2",   ITEM_INTENTRY, ITEM_INGVALUE2,      NULL},    {"ingname3",    ITEM_CHARENTRY,  ITEM_INGNAME3,       NULL},    {"ingvalue3",   ITEM_INTENTRY, ITEM_INGVALUE3,      NULL},    {"ingname4",    ITEM_CHARENTRY,  ITEM_INGNAME4,       NULL},    {"ingvalue4",   ITEM_INTENTRY, ITEM_INGVALUE4,      NULL},};ITEM_table*  ITEM_tbl=NULL;ITEM_index*  ITEM_idx=NULL;static INLINE BOOL ITEM_CHECKARRAYINDEX(int index){	if( ITEM_itemnum<=(index) || (index)<0 )return FALSE;	return TRUE;}INLINE BOOL _ITEM_CHECKINDEX( char *file, int line, int index){	if( !ITEM_CHECKARRAYINDEX(index) ) {		if( index != -1 ) {			print( "err %s:%d \n", file, line);		}		return FALSE;	}	if( ITEM_item[index].use == FALSE ) {		return FALSE;	}	return TRUE;}static INLINE int ITEM_CHECKINTDATAINDEX(int index){	if( ITEM_DATAINTNUM <= index || index < 0 )return FALSE;	return TRUE;}static INLINE int ITEM_CHECKCHARDATAINDEX(int index){	if( ITEM_DATACHARNUM<=index || index<0 )return FALSE;	return TRUE;}BOOL ITEM_initExistItemsArray( int num ){	int     i;	BOOL ITEM_checksetdata( void );	if( ITEM_checksetdata() == FALSE )return FALSE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -