Automatic Rain

09/11/2018 15:32 cmwarjin0#1
Hi guys where can i edit or disable automatic rain at world and its always raining.. Thank you to those who can help!
09/11/2018 16:01 forger123#2
#ifdef __EVENTLUA_RAIN
m_tRainTime.Set( MIN( 60 ) );
#else // __EVENTLUA_RAIN
#ifdef __RAIN_EVENT
m_tRainTime.Set( MIN( 60 ) );
#else // __RAIN_EVENT
m_tRainTime.Set( MIN( 10 ) );
#endif // __RAIN_EVENT
#endif // __EVENTLUA_RAIN
#ifdef __EVENTLUA_SNOW
m_tSnowTime.Set( MIN( 60 ) );
#else // __EVENTLUA_SNOW
m_tSnowTime.Set( MIN( 10 ) );
#endif // __EVENTLUA_SNOW
09/11/2018 21:27 Tweeney#3
environmenteffect.txt
09/12/2018 05:24 Nιgнтмαяε#4
Environment.h:
Code:
#ifndef __ENVIRONMENT_H__ 
#define	__ENVIRONMENT_H__

#ifdef __CORESERVER
#include "Ar.h"
#endif // __cORESERVER

class CEnvironment
{
public:
#ifdef __ENVIRONMENT_EFFECT
	static	CEnvironment*	GetInstance();
	
	BOOL	GetEnvironmentEffect()	{	return m_bEffect;	}
	void	SetEnvironmentEffect( BOOL bEffect )	{	m_bEffect = bEffect;	}

#ifdef __WORLDSERVER
	BOOL	LoadScript();

	int		GetSeason();
#endif // __WORLDSERVER

#ifdef __CLIENT
	void	SetSeason( int nSeason );
	int		GetSeason()		{	return m_nSeason;	}
#endif // __CLIENT

private:
#ifdef __WORLDSERVER
	int		m_aEnvironmentEffect[LANG_MAX][12];
#endif // __WORLDSERVER

#ifdef __CLIENT
	int		m_nSeason;
#endif // __CLIENT

	BOOL	m_bEffect;
	CTimer	m_tEffectTime;
#else // __ENVIRONMENT_EFFECT
public:
	BOOL	m_bRain;
	BOOL	m_bSnow;
	CTimer  m_tRainTime;
	CTimer  m_tSnowTime;
#endif // __ENVIRONMENT_EFFECT
public:
//	Constructions
	CEnvironment();
	~CEnvironment();
	void Serialize( CAr & ar );

#ifdef __CORESERVER
public:
	BOOL	m_Authority;
public:
	HANDLE	m_hWorker;
	HANDLE	m_hCloseWorker;
	
public:
	BOOL	CreateWorkers( void );
	void	CloseWorkers( void );
	static	UINT	_Worker( LPVOID pParam );
	void	Worker( void );
#endif // __CORESERVER
};

#endif	//	__ENVIRONMENT_H__
Environment.cpp:
Code:
#include "stdafx.h"
#include "Environment.h"

#ifdef __CORESERVER
#include "dpcoresrvr.h"
extern	CDPCoreSrvr g_dpCoreSrvr;
#endif // __CORESERVER

/*--------------------------------------------------------------------------------*/

CEnvironment::CEnvironment()
{
#ifdef __ENVIRONMENT_EFFECT

#ifdef __WORLDSERVER
	::memset( m_aEnvironmentEffect, 0, sizeof( m_aEnvironmentEffect ) );
#endif // __WORLDSERVER

#ifdef __CLIENT
	m_nSeason = SEASON_NONE;
#endif // __CLIENT

	m_bEffect = FALSE;
	m_tEffectTime.Set( MIN( 60 ), TRUE );

#else // __ENVIRONMENT_EFFECT

	m_bRain = m_bSnow = FALSE;
#ifdef __EVENTLUA_RAIN
	m_tRainTime.Set( MIN( 60 ) );
#else // __EVENTLUA_RAIN
#ifdef __RAIN_EVENT
	m_tRainTime.Set( MIN( 60 ) );
#else // __RAIN_EVENT
	m_tRainTime.Set( MIN( 10 ) );
#endif // __RAIN_EVENT
#endif // __EVENTLUA_RAIN
#ifdef __EVENTLUA_SNOW
	m_tSnowTime.Set( MIN( 60 ) );
#else // __EVENTLUA_SNOW
	m_tSnowTime.Set( MIN( 10 ) );
#endif // __EVENTLUA_SNOW

#endif // __ENVIRONMENT_EFFECT

#ifdef __CORESERVER
	m_Authority = FALSE;
	m_hWorker	= m_hCloseWorker	= NULL;
#endif // __CORESERVER
}

