SA-MP Forums Archive
[Ayuda] Con Vehiculos Old School v2 - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Ayuda] Con Vehiculos Old School v2 (/showthread.php?tid=425775)



[Ayuda] Con Vehiculos Old School v2 - Caja_negra - 26.03.2013

Hola buenas, necesito ayuda con los coches del gamemode Old School v.2, veran mi problema esque el ultimo coche que se compra en el catalogo no se guarda la posicion al reiniciar servidor.
Los demas coches si, quisiera saber si alguien tiene alguna solucion o conoce alguna manera de areglarlo



Gracias.


Respuesta: [Ayuda] Con Vehiculos Old School v2 - PolloMC - 26.03.2013

el ultimo vehiculo te refieres al ultimo coche comprado o al ultimo en la lista de coches comprables?


Respuesta: [Ayuda] Con Vehiculos Old School v2 - Caja_negra - 26.03.2013

al ultimo coche comprado


Respuesta: [Ayuda] Con Vehiculos Old School v2 - PolloMC - 26.03.2013

pon el comando de /comprarveh asi veo como lo tienes puesto

edito: que gm usas? el de OSRP u otro?


Re: [Ayuda] Con Vehiculos Old School v2 - MrKaiser - 27.03.2013

Yo tenнa el mismo problema con el GM, no se guardaban bien las posiciones de los vehнculos (Me acuerdo muy poco). Lo solucionй modificando la funciуn que hace la consulta a la base de datos, que estaba mal. Creo que la funciуn es SaveCar


Respuesta: [Ayuda] Con Vehiculos Old School v2 - PolloMC - 27.03.2013

prueba a poner esto en el comando de compra, definiendo el vehiculo como cocheid

pawn Код:
CarInfo[cocheid][cId] = cocheid;
CarInfo[cocheid][cModel] = datacar[tmpcar][dcIDModel];
CarInfo[cocheid][cLocationx] = Concesionarios[Conce][ctX];
CarInfo[cocheid][cLocationy] = Concesionarios[Conce][ctY];
CarInfo[cocheid][cLocationz] = Concesionarios[Conce][ctZ];
CarInfo[cocheid][cAngle] = 90.0;
CarInfo[cocheid][cColorOne] = color1;
CarInfo[cocheid][cColorTwo] = color2;
CarInfo[cocheid][cOwner] = sendername;
CarInfo[cocheid][cDescription] = cochenombre;
CarInfo[cocheid][cValue] = datacar[tmpcar][dcPrecio];
CarInfo[cocheid][cLicense] = 1;
CarInfo[cocheid][cOwned] = 1;
CarInfo[cocheid][cLock] = 0;
PD: algunos valores como description aparecen bug porque no se como arreglarlos


Respuesta: [Ayuda] Con Vehiculos Old School v2 - Caja_negra - 27.03.2013

Quote:
Originally Posted by PolloMC
Посмотреть сообщение
pon el comando de /comprarveh asi veo como lo tienes puesto

edito: que gm usas? el de OSRP u otro?
Utilizo Old School v.2

Comando: Comprarveh

