?? item.c
字號:
#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"#ifdef _PROFESSION_SKILL // WON ADD 人物職業技能#include "profession_skill.h"#endifstatic int ITEM_tblen = 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 _IMPOROVE_ITEMTABLEtypedef struct _tag_ITEM_transformList{ int Si; int use;}sITEM_transformList;sITEM_transformList *ITEM_TransformList = NULL;static int defitemtbls=0;static int totalitemtbls=0;#endif#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 _ANGEL_SUMMON {"mindex", "", ITEM_ANGELMISSION}, {"angel", "", ITEM_ANGELINFO}, {"hero", "", ITEM_HEROINFO},#endif#ifdef _CONTRACT {"ctt", "", ITEM_CONTRACTTIME}, {"cta", "", ITEM_CONTRACTARG},#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},};#ifdef _ITEMTBL_STAICITEM_table ITEM_tbl[28000];#elseITEM_table* ITEM_tbl=NULL;#endifstatic 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)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -