//»¹ÔÌúǹÈþ¶Ñµþ void NPC_reCheckItemPilenum( int meindex, int toindex) { int i, itemindex; for( i=0; i<CHAR_MAXITEMHAVE; i++){ itemindex = CHAR_getItemIndex( toindex , i ); if( !ITEM_CHECKINDEX( itemindex) ) continue;//ITEM_USEPILENUMS if( ITEM_getInt( itemindex, ITEM_ID) != 20284 ) continue; if( ITEM_getInt( itemindex, ITEM_CANBEPILE) != 1 ) continue; if( ITEM_getInt( itemindex, ITEM_USEPILENUMS) > 1 ){ int itemID, pilenum=1, newindex; itemID = ITEM_getInt( itemindex, ITEM_ID); if( !ITEM_CHECKITEMTABLE( itemID) ) continue; pilenum = ITEM_getInt( itemindex, ITEM_USEPILENUMS); while( pilenum > 1 ){ int ti = CHAR_findEmptyItemBox( toindex); if( ti == -1 ){ CHAR_sendItemDataOne( toindex, i); CHAR_talkToCli( toindex, -1, "µÀ¾ßÀ¸Î»ÒÑÂú¡£", CHAR_COLORYELLOW); return; } newindex = ITEM_makeItemAndRegist( itemID); if( !ITEM_CHECKINDEX( newindex) ) break; CHAR_setItemIndex( toindex , ti, newindex); CHAR_sendItemDataOne( toindex, ti); pilenum--; ITEM_setInt( itemindex, ITEM_USEPILENUMS, pilenum); } if( ITEM_getInt( itemindex, ITEM_CANBEPILE) != ITEMTBL_getInt( itemID, ITEM_CANBEPILE) ) ITEM_setInt( itemindex, ITEM_CANBEPILE, ITEMTBL_getInt( itemID, ITEM_CANBEPILE) ); CHAR_sendItemDataOne( toindex, i); } } CHAR_talkToCli( toindex, -1, "ÌúǹÈþ´¦ÀíÍê±Ï¡£", CHAR_COLORYELLOW); }
BOOL CHECK_ITEMEQUIT( int toindex) { int i, itemindex; char token[256]; for (i = CHAR_STARTITEMARRAY; i < CHAR_MAXITEMHAVE; i ++) { itemindex = CHAR_getItemIndex( toindex, i); if( ITEM_getInt( itemindex, ITEM_ID) == 19646 ){ CHAR_DelItem( toindex, i); itemindex = -1; itemindex = ITEM_makeItemAndRegist( 1292); if( !ITEM_CHECKINDEX( itemindex) ){ }else{ int ret = CHAR_addItemSpecificItemIndex( toindex, itemindex); if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) { ITEM_endExistItemsOne( itemindex); continue; } sprintf( token,"Äõ½%s", ITEM_getChar( itemindex, ITEM_NAME)); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW ); CHAR_sendItemDataOne( toindex, ret); continue; } } if( ITEM_getInt( itemindex, ITEM_ID) == 1292 && ITEM_getInt( itemindex, ITEM_MAXDAMAGECRUSHE) > 0 ){ ITEM_setInt( itemindex, ITEM_MAXDAMAGECRUSHE, 0); ITEM_setInt( itemindex, ITEM_DAMAGECRUSHE, 0); sprintf(token,"ÐÞÕý%sË𻵶È", ITEM_getChar( itemindex, ITEM_NAME)); CHAR_sendItemDataOne( toindex, i); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); } } // ¼Ä·Åµê for (i = 0; i < CHAR_MAXPOOLITEMHAVE; i++) { if( ITEM_getInt( itemindex, ITEM_ID) == 1292 && ITEM_getInt( itemindex, ITEM_MAXDAMAGECRUSHE) > 0 ){ ITEM_setInt( itemindex, ITEM_MAXDAMAGECRUSHE, 0); ITEM_setInt( itemindex, ITEM_DAMAGECRUSHE, 0); sprintf(token,"ÐÞÕý¼Ä·ÅµêÖÐ%sË𻵶È", ITEM_getChar( itemindex, ITEM_NAME)); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); } } return TRUE; }
static void NPC_SimpleShopSetLeakLevel( int meindex ) { int i, itemindex; for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){ itemindex=CHAR_getItemIndex(meindex,i); if( ITEM_CHECKINDEX(itemindex)){ ITEM_setInt(itemindex,ITEM_LEAKLEVEL, 1 ); } } }
void ITEM_useMagic_Battle( int charaindex, int toNo, int haveitemindex ) { int itemindex,itemmaxuse; char *arg=NULL; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if(!ITEM_CHECKINDEX(itemindex)) return; arg = ITEM_getChar( itemindex, ITEM_ARGUMENT ); CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM2, toNo ); CHAR_setWorkInt( charaindex, CHAR_WORKBATTLECOM1, BATTLE_COM_JYUJYUTU ); CHAR_SETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3, atoi(arg) ); CHAR_SETWORKINT_HIGH( charaindex, CHAR_WORKBATTLECOM3, 0 ); CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK ); MAGIC_DirectUse( charaindex, CHAR_GETWORKINT_LOW( charaindex, CHAR_WORKBATTLECOM3 ), CHAR_getWorkInt( charaindex, CHAR_WORKBATTLECOM2 ), CHAR_GETWORKINT_HIGH( charaindex, CHAR_WORKBATTLECOM3 ) ); itemmaxuse = ITEM_getInt( itemindex, ITEM_DAMAGEBREAK); if( itemmaxuse > 0 ) ITEM_setInt( itemindex, ITEM_DAMAGEBREAK, itemmaxuse-1 ); else{ LogItem( CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD ¦bitemªºlog¤¤¼W¥[item¦WºÙ itemindex, #else ITEM_getInt( itemindex, ITEM_ID ), #endif "BattleUse(¾Ô°«¤¤¨Ï¥Î±¼ªº¹D¨ã)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); CHAR_DelItemMess( charaindex, haveitemindex, 0); } }
int NPC_Lua_NLG_GiveRandItem(lua_State *_NLL) { CheckEx2(_NLL, 2, 3); CheckIndexNull(_NLL, 1); int TM_Index = (int)lua_tointeger(_NLL, 1); char *TM_ItemIdData = lua_tostring(_NLL, 2); int TM_Num = 1; int TM_ItemIndex = -1; int TM_Int = -1; int TM_Type = 0; int TM_ItemId = -1; if(lua_gettop(_NLL) == 3) { TM_Type = (int)lua_tointeger(_NLL, 3); } int TM_ItemIdStart = -1; int TM_ItemIdEnd = -1; char ItemIdBuf[32]; if(getStringFromIndexWithDelim(TM_ItemIdData,",", 2, ItemIdBuf, sizeof(ItemIdBuf)) != FALSE){ int TM_ItemNum = 0; while(1){ if(getStringFromIndexWithDelim(TM_ItemIdData,",", TM_ItemNum+1, ItemIdBuf, sizeof(ItemIdBuf)) == FALSE) break; TM_ItemNum++; } TM_ItemNum = RAND(1,TM_ItemNum); getStringFromIndexWithDelim(TM_ItemIdData,",", TM_ItemNum, ItemIdBuf, sizeof(ItemIdBuf)); char ItemIdBuf2[16]; if( getStringFromIndexWithDelim(ItemIdBuf,"-", 2, ItemIdBuf2, sizeof(ItemIdBuf2)) != FALSE){ int TM_ItemIdStart,TM_ItemIdEnd; getStringFromIndexWithDelim(ItemIdBuf,"-", 1, ItemIdBuf2, sizeof(ItemIdBuf2)); TM_ItemIdStart = atoi(ItemIdBuf2); getStringFromIndexWithDelim(ItemIdBuf,"-", 2, ItemIdBuf2, sizeof(ItemIdBuf2)); TM_ItemIdEnd = atoi(ItemIdBuf2); TM_ItemId = RAND(TM_ItemIdStart,TM_ItemIdEnd); }else{ TM_ItemId = atoi(ItemIdBuf); } }else if(getStringFromIndexWithDelim(TM_ItemIdData,"-", 2, ItemIdBuf, sizeof(ItemIdBuf)) != FALSE){ if(getStringFromIndexWithDelim(TM_ItemIdData,"-", 1, ItemIdBuf, sizeof(ItemIdBuf)) != FALSE) TM_ItemIdStart = atoi(ItemIdBuf); if(getStringFromIndexWithDelim(TM_ItemIdData,"-", 2, ItemIdBuf, sizeof(ItemIdBuf)) != FALSE) TM_ItemIdEnd = atoi(ItemIdBuf); if(TM_ItemIdStart<=TM_ItemIdEnd){ TM_ItemId = RAND(TM_ItemIdStart,TM_ItemIdEnd); } }else{ TM_ItemId = atoi(TM_ItemIdData); } if(TM_ItemId>-1){ TM_Int = NPC_GiveItem( TM_Index, TM_ItemId); } if(TM_Int>=0){ char TM_Buff[256]; snprintf(TM_Buff, sizeof(TM_Buff), "获得 %s。", ITEM_getChar( TM_Int, ITEM_NAME)); CHAR_talkToCli( TM_Index, -1, TM_Buff, CHAR_COLORYELLOW); if(TM_Type>0){ time_t timep; struct tm *p; time(&timep); p=localtime(&timep); timep = mktime(p); TM_Type = timep + TM_Type; ITEM_setInt(TM_Int,ITEM_TIME,TM_Type); sprintf(TM_Buff,"[限时]%s",ITEM_getChar(TM_Int,ITEM_NAME)); ITEM_setChar(TM_Int,ITEM_NAME,TM_Buff); ITEM_setChar(TM_Int,ITEM_SECRETNAME,TM_Buff); CHAR_sendStatusString(TM_Index,"I"); // timep = TM_Type; // p=localtime(&timep); // int year=1900+p->tm_year; // int mon=1+p->tm_mon; // int date=p->tm_mday; // int hour=p->tm_hour; // int min=p->tm_min; // int sec=p->tm_sec; // char monbuf[5],datebuf[5],hourbuf[5],minbuf[5],secbuf[5]; // if(mon<10) sprintf(monbuf,"0%d",mon); // else sprintf(monbuf,"%d",mon); // if(date<10) sprintf(datebuf,"0%d",date); // else sprintf(datebuf,"%d",date); // if(hour<10) sprintf(hourbuf,"0%d",hour); // else sprintf(hourbuf,"%d",hour); // if(min<10) sprintf(minbuf,"0%d",min); // else sprintf(minbuf,"%d",min); // if(sec<10) sprintf(secbuf,"0%d",sec); // else sprintf(secbuf,"%d",sec); // sprintf(TM_Buff,"有效期:%d.%s.%s/%s:%s:%s %s",year,monbuf,datebuf,hourbuf,minbuf,secbuf,ITEM_getChar(TM_Int,ITEM_EFFECTSTRING)); // ITEM_setChar(TM_Int,ITEM_EFFECTSTRING,TM_Buff); } } LRetInt(_NLL, TM_Int); }