14.04.2013, 14:36
No meu script, na public OnPlayerConnect й realizada vбrias verificaзхes e aзхes randфmicas. Uma delas й a execuзгo de uma mъsica aleatуria, atй aн tudo bem. Mas a mъsica demora alguns segundos para ser executada quando o Jogador se conecta, como eu queria que a mъsica iniciasse junto com as dialogs e imagem de fundo, pensei em usar o SetTimerEX.
A public OnPlayerConnect era assim:
Bem, vocк deve entender o cуdigo acima sem problemas (pois sou novato e nгo sei otimizar).
Dessa forma aн em cima, ele funciona 100%. Mas, com o atraso na execuзгo da mъsica.
Entгo resolvi atrasar a execuзгo do cуdigo, assim, quando a mъsica for ser executada o cуdigo й executado ao mesmo tempo.
Usei um SetTimerEx em OnPlayerConnect, e ficou dessa forma:
Como vocк notou a public ficou bastante resumida, nela sу й executado a mъsica e a imagem de fundo. Ao mesmo tempo, o Timer executa a stock ContinuarConexao(playerid) no tempo determinado...
Essa stock, contйm a execuзгo da verificaзгo se o usuбrio й cadastrado e se tem um nick proibido...
A stock ContinuarConexao(playerid) й assim:
O compilador nгo acusa nenhum erro, e ao meu olhar estб tudo certo...
Mas quando o jogador se conecta, a imagem de fundo aparece, a bendita mъsica й executada.... aparece a mensgaem "CARREGANDO...", aн depois do tempo determinado no timer, ele executa a stock. Mas, nada acontece! Й como se a stock nгo funcionasse com o timer... Nгo aparece nenhuma dialog, e se o jogador estiver com bad nick nem й expulso. Naaaaada acontece!
Consegui fazer com que a mъsica fosse executada junto com o cуdigo, mas ao mesmo tempo fiz a outra metade do cуdigo parar de funcionar ¬¬
Me ajude?
A public OnPlayerConnect era assim:
pawn Код:
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, CriarImagemLogin); //Aqui cria-se uma imagem de fundo aleatуria
new RandonMusicasL = random(sizeof(MusicasLogin)); //Aqui й escolhido um ID de mъsica aleatуrio
TocarMusica(playerid, MusicasLogin[RandonMusicasL]); //Apуs a aзгo randфmica, o ID da mъsica й enviada por aqui e й executada
new VerificarNome[24];
new VerificarLista = -1;
GetPlayerName(playerid, VerificarNome, sizeof(VerificarNome));
while(++ VerificarLista != sizeof(NomesProibidos))
{
if(!strcmp(VerificarNome, NomesProibidos[VerificarLista], true))
{
print("[SISTEMA]: Um usuбrio se logou com 'BAD NICK' e foi interceptado!");
format(String, sizeof(String), "%d1", playerid);
SetPlayerName(playerid, String);
GameTextForPlayer(playerid, "~k~~INVALID_KEY~", 100, 5);
if(IsPlayerConnected(playerid))
{
return OnPlayerConnect(playerid);
}
}
else
{
LimparChatLogin(playerid);
if(DOF2_FileExists(ArquivoJogador(playerid))) //Aqui jб й a verificaзгo se й cadastrado ou nгo.
{
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD,
"{ff0000} » {ffffff} Bem-vindo",
"\n{ff0000}»{ffffff} Olб, seja Bem-Vindo novamente!\n{ff0000}»{ffffff} Digite a sua {ff0000}senha{ffffff}:\n\n", "Entrar", "Sair");
return true;
}
else
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX,
"{ff0000} » {ffffff} Uma nova Vida...",
"\n{ff0000}»{ffffff} Estб preparado ou preparada para iniciar sua nova Vida?\n", "Continuar", "Sair");
return true;
}
}
}
return true;
}
Dessa forma aн em cima, ele funciona 100%. Mas, com o atraso na execuзгo da mъsica.
Entгo resolvi atrasar a execuзгo do cуdigo, assim, quando a mъsica for ser executada o cуdigo й executado ao mesmo tempo.
Usei um SetTimerEx em OnPlayerConnect, e ficou dessa forma:
pawn Код:
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, CriarImagemLogin); //Imagem aleatуria
new RandonMusicasL = random(sizeof(MusicasLogin)); //ID da mъsica aleatуrio
TocarMusica(playerid, MusicasLogin[RandonMusicasL]); //Executa a mъsica
GameTextForPlayer(playerid, "Carregando..", 500, 0); //Mensagem "CARREGANDO"
SetTimerEx("ContinuarConexao", 1000, 0, "o", playerid); //Executa a stock ContinuarConexao
return true;
}
Essa stock, contйm a execuзгo da verificaзгo se o usuбrio й cadastrado e se tem um nick proibido...
A stock ContinuarConexao(playerid) й assim:
pawn Код:
stock ContinuarConexao(playerid)
{
TextDrawShowForPlayer(playerid, CriarImagemLogin);
new VerificarNome[24];
new VerificarLista = -1;
GetPlayerName(playerid, VerificarNome, sizeof(VerificarNome));
while(++ VerificarLista != sizeof(NomesProibidos))
{
if(!strcmp(VerificarNome, NomesProibidos[VerificarLista], true))
{
print("[SISTEMA]: Um usuбrio se logou com 'BAD NICK' e foi interceptado!");
format(String, sizeof(String), "%d1", playerid);
SetPlayerName(playerid, String);
GameTextForPlayer(playerid, "~k~~INVALID_KEY~", 100, 5);
if(IsPlayerConnected(playerid))
{
return OnPlayerConnect(playerid);
}
}
else
{
LimparChatLogin(playerid);
if(DOF2_FileExists(ArquivoJogador(playerid)))
{
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_PASSWORD,
"{ff0000} » {ffffff} Bem-vindo",
"\n{ff0000}»{ffffff} Olб, seja Bem-Vindo novamente!\n{ff0000}»{ffffff} Digite a sua {ff0000}senha{ffffff}:\n\n", "Entrar", "Sair");
return true;
}
else
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX,
"{ff0000} » {ffffff} Uma nova Vida...",
"\n{ff0000}»{ffffff} Estб preparado ou preparada para iniciar sua nova Vida?\n", "Continuar", "Sair");
return true;
}
return true;
}
}
return true;
}
Mas quando o jogador se conecta, a imagem de fundo aparece, a bendita mъsica й executada.... aparece a mensgaem "CARREGANDO...", aн depois do tempo determinado no timer, ele executa a stock. Mas, nada acontece! Й como se a stock nгo funcionasse com o timer... Nгo aparece nenhuma dialog, e se o jogador estiver com bad nick nem й expulso. Naaaaada acontece!
Consegui fazer com que a mъsica fosse executada junto com o cуdigo, mas ao mesmo tempo fiz a outra metade do cуdigo parar de funcionar ¬¬
Me ajude?