Problema, lag masivo.
#1

Hola, anuncio que mi server sufre un lag masivo de repente, se que me dirбn: " Optimiza ", pues tenнa el GM en strcmp y lo pasй todo a ZCMD, Usaba dini, pero lo cambie a y_ini, uso Foreach para llamar a todos los jugadores etc, no tengo sobrecargado OnPlayerUpdate, No uso muchos timerґs individuales y tengo pocos timers globales.., їquй podrб ser?, de todas formas dejo acб el public OnPlayerUpdate y los timers.

Код:
public OnPlayerUpdate(playerid)
{
 	new Float:animX, Float:animY, Float:animZ;
	new anim = GetPlayerAnimationIndex(playerid);
	GetPlayerPos(playerid, animX, animY, animZ);
	if((anim >= 1538) && (anim <= 1542) && animZ > 5)
	{
	M(playerid, red, "SERVER: Posible cheat de AirBreak, kickeado por seguridad.");
	Kick(playerid);
	}
	new Float:Pos_x,Float:Pos_y,Float:Pos_z;
	GetPlayerVelocity(playerid,Pos_x,Pos_y,Pos_z);
	if(Pos_x <= -0.800000  || Pos_y <= -0.800000 || Pos_z <= -0.800000)
	{
	M(playerid, red, "SERVER: Posible cheat de AirBreak, kickeado por seguridad.");
	Kick(playerid);
	}
	if(IsPlayerInAnyVehicle(playerid)) {
	    new engine,lights,alarm,doors,bonnet,boot,objective;
		new veh = GetPlayerVehicleID(playerid);
		GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
		if(Fuel[veh] <= 15 && GetPVarInt(playerid, "CheckAvis") == 0)
		{
		GameTextForPlayer(playerid, "Queda poca gasolina, busca una estaciуn.", 3000, 3);
		SetPlayerCheckpoint(playerid, 1938.0389,-1773.1208,13.0801, 5.0);
		SetPVarInt(playerid, "CheckAvis", 1);
		}
		if(Fuel[veh] < 1)
		{
		SetPlayerCheckpoint(playerid, 1938.0389,-1773.1208,13.0801, 5.0);
		if(GetPVarInt(playerid, "CheckAvised2") == 0)
		{
		GameTextForPlayer(playerid, "Vehiculo sin gasolina", 3000, 3);
		SetPVarInt(playerid, "CheckAvised2", 1);
		}
		SetPVarInt(playerid, "CheckOn", 1);
		SetVehicleParamsEx(veh,0,lights,alarm,doors,bonnet,boot,objective);
		}
	    new string1[5];
		new vspeed = GetVehicleSpeed(GetPlayerVehicleID(playerid));
		format(string1, sizeof(string1), "%d", vspeed);
		TextDrawSetString(Textdraw2V[playerid], string1);
		new string2[5];
		new Gasoil = Fuel[GetPlayerVehicleID(playerid)];
		format(string2, sizeof(string2), "%d", Gasoil); // /100 ...
		TextDrawSetString(Textdraw5V[playerid], string2);
		new string3[5];
		new Float:hpcar;
		GetVehicleHealth(GetPlayerVehicleID(playerid), hpcar);
		format(string3, sizeof(string3), "%f", hpcar);
		TextDrawSetString(Textdraw8V[playerid], string3);
		if(cochesito[GetPlayerVehicleID(playerid)] == 0)
		{
		    if(hpcar <= 400.0)
 			{
	 			format(strinx, sizeof(strinx), "* %s [ El coche se ha roto. ]", NombreJugador(playerid));
	   			ProxDetector(20.0, playerid, strinx, Amarillo, Amarillo, Amarillo, Amarillo, Amarillo);
				GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
				SetVehicleParamsEx(GetPlayerVehicleID(playerid),0,lights,alarm,doors,bonnet,boot,objective);
				cochesito[GetPlayerVehicleID(playerid)] = 1;
			   	SetVehicleHealth(GetPlayerVehicleID(playerid), 400.0);
			   	cochesito[GetPlayerVehicleID(playerid)] = 1;
			}
		}
    }
    new Float:HP; GetPlayerHealth(playerid, HP);
    if(HP >= VidaUsuario[playerid]) { return 1; }
    else { VidaPlayer(playerid, HP); }
    new Float:Chaleco; GetPlayerArmour(playerid, Chaleco);
    if(Chaleco >=   ChalecoUsuario[playerid]) { return 1; }
    else { ChalecoPlayer(playerid, Chaleco); }
	return 1;
}
Йstos son los timers y sus funciones:

Код:
public OnGameModeInit()
{
 	SetTimer("ExpHour",60000,true);
 	SetTimer("VerCansancio", 50000, true);
	SetTimer("AntiCheat", 1000, true);
	SetTimer("TimerInfeccion", 1000, true);
 	SetTimer("rere",100,true);
	SetTimer("UnaVez", 5000, false);
        return 1;
}

