static BOOL NPC_SimpleShopFillItem( int meindex, char *npcarg ) { char token[256], buf[16]; int i,itemid, num; getStringFromIndexWithDelim( npcarg,"|",ITEMLISTTOKEN,token, sizeof(token) ); for( i=1; i<=SIMPLESHOP_MAXINFINITITEM;i++ ){ if( getStringFromIndexWithDelim( token,",",i,buf,sizeof(buf) )){ itemid = atoi( buf ); if( itemid == 0 ){ NPC_Util_ReleaseHaveItemAll(meindex); return FALSE; } num=NPC_Util_countHaveItem(meindex,itemid); if( num < 0 ){ return FALSE;/* æØ¿ÒئidئÉý¼°fatal err */ }else if( num == 0 ){ /* ÊÖÔÈ»¯Ø¦¾®ÔÈÐ×ÈÕ Ïº */ NPC_Util_createItemToChar( meindex,itemid, FALSE); }else if( num>=2 ){ /* ÊÖÇÐÔÊ¿º¼°èëÄþ´ÂÂÖ */ NPC_Util_RemoveItemByID(meindex,itemid,FALSE); } }else{ break; } } /* Óò¼ÔØÆÎåÍ͹´½ñľÐ×ÇÁÚرåÔÊÔ */ //NPC_SimpleShopSetLeakLevel( meindex ); return TRUE; }
/* * Ź¤¬ ¸Â¤Ë ¤Ã¤Æ¤¤¤ë¥¢¥¤ ¥à¤ò ¤¿¤»¤ë¡e½é´ü²½»þ¤È¼è¤ê°ú¤¤Î * ¤Ë¸Æ¤Ö¡e */ static BOOL NPC_SimpleShopFillItem( int meindex, char *npcarg ) { char token[256], buf[16]; int i,itemid, num; getStringFromIndexWithDelim( npcarg,"|",ITEMLISTTOKEN,token, sizeof(token) ); for( i=1; i<=SIMPLESHOP_MAXINFINITITEM;i++ ){ if( getStringFromIndexWithDelim( token,",",i,buf,sizeof(buf) )){ itemid = atoi( buf ); if( itemid == 0 ){ NPC_Util_ReleaseHaveItemAll(meindex); return FALSE; } num=NPC_Util_countHaveItem(meindex,itemid); if( num < 0 ){ return FALSE;/* ÉÔÀµ¤Êid¤Ê¤É¤Îfatal err */ }else if( num == 0 ){ /* ¤â¤Ã¤Æ¤Ê¤«¤Ã¤¿¤é ½¼ */ NPC_Util_createItemToChar( meindex,itemid, FALSE); }else if( num>=2 ){ /* ¤â¤Á¤¹¤®¤Î¾ì¹çºï½ü */ NPC_Util_RemoveItemByID(meindex,itemid,FALSE); } }else{ break; } } /* °ì²ó¤·¤¤Ù¤Ä¤µ¤ì¤¿¾õÂ֤ˤ¹¤ë */ //NPC_SimpleShopSetLeakLevel( meindex ); return TRUE; }
void NPC_DoorLooked( int meindex , int lookedindex ) { int needkey; if( CHAR_getInt( meindex , CHAR_LV )){ char token[32]; char *p = CHAR_getWorkChar( meindex , CHAR_WORKDOORTITLE ); int i,j,ok=FALSE; for(i = 0 ; ; i++ ){ int r; r = getStringFromIndexWithDelim( p,":",2+i,token ,sizeof(token)); if(r){ int titleind = atoi( token ); for(j=0;j<CHAR_TITLEMAXHAVE;j++){ if(CHAR_getCharHaveTitle( lookedindex , j ) == titleind ){ ok = TRUE; break; } if( ok )break; } } else { break; } if( ok ) break; } if( ok ){ NPC_DoorFlip( meindex , lookedindex ); } else { char arg[512]; char buf[512]; NPC_Util_GetArgStr( meindex , arg,sizeof(arg)); getStringFromIndexWithDelim( arg,"|" , 9 , buf,sizeof(buf)); CHAR_talkToCli( lookedindex,-1,buf,CHAR_COLORWHITE); } return; } if( CHAR_getWorkInt( meindex, CHAR_WORKDOORORIGINALGRAPHIC)== ROPEGRAPHIC ){ return; } if( CHAR_getInt( meindex , CHAR_DIR ) == -1 ){ NPC_DoorFlip( meindex , lookedindex ); return; } if( CHAR_getWorkInt( meindex , CHAR_WORKDOORSOONFLG ) == 0 && NPC_Util_isBackContact( meindex , lookedindex ) == TRUE ){ NPC_DoorFlip( meindex , lookedindex); return; } if( CHAR_getWorkInt( meindex, CHAR_WORKDOORPASSFLG)>=1 ){ if( NPC_Door_isOpen( meindex ) ){ NPC_DoorFlip( meindex , lookedindex ); return; } #define NPC_DOOR_EXPIRE_MSG "%s 的房间有效期限至 %d/%d %d:%d" else { if( CHAR_getWorkInt( meindex, CHAR_WORKDOOREXPIRETIME) != 0xffffffff ){ struct tm tmwk; time_t expire = CHAR_getWorkInt( meindex, CHAR_WORKDOOREXPIRETIME); char msgbuf[128]; NPC_ROOMINFO roominfo; /* 由旦午 躲渝蜃毛本永玄允月 */ NPC_RoomAdminNew_ReadFile( CHAR_getWorkChar( meindex, CHAR_WORKDOORNAME), &roominfo); memcpy( &tmwk, localtime( &expire), sizeof( tmwk)); snprintf( msgbuf, sizeof( msgbuf), NPC_DOOR_EXPIRE_MSG, roominfo.charaname, tmwk.tm_mon+1, tmwk.tm_mday, tmwk.tm_hour, tmwk.tm_min); CHAR_talkToCli( lookedindex, meindex, msgbuf, CHAR_COLORWHITE); } } #undef NPC_DOOR_EXPIRE_MSG return; } needkey = CHAR_getWorkInt( meindex , CHAR_WORKDOORKEYITEMID ); if( needkey >= 0 ){ if( NPC_Util_countHaveItem( lookedindex , needkey ) > 0 ){ NPC_DoorFlip( meindex , lookedindex); } else { CHAR_talkToCli( lookedindex , -1 , NPC_DOOR_CANTOPENMSG , CHAR_COLORWHITE ); } } else if( needkey == -1 ){ NPC_DoorFlip(meindex , lookedindex ); } else { CHAR_talkToCli( lookedindex , -1 , "这扇门似乎怎麽也打不开!" , CHAR_COLORWHITE); } }