Day & Night
É uma uma função que faz com que o jogo fique de Dia ou Noite, ilusórios (ou seja, o jogo não vai estar, mas ele vai apresentar que está, momentâneo [Até logout]).
Eu criei essa função porque necessitava tirar SSs e precisava da luz da noite, esse foi o único motivo de ter criado essa função... então, não aconselho a utilizarem isso se não for dessa maneira, porque... as horas do jogo não vão mudar, é ilusório. [Não tive motivos para criar dessa maneira. ]
Vamos lá!
Primeiramente, adicione no final de game.cpp:
void Game::setWorldTime(bool type, Player* player) { LightInfo lightInfo; if(!type) { lightInfo.level = LIGHT_LEVEL_NIGHT; } else { lightInfo.level = LIGHT_LEVEL_DAY; } lightInfo.color = 0xD7; player->sendWorldLight(lightInfo); }
Em game.h, antes de:
void setWorldType(WorldType_t type) {worldType = type;}
Adicione:
void setWorldTime(bool type, Player* player);
Em luascript.cpp, antes de:
int32_t LuaScriptInterface::luaGetItemAttribute(lua_State* L)
Adicione:
int32_t LuaScriptInterface::luaSetWorldState(lua_State* L) { bool type = popBoolean(L); ScriptEnviroment* env = getEnv(); Player* player = env->getPlayerByUID(popNumber(L)); if(player) { g_game.setWorldTime(type, player); lua_pushnumber(L, true); return 1; } lua_pushnumber(L, false); return 1; }
Ainda em luascript.cpp, antes de:
//getItemAttribute(uid, key)
Adicione:
//setWorldState(uid, state = false) lua_register(m_luaState, "setWorldState", LuaScriptInterface::luaSetWorldState);
E por último em luascript.h, antes de:
static int32_t luaGetItemAttribute(lua_State* L);
Adicione:
static int32_t luaSetWorldState(lua_State* L);
Como usar?
function onSay(cid, words, param) for _, pid in pairs(getPlayersOnline()) do setWorldState(pid, false) end return true end
function onSay(cid, words, param) if words == "/night" then setWorldState(cid, false) elseif words == "/day" then setWorldState(cid, true) end return true end
Tópico referente à: http://www.xtibia.com/forum/topic/231827-doacoes-fto/