public ExpHour()
{
	new hour,minuto,second; gettime(hour,minuto,second); 
	format(strinx, sizeof(strinx), "SERVER: Son las %d:%d0", hour, minuto);
	{
		foreach(Player, i)
		{
		    minsEXP[i]++;
			if(minuto == 0)
			{
			        if(minsEXP[i] >= 5 && Spawn[i] == 1)
			        {
						PlayerInfo[i][jExperiencia] += 1;
						PlayerPlaySound(i, 1187, 0.0, 0.0, 0.0);
						SetTimer("fuerasound",7000,false);
						PlayerInfo[i][jObjeto1] = 0; PlayerInfo[i][jObjeto18] = 0; PlayerInfo[i][jObjeto35] = 0; PlayerInfo[i][jObjeto52] = 0;
						PlayerInfo[i][jObjeto2] = 0; PlayerInfo[i][jObjeto19] = 0; PlayerInfo[i][jObjeto36] = 0; PlayerInfo[i][jObjeto53] = 0;
						PlayerInfo[i][jObjeto3] = 0; PlayerInfo[i][jObjeto20] = 0; PlayerInfo[i][jObjeto37] = 0; PlayerInfo[i][jObjeto54] = 0;
						PlayerInfo[i][jObjeto4] = 0; PlayerInfo[i][jObjeto21] = 0; PlayerInfo[i][jObjeto38] = 0; PlayerInfo[i][jObjeto55] = 0;
						PlayerInfo[i][jObjeto5] = 0; PlayerInfo[i][jObjeto22] = 0; PlayerInfo[i][jObjeto39] = 0; PlayerInfo[i][jObjeto56] = 0;
						PlayerInfo[i][jObjeto6] = 0; PlayerInfo[i][jObjeto23] = 0; PlayerInfo[i][jObjeto40] = 0; PlayerInfo[i][jObjeto57] = 0;
						PlayerInfo[i][jObjeto7] = 0; PlayerInfo[i][jObjeto24] = 0; PlayerInfo[i][jObjeto41] = 0; PlayerInfo[i][jObjeto58] = 0;
						PlayerInfo[i][jObjeto8] = 0; PlayerInfo[i][jObjeto25] = 0; PlayerInfo[i][jObjeto42] = 0; PlayerInfo[i][jObjeto59] = 0;
						PlayerInfo[i][jObjeto9] = 0; PlayerInfo[i][jObjeto26] = 0; PlayerInfo[i][jObjeto43] = 0; PlayerInfo[i][jObjeto60] = 0;
						PlayerInfo[i][jObjeto10] = 0; PlayerInfo[i][jObjeto27] = 0; PlayerInfo[i][jObjeto44] = 0; PlayerInfo[i][jObjeto61] = 0;
						PlayerInfo[i][jObjeto11] = 0; PlayerInfo[i][jObjeto28] = 0; PlayerInfo[i][jObjeto45] = 0; PlayerInfo[i][jObjeto62] = 0;
						PlayerInfo[i][jObjeto12] = 0; PlayerInfo[i][jObjeto29] = 0; PlayerInfo[i][jObjeto46] = 0; PlayerInfo[i][jObjeto63] = 0;
						PlayerInfo[i][jObjeto13] = 0; PlayerInfo[i][jObjeto30] = 0; PlayerInfo[i][jObjeto47] = 0; PlayerInfo[i][jObjeto64] = 0;
						PlayerInfo[i][jObjeto14] = 0; PlayerInfo[i][jObjeto31] = 0; PlayerInfo[i][jObjeto48] = 0; PlayerInfo[i][jObjeto65] = 0;
						PlayerInfo[i][jObjeto15] = 0; PlayerInfo[i][jObjeto32] = 0; PlayerInfo[i][jObjeto49] = 0; PlayerInfo[i][jObjeto66] = 0;
						PlayerInfo[i][jObjeto16] = 0; PlayerInfo[i][jObjeto33] = 0; PlayerInfo[i][jObjeto50] = 0; PlayerInfo[i][jObjeto67] = 0;
						PlayerInfo[i][jObjeto17] = 0; PlayerInfo[i][jObjeto34] = 0; PlayerInfo[i][jObjeto51] = 0; PlayerInfo[i][jObjeto68] = 0;
						PlayerInfo[i][jObjeto69] = 0; PlayerInfo[i][jObjeto75] = 0; PlayerInfo[i][jObjeto81] = 0; PlayerInfo[i][jObjeto87] = 0;
						PlayerInfo[i][jObjeto70] = 0; PlayerInfo[i][jObjeto76] = 0; PlayerInfo[i][jObjeto82] = 0; PlayerInfo[i][jObjeto88] = 0;
						PlayerInfo[i][jObjeto71] = 0; PlayerInfo[i][jObjeto77] = 0; PlayerInfo[i][jObjeto83] = 0; PlayerInfo[i][jObjeto89] = 0;
						PlayerInfo[i][jObjeto72] = 0; PlayerInfo[i][jObjeto78] = 0; PlayerInfo[i][jObjeto84] = 0; PlayerInfo[i][jObjeto90] = 0;
						PlayerInfo[i][jObjeto73] = 0; PlayerInfo[i][jObjeto79] = 0; PlayerInfo[i][jObjeto85] = 0; PlayerInfo[i][jObjeto91] = 0;
						PlayerInfo[i][jObjeto74] = 0; PlayerInfo[i][jObjeto80] = 0; PlayerInfo[i][jObjeto86] = 0; PlayerInfo[i][jObjeto92] = 0;
						PlayerInfo[i][jObjeto93] = 0; PlayerInfo[i][jObjeto96] = 0; PlayerInfo[i][jObjeto99] = 0; PlayerInfo[i][jObjeto102] = 0;
						PlayerInfo[i][jObjeto94] = 0; PlayerInfo[i][jObjeto97] = 0; PlayerInfo[i][jObjeto100] = 0; PlayerInfo[i][jObjeto103] = 0;
						PlayerInfo[i][jObjeto95] = 0; PlayerInfo[i][jObjeto98] = 0; PlayerInfo[i][jObjeto101] = 0; PlayerInfo[i][jObjeto104] = 0;
						PlayerInfo[i][jObjeto105] = 0; PlayerInfo[i][jObjeto106] = 0; PlayerInfo[i][jObjeto107] = 0;
						ComprobarLabel(i); SetWorldTime(hour); SetPlayerTime(i, hour, minuto);
						new ran = random(10);
						switch (ran)
						{
							case 0:{SetWeather(0);}
							case 1:{SetWeather(1);}
							case 2:{SetWeather(2);}
							case 3:{SetWeather(3);}
							case 4:{SetWeather(4);}
							case 5:{SetWeather(5);}
							case 6:{SetWeather(6);}
							case 7:{SetWeather(7);}
							case 8:{SetWeather(8);}
							case 9:{SetWeather(9);}
						}
						SendClientMessage(i, C_Blanco," "); SendClientMessage(i, C_Blanco," "); SendClientMessage(i, C_Blanco," ");
						SendClientMessage(i, C_Blanco," "); SendClientMessage(i, C_Blanco," "); SendClientMessage(i, C_Blanco," ");
						SendClientMessage(i, -1,strinx);
						SendClientMessage(i, C_Blanco,":__________________________________:");
						SendClientMessage(i, COLOR_VERDE_CLARO,"                   (-- ExpHour --)       ");
						SendClientMessage(i, COLOR_AMARILLO,"");
						SendClientMessage(i, Amarillo,"                  Experiencia [+1]");
						if(PlayerInfo[i][jHabMecanico] >= 1)
						{
							if(PlayerInfo[i][jHabMecanico] >= 10)
							{
								SendClientMessage(i, Amarillo,"                  Hab. Mecбnico [0]");
								SendClientMessage(i, Amarillo,"  Puntos de bъsqueda reestablecidos.");
								SendClientMessage(i, COLOR_AMARILLO,"");
								SendClientMessage(i, C_Blanco,":__________________________________:");
								PlayerInfo[i][jUsoHabMecanico] = 0;
								PlayerInfo[i][jHabMecanico] = 10;
								break; 
							}
						    else if(PlayerInfo[i][jUsoHabMecanico] >= 2)
						    {
						        SendClientMessage(i, Amarillo,"                 Hab. Mecбnico [+1]");
						        PlayerInfo[i][jHabMecanico] += 1;
						    }
						    else if(PlayerInfo[i][jUsoHabMecanico] <= 2)
						    {
						        if(PlayerInfo[i][jHabMecanico] >= 2)
						        {
						            SendClientMessage(i, Amarillo,"                 Hab. Mecбnico [-1]");
									PlayerInfo[i][jHabMecanico] -= 1;
		       					}
		            		}
						    else if(PlayerInfo[i][jUsoHabMecanico] <= 2)
						    {
			       				if(PlayerInfo[i][jHabMecanico] >= 1)
		            			{
		               				SendClientMessage(i, Amarillo,"                  Hab. Mecбnico [0]");
		                   		}
							}
						}
						if(PlayerInfo[i][jHabLadron] >= 1)
						{
							if(PlayerInfo[i][jHabLadron] >= 10)
							{
							    SendClientMessage(i, Amarillo,"                 Hab. Ladrуn [0]");
								SendClientMessage(i, Amarillo,"  Puntos de bъsqueda reestablecidos.");
								SendClientMessage(i, COLOR_AMARILLO,"");
								SendClientMessage(i, C_Blanco,":__________________________________:");
								PlayerInfo[i][jUsoHabLadron] = 0;
								PlayerInfo[i][jHabLadron] = 10;
								break;
							}
						    if(PlayerInfo[i][jUsoHabLadron] >= 2)
						    {
		        				SendClientMessage(i, Amarillo,"                  Hab. Ladrуn [+1]");
							    PlayerInfo[i][jHabLadron] += 1;
						    }
						    if(PlayerInfo[i][jUsoHabLadron] <= 2)
						    {
		        				if(PlayerInfo[i][jHabLadron] >= 2)
		            			{
		               				SendClientMessage(i, Amarillo,"                  Hab. Ladrуn [-1]");
									PlayerInfo[i][jHabLadron] -= 1;
		                        }
		      				}
					    	if(PlayerInfo[i][jUsoHabLadron] <= 2)
						    {
			       				if(PlayerInfo[i][jHabLadron] >= 1)
			           			{
			              			SendClientMessage(i, Amarillo,"                 Hab. Ladrуn [0]");
			                 	}
							}
		          		}
						if(PlayerInfo[i][jHabPunteria] >= 1)
						{
							if(PlayerInfo[i][jHabPunteria] >= 10)
							{
							    SendClientMessage(i, Amarillo,"                  Hab. Punterнa [0]");
								SendClientMessage(i, Amarillo,"  Puntos de bъsqueda reestablecidos.");
								SendClientMessage(i, COLOR_AMARILLO,"");
								SendClientMessage(i, C_Blanco,":__________________________________:");
								PlayerInfo[i][jUsoHabPunteria] = 0;
								PlayerInfo[i][jHabPunteria] = 10;
								break;
							}
			  				if(PlayerInfo[i][jUsoHabPunteria] >= 2)
					    	{
			       				SendClientMessage(i, Amarillo,"                  Hab. Punterнa [+1]");
						        PlayerInfo[i][jHabPunteria] += 1;
						    }
						    if(PlayerInfo[i][jUsoHabPunteria] <= 2)
						    {
			       				if(PlayerInfo[i][jHabPunteria] >= 2)
			           			{
			              			SendClientMessage(i, Amarillo,"                  Hab. Punterнa [-1]");
									PlayerInfo[i][jHabPunteria] -= 1;
			      				}
							}
			    			if(PlayerInfo[i][jUsoHabPunteria] <= 2)
						    {
			       				if(PlayerInfo[i][jHabPunteria] >= 1)
			           			{
			              			SendClientMessage(i, Amarillo,"                  Hab. Punterнa [0]");
			                 	}
							}
	                    }
	                    SendClientMessage(i, Amarillo,"  Puntos de bъsqueda reestablecidos.");
						SendClientMessage(i, C_Blanco,":__________________________________:");
	                }
	                else M(i,COLOR_NARANJA,"No recibistes el ExpHour; no tienes ni 5 minutos jugando.");
			}
		}
	}
	return 1;
}

