Ir para conteúdo

Day & Night


Posts Recomendados

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/

Editado por JoaozinhoNA
Link para o comentário
Compartilhar em outros sites

posso ta errado mas... se o player ja ta vindo como parametro pra q exatamente tu fez isso? o.O

for(AutoList<Player>::iterator it = Player::autoList.begin(); it != Player::autoList.end(); ++it)
    if(it->second == player)

era muito mais facil usar:

player->sendWorldLight(lightInfo);
Link para o comentário
Compartilhar em outros sites

  • 1 year later...
  • 7 months later...
×
×
  • Criar Novo...