[Tutorial] Como crear el interior de algun vehiculo o avion
#1

est tutorial sriv para crear un interior xD comenzamos:

1. primero tnemos q poner la variable para q identifiq q el jugador esta en el interior del coche:

Код:
new EnBus[MAX_PLAYERS];
2. primero vamos a crear el interior del coche (para crearlo c pued con mta y es cmo crear cualkkier mapa solo q usando interiores adecuados), ej de un fs de bus echo por mi:

Код:
public OnFilterScriptInit()
{
	CreateObject(18007, 1792.196533, -2255.970459, -7.175301, 0.000000, 0.000000, 0.000000); //
	CreateObject(1523, 1787.670532, -2258.713623, -9.304996, 0.000000, 0.000000, 0.000000); //
	CreateObject(2291, 1799.160400, -2256.206787, -9.293932, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2291, 1799.128540, -2257.231201, -9.293932, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2291, 1796.727295, -2256.428467, -9.172997, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2291, 1796.717407, -2257.417725, -9.153989, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2291, 1794.400269, -2256.129639, -9.292213, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2291, 1794.429810, -2257.118896, -9.266294, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2291, 1791.975708, -2256.217285, -9.293932, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2291, 1791.959839, -2257.283936, -9.293932, 0.000000, 0.000000, -89.999981276); //
	CreateObject(1495, 1798.796387, -2259.153076, -9.298645, 0.000000, 0.000000, -89.999981276); //
	CreateObject(2366, 1783.632568, -2257.529785, -8.241543, 0.000000, 77.3493023427, -3.66973738203); //
	CreateObject(2343, 1786.216309, -2257.381836, -8.709729, 0.000000, 0.000000, 179.999962552); //
	return 1;
}
3. luego nos vamos al calback public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
y acemos esto:

Код:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	if (ispassenger)
	{
		if (GetVehicleModel(vehicleid) == 437)
		{
			EnBus[playerid]=vehicleid;
			SetPlayerPos(playerid, 1797.8512,-2259.9136,-8.2925);
			SetPlayerFacingAngle(playerid, 0);
			SetCameraBehindPlayer(playerid);
			SetPlayerInterior(playerid, 0);
		}
	}
	return 1;
}
- ahora les explico, el GetVehicleModel es para definir el modelo del vehiculo en est caso es 437 porq es la id o el modelo del bus

- el EnBus el SetPlayerPos es para teletransportarse al interior q hicieron

- el SetPlayerInterior es para cambiar el interior del coche, ak lo djammos en 0 porq no ahy interior definido, (el dl shamal es 1 porq el interior ya esta diseсado)

4. ahora nos vamos a OnPlayerKeyStateChange

Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if (newkeys == 16)
	{
		if(EnBus[playerid] > 0)
		{
			new Float:X,Float:Y,Float:Z;
			GetVehiclePos(EnBus[playerid], X, Y, Z);
			SetPlayerPos(playerid, X+4, Y, Z);
			SetPlayerInterior(playerid, 0);
			EnBus[playerid]=0;
		}
	}
	return 1;
}
- ahora el if (newkeys == 16) define la tcla Enter q es para salir dl bus
- el if(EnBus[playerid] > 0) es para definir q ya salimos del bus
-El resto ya espara salir al lado del bus

5. ahora nos vamos a OnPlayerDeath

Код:
public OnVehicleDeath(vehicleid)
{
	if(GetVehicleModel(vehicleid) == 437)
  {
  	for(new i=0; i<MAX_PLAYERS; i++)
		{
			if(EnBus[i] != 0)
    	{
				SetPlayerHealth(i, 0);
				SendClientMessage(i, COLOR_RED, "El coche se ha explotado y todos los pasajeros han muerto");
			}
		}
	}
  return 1;
}
-eso es para q cuando el bus explote tdos los pasajeros mueran

6. y por ultimo nos vamos a OnPlayerDisconnect y a OnPlayerDeath
Код:
public OnPlayerDisconnect(playerid, reason)
{
	EnBus[playerid] = 0;
	return 1;
}
Код:
public OnPlayerDeath(playerid, killerid, reason)
{
	EnBus[playerid] = 0;
	return 1;
}
- esto es para por si t mueres q apare<ca q salist del bus

eso es tdo espero q les sriva, esta probado y tdo.....
Reply
#2

esta bastante bien explicado, y el tuto a muchos seguramente les va a ser util o los va a inspirar.
Reply
#3

grasias amigo es lo que estaba buscando +rep
Reply
#4

Muy bueno, sуlo recomiendo usar OnPlayerStateChange en vez de OnPlayerEnterVehicle.
Reply
#5

El tutorial estб bastante bien, solo te voy a dar un consejo para dar el remate final. Te aconsejo que cambies las etiquetas de codigo y que lo pongas asн:

De esta manera te quedarнa asн:

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if (newkeys == 16)
    {
        if(EnBus[playerid] > 0)
        {
            new Float:X,Float:Y,Float:Z;
            GetVehiclePos(EnBus[playerid], X, Y, Z);
            SetPlayerPos(playerid, X+4, Y, Z);
            SetPlayerInterior(playerid, 0);
            EnBus[playerid]=0;
        }
    }
    return 1;
}
Saludos,
Reply
#6

siempre me surge una duda con los interiores de los vehнculos , ejemplo en mi server hay dos bus, en ese caso por mas que el player entre a uno u otro se irнa al mismo interior? cuando quiera salir en que bus saldria?
Reply
#7

Quote:
Originally Posted by itsfree
Посмотреть сообщение
siempre me surge una duda con los interiores de los vehнculos , ejemplo en mi server hay dos bus, en ese caso por mas que el player entre a uno u otro se irнa al mismo interior? cuando quiera salir en que bus saldria?
Si el sistema esta scripteado correctamente, serian interiores diferentes y al salir del mismo, regresaria al vehiculo correspondiente.

Sugerencias:
#Guardar la id del vehiculo al cual el jugador subio y luego utilizar la misma para localizar el vehiculo cuando este salga del interior.
#Utilizar mundos virtuales diferentes para cada vehiculo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)