public VerCansancio()
{
    for(new v = 0; v < MAX_VEHICLES; v++)
	{
		new engine,lights,alarm,doors,bonnet,boot,objective;
		GetVehicleParamsEx(v,engine,lights,alarm,doors,bonnet,boot,objective);
		if(engine && Fuel[v] > 0)
		{
		Fuel[v]--;
		}
	}
	foreach(Player, i)
	{
	    if(Spawn[i] == 1) {
			if(PlayerInfo[i][jFaccion] != Zombie && !IsPlayerNPC(i) && entuto[i] == 0) {
				if(PlayerInfo[i][jCansancio] == 0.0)
				{
	   				if(EstaCansado2[i] == 0.0)
	   				{
		       			M(i,COLOR_ROJO,"Has pasado mucho tiempo despierto, y ahora estбs agotado, mejor ve a dormir.");
		   				TextDrawShowForPlayer(i, Cansadot[i]); TextDrawShowForPlayer(i, Textdraw0m[i]); TextDrawShowForPlayer(i, Textdraw1m[i]);
				        TextDrawShowForPlayer(i, Textdraw2m[i]); TextDrawShowForPlayer(i, Textdraw3m[i]); TextDrawShowForPlayer(i, Textdraw4m[i]);
				        TextDrawShowForPlayer(i, TimerInfecc[i]); TextDrawShowForPlayer(i, Textdraw6m[i]); SetPlayerDrunkLevel(i, 1800000);
				        TextDrawShowForPlayer(i, Barra1[i]); TextDrawShowForPlayer(i, Barra2[i]);
	 					TextDrawShowForPlayer(i, Barra3[i]); TextDrawShowForPlayer(i, Barra4[i]);
					    EstaCansado2[i] = 1;
						return 1;
	                }
	            }
			    PlayerInfo[i][jCansancio] -= 1.0;
				if(PlayerInfo[i][jCansancio] >= 20.0 && PlayerInfo[i][jCansancio] <= 50.0)
				{
	   				if(EstaCansado[i] == 0) { M(i,COLOR_AMARILLO,"Ve a relajarte o a dormir, estбs un poco cansado."); EstaCansado[i] = 1; return 1; }
				}
				if(PlayerInfo[i][jCansancio] <= 20.0 && PlayerInfo[i][jCansancio] >= 1 && EstaCansado2[i] == 0.0)
				{
				    M(i,COLOR_ROJO,"Has pasado mucho tiempo despierto, y ahora estбs agotado, mejor ve a dormir.");
				    TextDrawShowForPlayer(i, Cansadot[i]); TextDrawShowForPlayer(i, Textdraw0m[i]); TextDrawShowForPlayer(i, Textdraw0m[i]);
			        TextDrawShowForPlayer(i, Textdraw2m[i]); TextDrawShowForPlayer(i, Textdraw3m[i]); TextDrawShowForPlayer(i, Textdraw4m[i]);
			        TextDrawShowForPlayer(i, TimerInfecc[i]); TextDrawShowForPlayer(i, Textdraw6m[i]); SetPlayerDrunkLevel(i, 1800000);
			        TextDrawShowForPlayer(i, Barra1[i]); TextDrawShowForPlayer(i, Barra2[i]);
					TextDrawShowForPlayer(i, Barra3[i]); TextDrawShowForPlayer(i, Barra4[i]);
	   				EstaCansado2[i] = 1; return 1;
				}
	        }
        }
    }
	return 1;
}

