Congelamento do servidor -
nasser - 01.09.2017
Bem galera quando um player novato entra no servidor ele й obrigado a ver um tutorial a nгo ser que ele pressione espaзo, estou com um problema que quando o jogador estб no tutorial e sai do servidor o servidor simplesmente congela nгo permite mais que ninguйm entre, pensei que podia ser algumas variбveis bool (quando nгo coloca false no onplayerdisconnect isso й comum acontecer) mas jб olhei todo o cуdigo do tutorial e estб tudo correto, й um cуdigo bem grande mas queria tirar um dъvida, se eu nгo coloco o hide da textdraw no disconnect pode dar problema? ex.:
PHP код:
public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(playerid, text[playerid]);
Se nгo botar isso da problema?
Re: Congelamento do servidor -
RodrigoMSR - 01.09.2017
Loop infinito, procure por loops no cуdigo do tutorial (
for,
while).
Re: Congelamento do servidor -
nasser - 01.09.2017
Quote:
Originally Posted by RodrigoMSR
Loop infinito, procure por loops no cуdigo do tutorial (for, while).
|
Uso loop apenas para limpar o chat acredito que se o player desconectar nгo haverб algum problema .-.
Se for isso serб que dessa forma resolve? vou testar
PHP код:
if(IsPlayerConnected(playerid)) {
for(new i = 0; i != 32; i++) SendClientMessage(playerid, -1, " ");
}
@edit: nгo funcionou
Re: Congelamento do servidor -
PeterLinkson - 01.09.2017
new i = 0;
Se vocк cria uma variavel , ela automaticamente jб vem com o valor zero, sendo desnecessбrio esse " formato do C "
i != 32
Se vocк faz isso, talvez de alguma forma o
i ficar maior, e nunca terminar o loop, jб que o 32 jб passou
...
for(new i; i < 32; ++i)
------- Bom eu antes tive um problema parecido, eu desmontei meu gamemode todo pra descobrir o problema
era um loop q eu tinha feito no OnPlayerDisconnect, e por causa dele os outros HOOK nгo foram chamados
Re: Congelamento do servidor -
nasser - 01.09.2017
Quote:
Originally Posted by zLink
new i = 0;
Se vocк cria uma variavel , ela automaticamente jб vem com o valor zero, sendo desnecessбrio esse " formato do C "
i != 32
Se vocк faz isso, talvez de alguma forma o i ficar maior, e nunca terminar o loop, jб que o 32 jб passou
...
for(new i; i < 32; ++i)
------- Bom eu antes tive um problema parecido, eu desmontei meu gamemode todo pra descobrir o problema
era um loop q eu tinha feito no OnPlayerDisconnect, e por causa dele os outros HOOK nгo foram chamados
|
Mesma coisa.. o player permanece conectado mesmo saindo e o servidor trava, e isso tem acontecido apуs adicionar esse ajuda aos novatos
Re: Congelamento do servidor -
RodrigoMSR - 01.09.2017
Sу tem esse loop? E dentro das funзхes que sгo chamadas na callback?
Provavelmente o problema estб na funзгo
IntroNovatos.
Re: Congelamento do servidor -
nasser - 01.09.2017
Ixi lembrei que estou usando um Switch, sу que assim acredito que ele nгo й...
PHP код:
forward IntroNovatos(playerid);
public IntroNovatos(playerid)
{
PlayerTextDrawShow(playerid, intronot[playerid]);
PlayerTextDrawSetString(playerid, intronot[playerid],
"ASSISTENTE DE AJUDA AOS NOVATOS..~n~~w~Seja Bem Vindo ao servidor, antes de voce comecar a jogar leia atentamente:~n~O nosso servidor e Deathmatch (DM) ou seja MATA-MATA~n~seu objetivo e matar ou sera morto~n~crie um cla no servidor e recrute seus amigos e crie aliados");
SetTimerEx("IntroNovatos2", 15000, false, "i", playerid);
return 1;
}
Re: Congelamento do servidor -
RodrigoMSR - 01.09.2017
Veja a funзгo IntroNovatos2.
Se o switch possuir cases altos demais pode congelar por um tempo.
Re: Congelamento do servidor -
nasser - 01.09.2017
Quote:
Originally Posted by RodrigoMSR
Veja a funзгo IntroNovatos2.
Se o switch possuir cases altos demais pode congelar por um tempo.
|
ele congela de vez e possui 18 case, mas tambйm no Wiki nгo diz que hб um limite..
e um IntroNovato chama o outro a cada 15 segundos para mudar o texto e o local atй o IntroNovato7 onde encerra tudo.
@edit: diminui os cases atй 4 cases para um teste rбpido e mesmo assim o servidor volta a travar
Os cases estгo dentro do
PHP код:
public OnPlayerFinishInterpolateCamera(playerid, type)
e esse mйtodo й chamado assim:
PHP код:
SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 0);
e o switch :
ficando assim:
PHP код:
public OnPlayerFinishInterpolateCamera(playerid, type)
{
switch(type)
{
case 0:
{
...
Re: Congelamento do servidor -
nasser - 01.09.2017
Sу para deixar um FeedBack aqui foi resolvido o problema, no meu loop envйs de usar:
PHP код:
for(new i = 0; i != 32; i++) SendClientMessage(playerid, -1, " ");
Eu fiz assim:
PHP код:
for(new I = 0; I < MAX_PLAYERS; I ++) SendClientMessage(playerid, -1, " ");