Perde lider ao morrer / relogar
#1

Olб, tenho um gamemode RPG, e quando eu dou lider para o player ao sair, ou relogar ele perde o seu cargo ...

Preciso muito de ajuda !!!
Reply
#2

Passa o code nгo й, vai em OnPlayerDisconnect e ve o sistema de salvamento.
Reply
#3

Desculpe por mandar o Cуdigo todo ... OBS: a Arara tambйm estб sumindo do ombro do player

Код:
public OnPlayerDisconnect(playerid, reason)
{
    Acertos[playerid] = 0;
	CPorder[playerid] = 0;
    DisablePlayerCheckpoint(playerid);
	KillTimer(timer[playerid]);
	new str[124];
    GetPlayerName(playerid, str, 24);
    dini_BoolSet("Atendentes.txt", str, PlayerInfo[playerid][pHelper] == 1);
    if(PlayerInfo[playerid][pHelper] >= 1)
	{
		dini_IntSet("Atendimentos.txt", str, Atendimentos[playerid]);
	}
    if(Atendimentos[playerid] > dini_Int("Atendimentos.txt", "Recorde - Atendimentos"))
    {
        dini_IntSet("Atendimentos.txt", "Recorde - Atendimentos", Atendimentos[playerid]);
        dini_Set("Atendimentos.txt", "Recorde - Helper", str);
    }
    OnPlayerUpdate(playerid);
    OnPlayerSave(playerid);
	KillTimer(tempotd[playerid]);
 	PlayerInfo[playerid][pHelperTrabalhando] = 0;
	TextDrawHideForPlayer(playerid, Zones[playerid]);
	TextDrawDestroy(FPS[playerid]);
    new caller = Mobile[playerid];
    if(caller != 255)
	{
		if(caller < 255)
		{
			SendClientMessage(caller,  COLOR_GRAD2, "A ligaзгo caiu...");
			CellTime[caller] = 0;
			CellTime[playerid] = 0;
			Mobile[caller] = 255;
		}
		Mobile[playerid] = 255;
		CellTime[playerid] = 0;
	}
	if(WantedPoints[playerid] != 0)
	{
		PlayerInfo[playerid][pJailed] = 1;
		SetPlayerPos(playerid,264.6288,77.5742,1001.0391);
		PlayerInfo[playerid][pJailTime] = 240;
	}
	if(HireCar[playerid] > 0)
	{
		VTrancado[HireCar[playerid]] = 0;
		UnLockCar(HireCar[playerid]);
		SetVehicleToRespawn(HireCar[playerid]);
		HireCar[playerid] = 0;
	}
	if(TesteBWS[playerid] == 1)
    {
        TesteBWS[playerid] = 0;
    }
    if(TesteBWS[playerid] == 2)
    {
        TesteBWS[playerid] = 0;
    }
    if(TesteBWS[playerid] == 3)
    {
        TesteBWS[playerid] = 0;
    }
    if(TesteBWS[playerid] == 5)
    {
        TesteBWS[playerid] = 0;
    }
    if (PlayerInfo[playerid][pBarraca] != 0)
	{
		RemoveBarraca(playerid);
	}
	if (PlayerInfo[playerid][pParedao] != 0)
	{
		RemoveParedao(playerid);
	}
	if(pbr[playerid] != 0)
	{
		RemoveRoadblock(playerid);
	}
	if(gpbr[playerid] != 0)
	{
		RemoveRoadgang(playerid);
	}
	if(pbq[playerid] != 0)
	{
		RemoveRoadCones(playerid);
	}
    if(nickn[playerid] != 0)
    {
        nickn[playerid] = 0;
    }
    switch(reason)
    {
        case 0: format(gstring, sizeof(gstring), "%s saiu do server por erro de conexгo ou crash", PlayerName(playerid));
        case 1: format(gstring, sizeof(gstring), "%s saiu por vontade propria.", PlayerName(playerid));
        case 2: format(gstring, sizeof(gstring), "%s Saiu do servidor kickado ou banido", PlayerName(playerid));
    }
    //ProxDetector(100.0, playerid, gstring,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE);
    //format(gstring, 128, "%s (ID:%d) Acabou de Sair do BWS!",PlayerName(playerid),playerid);
	//SendMessageToOthersAdmins(playerid, COLOR_YELLOW, gstring);
	//gActivePlayers[playerid]--;
	//numplayers--;
	if(MudarNickAceito[playerid] == 1)
	{
		MudarNickAceito[playerid] = 0;
	}
	if(MudarSenhaAceito[playerid] == 1)
	{
	    MudarSenhaAceito[playerid] = 0;
	}
	if(ProvocoMata[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZMata);
		GangZoneShowForAll(GZMata, 0xFFFFFF96);
		GuerranoMata = 0;
		ProvocoMata[playerid] = 0;
		donomata = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraMata);
	}
	if(ProvocoHotel[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZHotel);
		GangZoneShowForAll(GZHotel, 0xFFFFFF96);
		GuerranoHotel = 0;
		ProvocoHotel[playerid] = 0;
		donohotel = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraHotel);
	}
	if(ProvocoCasarao[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZCasarao);
		GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
		GuerranoCasarao = 0;
		ProvocoCasarao[playerid] = 0;
		donocasarao = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraCasarao);
	}
	if(ProvocoEstacao[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZEstacao);
		GangZoneShowForAll(GZEstacao, 0xFFFFFF96);
		GuerranaEstacao = 0;
		ProvocoEstacao[playerid] = 0;
		donoestacao = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraEstacao);
	}
	if(ProvocoEstacao[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZEstacaoLV);
		GangZoneShowForAll(GZEstacaoLV, 0xFFFFFF96);
		GuerranaEstacaoLV = 0;
		ProvocoEstacaoLV[playerid] = 0;
		donoestacaoLV = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraEstacaoLV);
	}
	if(Provocoroda[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZroda);
		GangZoneShowForAll(GZroda, 0xFFFFFF96);
		Guerranaroda = 0;
		Provocoroda[playerid] = 0;
		donoroda = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraroda);
	}
	if(Provocopg[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZparkglen);
		GangZoneShowForAll(GZparkglen, 0xFFFFFF96);
		Guerranapg = 0;
		Provocopg[playerid] = 0;
		donopg = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerrapg);
	}
	if(ProvocoFavela[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZFavela);
		GangZoneShowForAll(GZFavela, 0xFFFFFF96);
		GuerranaFavela = 0;
		ProvocoFavela[playerid] = 0;
		donoFavela = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraFavela);
	}
	if(ProvocoSkate[playerid] == 1)
	{
		GangZoneStopFlashForAll(GZSkate);
		GangZoneShowForAll(GZSkate, 0xFFFFFF96);
		GuerranoSkate = 0;
		ProvocoSkate[playerid] = 0;
  		donoskate = 0;
		Dominando[playerid] = 0;
		KillTimer(TempoGuerraSkate);
	}
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	        if(TaxiAccepted[i] < 999)
	        {
		        if(TaxiAccepted[i] == playerid)
		        {
		            TaxiAccepted[i] = 999;
		            GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
		            TaxiCallTime[i] = 0;
		            DisablePlayerCheckpoint(i);
		        }
	        }
	        else if(CopsrondaAccepted[i] < 999)
	        {
		        if(CopsrondaAccepted[i] == playerid)
		        {
		            CopsrondaAccepted[i] = 999;
		            GameTextForPlayer(i, "~w~Policial o player~n~~r~Deixou o jogo", 5000, 1);
		            CopsrondaCallTime[i] = 0;
		            DisablePlayerCheckpoint(i);
		        }
	        }
	        else if(MedicAccepted[i] < 999)
	        {
		        if(MedicAccepted[i] == playerid)
		        {
		            MedicAccepted[i] = 999;
		            GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
		            MedicCallTime[i] = 0;
		            DisablePlayerCheckpoint(i);
		        }
	        }
	        else if(MechanicAccepted[i] < 999)
	        {
		        if(MechanicAccepted[i] == playerid)
		        {
		            MechanicAccepted[i] = 999;
		            GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
		            MechanicCallTime[i] = 0;
		            DisablePlayerCheckpoint(i);
		        }
	        }
	        else if(BusAccepted[i] < 999)
	        {
		        if(BusAccepted[i] == playerid)
		        {
		            BusAccepted[i] = 999;
		            GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
		            BusCallTime[i] = 0;
		            DisablePlayerCheckpoint(i);
		        }
	        }
	    }
	}
	if(TransportCost[playerid] > 0 && TransportDriver[playerid] < 999)
	{
	    if(IsPlayerConnected(TransportDriver[playerid]))
		{
		    TransportMoney[TransportDriver[playerid]] += TransportCost[playerid];
		    TransportTime[TransportDriver[playerid]] = 0;
		    TransportCost[TransportDriver[playerid]] = 0;
		    format(gstring, sizeof(gstring), "~w~Passageiro saiu~n~~g~ganhou R$%d",TransportCost[playerid]);
		    GameTextForPlayer(TransportDriver[playerid], gstring, 5000, 1);
		}
	}
	if(GotHit[playerid] > 0)
	{
	    if(GetChased[playerid] < 999)
	    {
	        if(IsPlayerConnected(GetChased[playerid]))
	        {
	        	SendClientMessage(GetChased[playerid], COLOR_YELLOW, "Seu contrato saiu do servidor.");
	            GoChase[GetChased[playerid]] = 999;
			}
	    }
	}
	if(PlayerPaintballing[playerid] != 0)
	{
	    PaintballPlayers --;
	}
	if(PlayerKarting[playerid] > 0 && PlayerInKart[playerid] > 0)
	{
	    KartingPlayers --;
	}
	if(PlayersChannel[playerid] < 999)
	{
		IRCInfo[PlayersChannel[playerid]][iPlayers] -= 1;
	}
	if(HireCar[playerid] != 299)
	{
		gLastDriver[HireCar[playerid]] = 300;
		VTrancado[HireCar[playerid]] = 0;
		UnLockCar(HireCar[playerid]);
	}
	if (gLastCar[playerid] > 0)
	{
		gLastDriver[gLastCar[playerid]] = 300;
		if(PlayerInfo[playerid][pPHousekey] != gLastCar[playerid]-1)
		{
			VTrancado[gLastCar[playerid]] = 0;
			UnLockCar(gLastCar[playerid]);
		}
	}
	if(PlayerBoxing[playerid] > 0)
	{
	    if(Boxer1 == playerid)
	    {
	        if(IsPlayerConnected(Boxer2))
	        {
	        	PlayerBoxing[Boxer2] = 0;
	        	SetPlayerPos(Boxer2, 765.8433,3.2924,1000.7186);
	        	SetPlayerInterior(Boxer2, 5);
	        	GameTextForPlayer(Boxer2, "~r~Luta interrompida", 5000, 1);
			}
	    }
	    else if(Boxer2 == playerid)
	    {
	        if(IsPlayerConnected(Boxer1))
	        {
	        	PlayerBoxing[Boxer1] = 0;
	        	SetPlayerPos(Boxer1, 765.8433,3.2924,1000.7186);
	        	SetPlayerInterior(Boxer1, 5);
	        	GameTextForPlayer(Boxer1, "~r~Luta interrompida", 5000, 1);
			}
	    }
	    InRing = 0;
     	RorndStarted = 0;
		Boxer1 = 255;
		Boxer2 = 255;
		TBoxer = 255;
	}
    if(TransportDuty[playerid] == 1)
	{
		TaxiDrivers -= 1;
	}
    else if(TransportDuty[playerid] == 2)
	{
		BusDrivers -= 1;
	}
	if(IsACop(playerid))
	{
	    if(EmpregoDuty[playerid] == 2) { Copsronda -= 1; }
	}
	if(PlayerInfo[playerid][pMembro] == 4 || PlayerInfo[playerid][pLider] == 4)
	{
	    if(EmpregoDuty[playerid] == 1) { Medics -= 1; }
	}
	else if(IsAMec(playerid))
	{
	    if(EmpregoDuty[playerid] == 1) { Mechanics -= 1; }
	}
	//CurrentMoney[playerid] = 0;
	BusrouteEast[playerid][0] = 0;
	BusrouteWest[playerid][0] = 0;
 	if(PlayerInfo[playerid][pAdmin] >= 1 && admhide[playerid] == 0)
	{
    	format(gstring, sizeof(gstring), "~p~%s ~n~~r~Off-Line", PlayerName(playerid));
		for(new i=0; i<MAX_PLAYERS; i++)
		{
		    if(IsPlayerConnected(i))
			{
   				GameTextForPlayer(i, gstring , 5000, 4);
			}
		}
	}
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)