Код:
if (strcmp("/comprarveh", cmd, true) == 0)
	{
	    cmd = strtokex(cmdtext,idx);
	    if (!strlen(cmd))
	    {
	        SendClientMessage(playerid, Blanco, "USO: /comprarveh [VehiculoID] [Color1] [Color2]");
	        return 1;
		}
		
		if(TimerConce == 1) { SendClientMessage(playerid, Rojo, "* Acaban de comprar un coche, espera mientras se guardan los datos..."); return 1; }
				
		if (EnCatalogoVeh[playerid] != NOEXISTE) { SendClientMessage(playerid, Rojo, "* Sal del catбlogo para comprar el vehiculo. (ENTER)"); return 1; }
		
		GetPlayerPos(playerid, PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
		SetPlayerFacingAngle(playerid, 212.2497);
		SetCameraBehindPlayer(playerid);

		new tmpcar;
		tmpcar = strval(cmd);

		if ((PlayerInfo[playerid][pMember] == datacar[tmpcar][dcComprador])
				|| (datacar[tmpcar][dcMember] == 0))
		{
			if(datacar[tmpcar][dcIDModel] == 525)
			{
				if(PlayerInfo[playerid][pHabilidadMecanico] < 20)
				{
					SendClientMessage(playerid, Rojo, "* No tienes suficiente experiencia para conducir este tipo de vehiculos.");
					return 1;
				}
			}
			
			if(datacar[tmpcar][dcNivel] > GetPlayerLevel(playerid))
			{
				SendClientMessage(playerid, Rojo, "* Nivel insuficiente!");
                return 1;
			}
			
			if(PlayerInfo[playerid][pPCarKey][0] != NOEXISTE && PlayerInfo[playerid][pPCarKey][1] != NOEXISTE && PlayerInfo[playerid][pPCarKey][2] != NOEXISTE 
				&& PlayerInfo[playerid][pPCarKey][3] != NOEXISTE && PlayerInfo[playerid][pPCarKey][4] != NOEXISTE)
			{
				SendClientMessage(playerid, Naranja, "* Ya tienes todos los slots de llaves propias ocupados!");	
				return 1;
			}
				
			if(datacar[tmpcar][dcConcesionario] == GetPlayerConcesionario(playerid))
			{
				new Conce = GetPlayerConcesionarioEx(playerid);
				for(new i=0; i < TotalVeh; i++)
				{
					if(VehicleToPoint(10.0, i, Concesionarios[Conce][ctX], Concesionarios[Conce][ctY], Concesionarios[Conce][ctZ]))
					{
						SendClientMessage(playerid, Rojo, "* Hay un vehнculo en el punto de entrega, imposible entregar.");
	        			return 1;
					}
				}
			}
			else
			{
				SendClientMessage(playerid, Rojo, "* No disponemos de ese modelo, deberбs buscar en otro concesionario.");
	        	return 1;
			}
				
			if (SafeGetPlayerMoney(playerid) < datacar[tmpcar][dcPrecio])
			{
				SendClientMessage(playerid, Rojo, "* No llevas dinero suficiente. Vuelve en otro momento");
				return 1;
			}
			tmp = strtokex(cmdtext, idx);
			if(!strlen(tmp))
			{
			    SendClientMessage(playerid, Blanco, "USO: /comprarveh [VehiculoID] [Color1] [Color2]");
			    return 1;
			}
			new color1;
			color1 = strval(tmp);
			tmp = strtokex(cmdtext, idx);
			if(!strlen(tmp))
			{
			    SendClientMessage(playerid, Blanco, "USO: /comprarveh [VehiculoID] [Color1] [Color2]");
			    return 1;
			}

			new color2;
			color2 = strval(tmp);
			for(new i; i < MAX_PROPIOS; i++)
			{
				if(PlayerInfo[playerid][pPCarKey][i] == NOEXISTE)
				{
					PlayerInfo[playerid][pPCarKey][i] = CodigoLlave;
					break;
				}
			}

			SendClientMessage(playerid, Verde, "* Has comprado un nuevo vehнculo.");
			SendClientMessage(playerid, Amarillo, "* El vendedor te ha entregado las llaves (mira en /stats)");
			new Conce = datacar[tmpcar][dcConcesionario]-1;
			CreateLLLCar (playerid, tmpcar, Concesionarios[Conce][ctX], Concesionarios[Conce][ctY], Concesionarios[Conce][ctZ], 90.0, color1,color2); //autos
			SafeGivePlayerMoney(playerid, - datacar[tmpcar][dcPrecio]);
			TimerConce = 1;

			SetTimerEx("ResetearTimerConce",10000,0,"");
			SaveValues(playerid, "Coches");
			SaveValues(playerid, "CochesPrestados");
		}
		else
		{
		    SendClientMessage(playerid, Rojo, "* No puedes comprar este tipo de vehiculo");
		}
		return 1;
	}



Respuesta: [Ayuda] Con Vehiculos Old School v2 - PolloMC - 27.03.2013

pues la verdad que ni idea, yo pensaba que habias pasado el catalogo de OSRP a un GM mas sencillo, pero de OSRP no entiendo casi nada, lo siento


Respuesta: [Ayuda] Con Vehiculos Old School v2 - MemoX - 27.03.2013

Hola, mira yo tambiйn pase por eso en OSRP v2 y lo que hice fue lo siguiente , no sй si sera lo mбs optimizado pero bueno me funciona.. debes ir a coches.inc y reemplazar las siguientes funciones

pawn Код:
Vehicle_OnPlayerExitVehicle(playerid, vehicleid)
{
    #pragma unused vehicleid
    new tmpcar;
    tmpcar = GetPlayerVehicle(playerid);
    CarInfo[tmpcar][cFixPos] = 1;
   
    TogglePlayerControllable (playerid, 1);
   
    if (CarInfo[tmpcar][cGPS] > -1  && GetPlayerVehicleSeat(playerid)==0)
    {
        new Float:X,Float:Y,Float:Z;
        GetVehiclePos(CarInfo[tmpcar][cId],X,Y,Z);
        SetPlayerMarkerForPlayer(CarInfo[tmpcar][cGPS], playerid, 0xFFFFFF00);
        SetPlayerCheckpoint(CarInfo[tmpcar][cGPS],X,Y,Z,8.0);
        PlayerInfo[CarInfo[tmpcar][cGPS]][pCheckpoint]=31;
    }
    FixVPos(tmpcar);
    return 1;
}

y luego

pawn Код:
forward FixVPos(tmpcar);
public FixVPos(tmpcar)
{
    if(CarInfo[tmpcar][cUsos] == 0 && !(strcmp(CarInfo[tmpcar][cOwner], "autoescuela", true) == 0))
    {
        print("Es un coche de civil, saquemos las coordenadas");
        GetVehiclePos(CarInfo[tmpcar][cId], CarInfo[tmpcar][cLocationx], CarInfo[tmpcar][cLocationy], CarInfo[tmpcar][cLocationz]);
        GetVehicleZAngle(CarInfo[tmpcar][cId], CarInfo[tmpcar][cAngle]);
        SaveCar(tmpcar);
        new sql[256];
        GetVehiclePos(CarInfo[tmpcar][cId],CarInfo[tmpcar][cLocationx],CarInfo[tmpcar][cLocationy],CarInfo[tmpcar][cLocationz]);
        GetVehicleZAngle(CarInfo[tmpcar][cId], CarInfo[tmpcar][cAngle]);
        format(sql, sizeof(sql), "UPDATE cars SET X=%f,Y=%f,Z=%f,A=%f,Vw=%d,Interior=%d WHERE id = %d",
        CarInfo[tmpcar][cLocationx],
        CarInfo[tmpcar][cLocationy],
        CarInfo[tmpcar][cLocationz],
        CarInfo[tmpcar][cAngle],
        CarInfo[tmpcar][cVw],
        CarInfo[tmpcar][cInt],
        CarInfo[tmpcar][cSQLID]);
        mysql_query(sql);
    }
    else
    {
        //print("No es un coche de civil, saquemos las coordenadas temporales");
        GetVehiclePos(CarInfo[tmpcar][cId], CarInfo[tmpcar][cTmpx], CarInfo[tmpcar][cTmpy], CarInfo[tmpcar][cTmpz]);
        GetVehicleZAngle(CarInfo[tmpcar][cId], CarInfo[tmpcar][cTmpa]);
    }
    CarInfo[tmpcar][cFixPos] = 0;
    return 1;
}
Bueno asi lo tengo actualmente en mi servidor online y 0 drama, un saludo y espero que te haya servido


Respuesta: [Ayuda] Con Vehiculos Old School v2 - Caja_negra - 28.03.2013

Quote:
Originally Posted by MemoX
Посмотреть сообщение
Hola, mira yo tambiйn pase por eso en OSRP v2 y lo que hice fue lo siguiente , no sй si sera lo mбs optimizado pero bueno me funciona.. debes ir a coches.inc y reemplazar las siguientes funciones

pawn Код:
Vehicle_OnPlayerExitVehicle(playerid, vehicleid)
{
    #pragma unused vehicleid
    new tmpcar;
    tmpcar = GetPlayerVehicle(playerid);
    CarInfo[tmpcar][cFixPos] = 1;
   
    TogglePlayerControllable (playerid, 1);
   
    if (CarInfo[tmpcar][cGPS] > -1  && GetPlayerVehicleSeat(playerid)==0)
    {
        new Float:X,Float:Y,Float:Z;
        GetVehiclePos(CarInfo[tmpcar][cId],X,Y,Z);
        SetPlayerMarkerForPlayer(CarInfo[tmpcar][cGPS], playerid, 0xFFFFFF00);
        SetPlayerCheckpoint(CarInfo[tmpcar][cGPS],X,Y,Z,8.0);
        PlayerInfo[CarInfo[tmpcar][cGPS]][pCheckpoint]=31;
    }
    FixVPos(tmpcar);
    return 1;
}

y luego

pawn Код:
forward FixVPos(tmpcar);
public FixVPos(tmpcar)
{
    if(CarInfo[tmpcar][cUsos] == 0 && !(strcmp(CarInfo[tmpcar][cOwner], "autoescuela", true) == 0))
    {
        print("Es un coche de civil, saquemos las coordenadas");
        GetVehiclePos(CarInfo[tmpcar][cId], CarInfo[tmpcar][cLocationx], CarInfo[tmpcar][cLocationy], CarInfo[tmpcar][cLocationz]);
        GetVehicleZAngle(CarInfo[tmpcar][cId], CarInfo[tmpcar][cAngle]);
        SaveCar(tmpcar);
        new sql[256];
        GetVehiclePos(CarInfo[tmpcar][cId],CarInfo[tmpcar][cLocationx],CarInfo[tmpcar][cLocationy],CarInfo[tmpcar][cLocationz]);
        GetVehicleZAngle(CarInfo[tmpcar][cId], CarInfo[tmpcar][cAngle]);
        format(sql, sizeof(sql), "UPDATE cars SET X=%f,Y=%f,Z=%f,A=%f,Vw=%d,Interior=%d WHERE id = %d",
        CarInfo[tmpcar][cLocationx],
        CarInfo[tmpcar][cLocationy],
        CarInfo[tmpcar][cLocationz],
        CarInfo[tmpcar][cAngle],
        CarInfo[tmpcar][cVw],
        CarInfo[tmpcar][cInt],
        CarInfo[tmpcar][cSQLID]);
        mysql_query(sql);
    }
    else
    {
        //print("No es un coche de civil, saquemos las coordenadas temporales");
        GetVehiclePos(CarInfo[tmpcar][cId], CarInfo[tmpcar][cTmpx], CarInfo[tmpcar][cTmpy], CarInfo[tmpcar][cTmpz]);
        GetVehicleZAngle(CarInfo[tmpcar][cId], CarInfo[tmpcar][cTmpa]);
    }
    CarInfo[tmpcar][cFixPos] = 0;
    return 1;
}
Bueno asi lo tengo actualmente en mi servidor online y 0 drama, un saludo y espero que te haya servido
Muchas gracias Memox, me ha funcionado tu mйtodo, eres un crack, cuando tenga 50 mensajes te doy rep+, te la has ganado socio.

Solucionado.