Esempio n. 1
0
BOOL NPC_Util_moveItemToChar(int charindex, int itemindex, BOOL net)
{
	int emptyindex, oind, cind;
	emptyindex = CHAR_findEmptyItemBox(charindex);
	if (emptyindex < 0)
		return FALSE;

	if (!ITEM_CHECKINDEX(itemindex))
		return FALSE;
	oind = ITEM_getWorkInt(itemindex, ITEM_WORKOBJINDEX);
	cind = ITEM_getWorkInt(itemindex, ITEM_WORKCHARAINDEX);

	if (oind >= 0) {
		CHAR_ObjectDelete(oind);
		CHAR_setItemIndex(charindex, emptyindex, itemindex);
		ITEM_setWorkInt(itemindex, ITEM_WORKOBJINDEX, -1);
		ITEM_setWorkInt(itemindex, ITEM_WORKCHARAINDEX, charindex);
		if (net)
			CHAR_sendItemDataOne(charindex, emptyindex);
		return TRUE;
	} else if (cind >= 0) {
		int itemgrp[2];
		int itemindexinchara;
		if (cind == charindex)
			return FALSE;
		itemindexinchara = NPC_Util_SearchItemInChar(cind, itemindex);
		if (itemindexinchara == -1)
			return FALSE;
		CHAR_setItemIndex(cind, itemindexinchara, -1);
		CHAR_complianceParameter(cind);
		itemgrp[0] = itemindexinchara;
		CHAR_setItemIndex(charindex, emptyindex, itemindex);
		itemgrp[1] = emptyindex;
		if (net)
			CHAR_sendItemData(charindex, itemgrp,
					  arraysizeof(itemgrp));
		ITEM_setWorkInt(itemindex, ITEM_WORKOBJINDEX, -1);
		ITEM_setWorkInt(itemindex, ITEM_WORKCHARAINDEX, charindex);
		return TRUE;
	}
	return FALSE;
}
Esempio n. 2
0
static int NPC_NPCEnemy_StealItem( char *argstr, int meindex, int charaindex)
{
	char	itembuf[1024];
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "item", itembuf, sizeof( itembuf))
		!= NULL )
	{
		char	data[128];
		int		delitemgroup[CHAR_MAXITEMHAVE];
		int		found = 0;
		int		i;
		for( i = 0; i < CHAR_MAXITEMHAVE; i ++ ) {
			int		j;
			int		itemid;
			int ret = getStringFromIndexWithDelim( itembuf,",", i + 1,data, sizeof(data));
			if( ret == FALSE) {
				break;
			}
			itemid = atoi( data);
			for( j = 0; j < CHAR_MAXITEMHAVE; j ++ ) {
				int itemindex = CHAR_getItemIndex( charaindex, j);
				if( ITEM_CHECKINDEX( itemindex)){
					if( ITEM_getInt( itemindex, ITEM_ID) == itemid ){
						CHAR_setItemIndex( charaindex, j, -1);
						ITEM_endExistItemsOne( itemindex);
						delitemgroup[found] = j;
						found ++;
						break;
					}
				}
			}
			if( !found ) break;
		}
		CHAR_sendItemData( charaindex, delitemgroup, found);
	}
	else {
		print( "NPCENEMY:奇怪\n");
		return FALSE;
	}
	return TRUE;
}