[Pedido] Player resetar veiculos da sua propria casa
#1

Olб, queria saber como posso fazer um sistema para o jogador respawnar os veнculos da sua casa.

Seria igual o comando de estacionar um veнculo na casa sу que com a funзгo de resetar. Vou estб deixando o comando de estacionar o veнculo.

Код:
COMMAND:estacionar(playerid, params[])
{
	new Float:x, Float:y, Float:z, Float:rot, vid, HouseID, Msg[9000];
	new engine,lights,alarm,doors,bonnet,boot,objective;
	SendAdminText(playerid, "/estacionar", params);
    if(PlayerInfo[playerid][NoEvento] == 1) return SendClientMessage(playerid, -1, "{ff0000}Vocк estб no evento!");
	if (APlayerData[playerid][LoggedIn] == true)
	{
		if (GetPlayerVehicleSeat(playerid) == 0)
		{
			vid = GetPlayerVehicleID(playerid);
			HouseID = AVehicleData[vid][BelongsToHouse];
			if ((AVehicleData[vid][Owned] == true) && (HouseID != 0))
			{
				if (IsPlayerInRangeOfPoint(playerid, ParkRange, AHouseData[HouseID][HouseX], AHouseData[HouseID][HouseY], AHouseData[HouseID][HouseZ]))
				{
					GetVehiclePos(vid, x, y, z);
					GetVehicleZAngle(vid, rot);
					AVehicleData[vid][SpawnX] = x;
					AVehicleData[vid][SpawnY] = y;
					AVehicleData[vid][SpawnZ] = z;
					AVehicleData[vid][SpawnRot] = rot;
					for (new i; i < MAX_HOUSESPERPLAYER; i++)
					{
					    HouseID = APlayerData[playerid][Houses][i];
						for (new CarSlot; CarSlot < 10; CarSlot++)
						{
						    if (AHouseData[HouseID][VehicleIDs][CarSlot] == vid)
						    {
			                    House_ReplaceVehicle(HouseID, CarSlot);
			                    PutPlayerInVehicle(playerid, AHouseData[HouseID][VehicleIDs][CarSlot], 0);
								GetVehicleParamsEx(AHouseData[HouseID][VehicleIDs][CarSlot], engine, lights, alarm, doors, bonnet, boot, objective);
								SetVehicleParamsEx(AHouseData[HouseID][VehicleIDs][CarSlot], 1, lights, alarm, doors, bonnet, boot, objective);
			                    break;
							}
						}
					}

                	for (new i; i < MAX_PLAYERS; i++)
                	{
                        if (APlayerData[i][PlayerLevel] > 2)
                    	{
                    	    format(Msg, 9000, "{00FFCC}%s (id: %i) estacionou o seu veiculo %s em %s", rNome(playerid), playerid, Vehicles[GetVehicleModel(GetPlayerVehicleID(playerid))-400], ReturnPlayerZone(playerid));
                    	    SendClientMessage(i, 0xFFFFFFFF, Msg);
                        }
                    }
                    format(Msg, 128, "%s (id: %i) estacionou o seu veiculo %s em %s", rNome(playerid), playerid, Vehicles[GetVehicleModel(GetPlayerVehicleID(playerid))-400], ReturnPlayerZone(playerid));
                    print(Msg);

					SendClientMessage(playerid, -1, "{00ff00}Vocк estacionou o seu veнculo.");
					PlayerFile_Save(playerid);
				}
				else
				{
				    format(Msg, 128, "{FF0000}Vocк precisa estar dentro do veнculo da sua casa para estacionб-lo!", ParkRange);
				    SendClientMessage(playerid, -1, Msg);
				}
			}
			else
			    SendClientMessage(playerid, -1, "{FF0000}Vocк nгo pode estacionar um veнculo que nгo й da sua propriedade!");
		}
		else
		    SendClientMessage(playerid, -1, "{FF0000}Vocк deve estar dentro do veнculo para estacionб-lo!");
	}
	else
	    return 0;
	return 1;
}
Reply
#2

vocк quer respawnar todos os veнculos de sua casa ? pelo que vi vocк pode ter mais de uma casa e mais de um veiculo, testa e veja de funciona.
Код:
COMMAND:estacionar(playerid, params[])
{
	new HouseID;

	for (new i; i < MAX_HOUSESPERPLAYER; i++)
	{
	    if(APlayerData[playerid][Houses][i] == 0) continue;
	    HouseID = APlayerData[playerid][Houses][i];
	    
		for(new CarSlot; CarSlot < 10; CarSlot++)
		{
			if(AHouseData[HouseID][VehicleIDs][CarSlot] == 0) continue;

			SetVehicleToRespawn(AHouseData[HouseID][VehicleIDs][CarSlot]);
			printf("Casa ID: %d  --  %d - CarSlot %d", APlayerData[playerid][Houses][i], HouseID,  AHouseData[HouseID][VehicleIDs][CarSlot]);
		}
	}
	return 1;
}
Reply
#3

Quando usei o comando, o servidor fechou e ficou assim o console.

http://imgur.com/a/429pH
Reply
#4

Код:
COMMAND:estacionar(playerid, params[])
{
	new HouseID;

	for (new i; i < MAX_HOUSESPERPLAYER; i++)
	{
	    if(APlayerData[playerid][Houses][i] == 0) continue;
	    HouseID = APlayerData[playerid][Houses][i];
	    
		for(new CarSlot; CarSlot < 10; CarSlot++)
		{
			if(AHouseData[HouseID][VehicleIDs][CarSlot] == 0) continue;

			SetVehicleToRespawn(AHouseData[HouseID][VehicleIDs][CarSlot]);
			printf("Casa ID: %d  --  %d - CarSlot %d", APlayerData[playerid][Houses][i], HouseID,  AHouseData[HouseID][VehicleIDs][CarSlot]);
		}
	}
	return 1;
}
Reply
#5

Funciono cara, muito obrigado.
Reply
#6

Eu fiz uma alteraзгo e coloquei pra enviar uma mensagem, quando ele resetar os veнculos sу que a mensagem й enviada conforme a quantidade de casas que ele tem. Teria possibilidade de colocar uma mensagem para todas as casas?

Код:
COMMAND:rvm(playerid, params[])
{
	new HouseID, String[128]; 
	for(new i; i < MAX_HOUSESPERPLAYER; i++)
	{
	    if(APlayerData[playerid][Houses][i] != 0)
	    {
			HouseID = APlayerData[playerid][Houses][i];

			for(new CarSlot; CarSlot < 10; CarSlot++)
			{
				if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
				{
					SetVehicleToRespawn(AHouseData[HouseID][VehicleIDs][CarSlot]);
                                        SendClientMessage(playerid, -1,"{ffff00}Vocк respawnou os veнculos de sua casa.");
					
				}
			}
		}
	}
	return 1;
}
Reply
#7

testa agora
pawn Код:
CMD:rvm(playerid, params[])
{
    new HouseID, String[128];
    for(new i; i < MAX_HOUSESPERPLAYER; i++)
    {
        if(APlayerData[playerid][Houses][i] != 0)
        {
            HouseID = APlayerData[playerid][Houses][i];
            for(new CarSlot; CarSlot < 10; CarSlot++)
            {
                if(AHouseData[HouseID][VehicleIDs][CarSlot] != 0)
                {
            SetVehicleToRespawn(AHouseData[HouseID][VehicleIDs][CarSlot])
                }
            }
        }
    }
    return SendClientMessage(playerid, -1,"{ffff00}Vocк respawnou todos veнculos casa.");
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)