Exemplo n.º 1
0
double CScript::TransforCamera(const char* cmd, char* retStr)
{
	int nRet = 0;
	//变化方式
	long lTransforMode = static_cast<long>(GetIntParam(cmd, 0));
	if( lTransforMode != ERROR_CODE && lTransforMode != INVILID_VALUE )
	{
		long lParam1 = static_cast<long>(GetIntParam(cmd, 1));
		long lParam2 = static_cast<long>(GetIntParam(cmd, 2));
		long lParam3 = static_cast<long>(GetIntParam(cmd, 3));
		if( lParam1 != ERROR_CODE && lParam1 != INVILID_VALUE && 
			lParam2 != ERROR_CODE && lParam2 != INVILID_VALUE &&
			lParam3 != ERROR_CODE && lParam3 != INVILID_VALUE)
		{
			CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
			if( pPlayer )
			{
				CMessage msg(MSG_S2C_OTHER_TRANSFORCAMERA);
				msg.Add(lTransforMode);
				msg.Add(lParam1);
				msg.Add(lParam2);
				msg.Add(lParam3);
				msg.SendToPlayer(pPlayer->GetExID());
				nRet = 1;
			}
		}
	}
	return nRet;
}
Exemplo n.º 2
0
double CScript::SetDelTimeByGuid(const char* cmd, char* retStr)
{
	if(!p_SrcShape) return -1.0f;

	char* szGUID = GetStringParam(cmd, 0); 
	int type=GetIntParam(cmd,1);
	int iDelTime= GetIntParam(cmd,2);

	if (szGUID==NULL || 
		type== ERROR_CODE || type== INVILID_VALUE)
	{
		M_FREE( szGUID, sizeof(char)*MAX_VAR_LEN );
		return 0;
	}
	if (iDelTime== ERROR_CODE || iDelTime== INVILID_VALUE)
	{
		iDelTime=0;
	}


	CGUID monsterGUID = GetVariableList()->GetGuidValue(szGUID);
	CServerRegion* pRegion=dynamic_cast<CServerRegion*>(p_SrcShape->GetFather());
	if (pRegion!= NULL)
	{
		CMoveShape* pMoveShape= dynamic_cast<CMoveShape*>(pRegion->FindChildObject(type,monsterGUID));
		if (pMoveShape!= NULL)
		{
			pMoveShape->AddDelEvent(iDelTime);
		}
	}
	M_FREE( szGUID, sizeof(char)*MAX_VAR_LEN );
	return 0;
}
Exemplo n.º 3
0
double CScript::HourDiff(const char* CmdStr, char* retStr)
{
    double lTime1=GetIntParam(CmdStr, 0);
    double lTime2=GetIntParam(CmdStr, 1);
    tm Time1;
    tm Time2;
    time_t	tTime1;
    time_t	tTime2;

    //从参数提取第一个时间
    Time1.tm_year=((long)lTime1)>>3>>6>>5>>5>>4;
    Time1.tm_mon=(((long)lTime1)>>3>>6>>5>>5)&15;
    Time1.tm_mday=(((long)lTime1)>>3>>6>>5)&31;
    Time1.tm_hour=(((long)lTime1)>>3>>6)&31;
    Time1.tm_min=(((long)lTime1)>>3)&63;
    tTime1=mktime(&Time1);

    if(lTime2==ERROR_CODE)
    {
        //如果没有第二参数,则取当前时间
        time(&tTime2);
    }
    else
    {
        //如果有第二时间,则转换为time_t
        Time2.tm_year=((long)lTime2)>>3>>6>>5>>5>>4;
        Time2.tm_mon=(((long)lTime2)>>3>>6>>5>>5)&15;
        Time2.tm_mday=(((long)lTime2)>>3>>6>>5)&31;
        Time2.tm_hour=(((long)lTime2)>>3>>6)&31;
        Time2.tm_min=(((long)lTime2)>>3)&63;
        tTime2=mktime(&Time2);
    }
    return (int)difftime(tTime2,tTime1)/3600;	//一小时3600秒
}
Exemplo n.º 4
0
double CScript::SendWorldCredit(const char* CmdStr, char* retStr)
{
	char* strName = GetStringParam(CmdStr,0);  
	DWORD lCredit = GetIntParam(CmdStr,1);
	DWORD lWorldCredit = GetIntParam(CmdStr,2);

	CMessage msg(MSG_S2C_LOTTERY_MaxTodayPoint);
	msg.Add( (long)lCredit );	
	msg.Add( (char*)strName );	
	msg.SendToPlayer(((CPlayer*)p_SrcShape)->GetExID());	// 发送到客户端

	CMessage msgEx(MSG_S2C_LOTTERY_WorldPoint);
	msgEx.Add( (long)lWorldCredit );	
	msgEx.SendToPlayer(((CPlayer*)p_SrcShape)->GetExID());

	CMessage msgToWSCredit(MSG_S2W_LOTTERY_CHANGEWORLDCREDIT);
	msgToWSCredit.Add((long)lWorldCredit);
	msgToWSCredit.Send();

	CMessage msgToWSName(MSG_S2W_LOTTERY_CHANGEPRECEDE);
	msgToWSName.Add((long)lCredit);
	msgToWSName.Add((char*)strName);
	msgToWSName.Send();
	return 0;
}
Exemplo n.º 5
0
double CScript::PlayVideo(const char* CmdStr, char* retStr)
{
	double ret = 0;	
	char* strFileName = GetStringParam(CmdStr,0);
	long  lLoop = GetIntParam(CmdStr,1);
	long  lX	= GetIntParam(CmdStr,2);
	long  lY	= GetIntParam(CmdStr,3);
	long  lWidth = GetIntParam(CmdStr,4);
	long  lHeight = GetIntParam(CmdStr,5);
	if (p_SrcShape!=NULL && strFileName!=NULL   && lLoop!=ERROR_CODE && lLoop!=INVILID_VALUE 
		&& lX!=ERROR_CODE && lX!=INVILID_VALUE 
		&& lY!=ERROR_CODE && lY!=INVILID_VALUE
		&& lWidth!=ERROR_CODE && lWidth!=INVILID_VALUE
		&& lHeight!=ERROR_CODE && lHeight!=INVILID_VALUE)
	{
		CMessage msg(MSG_S2C_OTHER_PLAY_VIDEO);
		msg.Add(strFileName);
		msg.Add(lLoop);
		msg.Add(lX);
		msg.Add(lY);
		msg.Add(lWidth);
		msg.Add(lHeight);
		msg.SendToPlayer(p_SrcShape->GetExID());
		ret = 1;
	}

	M_FREE( strFileName, sizeof(char)*MAX_VAR_LEN );
	return ret;
}
Exemplo n.º 6
0
double CScript::AddSkillToShortCutBar(const char* cmd, char* retStr)
{
	long nRet = 0;
	DWORD dwSkillID = static_cast<DWORD>(GetIntParam(cmd, 0));
	if( dwSkillID != ERROR_CODE && dwSkillID != INVILID_VALUE )
	{
		long  nBarNo = static_cast<long>(GetIntParam(cmd, 1));
		if( nBarNo != ERROR_CODE && nBarNo != INVILID_VALUE)
		{
			CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
			if( pPlayer && pPlayer->CheckSkill(dwSkillID) )
			{
				dwSkillID = dwSkillID|0x80000000;
				pPlayer->SetHotKey(nBarNo,dwSkillID);

				CMessage msg(MSG_S2C_SETHOTKEY);
				msg.Add((char)HOTKEY_SET_SUCCEED);
				msg.Add((BYTE)nBarNo);
				msg.Add(dwSkillID);
				msg.SendToPlayer(pPlayer->GetExID());

				nRet = 1;
			}
		}
	}
	return nRet;
}
Exemplo n.º 7
0
//设置目标整形变量的值,$bound默认为0
double CScript::SetDestIntVar(const char* cmd, char* retStr)
{
	double dbRet = 0;
	CMoveShape* pMoveShape = dynamic_cast<CMoveShape*>(p_DesShape);
	if(!pMoveShape)	return dbRet;

	char* szValueName= GetStringParam(cmd,0);
	if(szValueName)
	{
		if( strlen(szValueName) >= 2 && szValueName[0]=='$')
		{
			long lValue =  GetIntParam(cmd,1);
			if(lValue != ERROR_CODE)
			{
				long lBound = GetIntParam(cmd,2);
				if(lBound == ERROR_CODE)
				{
					lBound = 0;
				}
				dbRet = pMoveShape->GetVariableList()->SetVarValue(szValueName,0,lValue);
			}
		}
		M_FREE( szValueName, sizeof(char)*MAX_VAR_LEN );
	}
	
	return dbRet;
}
Exemplo n.º 8
0
double CScript::Play3DSound(const char* cmd, char* retStr/* =NULL */)
{
	char* strFile = GetStringParam(cmd,0);
	long lLoop = GetIntParam(cmd,1);
	long lPosX = GetIntParam(cmd,2);
	long lPosY = GetIntParam(cmd,3);
	long lPosZ = GetIntParam(cmd,4);
	if (strFile)
	{
		if (lLoop != ERROR_CODE && 
			lPosX != ERROR_CODE &&
			lPosY != ERROR_CODE &&
			lPosZ != ERROR_CODE)
		{
			CPlayer* pPlayer = dynamic_cast<CPlayer*>(GetSrcShape());	
			if (pPlayer)
			{
				CMessage msg(MSG_S2C_RGN_PLAY3DSOUND);
				msg.Add(strFile);
				msg.Add(lLoop);
				msg.Add(lPosX);
				msg.Add(lPosY);
				msg.Add(lPosZ);
				msg.SendToPlayer(pPlayer->GetExID());
			}
			
		}
		M_FREE( strFile, sizeof(char)*MAX_VAR_LEN );
	}

	return 1;
}
Exemplo n.º 9
0
double CScript::PostPlayerInfo(const char* CmdStr, char* retStr)
{
	if(p_SrcShape==NULL) return 0;

	char* strContend = GetStringParam(CmdStr,0);
	if(strContend == NULL)
	{
		return 0;
	}
	DWORD dwFrColor = static_cast<DWORD>(GetIntParam(CmdStr, 1));
	DWORD dwBkColor = static_cast<DWORD>(GetIntParam(CmdStr, 2));

	if (dwFrColor==ERROR_CODE)
		dwFrColor = 0xffffffff;

	if (dwBkColor==ERROR_CODE)
		dwBkColor = 0xff000000;

	CMessage msg(MSG_S2C_OTHER_ADDPLAYERINFO);
	msg.Add((LONG)0);
	msg.Add(dwFrColor);
	msg.Add(dwBkColor);
	msg.Add(strContend);
	msg.SendToPlayer(p_SrcShape->GetExID());

	M_FREE( strContend, sizeof(char)*MAX_VAR_LEN );
	return 1;
}
Exemplo n.º 10
0
double CScript::ShowString(const char* cmd, char* retStr)
{
	CPlayer *pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
	if(NULL == pPlayer) return -1;

	LONG lScreenPosX = GetIntParam(cmd, 0);
	LONG lScreenPosY = GetIntParam(cmd, 1);

	char* pString = GetStringParam( cmd, 2 );
	if(NULL == pString) return -1;

	LONG lIsShow = GetIntParam(cmd, 3);
	CMessage msg(MSG_S2C_OTHER_SHOW_STRING);
	msg.Add(lIsShow);
	if(0 != lIsShow)
	{
		msg.Add(lScreenPosX);
		msg.Add(lScreenPosY);
		msg.Add(pString);
	}
	msg.SendToPlayer(pPlayer->GetExID(), false);

	M_FREE( pString, sizeof(char)*MAX_VAR_LEN );
	return 1;
}
Exemplo n.º 11
0
double CScript::PostDestPlayerInfoByIndex(const char* CmdStr, char* retStr)
{
	CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_DesShape);
	if(pPlayer==NULL) return 0;

	LONG TextType = GetIntParam(CmdStr,0);
	if(TextType == INVILID_VALUE || TextType== ERROR_CODE)
	{
		return INVILID_VALUE;
	}

	LONG TextIndex = GetIntParam(CmdStr,1);
	if(TextIndex == INVILID_VALUE || TextIndex== ERROR_CODE)
	{
		return INVILID_VALUE;
	}
	DWORD dwFrColor = static_cast<DWORD>(GetIntParam(CmdStr, 2));
	DWORD dwBkColor = static_cast<DWORD>(GetIntParam(CmdStr, 3));

	if (dwFrColor==ERROR_CODE)
		dwFrColor = 0xffffffff;

	if (dwBkColor==ERROR_CODE)
		dwBkColor = 0xff000000;

	CMessage msg(MSG_S2C_OTHER_ADDPLAYERINFO);
	msg.Add((LONG)1);
	msg.Add(dwFrColor);
	msg.Add(dwBkColor);
	msg.Add(TextType);
	msg.Add(TextIndex);
	msg.SendToPlayer(pPlayer->GetExID());

	return 1;
}
Exemplo n.º 12
0
//为当前对象注册一个定时器
double CScript::RegisterTimer(const char* cmd, char* retStr)
{
	int nRet = 0;
	long lfuturetime = static_cast<long>(GetIntParam(cmd, 0));
	if(lfuturetime != ERROR_CODE && lfuturetime != INVILID_VALUE)
	{
		long lInterTime = static_cast<long>(GetIntParam(cmd, 1));
		if(lInterTime != ERROR_CODE && lInterTime != INVILID_VALUE)
		{
			char* pszScriptName=GetStringParam(cmd,2);
			if( pszScriptName )
			{
				long lUserData = static_cast<long>(GetIntParam(cmd, 3));
				if(lUserData != ERROR_CODE && lUserData != INVILID_VALUE)
				{
					CMoveShape* pMoveShape = dynamic_cast<CMoveShape*>(p_SrcShape);
					if( pMoveShape )
					{
						//添加提示
						nRet = pMoveShape->RegisterScriptTimer(lfuturetime,lInterTime,
							pszScriptName,lUserData);
					}
				}
				M_FREE( pszScriptName, sizeof(char)*MAX_VAR_LEN );
			}
		}
	}
	return nRet;
}
Exemplo n.º 13
0
//播放表情
double CScript::PlayMotion(const char* cmd, char* retStr)
{
	int nRet = 0;
	long lMotionNum  = static_cast<long>(GetIntParam(cmd, 0));
	if(lMotionNum != ERROR_CODE && lMotionNum != INVILID_VALUE)
	{
		long lAround = static_cast<long>(GetIntParam(cmd, 1));
		if(lAround != ERROR_CODE && lAround != INVILID_VALUE)
		{
			if( p_SrcShape )
			{			
				CMessage msg( MSG_S2C_SHAPE_EMOTION );
				msg.Add( p_SrcShape->GetType() );
				msg.Add( p_SrcShape->GetExID() );
				msg.Add( lMotionNum );
				//发送给周围玩家
				if(lAround)
				{
					msg.SendToAround(p_SrcShape);
				}
				else if(p_SrcShape->GetType() == TYPE_PLAYER)
				{
					msg.SendToPlayer(p_SrcShape->GetExID());
				}
			}
		}
	}
	return nRet;
}
Exemplo n.º 14
0
//界面帮助提示
double CScript::InterfaceHint(const char* cmd, char* retStr)
{
	int nRet = 0;
	char* pszScriptName=GetStringParam(cmd,0);
	if( pszScriptName )
	{
		long lFutureDelTime = static_cast<long>(GetIntParam(cmd, 1));
		if( lFutureDelTime != ERROR_CODE && lFutureDelTime != INVILID_VALUE )
		{
			char* pszInterfaceName=GetStringParam(cmd,2);
			if( pszInterfaceName )
			{
				long lX = static_cast<long>(GetIntParam(cmd, 3));
				long lY = static_cast<long>(GetIntParam(cmd, 4));
				long lWidth = static_cast<long>(GetIntParam(cmd, 5));
				long lHeight = static_cast<long>(GetIntParam(cmd, 6));
				if(lX != ERROR_CODE && lX != INVILID_VALUE &&
					lY != ERROR_CODE && lY != INVILID_VALUE &&
					lWidth != ERROR_CODE && lWidth != INVILID_VALUE &&
					lHeight != ERROR_CODE && lHeight != INVILID_VALUE)
				{
					CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
					if( pPlayer )
					{
						//添加提示
						nRet = pPlayer->AddInterfaceHint(pszScriptName,lFutureDelTime,pszInterfaceName,lX,lY,lWidth,lHeight);
					}
				}
				M_FREE( pszInterfaceName, sizeof(char)*MAX_VAR_LEN );
			}
		}
		M_FREE( pszScriptName, sizeof(char)*MAX_VAR_LEN );
	}
	return nRet;
}
Exemplo n.º 15
0
double CScript::OpenReLiveByGoodsWindow(const char* cmd, char* retStr)
{

	CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);

	if( pPlayer )
	{
		long lRet    = GetIntParam(cmd, 0);
		long lIndex = static_cast<long>(GetIntParam(cmd, 1));	
		long lCostNum = static_cast<long>(GetIntParam(cmd,2));

		if ( lRet!=ERROR_CODE && lRet!=INVILID_VALUE 
			&&   lIndex!=ERROR_CODE && lIndex!=INVILID_VALUE 		
			&&   lCostNum!=ERROR_CODE && lCostNum!=INVILID_VALUE )
		{
			DelPlayerTalkBoxScript(m_guSrcID, SR_FUNC_RELIVEGOODWINDOW);
			//等待函数
			SetIsHang(true);
			SetHangFunc(SR_FUNC_RELIVEGOODWINDOW);

			CMessage msg(MSG_S2C_PLAYER_BUYRELIVEITEM_RESULT);
			msg.Add(GetID());								//脚本guid
			msg.Add(lRet);									//打开窗口类型,1是满足条件的窗口,0是不满足条件
			msg.Add(lIndex);								//物品索引值			
			msg.Add(lCostNum);								//消耗物品数量
			msg.SendToPlayer(pPlayer->GetExID());
			return 1.0;
		}
	}
	
	return 0.0;
}
Exemplo n.º 16
0
int Read_Rmdir_Config( config_file_t config, void *module_config, char *msg_out, int for_reload )
{
    int            rc;
    bool           bval;
    rmdir_config_t *conf = ( rmdir_config_t * ) module_config;

    static const char * rmdir_allowed[] =
    {
        "runtime_interval", "nb_threads_rmdir", "rmdir_queue_size", NULL
    };

    /* get RMDIR_PARAM block */

    config_item_t  param_block = rh_config_FindItemByName( config, RMDIR_PARAM_BLOCK );
    if ( param_block == NULL )
      {
          /* no error, because no parameter is mandatory */
          return 0;
      }

    /* check this is a block... */
    if ( rh_config_ItemType( param_block ) != CONFIG_ITEM_BLOCK )
      {
          strcpy( msg_out, "A block is expected for '" RMDIR_PARAM_BLOCK "' item" );
          return EINVAL;
      }

    /* parse parameters */
    rc = GetDurationParam(param_block, RMDIR_PARAM_BLOCK, "runtime_interval",
                          INT_PARAM_POSITIVE | INT_PARAM_NOT_NULL,
                          &conf->runtime_interval, NULL, NULL, msg_out);
    if ((rc != 0) && (rc != ENOENT))
        return rc;

    rc = GetIntParam( param_block, RMDIR_PARAM_BLOCK, "nb_threads_rmdir",
                      INT_PARAM_POSITIVE | INT_PARAM_NOT_NULL, ( int * ) &conf->nb_threads_rmdir,
                      NULL, NULL, msg_out );
    if ( ( rc != 0 ) && ( rc != ENOENT ) )
        return rc;

    rc = GetIntParam( param_block, RMDIR_PARAM_BLOCK, "rmdir_queue_size",
                      INT_PARAM_POSITIVE | INT_PARAM_NOT_NULL, ( int * ) &conf->rmdir_queue_size,
                      NULL, NULL, msg_out );
    if ( ( rc != 0 ) && ( rc != ENOENT ) )
        return rc;

    rc = GetBoolParam(param_block, RMDIR_PARAM_BLOCK, "simulation_mode",
                      0, &bval, NULL, NULL, msg_out);
    if (rc != ENOENT)
    {
        DisplayLog( LVL_EVENT, "RmdirConfig",
            "WARNING: deprecated parameter 'simulation_mode'. Use '--dry-run' option instead.");
    }

    CheckUnknownParameters( param_block, RMDIR_PARAM_BLOCK, rmdir_allowed );

    return 0;

}
Exemplo n.º 17
0
double CScript::Rgb(const char* CmdStr, char* retStr)
{
    LONG	nRed	= GetIntParam( CmdStr, 0 );
    LONG	nGreen	= GetIntParam( CmdStr, 1 );
    LONG	nBlue	= GetIntParam( CmdStr, 2 );
    DWORD	dwColor	= 0xff000000 | ( (nRed & 0xff) << 16 ) | ( (nGreen & 0xff) << 8 ) | ( nBlue & 0xff );
    return	dwColor;
}
Exemplo n.º 18
0
double CScript::ChangeAttr(const char* CmdStr, char* retStr)
{
	OBJECT_TYPE type;
	CGUID id;
	double value  = 0;
	double ret = INVILID_VALUE;

	int param = GetIntParam(CmdStr, 0);
	if(param != ERROR_CODE && param != INVILID_VALUE)
	{
		type = (OBJECT_TYPE)param;

		char* pIdName = GetStringParam(CmdStr, 1);
		if(NULL == pIdName) return ret;
		id = GetVariableList()->GetGuidValue(pIdName);
		if(id == NULL_GUID)
			id = GetGeneralVariableList()->GetGuidValue(pIdName);
		if(id == NULL_GUID)
			id = ((CPlayer*)p_SrcShape)->GetVariableList()->GetGuidValue(pIdName);

		CMoveShape* shape = GetGame()->FindShape(type, id);

		char* name = GetStringParam(CmdStr, 2);
		if(name)
		{
			value = GetIntParam(CmdStr, 3);
			if(value != ERROR_CODE && value != INVILID_VALUE)
			{

				if(NULL == shape) // 默认id=0时,直接调用SrcShape的SetAttr接口
				{
					CShape* cShape = GetSrcShape();
					if(cShape)
					{
						((CMoveShape*)cShape)->ChangeAttribute(string(name), value);
						((CMoveShape*)cShape)->UpdateAttribute();
						ret = 1;
					}
				}
				else
				{
					shape->ChangeAttribute(string(name), value);
					shape->UpdateAttribute();
					ret = 1;
				}
			}
		}

		M_FREE( pIdName, sizeof(char)*MAX_VAR_LEN );
		M_FREE( name, sizeof(char)*MAX_VAR_LEN );
	}
	else // 参数是字符串
	{
		AddErrorLogText(CStringReading::LoadString(IDS_GS_FUNCTION, STR_GS_FUNCTION_CHANGEATTRFIRSTVARISSTRING));
	}

	return ret;
}
Exemplo n.º 19
0
double CScript::GetDoor(const char* cmd, char* retStr)
{
    char *strTemp=GetStringParam(cmd,0);
    if (strTemp)
    {
        long id=GetIntParam(cmd,1);
        double dRegion=GetIntParam(cmd,2);
        if (id!=ERROR_CODE)
        {
            CServerRegion* pRegion=NULL;
            if (dRegion!=ERROR_CODE)
            {
                pRegion = GameManager::GetInstance()->GetRgnManager()->FindRgnByTemplateID(RGN_NORMAL, dRegion);
                if(pRegion == NULL)
                    pRegion = GameManager::GetInstance()->GetRgnManager()->FindRgnByTemplateID(RGN_PERSONAL, dRegion);
                if(pRegion == NULL)
                    pRegion = GameManager::GetInstance()->GetRgnManager()->FindRgnByTemplateID(RGN_PERSONAL_HOUSE, dRegion);
                if(pRegion == NULL)
                    pRegion = GameManager::GetInstance()->GetRgnManager()->FindRgnByTemplateID(RGN_TEAM, dRegion);
            }
            else
            {
                CPlayer *pPlayer=dynamic_cast<CPlayer*>(p_SrcShape);
                if(pPlayer)
                    pRegion=dynamic_cast<CServerRegion*>(pPlayer->GetFather());
            }
            if (pRegion)
            {
                if (strcmp("State",strTemp)==0)
                {
                    M_FREE( strTemp, sizeof(char)*MAX_VAR_LEN );
                    return pRegion->GetDoorState(id);
                }
                else if (strcmp("Switch",strTemp)==0)
                {
                    M_FREE( strTemp, sizeof(char)*MAX_VAR_LEN );
                    return pRegion->GetDoorDestroySwitch(id);
                }
                else if (strcmp("Hp",strTemp)==0)
                {
                    M_FREE( strTemp, sizeof(char)*MAX_VAR_LEN );
                    return pRegion->GetDoorHP(id);
                }
                else if (strcmp("MaxHp",strTemp)==0)
                {
                    M_FREE( strTemp, sizeof(char)*MAX_VAR_LEN );
                    return pRegion->GetDoorMaxHP(id);
                }
            }
        }
        M_FREE( strTemp, sizeof(char)*MAX_VAR_LEN );
    }
    return 0;
}
Exemplo n.º 20
0
double CScript::GetPow(const char* CmdStr, char* retSt)
{
    double lX=GetIntParam(CmdStr, 0);
    if(ERROR_CODE == lX)
        return -1.0f;

    double lY=GetIntParam(CmdStr, 1);
    if(ERROR_CODE == lY)
        return -1.0f;

    double llRet = std::pow(lX, lY);
    return llRet;
}
Exemplo n.º 21
0
void RaceAnalyzerComm::readAccelConfig(AccelConfig *config){
	CComm *serialPort = GetSerialPort();
	if (NULL==serialPort) throw CommException(CommException::OPEN_PORT_FAILED);

	for (int i = 0; i < CONFIG_ACCEL_CHANNELS; i++){
		AccelConfig &accelConfig = (config[i]);
		wxString cmd = wxString::Format("getAccelCfg %d",i);
		wxString rsp = SendCommand(serialPort,cmd);
		populateChannelConfig(accelConfig.channelConfig,rsp);
		accelConfig.mode = (accel_mode_t)GetIntParam(rsp,"mode");
		accelConfig.channel = (accel_channel_t)GetIntParam(rsp,"channel");
		accelConfig.zeroValue = GetIntParam(rsp,"zeroValue");
	}
}
Exemplo n.º 22
0
double CScript::SendExpAction(const char* CmdStr, char* retStr/* =NULL */)
{
	double dRet = 0;
	DWORD dwActionID = GetIntParam(CmdStr,0);
	DWORD dwSrcType = GetIntParam(CmdStr,1);
	char*  strSrcGuid = GetStringParam(CmdStr,2); 
	CGUID  guidDest;
	CGUID  guidSrc;
	if (strSrcGuid!=NULL)
	{
		guidSrc = GetScriptGuidValue((CMoveShape*)p_SrcShape, strSrcGuid);
	}
	else
	{
		guidSrc = p_SrcShape->GetExID();
	}
	DWORD dwDestType = GetIntParam(CmdStr,3);
	char*  strDestGuid = GetStringParam(CmdStr,4); 
	if (strDestGuid!=NULL)
	{
		guidDest = GetScriptGuidValue((CMoveShape*)p_SrcShape, strDestGuid);
	}

	if (dwDestType==ERROR_CODE || dwDestType==INVILID_VALUE)
	{
		dwDestType = 0;
	}
	if (guidDest== CGUID::GUID_INVALID)
	{
		guidDest = NULL_GUID;
	}

	if(dwActionID!=ERROR_CODE && dwSrcType!=ERROR_CODE && guidSrc!= CGUID::GUID_INVALID && this->m_pRegion != NULL)
	{
		CMoveShape *pMoveShape = dynamic_cast<CMoveShape*>( m_pRegion->FindChildObject(OBJECT_TYPE(dwSrcType), guidSrc ) );
		CMessage msg(MSG_S2C_OTHER_EXPATC);
		msg.Add(dwActionID);
		msg.Add(dwSrcType);
		msg.Add(guidSrc);
		msg.Add(dwDestType);
		msg.Add(guidDest);
		msg.SendToAround(pMoveShape);
		dRet = 1.0;
	}
	M_FREE( strSrcGuid, sizeof(char)*MAX_VAR_LEN );
	M_FREE( strDestGuid, sizeof(char)*MAX_VAR_LEN );
	return dRet;
}
Exemplo n.º 23
0
double CScript::RoundNum(const char* cmd, char* retStr)
{
    double lValue =GetIntParam(cmd, 0);
    if(lValue == ERROR_CODE)
        return 0;
    return Round(lValue);
}
Exemplo n.º 24
0
//------//返回执行者周围一定范围内的同类怪物数量
double	CScript::GetSameMonsterNumByAround(const char* cmd, char* retStr)
{
	CMonster* pMonster= dynamic_cast<CMonster*>(p_SrcShape);
	if (pMonster == NULL)	return -1;

	CServerRegion* pRegion = dynamic_cast<CServerRegion*>( pMonster -> GetFather() );
	if( pRegion == NULL ) return -1;

	double range= GetIntParam(cmd,0);
	if (range==INVILID_VALUE && range==ERROR_CODE )
	{
		return -1;
	}

	vector<CShape*> vOut;
	pRegion -> FindAroundObject( pMonster, TYPE_MONSTER, vOut );
	int iSameTypeNum=0;
	for (int a=0; a<vOut.size(); a++)
	{
		if (pMonster->Distance(vOut[a]) > range) continue;
		if (pMonster->GetIndex()!= ((CMonster*)vOut[a])->GetIndex()) continue;

		iSameTypeNum++;
	}
	return iSameTypeNum;
}
Exemplo n.º 25
0
	BufferName BufferBinding(GLuint index) const
	{
		return BufferName(GetIntParam(
			GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
			index
		));
	}
