static void NPC_WarpsetNeverMake( int charaindex ) { int cindex; cindex = CHAR_getInt(charaindex,CHAR_NPCCREATEINDEX); if( NPC_CHECKCREATEINDEX(cindex) ) NPC_create[cindex].workdata[NPC_CREATEWORKNEVERMAKE] = 1; }
/*------------------------------------------------------------ * createindex から動ける範囲のRECT を求める。 * 引数 * createindex int テンプレートのインデックス * r RECT* 値を受けとるRECT のポインタ * 返り値 * 成功 TRUE(1) * 失敗 FALSE(0) ------------------------------------------------------------*/ BOOL NPC_createGetRECT( int createindex,RECT* r ) { if( NPC_CHECKCREATEINDEX(createindex) == FALSE )return FALSE; r->x = NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPX]; r->y = NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPY]; r->width = NPC_create[createindex].intdata[NPC_CREATEMOVERIGHTDOWNX] - NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPX]; r->height = NPC_create[createindex].intdata[NPC_CREATEMOVERIGHTDOWNY] - NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPY]; return TRUE; }
/* * ½é´ü²½¤¹¤ë¡e */ BOOL NPC_SimpleShopInit( int meindex ) { unsigned int mlevel; char npcarg1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *npcarg; /* °ì²ó¼º ¤·¤¿¤¢¤È¤Ï2Å٤Ⱥî¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë */ int createindex = CHAR_getInt( meindex, CHAR_NPCCREATEINDEX ); /* print("shopinit start\n" );*/ if( NPC_CHECKCREATEINDEX(createindex) ){ NPC_create[createindex].intdata[NPC_CREATETIME] = -1; } CHAR_setInt( meindex , CHAR_HP , 0 ); CHAR_setInt( meindex , CHAR_MP , 0 ); CHAR_setInt( meindex , CHAR_MAXMP , 0 ); CHAR_setInt( meindex , CHAR_STR , 0 ); CHAR_setInt( meindex , CHAR_TOUGH, 0 ); CHAR_setInt( meindex , CHAR_LV , 0 ); mlevel = ((100<<16)|(100<<0)); /* ¾å°Ì2¥Ð¥¤¥È¤¬ ¤¦¤È¤¤Î ¡b ²¼°Ì2¥Ð¥¤¥È¤¬ ¤ë¤È¤¤Î ¡e */ CHAR_setInt( meindex, CHAR_MERCHANTLEVEL, mlevel ); CHAR_setWorkInt( meindex, CHAR_WORKSHOPCLIENTINDEX, -1 ); CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPESHOP ); CHAR_setFlg( meindex , CHAR_ISOVERED , 0 ); CHAR_setFlg( meindex , CHAR_ISATTACKED , 0 ); npcarg = NPC_Util_GetArgStr( meindex, npcarg1, sizeof(npcarg1)); /* ¥¢¥¤ ¥à ¤¿¤»¤ë¡e¼º ¤·¤¿¤éreturn FALSE */ if( ! NPC_SimpleShopFillItem( meindex,npcarg ) ){ print( "SHOP INIT ERROR: npcarg=%s\n", npcarg ); return FALSE; } /* print("shopinit end\n" );*/ return TRUE; }
BOOL NPC_SimpleShopInit( int meindex ) { unsigned int mlevel; char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; int createindex = CHAR_getInt( meindex, CHAR_NPCCREATEINDEX ); /* print("shopinit start\n" );*/ if( NPC_CHECKCREATEINDEX(createindex) ){ NPC_create[createindex].intdata[NPC_CREATETIME] = -1; } CHAR_setInt( meindex , CHAR_HP , 0 ); CHAR_setInt( meindex , CHAR_MP , 0 ); CHAR_setInt( meindex , CHAR_MAXMP , 0 ); CHAR_setInt( meindex , CHAR_STR , 0 ); CHAR_setInt( meindex , CHAR_TOUGH, 0 ); CHAR_setInt( meindex , CHAR_LV , 0 ); mlevel = ((100<<16)|(100<<0)); /* ÏþÞË2ÌïÄÌÐþ»¥ µ¤ÎçÎå¼° £ý ƱÞË2ÌïÄÌÐþ»¥ ÔÂÎçÎå¼° £Û */ CHAR_setInt( meindex, CHAR_MERCHANTLEVEL, mlevel ); CHAR_setWorkInt( meindex, CHAR_WORKSHOPCLIENTINDEX, -1 ); CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPESHOP ); CHAR_setFlg( meindex , CHAR_ISOVERED , 0 ); CHAR_setFlg( meindex , CHAR_ISATTACKED , 0 ); NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg)); if( ! NPC_SimpleShopFillItem( meindex,npcarg ) ){ print( "SHOP INIT ERROR: npcarg=%s\n", npcarg ); return FALSE; } /* print("shopinit end\n" );*/ return TRUE; }
/*------------------------------------------------------------ * 時間から作ってもいいかどうかチェックする。 * 引数 * cindex int インデックス * 返り値 * BOOL 作っていい場合 TRUE(1) * BOOL 作っていけない場合 FALSE(0) ------------------------------------------------------------*/ BOOL NPC_createCheckGenerateFromTime( int cindex ) { struct timeval old; if( !NPC_CHECKCREATEINDEX(cindex) ) return FALSE; if( NPC_create[cindex].workdata[NPC_CREATEWORKNEVERMAKE] ) return FALSE; if( NPC_create[cindex].intdata[NPC_CREATEBORNNUM] <= NPC_create[cindex].workdata[NPC_CREATEWORKENEMYNUM] ) return FALSE; if( NPC_create[cindex].intdata[NPC_CREATETIME] < 0 )return FALSE; old.tv_sec = NPC_create[cindex].workdata[NPC_CREATEWORKMAKESTARTSEC]; old.tv_usec= NPC_create[cindex].workdata[NPC_CREATEWORKMAKESTARTUSEC]; if( time_diff_us( NowTime , old ) <= NPC_create[cindex].intdata[NPC_CREATETIME]*1000 ) return FALSE; return TRUE; }
/*------------------------------------------------------------ * 敵が死んでカウント数を減らす関数 * 引数 * index int インデックス * 返り値 * なし ------------------------------------------------------------*/ void NPC_createDecreaseEnemynum( int index ) { if( !NPC_CHECKCREATEINDEX(index) )return; NPC_create[index].workdata[NPC_CREATEWORKENEMYNUM] --; }
/*------------------------------------------------------------ * createindex から boundary が設定されているかどうかを見る * 引数 * createindex int createのインデックス * 返り値 * 設定されている TRUE(1) * 設定されていない FALSE(0) ------------------------------------------------------------*/ BOOL NPC_isBoundarySet( int createindex ) { if( NPC_CHECKCREATEINDEX(createindex) == FALSE )return FALSE; return NPC_create[createindex].intdata[NPC_CREATEBOUNDARY]; }