Changed OnWeatherChanging hook to always read the returned weather.
Ref.: http://forum.mc-server.org/showthread.php?tid=1512
This commit is contained in:
parent
78dd02f0c7
commit
2dbed03cbc
@ -811,6 +811,18 @@ void cLuaState::GetStackValue(int a_StackPos, double & a_ReturnedVal)
|
||||
|
||||
|
||||
|
||||
void cLuaState::GetStackValue(int a_StackPos, eWeather & a_ReturnedVal)
|
||||
{
|
||||
if (lua_isnumber(m_LuaState, a_StackPos))
|
||||
{
|
||||
a_ReturnedVal = (eWeather)Clamp((int)tolua_tonumber(m_LuaState, a_StackPos, a_ReturnedVal), (int)wSunny, (int)wThunderstorm);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cLuaState::CallFunction(int a_NumResults)
|
||||
{
|
||||
ASSERT (m_NumCurrentFunctionArgs >= 0); // A function must be pushed to stack first
|
||||
|
@ -30,6 +30,7 @@ extern "C"
|
||||
}
|
||||
|
||||
#include "../Vector3.h"
|
||||
#include "../Defines.h"
|
||||
|
||||
|
||||
|
||||
@ -222,6 +223,10 @@ public:
|
||||
/** Retrieve value at a_StackPos, if it is a valid number. If not, a_Value is unchanged */
|
||||
void GetStackValue(int a_StackPos, double & a_Value);
|
||||
|
||||
/** Retrieve value at a_StackPos, if it is a valid number, converting and clamping it to eWeather.
|
||||
If not, a_Value is unchanged. */
|
||||
void GetStackValue(int a_StackPos, eWeather & a_Value);
|
||||
|
||||
|
||||
/** Call any 0-param 0-return Lua function in a single line: */
|
||||
template <typename FnT>
|
||||
|
@ -1347,18 +1347,15 @@ bool cPluginLua::OnWeatherChanging(cWorld & a_World, eWeather & a_NewWeather)
|
||||
{
|
||||
cCSLock Lock(m_CriticalSection);
|
||||
bool res = false;
|
||||
int NewWeather = a_NewWeather;
|
||||
cLuaRefs & Refs = m_HookMap[cPluginManager::HOOK_WEATHER_CHANGING];
|
||||
for (cLuaRefs::iterator itr = Refs.begin(), end = Refs.end(); itr != end; ++itr)
|
||||
{
|
||||
m_LuaState.Call((int)(**itr), &a_World, NewWeather, cLuaState::Return, res, NewWeather);
|
||||
m_LuaState.Call((int)(**itr), &a_World, a_NewWeather, cLuaState::Return, res, a_NewWeather);
|
||||
if (res)
|
||||
{
|
||||
a_NewWeather = (eWeather)NewWeather;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
a_NewWeather = (eWeather)NewWeather;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user