public AntiCheat()
{
 	foreach(Player, i)
	{
	    if(!IsPlayerNPC(i) && !IsPlayerInAnyVehicle(i) || IsPlayerInAnyVehicle(i) && PlayerInfo[i][jAdminXLEP] == 0 && Spawn[i] == 1 && DisableAntiCheat[i] == 1 && entuto[i] == 0 && Muerto[i] == 0)
     	{
		  	new Float:h, Float:a; GetPlayerHealth(i, h); GetPlayerArmour(i, a);
     		if(h >= 101 && PlayerInfo[i][jFaccion] != Zombie) { VidaPlayer(i,100); format(strinx, sizeof(strinx), "SERVER: Posible Cheat de vida: %s.", NombreJugadorAll(i)); SendAdminMessage(red, strinx); break; }
			if(a >= 101 && PlayerInfo[i][jFaccion] != Zombie) { ChalecoPlayer(i,100); format(strinx, sizeof(strinx), "SERVER: Posible Cheat de Chaleco: %s.", NombreJugadorAll(i)); SendAdminMessage(red, strinx); break; }
		  	if(PlayerInfo[i][jFaccion] != Zombie) {
			if(GetPlayerWeapon(i) == 18 || GetPlayerWeapon(i) == 35 || GetPlayerWeapon(i) == 36 || GetPlayerWeapon(i) == 37 || GetPlayerWeapon(i) == 38 || GetPlayerWeapon(i) == 44 || GetPlayerWeapon(i) == 39)
			{
				M(i,COLOR_ROJO,"SERVER: No se permiten cheats de armas.");
				ResetPlayerWeapons(i); Motivos[i][4] = 1; DarAdvertencia(i); break;
			}
			}
			if(GetPlayerSpecialAction(i) == 2) { Motivos[i][3] = 1; DarAdvertencia(i); break; }
  			new Float:VehicleHealth;
     		if(IsPlayerInAnyVehicle(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
		 	{
		 	    if(GetVehicleSpeed(i)> 230)
				{
				switch(GetVehicleModel(GetPlayerVehicleID(i)))
				{
				case 0,511,460,592,577,512,513,520,553,593,476,519: printf("[ID: %d] Manejando %d Con velocidad de %skm/h",i,GetVehicleModel(GetPlayerVehicleID(i)),GetVehicleSpeed(i));
				default:
				{
				Motivos[i][8] = 1; DarAdvertencia(i);
				break;
				}
				}
				}
          		GetVehicleHealth(GetPlayerVehicleID(i), VehicleHealth);
            	if(VehicleHealth > 1000.0) {
	             	Motivos[i][9] = 1; DarAdvertencia(i);
	             	break;
                }
            }
            if(PlayerInfo[i][jFaccion] == Zombie && GetPlayerWeapon(i) >= 1) { ResetPlayerWeapons(i); }
			if(GetPlayerMoney(i) >= 1) { GivePlayerMoney(i, 0); Motivos[i][0] = 1; DarAdvertencia(i); }
			new Float:HP; GetPlayerHealth(i, HP);
		    if(HP >= VidaUsuario[i]) { break; }
		    else { VidaPlayer(i, HP); }
		    new Float:armor; GetPlayerArmour(i, armor);
		    if(armor >=   ChalecoUsuario[i]) { break; }
		    else { ChalecoPlayer(i, armor); }
	 	    if(HP == VidaUsuario[i]) { }
	    	else { if(HP > VidaUsuario[i] && Spawn[i] == 1) { ReestablecerVida(i, VidaUsuario[i]); Motivos[i][1] = 1; DarAdvertencia(i); break; } }
 	    	if(armor == ChalecoUsuario[i]) { }
		    else { if(armor > ChalecoUsuario[i]) { ReestablecerChaleco(i, ChalecoUsuario[i]); Motivos[i][2] = 1; DarAdvertencia(i); break; } }
		}
	}
 	return 1;
}

public TimerInfeccion()
{
	foreach(Player, i) {
	    if(Spawn[i] == 1) {
	     	if(PlayerInfo[i][jEnJail] == 1) { PlayerInfo[i][jJail]--; }
		    if(PlayerInfo[i][jEnJail] == 1 && PlayerInfo[i][jJail] == 0) { tdesencarcelar(i); }
		    if(Spawn[i] == 1 && durmiendo[i] == 0) {
			    if(PlayerInfo[i][jControlRI] >= 0 && PlayerInfo[i][jControlRI] <= 99999) {
			        new strm[90];
			        if(PlayerInfo[i][jMordidas] == 1) { PlayerInfo[i][jControlRI] -= 1; format(strm, sizeof(strm), "Infeccion: ~p~%ds", PlayerInfo[i][jControlRI]); TextDrawSetString(TimerInfecc[i], strm); }
	             	if(PlayerInfo[i][jMordidas] == 2) { PlayerInfo[i][jControlRI] -= 2; format(strm, sizeof(strm), "Infeccion: ~p~%ds", PlayerInfo[i][jControlRI]); TextDrawSetString(TimerInfecc[i], strm); }
		            if(PlayerInfo[i][jMordidas] >= 3) { PlayerInfo[i][jControlRI] -= 3; format(strm, sizeof(strm), "Infeccion: ~p~%ds", PlayerInfo[i][jControlRI]); TextDrawSetString(TimerInfecc[i], strm); }
			    }
			    if(PlayerInfo[i][jControlRI] <= -1 && PlayerInfo[i][jMordidas] >= 1) {
			    ResetPlayerWeapons(i); PlayerInfo[i][jFaccion] = Zombie; VidaPlayer(i,200); ChalecoPlayer(i,0);
	      		if(IsPlayerAttachedObjectSlotUsed(i,9)) { RemovePlayerAttachedObject(i,9); }
	      		switch(PlayerInfo[i][jFaccion]) { case Civil: { PlayerInfo[i][jMyFacc] = 0; } case FuerzaRebelde: { PlayerInfo[i][jMyFacc] = 1; } case CMA: { PlayerInfo[i][jMyFacc] = 2; } case CIH: { PlayerInfo[i][jMyFacc] = 3; } case SAEM: { PlayerInfo[i][jMyFacc] = 4; } }
				IdiomaH[i] = 0; IdiomaZ[i] = 1; PlayerInfo[i][jMordidas] = 0; PlayerInfo[i][jControlRI] = 1; PlayerInfo[i][jFaccion] = Zombie; KillTimer(timerx[i]);
				TextDrawShowForPlayer(i, Textdraw0i[i]); TextDrawShowForPlayer(i, Textdraw1i[i]); TextDrawShowForPlayer(i, Textdraw2i[i]);
				TextDrawShowForPlayer(i, Textdraw3i[i]); TextDrawShowForPlayer(i, Textdraw4i[i]); TextDrawShowForPlayer(i, Textdraw0m[i]);
				TextDrawShowForPlayer(i, Textdraw2m[i]); TextDrawHideForPlayer(i, Textdraw3m[i]); TextDrawHideForPlayer(i, Textdraw1m[i]);
				TextDrawShowForPlayer(i, Barra1[i]); TextDrawShowForPlayer(i, Barra2[i]);
				TextDrawShowForPlayer(i, Barra3[i]); TextDrawShowForPlayer(i, Barra4[i]);
				TextDrawHideForPlayer(i, Textdraw3m[i]); TextDrawHideForPlayer(i, Textdraw4m[i]); TextDrawHideForPlayer(i, Textdraw6m[i]);
				TextDrawHideForPlayer(i, Cansadot[i]); TextDrawHideForPlayer(i, Cansadito[i]);
				M(i, COLOR_ROJO, "El tiempo de infecciуn ya terminу, estбs infectado."); KillTimer(TVenda[i]);
				new ran = random(17);
				switch (ran) {
					case 0:{SetPlayerSkin(i,77);} case 1:{SetPlayerSkin(i,78);} case 2:{SetPlayerSkin(i,79);} case 3:{SetPlayerSkin(i,132);}
					case 4:{SetPlayerSkin(i,134);} case 5:{SetPlayerSkin(i,135);} case 6:{SetPlayerSkin(i,137);} case 7:{SetPlayerSkin(i,159);}
					case 8:{SetPlayerSkin(i,160);} case 9:{SetPlayerSkin(i,162);} case 10:{SetPlayerSkin(i,168);} case 11:{SetPlayerSkin(i,200);}
					case 12:{SetPlayerSkin(i,212);} case 13:{SetPlayerSkin(i,213);} case 14:{SetPlayerSkin(i,218);} case 15:{SetPlayerSkin(i,230);} case 16:{SetPlayerSkin(i,239);}
				}
				new strm[30]; format(strm, sizeof(strm), "Infeccion: ~p~Zombie"); TextDrawSetString(TimerInfecc[i], strm); return 1;
				}
			    else {
				    if(PlayerInfo[i][jControlRI] == 0 && PlayerInfo[i][jMordidas] == 0 && PlayerInfo[i][jFaccion] != Zombie) {
				        new strm[30]; format(strm, sizeof(strm), "Infeccion: ~g~Sano"); TextDrawSetString(TimerInfecc[i], strm); TextDrawShowForPlayer(i, TimerInfecc[i]);
	                }
	                else { if(PlayerInfo[i][jFaccion] == Zombie) { new strm[22]; format(strm, sizeof(strm), "Infeccion: ~p~Zombie"); TextDrawSetString(TimerInfecc[i], strm); } }
				}
	        }
        }
    }
    return 1;
}

public rere()
{
	new Float:a, Float:h, strm[64], strv[13], strc[13], stre[16], stt[64], zone[MAX_ZONE_NAME], stringv[30];
	foreach(Player, i) {
		if(Identificado[i] == 1 && Spawn[i] == 1) {
 			if(durmiendo[i] == 1) {
			    TextDrawHideForPlayer(i, Textdraw0m[i]); TextDrawHideForPlayer(i, Textdraw1m[i]); TextDrawHideForPlayer(i, Textdraw2m[i]);
			    TextDrawHideForPlayer(i, Textdraw3m[i]); TextDrawHideForPlayer(i, Textdraw4m[i]); TextDrawHideForPlayer(i, TimerInfecc[i]);
			    TextDrawHideForPlayer(i, Textdraw6m[i]);
			    TextDrawHideForPlayer(i, Barra1[i]); TextDrawHideForPlayer(i, Barra2[i]);
 				TextDrawHideForPlayer(i, Barra3[i]); TextDrawHideForPlayer(i, Barra4[i]);
				return 1;
			}
			else TextDrawHideForPlayer(i, Cansadito[i]);
   			if(entuto[i] == 1) {
				TextDrawHideForPlayer(i, Textdraw0i[i]); TextDrawHideForPlayer(i, Textdraw1i[i]); TextDrawHideForPlayer(i, Textdraw2i[i]);
				TextDrawHideForPlayer(i, Textdraw3i[i]); TextDrawHideForPlayer(i, Textdraw4i[i]); TextDrawHideForPlayer(i, Textdraw0m[i]);
				TextDrawHideForPlayer(i, Textdraw2m[i]); TextDrawHideForPlayer(i, Textdraw3m[i]); TextDrawHideForPlayer(i, Textdraw1m[i]);
				TextDrawHideForPlayer(i, Textdraw3m[i]); TextDrawHideForPlayer(i, Textdraw4m[i]); TextDrawHideForPlayer(i, TimerInfecc[i]);
				TextDrawHideForPlayer(i, Textdraw6m[i]); TextDrawHideForPlayer(i, Cansadot[i]); TextDrawHideForPlayer(i, Cansadito[i]);
				TextDrawHideForPlayer(i, Barra1[i]); TextDrawHideForPlayer(i, Barra2[i]);
 				TextDrawHideForPlayer(i, Barra3[i]); TextDrawHideForPlayer(i, Barra4[i]);
				return 1;
			}
			GetPlayerArmour(i, a); GetPlayerHealth(i, h); format(strm, sizeof(strm), "Arma: %s", WeaponNames[GetPlayerWeapon(i)]); format(stt, sizeof(stt), "Municion: %d", GetPlayerAmmo(i));
			format(strv, sizeof(strv), "Vida: ~r~%f", h); format(strc, sizeof(strc), "Chaleco: %f", a); format(stre, sizeof(stre), "Energia: ~y~%f", PlayerInfo[i][jCansancio]);
            TextDrawSetString(Textdraw3m[i], strm); TextDrawSetString(Textdraw6m[i], stt);
            TextDrawSetString(Textdraw1m[i], strc); TextDrawSetString(Textdraw2m[i], strv); TextDrawSetString(Textdraw4m[i], stre);
			if(IsPlayerInAnyVehicle(i)) { Check(); TextDrawHideForPlayer(i, Zonas[i]); }
            else { GetPlayer2DZone(i, zone, MAX_ZONE_NAME); format(stringv,sizeof(stringv),"%s", zone); TextDrawSetString(Zonas[i], stringv); TextDrawShowForPlayer(i, Zonas[i]); }
			if(zoneint(i) >= 1 && zoneintt(i) >= 1) { TextDrawHideForPlayer(i, Zonas[i]); }
			if(a > 0) { SetPlayerAttachedObject(i, SlotObjeto, 373, 1, 0.255219, -0.012552, -0.162815, 69.963966, 27.580476, 33.800472, 0.959405, 1.000000, 1.192921 ); }
			else RemovePlayerAttachedObject(i,SlotObjeto);
		}
    }
	return 1;
}

public UnaVez()
{
for(new v = 0; v < MAX_VEHICLES; v++)
{
new lights,alarm,engine, doors,bonnet,boot,objective;
GetVehicleParamsEx(v,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(v,0,lights,alarm,doors,bonnet,boot,objective);
new ran = random(8);
switch (ran)
{
case 0:{Fuel[v] = 100;}
case 1:{Fuel[v] = 90;}
case 2:{Fuel[v] = 80;}
case 3:{Fuel[v] = 70;}
case 4:{Fuel[v] = 60;}
case 5:{Fuel[v] = 50;}
case 6:{Fuel[v] = 40;}
case 7:{Fuel[v] = 35;}
}
}
return 1;
}
Auxilio he intentado de todo pero no encuentro el problema!, йstos son los includes que uso:

Код:
#include <a_samp>
#include <foreach>
#include <mSelection>
#include <streamer>
#include <sscanf2>
#include <zcmd>
#include <YSI\y_ini>
Reply
#2

Exactamente... ...en quй parte del juego se empieza a lagguear todo?
Otra cosa es el Host y la seguridad, ya que alguien quizбs estй atacando su Sv.

Saludos.
Reply
#3

El hosting que uso es de la compaснa BBhosting (venezuela) posee antiddos y tiene excelentes pings, se lagea cada 5 mins y hay veces que va normal...
Reply
#4

tengo el mismo problema pero lo podes optimizar eliminando mapas, usando el include y_timers y note que tenes 2 timers con 1000 milisegundos. deberias pasarlo a 1 solo y quizas asi te vaya bien
Reply
#5

Tratarй lo que dices Alien, pero йsto ya es molesto D:
EDIT: їCуmo funciona y_timers?
Reply
#6

Quote:
Originally Posted by LatinZ
Посмотреть сообщение
Tratarй lo que dices Alien, pero йsto ya es molesto D:
EDIT: їCуmo funciona y_timers?
https://sampforum.blast.hk/showthread.php?tid=182948
Reply
#7

O puede ser tu Internet, pregъntales a otras personas si el ping les corre bien.
Reply
#8

A todos, me fijй que mientras actualizaba la hostname en el sa-mp se parу como por 6 segundos, tambiйn he observado no se si conocen el server pGA Zombie Mode, juguй ayer por la noche y pasa el mismo problema, se congela el servidor por 6 o 7 segundos y vuelve a la normalidad

EDIT: No entiendo mucho el topic en inglйs, me caerнa bien una simple explicaciуn en espaсol
Reply
#9

Quote:
Originally Posted by LatinZ
Посмотреть сообщение
EDIT: No entiendo mucho el topic en inglйs, me caerнa bien una simple explicaciуn en espaсol
Bueno este.

Defer; Con esta funciуn llamas los timers una vez.
Repeat; Para llamar timers pero que se repita
stop; Para detener un timer.

Код:
defer MiTimer();

timer MiTimer[milisegundos]()
{
}
OT:
Algo que me parece raro, es que hay funciones de anti-cheat en OnPlayerUpdate y tambнen en un timer aparte. їPor que mejor no usar una sola cosa?
Reply
#10

Quote:
Originally Posted by LatinZ
Посмотреть сообщение
A todos, me fijй que mientras actualizaba la hostname en el sa-mp se parу como por 6 segundos, tambiйn he observado no se si conocen el server pGA Zombie Mode, juguй ayer por la noche y pasa el mismo problema, se congela el servidor por 6 o 7 segundos y vuelve a la normalidad

EDIT: No entiendo mucho el topic en inglйs, me caerнa bien una simple explicaciуn en espaсol
їNo te has fijado si eres tu el del problema del lag?

y_timers:

y_timers para utilizarlo, tiene dos opciones:

por tareas (task) tareas por jugador (ptask)

y como siempre: timers.

їpara que son las tareas?

las tareas funcionan desde el arranque del servidor hasta su fin (hasta que lo cierres) por eso se llaman tareas. estбn siempre activas en el servidor

їcomo hago para crear una tarea?, simple

pawn Код:
task nombre_de_la_funcion[milisegundosenquesejecuta]()
{
    // tu codigo
}
un ejemplo:

pawn Код:
task MensajesAlAzar[1800000]() // la funciуn se llama MensajesAlAzar, y se ejecuta cada 30 minutos (1800000 milisegundos)
{
    new azar= random(sizeof(azar));
    SendClientMessageToAll(Naranja, MensajesAlAzar[azar]);
}
ahora, vamos con ptask

їque es ptask? es una tarea, pero a diferencia de la anterior, estб es para cada jugador.

pawn Код:
ptask MensajeCada3Seg[3000](playerid)
{
    SendClientMessage(playerid, -1, "Hola, este es una tarea (o timer si quieres llamarlo) ejecutado cada 3 segundos");
}
Timers.. їque es timers? son como las tradicionales (timers = temporizadores en Espaсol), pero a diferencia de las anteriores (task, ptask) estas tienen mas funciones (defer, repeat y stop) y usa un tag (Timer:nombre_var) pero estб no es obligatoria, es obligatoria si vas a parar el timer mediante cуdigo ej:

Haremos como un timer global (SetTimer) y usaremos repeat para que se repita, pero se eliminara una vez ejecutada y no volverб a ejecutarse)

pawn Код:
new Timer:var_funcion;

public OnGameModeInit()
{
    var_funcion = repeat nombre_funcion(); // esto hace repetir el timer segun sus milisegundos (en este caso, 10000 = 10 seg)
    // codigos
    return 1;
}

timer nombre_funcion[10000]();
{
    print(" Hola, soy un Timer que se repetirб cada 10 milisegundos, 10 segundos mejor. Pero.. mi creador me parу y no puedo seguir ejecutandome para mostrar este mensaje :(");
    stop var_funcion; // esto hace parar el timer (es igual al KillTimer)
}
ahora, te explicarй como crear un timer que se ejecute solo una vez:

usaremos defer, porque esto significa que sera llamado solo una vez.


pawn Код:
public OnGameModeInit()
{
    defer nombre_funcion(); // sera llamado cuando el gamemode se inicie. solo una vez
    // codigos
    return 1;
}

timer nombre_funcion[10000]();
{
    print("Hola, fui llamado diez segundos despuйs de que el GM iniciу, solo una vez.");
}
bien creo que ya entendistes como funciona todo.

ahora crearemos timers pero con parametros.. ( como SetTimerEx )
pawn Код:
public OnPlayerConnect(playerid)
{
    defer funcion_con_parametro(playerid); // sera llamado solo una vez.
    // codigos
    return 1;
}


timer funcion_con_parametro[2500](playerid) // el parametro es "playerid", y sera ejecutado en 2,5 seg.
{
    TogglePlayerControllable(playerid, true);
    //GameTextForPlayer(playerid, "~g~~h~Fui llamado al conectarte! Urra~r~~h~!!", 4000, 5);
}
ahora, si deseamos repetir y eliminar: (un ejemplo) (repeat y stop)

pawn Код:
new Timer:var_pj[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    var_pj[playerid] = repeat funcion_con_parametro(playerid); // sera repetitivo, pero lo eliminaremos cuando sea ejecutada por primera vez.
    // codigos
    return 1;
}


timer funcion_con_parametro[2500](playerid) // el parametro es "playerid", y sera ejecutado en 2,5 seg.
{
    TogglePlayerControllable(playerid, true);
    //GameTextForPlayer(playerid, "~g~~h~Fui llamado al conectarte! Urra~r~~h~!!", 4000, 5);
    stop var_pj[playerid];
}
puedes fijarte en el tуpico de ****** para mas informaciуn.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)