Exemplo n.º 26
0
double CScript::PlaySound(const char* CmdStr, char* retStr)
{
	CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
	if(!pPlayer || !m_pRegion)	return 0;

	char* strFile = GetStringParam(CmdStr, 0);
	int  nToAround = GetIntParam(CmdStr, 1);
	if (nToAround == ERROR_CODE)
	{
		nToAround = 0;
	}

	if (strFile)
	{
		CMessage msg(MSG_S2C_RGN_PLAYSOUND);
		msg.Add(strFile);
		//只发给自己
		if(nToAround == 0 && pPlayer)
			msg.SendToPlayer( pPlayer -> GetExID() );
		else
			msg.SendToAround((CServerRegion*)GetRegion(), pPlayer->GetTileX(), pPlayer->GetTileY());

		M_FREE( strFile, sizeof(char)*MAX_VAR_LEN );
	}
	return 1;
}
Exemplo n.º 27
0
double CScript::AddGoodToShortCutBar(const char* cmd, char* retStr)
{
	int nRet = 0;

	char* name=GetStringParam(cmd,0);
	if( name )
	{
		CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
		if(pPlayer)
		{
			CGoods * pGoods = pPlayer->FindGoodInPack(name);
			//如果检测有该物品
			if(pGoods)
			{
				long  nBarNo = static_cast<long>(GetIntParam(cmd, 1));
				if( nBarNo != ERROR_CODE && nBarNo != INVILID_VALUE)
				{
					pPlayer->SetHotKey(nBarNo, pGoods->GetBasePropertiesIndex());

					CMessage msg(MSG_S2C_SETHOTKEY);
					msg.Add((char)HOTKEY_SET_SUCCEED);
					msg.Add((BYTE)nBarNo);
					msg.Add(pGoods->GetBasePropertiesIndex());
					msg.SendToPlayer(pPlayer->GetExID());	
					nRet = 1;
				}
			}
		}
		M_FREE( name, sizeof(char)*MAX_VAR_LEN );
	}
	return nRet;
}
Exemplo n.º 28
0
double CScript::OperaInterface(const char* cmd, char* retStr)
{
	int nRet = 0;
	//变化方式
	long lOperaMode = static_cast<long>(GetIntParam(cmd, 0));
	if( lOperaMode != ERROR_CODE && lOperaMode != INVILID_VALUE )
	{
		char* InterfaceName=GetStringParam(cmd,1);
		if( InterfaceName )
		{
			CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
			if( pPlayer )
			{
#ifdef _DEBUG
				OutputDebugString("\n================发送关闭界面消息=========================\n");
#endif
				CMessage msg(MSG_S2C_OTHER_OPERAINTERFACE);
				msg.Add(lOperaMode);
				msg.Add(InterfaceName);
				msg.SendToPlayer(pPlayer->GetExID());
				nRet = 1;
			}
			M_FREE( InterfaceName, sizeof(char)*MAX_VAR_LEN );
		}
	}
	return nRet;
}
Exemplo n.º 29
0
double CScript::SetAttrStr(const char* CmdStr, char* retStr)
{
	OBJECT_TYPE type;
	CGUID id;

	if(!GetSrcShape()) return -1.0f;

	int param = GetIntParam(CmdStr, 0);
	if(param != ERROR_CODE && param != INVILID_VALUE)
	{
		type = (OBJECT_TYPE)param;

		char* pIdName = GetStringParam(CmdStr, 1);
		if(!pIdName) return -1.0f;

		id = GetScriptGuidValue((CMoveShape*)GetSrcShape(), pIdName);

		CMoveShape* shape = NULL;

		char* name = GetStringParam(CmdStr, 2);

		if(!name)
		{
			M_FREE( pIdName, sizeof(char)*MAX_VAR_LEN );
			return -1.0f;
		}

		const char* strValue = GetStringParam(CmdStr, 3);
		if(!strValue)
		{
			M_FREE( pIdName, sizeof(char)*MAX_VAR_LEN );
			M_FREE( name, sizeof(char)*MAX_VAR_LEN );
			return -1.0f;
		}

		if(NULL_GUID == id) // 默认id=0时,直接调用SrcShape的SetAttr接口
		{
			shape = (CMoveShape*)GetSrcShape();
		}
		else
		{
			shape = GetGame()->FindShape(type, id);
		}

		if(shape)
		{
			SetScriptVarValue(shape, name, strValue);
		}

		M_FREE( pIdName, sizeof(char)*MAX_VAR_LEN );
		M_FREE( name, sizeof(char)*MAX_VAR_LEN );
		M_FREE( strValue, sizeof(char)*MAX_VAR_LEN );
	}
	else // 参数是字符串
	{
		AddErrorLogText(CStringReading::LoadString(IDS_GS_FUNCTION, STR_GS_FUNCTION_SETATTRFIRSTVARISSTRING));
	}

	return -1.0f;
}
Exemplo n.º 30
0
double CScript::OpenReliveWindow(const char* cmd, char* retStr)
{
    double dRet = 0.0;

	BYTE bType = GetIntParam(cmd,0);
	CPlayer* pPlayer = dynamic_cast<CPlayer*>(p_SrcShape);
	
	if (pPlayer && bType !=ERROR_CODE && bType!=INVILID_VALUE)
	{	
		DelPlayerTalkBoxScript(m_guSrcID, SR_FUNC_RELIVEWINDOW);
		//等待函数
		SetIsHang(true);
		SetHangFunc(SR_FUNC_RELIVEWINDOW);

		pPlayer->SetReliveScript(GetID());

		CMessage msg(MSG_S2C_OTHER_OPEN_RELIVEWINDOW);
		msg.Add(GetID());
		msg.Add(bType);										//0是只有回城复活,1为还有原地复活
		msg.SendToPlayer(pPlayer->GetExID());

		dRet = 1.0;
	}
	return dRet;
}