CEnvironment::~CEnvironment()
{
#ifdef __CORESERVER
	CloseWorkers();
#endif // __CORESERVER
}



#ifdef __ENVIRONMENT_EFFECT

CEnvironment* CEnvironment::GetInstance()
{
	static CEnvironment sEnvironment;
	return & sEnvironment;
}

#ifdef __WORLDSERVER
BOOL CEnvironment::LoadScript()
{
	CScript scanner;

	if( scanner.Load( "EnvironmentEffect.txt", FALSE ) == FALSE )
	{
		Error( "CEnvironment::LoadScript - Script Load Failed" );
		return FALSE;
	}

	::memset( m_aEnvironmentEffect, 0, sizeof( m_aEnvironmentEffect ) );

	int nLang = scanner.GetNumber();
	while( scanner.tok != FINISHED )
	{
		if( nLang < 0 || nLang >= LANG_MAX )
		{
			Error( "CEnvironment::LoadScript - Invalid Lang : %[d]", nLang );
			return FALSE;
		}

		for( int i = 0; i < 12; ++i )
		{
			int nSeason = scanner.GetNumber();
			if( nSeason < 0 || nSeason >= SEASON_MAX )
			{
				Error( "CEnvironment::LoadScript - Invalid Season : %[d]", nSeason );
				return FALSE;
			}
			m_aEnvironmentEffect[nLang][i] = nSeason;
		}
		nLang = scanner.GetNumber();
	}
	return TRUE;
}

int CEnvironment::GetSeason()
{
	int nLang = ::GetLanguage();

	if( nLang < 0 || nLang >= LANG_MAX )
	{
		Error( "CEnvironment::GetSeason - Invalid argument. Lang : [%d]", nLang );
		return SEASON_NONE;
	}

	CTime timeCurr = CTime::GetCurrentTime();
	int nMonth = timeCurr.GetMonth();
	
	return m_aEnvironmentEffect[nLang][nMonth - 1];
}
#endif // __WORLDSERVER

#ifdef __CLIENT
void CEnvironment::SetSeason( int nSeason )
{
	if( nSeason < SEASON_NONE || nSeason >= SEASON_MAX )
	{
		m_nSeason = SEASON_NONE;
	}
	else
	{
		m_nSeason = nSeason;
	}
}
#endif // __CLIENT

#endif // __ENVIRONMENT_EFFECT

void CEnvironment::Serialize( CAr & ar )
{
	if( ar.IsStoring() )
	{
#ifdef __ENVIRONMENT_EFFECT
		ar << m_bEffect;
#else // __ENVIRONMENT_EFFECT
		ar << m_bRain;
		ar << m_bSnow;
#endif // __ENVIRONMENT_EFFECT
	}
	else
	{
#ifdef __ENVIRONMENT_EFFECT
		ar >> m_bEffect;
#else // __ENVIRONMENT_EFFECT
		ar >> m_bRain;
		ar >> m_bSnow;
#endif // __ENVIRONMENT_EFFECT
	}
}

#ifdef __CORESERVER
BOOL CEnvironment::CreateWorkers( void )
{
	DWORD dwThreadId;
	m_hCloseWorker	= CreateEvent( NULL, FALSE, FALSE, NULL );
	m_hWorker	= chBEGINTHREADEX( NULL, 0, _Worker, this, 0, &dwThreadId );
	if( m_hWorker == NULL )
		return FALSE;
	return TRUE;
}

void CEnvironment::CloseWorkers( void )
{
	CLOSE_THREAD( m_hWorker, m_hCloseWorker );
}

UINT CEnvironment::_Worker( LPVOID pParam )
{
	CEnvironment* pEnvironment	= (CEnvironment*)pParam;
	pEnvironment->Worker();
	return 0;
}

