Esempio n. 1
0
//獲取數據的接口
int NPC_Lua_Item_GetData(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckItemIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_Flg = (int)lua_tointeger(_NLL, 2);

	if(TM_Flg >= 0)
	{
		if(TM_Flg < LUA_DATALINE1)
		{
			TM_Flg -= LUA_DATALINE0;
			int TM_RetInt = API_ITEM_getInt(TM_Index, TM_Flg);
			LRetInt(_NLL, TM_RetInt);
		}else if(TM_Flg < LUA_DATALINE2)
		{
			TM_Flg -= LUA_DATALINE1;
			char *TM_RetPoint = API_ITEM_getChar(TM_Index, TM_Flg);
			LRetMsg(_NLL, TM_RetPoint);
		}else if(TM_Flg < LUA_DATALINE3)
		{
			TM_Flg -= LUA_DATALINE2;
			int TM_RetWorkInt = API_ITEM_getWorkInt(TM_Index, TM_Flg);
			LRetInt(_NLL, TM_RetWorkInt);
		}else
		{
			LRetErrNull(_NLL, "傳入的標誌是錯誤的。");
		}
	}
	LRetErrNull(_NLL, "傳入的標誌是錯誤的。");
}
Esempio n. 2
0
int NPC_Lua_NLG_DelHaveIndexPet(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_PetHaveIndex = (int)lua_tointeger(_NLL, 2);
	int TM_Num = 1;
	int TM_PetIndex = -1;
	int TM_Ret = 0;
	
	if(TM_PetHaveIndex<0 || TM_PetHaveIndex>4){
		LRetErrInt(_NLL, -1, "传入的索引是无效的。");
	}
		TM_PetIndex = CHAR_getCharPet( TM_Index, TM_PetHaveIndex);
		
		if(!CHAR_CHECKINDEX(TM_PetIndex))
		{
			LRetErrInt(_NLL, -1, "传入的索引是无效的。");
		}

		TM_Ret = NPC_DelPet( TM_Index, TM_PetHaveIndex);
		if(TM_Ret < 0)
		{
			char TM_MsgBuff[128];
			snprintf(TM_MsgBuff, sizeof(TM_MsgBuff), "删除宠物时产生错误 错误号: %d。", TM_Ret);
			LRetErrInt(_NLL , -1, TM_MsgBuff);
		}

	LRetInt(_NLL, 1);
}
Esempio n. 3
0
int NPC_Lua_NLG_SearchWatchBattleRandIndex(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_Floor = (int)lua_tointeger(_NLL, 2);
	int TM_Ret = -1;

	if( (CHAR_getInt( TM_Index, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER) ){
		LRetErrInt(_NLL, -1, "对象类型不是玩家");
	}
	if( (CHAR_getWorkInt( TM_Index, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) )
	{
		LRetErrInt(_NLL, -2, "对象正在对战中");
	}
	if( CHAR_getWorkInt( TM_Index, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT )
	{
		int TM_Index2 = CHAR_getWorkInt( TM_Index, CHAR_WORKPARTYINDEX1 );

		if( TM_Index2 < 0 )
		{
			LRetErrInt(_NLL, -3, "对象的队伍异常");
		}
	}
	TM_Ret = SearchFmWarRandIndex(TM_Index, TM_Floor);
	if(TM_Ret != 0)
	{
		char TM_Buff[64];
		snprintf(TM_Buff, sizeof(TM_Buff), "无战斗可看!错误号:%d", TM_Floor);
		LRetErrInt(_NLL, -4, TM_Buff);
	}
	LRetInt(_NLL, TM_Ret);
}
Esempio n. 4
0
int NPC_Lua_NL_DelNpc(lua_State *_NLL)
{
	CheckEx(_NLL, 1);
	CheckIndexNull(_NLL, 1);
	int TM_index = (int)lua_tointeger(_NLL, 1);
	int TM_Ret = NPC_Lua_Del(TM_index);
	LRetInt(_NLL, TM_Ret);
}
Esempio n. 5
0
// 检测数据
bool CArcossCache::Check( int id )
{
	if ( ! CheckEx( id ) ) {
		return false;
	}
	serialize( id ) ;
	return true ;
}
Esempio n. 6
0
int NPC_Lua_NLG_Update_Party(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_Flg = (int)lua_tointeger(_NLL, 2);
	CHAR_PartyUpdate(TM_Index, TM_Flg);
	LRetNull(_NLL);
}
Esempio n. 7
0
int NPC_Lua_NLG_UpStateByThird(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_Flg = (int)lua_tointeger(_NLL, 2);
	BOOL TM_Ret = CHAR_send_P_StatusString(TM_Index, TM_Flg);
	LRetBool(_NLL, TM_Ret);
}
Esempio n. 8
0
int NPC_Lua_NLG_CharLook(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_DIR = (int)lua_tointeger(_NLL, 2);
	CHAR_Look(TM_Index, TM_DIR);
	LRetNull(_NLL);
}
Esempio n. 9
0
int NPC_Lua_NLG_DischargeParty(lua_State *_NLL)
{
	CheckEx(_NLL, 1);
	CheckIndexNull(_NLL, 1);
	int TM_index = (int)lua_tointeger(_NLL, 1);

	BOOL TM_Ret = CHAR_DischargeParty( TM_index, 0);

	LRetBool(_NLL, TM_Ret);
}
Esempio n. 10
0
int NPC_Lua_NLG_CheckPlayIndex(lua_State *_NLL)
{
	CheckEx(_NLL, 1);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	if(!CHAR_CHECKINDEX(TM_Index))
	{
		LRetErrInt(_NLL, -1, "传入的索引是无效的。");
	}
	LRetInt(_NLL, TM_Index);
}
Esempio n. 11
0
int NPC_Lua_NLG_Save(lua_State *_NLL)
{
	CheckEx(_NLL, 1);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	if(!CHAR_CHECKINDEX(TM_Index))
	{
		LRetErrInt(_NLL, -1, "传入的索引是无效的。");
	}
	CHAR_charSaveFromConnect(TM_Index, FALSE);
	LRetInt(_NLL, TM_Index);
}
Esempio n. 12
0
int NPC_Lua_NLG_Warp(lua_State *_NLL)
{
	CheckEx(_NLL, 4);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_Floor = (int)lua_tointeger(_NLL, 2);
	int TM_X = (int)lua_tointeger(_NLL, 3);
	int TM_Y = (int)lua_tointeger(_NLL, 4);

	BOOL TM_Ret = CHAR_warpToSpecificPoint(TM_Index, TM_Floor, TM_X, TM_Y);
	
	LRetBool(_NLL, TM_Ret);
}
Esempio n. 13
0
//////////////////////////////////////////////////////////////////////////////
//功能接口
int NPC_Lua_NLG_CheckInFront(lua_State *_NLL)
{
	CheckEx(_NLL, 3);
	CheckIndexNull(_NLL, 1);
	CheckIndexNull(_NLL, 2);
	int TM_SurIndex = (int)lua_tointeger(_NLL, 1);
	int TM_DesIndex = (int)lua_tointeger(_NLL, 2);
	int TM_Distance = (int)lua_tointeger(_NLL, 3);

	BOOL TM_Ret = NPC_Util_charIsInFrontOfChar(TM_SurIndex, TM_DesIndex, TM_Distance);
	
	LRetBool(_NLL, TM_Ret);
}
Esempio n. 14
0
int NPC_Lua_NLG_WalkMove(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_DIR = (int)lua_tointeger(_NLL, 2);

	POINT	start, end;
	
	end.x = CHAR_getInt( TM_Index, CHAR_X);
	end.y = CHAR_getInt( TM_Index, CHAR_Y);

	int TM_Ret = (int)CHAR_walk(TM_Index, TM_DIR, 0);

	if( TM_Ret == CHAR_WALKSUCCESSED )
	{
		int	i;
		int	mefl=CHAR_getInt( TM_Index, CHAR_FLOOR);
		int toindex = -1;
		int fl = 0;
		int xx = 0;
		int yy = 0;
		int	parent_dir;
	
		for( i = 1; i < CHAR_PARTYMAX; i ++ )
		{
			toindex = CHAR_getWorkInt( TM_Index, i + CHAR_WORKPARTYINDEX1);
			fl = CHAR_getInt( toindex, CHAR_FLOOR);
			xx = CHAR_getInt( toindex, CHAR_X);
			yy = CHAR_getInt( toindex, CHAR_Y);

			if( CHAR_CHECKINDEX(toindex) && (mefl==fl) && (abs(xx-end.x)+abs(yy-end.y)<10) )
			{

				start.x = xx;
				start.y = yy;
				parent_dir = NPC_Util_getDirFromTwoPoint( &start,&end );

				end.x = start.x;
				end.y = start.y;

				if( parent_dir != -1 )
				{
					CHAR_walk( toindex, parent_dir, 0);
				}
			}
		}
	}
	LRetInt(_NLL, TM_Ret);
}
Esempio n. 15
0
int NPC_Lua_NLG_WatchEntry(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	CheckIndexNull(_NLL, 2);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_ToIndex = (int)lua_tointeger(_NLL, 2);
	if(	BATTLE_WatchEntry(TM_Index, TM_ToIndex) == 0)
	{
		LRetInt(_NLL, 0);
	}else
	{
		LRetInt(_NLL, -1);
	}
}
Esempio n. 16
0
int NPC_Lua_NLG_SetAction(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_Action = (int)lua_tointeger(_NLL, 2);

	if(!CHAR_CHECKINDEX(TM_Index))
	{
		LRetErrInt(_NLL, -1, "传入的索引是无效的。");
	}

	CHAR_sendWatchEvent( CHAR_getWorkInt( TM_Index, CHAR_WORKOBJINDEX),	TM_Action, NULL, 0,TRUE);
	CHAR_setWorkInt( TM_Index, CHAR_WORKACTION, TM_Action);

	LRetInt(_NLL, 0);
}
Esempio n. 17
0
int NPC_Lua_NLG_CreateBattlePvP(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	CheckIndexNull(_NLL, 2);
	int TM_Index1 = (int)lua_tointeger(_NLL, 1);
	int TM_Index2 = (int)lua_tointeger(_NLL, 2);
	int TM_Ret = -1;
	int TM_BattleIndex = -1;

	if( (CHAR_getInt( TM_Index2, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER) || (CHAR_getInt( TM_Index1, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER)){
		LRetErrInt(_NLL, -1, "对象类型不是玩家");
	}
	if( (CHAR_getWorkInt( TM_Index2, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) || (CHAR_getWorkInt( TM_Index1, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE))
	{
		LRetErrInt(_NLL, -2, "对象正在对战中");
	}
	if( CHAR_getWorkInt( TM_Index2, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT )
	{
		int TM_Index = CHAR_getWorkInt( TM_Index2, CHAR_WORKPARTYINDEX1 );

		if( TM_Index < 0 )
		{
			LRetErrInt(_NLL, -3, "对象的队伍异常");
		}
	}
	if( CHAR_getWorkInt( TM_Index1, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT )
	{
		int TM_Index = CHAR_getWorkInt( TM_Index1, CHAR_WORKPARTYINDEX1 );

		if( TM_Index < 0 )
		{
			LRetErrInt(_NLL, -3, "对象的队伍异常");
		}
	}
	TM_Ret = NPC_Lua_CreateVsPlayer(&TM_BattleIndex, TM_Index1, TM_Index2);
	if(TM_Ret != 0)
	{
		char TM_Buff[64];
		snprintf(TM_Buff, sizeof(TM_Buff), "遭遇失败!错误号:%d", TM_Ret);
		LRetErrInt(_NLL, -4, TM_Buff);
	}
	LRetInt(_NLL, TM_BattleIndex);
}
Esempio n. 18
0
int NPC_Lua_NLG_GiveOneItem(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_ItemId = (int)lua_tointeger(_NLL, 2);
	int TM_Num = 1;
	int TM_ItemIndex = -1;

		TM_ItemIndex = NPC_GiveItem( TM_Index, TM_ItemId);
	if(TM_ItemIndex >= 0)
	{
		char TM_Buff[128];
		snprintf(TM_Buff, sizeof(TM_Buff), "获得 1 个 %s。", ITEM_getChar( TM_ItemIndex, ITEM_NAME));
		CHAR_talkToCli( TM_Index, -1, TM_Buff, CHAR_COLORYELLOW);
	}else{
		LRetInt(_NLL, -1);
	}
	LRetInt(_NLL, TM_ItemIndex);
}
Esempio n. 19
0
int NPC_Lua_NLG_CheckObj(lua_State *_NLL)
{
	CheckEx(_NLL, 3);
	int TM_Floor = (int)lua_tointeger(_NLL, 1);
	int TM_X = (int)lua_tointeger(_NLL, 2);
	int TM_Y = (int)lua_tointeger(_NLL, 3);
	int TM_ObjIndex = -1;
	OBJECT TM_Object = NULL;
	
	for( TM_Object = MAP_getTopObj( TM_Floor, TM_X, TM_Y) ; TM_Object != NULL ; TM_Object = NEXT_OBJECT(TM_Object))
	{
		TM_ObjIndex = GET_OBJINDEX(TM_Object);
		if( !CHECKOBJECTUSE(TM_ObjIndex) )
		{
			continue;
		}
		LRetInt(_NLL, 1);
	}
	LRetInt(_NLL, 0);
}
Esempio n. 20
0
//更新道具數據的接口
int NPC_Lua_Item_UpItem(lua_State *_NLL)
{
	CheckEx(_NLL, 2);
	CheckItemIndexNull(_NLL, 1);
	int TM_CharaIndex = (int)lua_tointeger(_NLL, 1);
	int TM_CharaPtr = API_GetCharaPtrFromCharaIndex(TM_CharaIndex);
	int TM_Pos = (int)lua_tointeger(_NLL, 2);

	if(!API_CHAR_CheckCharPointer(TM_CharaPtr))
	{
		LRetErrInt(_NLL, -1, "傳入的對象索引是無效的。");
	}
	
	if(TM_Pos >= 0 && TM_Pos<=27)
	{
		API_CHAR_sendItemDataOne(TM_CharaPtr, TM_Pos);
		LRetInt(_NLL, 0);
	}
	
	LRetErrInt(_NLL, -2, "傳入的道具位置是錯誤的。");
}
Esempio n. 21
0
//設置數據的接口
int NPC_Lua_Item_SetData(lua_State *_NLL)
{
	CheckEx(_NLL, 3);
	CheckItemIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	int TM_Flg = (int)lua_tointeger(_NLL, 2);

	if(TM_Flg >= 0)
	{
		if(TM_Flg < LUA_DATALINE1)
		{
			TM_Flg -= LUA_DATALINE0;
			int TM_IntVal = (int)lua_tointeger(_NLL, 3);
			int TM_RetInt = API_ITEM_setInt(TM_Index, TM_Flg, TM_IntVal);
			LRetInt(_NLL, TM_RetInt);
		}else if(TM_Flg < LUA_DATALINE2)
		{
			TM_Flg -= LUA_DATALINE1;
			char *TM_CharPoint = (char *)lua_tostring(_NLL, 3);
			BOOL TM_RetBOOL = API_ITEM_setChar(TM_Index, TM_Flg, TM_CharPoint);
			LRetBool(_NLL, TM_RetBOOL);
		}else if(TM_Flg < LUA_DATALINE3)
		{
			TM_Flg -= LUA_DATALINE2;
			//if(TM_Flg == ITEM_WORKOBJINDEX || TM_Flg == ITEM_WORKCHARAINDEX)
			if(TM_Flg == 0 )
			{
				LRetInt(_NLL, 0);
			}
			int TM_WorkIntVal = (int)lua_tointeger(_NLL, 3);
			int TM_RetInt = API_ITEM_setWorkInt(TM_Index, TM_Flg, TM_WorkIntVal);
			LRetInt(_NLL, TM_RetInt);
		}else
		{
			LRetErrNull(_NLL, "傳入的標誌是錯誤的。");
		}
	}
	LRetErrNull(_NLL, "傳入的標誌是錯誤的。");
}
Esempio n. 22
0
int NPC_Lua_NLG_UpChar(lua_State *_NLL)
{
	CheckEx(_NLL, 1);
	CheckIndexNull(_NLL, 1);
	int TM_Index = (int)lua_tointeger(_NLL, 1);
	if(!CHAR_CHECKINDEX(TM_Index))
	{
		LRetErrInt(_NLL, -1, "传入的索引是无效的。");
	}

	CHAR_complianceParameter( TM_Index );
	
	if(CHAR_getInt(TM_Index,CHAR_WHICHTYPE)==CHAR_TYPEPET){
		int playindex = CHAR_getWorkInt(TM_Index,CHAR_WORKPLAYERINDEX);
		if(!CHAR_CHECKINDEX(playindex)){
			LRetErrInt(_NLL, -1, "传入的索引是无效的。");
		}else{
			int i;
			for( i = 0; i < CHAR_MAXPETHAVE; i ++ ) {
				int workindex = CHAR_getCharPet( playindex, i );
				if( workindex == TM_Index ){
					CHAR_send_K_StatusString( playindex, i, CHAR_K_STRING_BASEIMAGENUMBER|
																									CHAR_K_STRING_HP|
																									CHAR_K_STRING_MAXHP|
																									CHAR_K_STRING_MP|
																									CHAR_K_STRING_MAXMP|
																									CHAR_K_STRING_EXP|
																									CHAR_K_STRING_NEXTEXP|
																									CHAR_K_STRING_LV|
																									CHAR_K_STRING_ATK|
																									CHAR_K_STRING_DEF|
																									CHAR_K_STRING_QUICK|
																									CHAR_K_STRING_AI|
																									CHAR_K_STRING_EARTH|
																									CHAR_K_STRING_WATER|
																									CHAR_K_STRING_FIRE|
																									CHAR_K_STRING_WIND|
																									CHAR_K_STRING_SLOT|
																									CHAR_K_STRING_CHANGENAMEFLG|
																									CHAR_K_STRING_NAME|
																									CHAR_K_STRING_USERPETNAME);
					char msgbuf[128];
					snprintf( msgbuf, sizeof( msgbuf ), "W%d",i);
					CHAR_sendStatusString( playindex, msgbuf );
					CHAR_sendStatusString( playindex, "P");
					break;
				}
			}
		}
	}else if(CHAR_getInt(TM_Index,CHAR_WHICHTYPE)==CHAR_TYPEPLAYER){
		CHAR_send_P_StatusString( TM_Index, CHAR_P_STRING_GOLD );
	}

	if(CHAR_getFlg(TM_Index,	CHAR_ISVISIBLE) == FALSE)
	{
		int TM_objindex = CHAR_getWorkInt(TM_Index,CHAR_WORKOBJINDEX);

		CHAR_sendCDArroundChar
		(
			OBJECT_getFloor(TM_objindex),
			OBJECT_getX(TM_objindex),
			OBJECT_getY(TM_objindex),
			TM_objindex
		);
	}else
	{
		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( TM_Index , CHAR_WORKOBJINDEX ));
	}
	LRetNull(_NLL);
}
Esempio n. 23
0
int NPC_Lua_NL_GetErrorStr(lua_State *_NLL)
{
	CheckEx(_NLL, 0);

	LRetMsg(_NLL, M_OutErrMsg);
}
Esempio n. 24
0
int NPC_Lua_Char_GetOnLinePlayer(lua_State *_NLL)
{
	CheckEx(_NLL, 0);
	LRetInt(_NLL, abs(StateTable[LOGIN]));
}