Day & Night

JoaozinhoNA

Skype: joaozinho.nobre
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/10/13Posts: 35

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/



pmqhfzD.png

e1Q8xXW.png

Slicer

Insanity
avatar
Príncipe
Príncipe

INFOS

Grupo: PríncipeRegistrado: 19/08/10Posts: 4014Gênero: Masculino

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);

"Só a beira do abismo que os seres humanos acham forças para mudar."... E isso me da nojo... ¬¬

"Insanity is doing the exact... same fucking thing... over and over again expecting... shit to change... That. Is. Crazy." -Vass/Einstein

 

JoaozinhoNA

Skype: joaozinho.nobre
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/10/13Posts: 35

Eu estava planejando outras coisas por cima disto, por isso fiz. Não tinha notado, thank u.



pmqhfzD.png

e1Q8xXW.png

SkyDarkyes

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 28/01/13Posts: 1685Gênero: Masculino

Funciona com o client normal ou apenas OTC?

48EnrrM.png

 

Boos

MR.BOSS
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 30/12/10Posts: 106Gênero: MasculinoChar no Tibia: Rolinha Da Amazonia

xD Boa, Mas só vai servir de enfeite ;-;

Estou Pronto Para Explorar Novas Possibilidades.   SMITE --> <3  giphy.gif