void CEnvironment::Worker( void )
{
	HANDLE hHandle	= m_hCloseWorker;
	while( WaitForSingleObject( hHandle, 60000 ) == WAIT_TIMEOUT )
	{
		if( m_Authority )
		{
#ifdef __ENVIRONMENT_EFFECT
			if( m_bEffect == TRUE )
			{
				m_Authority = FALSE;
				m_tEffectTime.Reset();
				g_dpCoreSrvr.SendEnvironmentEffect();
			}
#else // __ENVIRONMENT_EFFECT
			if( m_bRain )
			{
#ifdef __EVENTLUA_RAIN
				m_Authority = FALSE;
				m_tRainTime.Reset();
#else // __EVENTLUA_RAIN
#ifdef __RAIN_EVENT
				m_Authority = FALSE;
				m_tRainTime.Reset();
#endif // __RAIN_EVENT
#endif // __EVENTLUA_RAIN
				g_dpCoreSrvr.SendEnvironmentRain( m_bRain );
			}
			if( m_bSnow )
			{
#ifdef __EVENTLUA_SNOW
				m_Authority = FALSE;
				m_tSnowTime.Reset();
#endif // __EVENTLUA_SNOW
				g_dpCoreSrvr.SendEnvironmentSnow( m_bSnow );
			}
#endif // __ENVIRONMENT_EFFECT
		}
		else
		{
#ifdef __ENVIRONMENT_EFFECT

			if( m_tEffectTime.IsTimeOut() == TRUE )
			{
				BOOL bOldEffect = m_bEffect;

				if( random( 10 ) < 5 )
				{
					m_bEffect = TRUE;
					m_tEffectTime.Reset();
				}
				else
				{
					m_bEffect = FALSE;
				}

				if( bOldEffect != m_bEffect )
				{
					g_dpCoreSrvr.SendEnvironmentEffect();
				}
			}

#else // __ENVIRONMENT_EFFECT

#ifdef __JAPAN_SAKURA
			CTime timeCurr	= CTime::GetCurrentTime();
			int nMonth = timeCurr.GetMonth();
			if( nMonth >= 6 && nMonth <= 8 ) // 6 ~ 8 - 비
			{
				if( m_tRainTime.IsTimeOut() )
				{
					BOOL bRainBuf = m_bRain;

					if( random(1440) < 5 )
					{
						m_tRainTime.Reset();
						m_bRain = TRUE;
					}
					else
					{
						m_bRain = FALSE;
					}

					if( bRainBuf != m_bRain )
					{
						g_dpCoreSrvr.SendEnvironmentRain( m_bRain );
					}
				}
			}
			else
			{
				if( m_tSnowTime.IsTimeOut() )
				{
					BOOL bSnowBuf = m_bSnow;
					if( random(1440) < 5 )
					{
						m_tSnowTime.Reset();
						m_bSnow = TRUE;
					}
					else
					{
						m_bSnow = FALSE;
					}

					if( bSnowBuf != m_bSnow )
					{
						g_dpCoreSrvr.SendEnvironmentSnow( m_bSnow );
					}
				}
			}
#else __JAPAN_SAKURA
			CTime timeCurr	= CTime::GetCurrentTime();
			int nMonth = timeCurr.GetMonth();
			if( 1 == nMonth || 2 == nMonth || 12 == nMonth )
			{
				if( m_tSnowTime.IsTimeOut() )
				{
					BOOL bSnowBuf = m_bSnow;
					if( random(1440) < 5 )
					{
						m_tSnowTime.Reset();
						m_bSnow = TRUE;
					}
					else
					{
						m_bSnow = FALSE;
					}
					
					if( bSnowBuf != m_bSnow )
					{
						g_dpCoreSrvr.SendEnvironmentSnow( m_bSnow );
					}
				}
			}
			else
			{
				if( m_tRainTime.IsTimeOut() )
				{
					BOOL bRainBuf = m_bRain;

					if( random(1440) < 5 )
					{
						m_tRainTime.Reset();
						m_bRain = TRUE;
					}
					else
					{
						m_bRain = FALSE;
					}
					
					if( bRainBuf != m_bRain )
					{
						g_dpCoreSrvr.SendEnvironmentRain( m_bRain );
					}
				}
			}
#endif // __JAPAN_SAKURA
#endif // __ENVIRONMENT_EFFECT
		}
		TRACE( "CEnvironment Worker\n" );
	}
}
#endif // __CORESERVER

#ifndef __ENVIRONMENT_EFFECT
CEnvironment	g_Environment;
#endif // __ENVIRONMENT_EFFECT
EnvironmentEffect.txt:
Code:
LANG_USA	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE	SEASON_NONE