new InAndrom[MAX_PLAYERS];
new InShamal[MAX_PLAYERS];
new InNevada[MAX_PLAYERS];
//onplayerconnect
InAndrom[playerid]=0;
InShamal[playerid]=0;
InNevada[playerid]=0;
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (GetVehicleModel(vehicleid) == 592 && ispassenger == 1)
{
SetPlayerInterior(playerid,9);
SetPlayerFacingAngle(playerid,0.0);
SetPlayerPos(playerid, 315.856170,1024.496459,1949.797363);
SetCameraBehindPlayer(playerid);
InAndrom[playerid]=vehicleid;
}
if (GetVehicleModel(vehicleid) == 519 && ispassenger == 1)
{
TogglePlayerControllable(playerid, 0);
SetTimerEx("UnfreezePlayer", 3000, false, "d", playerid);
SetPlayerFacingAngle(playerid,270.0);
SetPlayerPos(playerid, 1377.7186,-3785.6904,1226.5165);
SetCameraBehindPlayer(playerid);
InShamal[playerid]=vehicleid;
}
if (GetVehicleModel(vehicleid) == 553 && ispassenger == 1)
{
TogglePlayerControllable(playerid, 0);
SetTimerEx("UnfreezePlayer", 3000, false, "d", playerid);
SetPlayerFacingAngle(playerid,15.0);
SetPlayerPos(playerid, 1777.8147,-3872.2085,1206.4860);
SetCameraBehindPlayer(playerid);
InNevada[playerid]=vehicleid;
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys & 16 && InAndrom[playerid] > 0)
{
new Float:X,Float:Y,Float:Z,Float:A;
GetVehiclePos(InAndrom[playerid],X,Y,Z);
GetVehicleZAngle(InAndrom[playerid],A);
X+=(5*floatsin(-floatsub(A,45.0),degrees)),
Y+=(5*floatcos(-floatsub(A,45.0),degrees));
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,X,Y,floatsub(Z,0.94));
SetPlayerFacingAngle(playerid,A);
SetCameraBehindPlayer(playerid);
InAndrom[playerid]=0;
}
if (newkeys & 16 && InShamal[playerid] > 0)
{
new Float:X,Float:Y,Float:Z,Float:A;
GetVehiclePos(InShamal[playerid],X,Y,Z);
GetVehicleZAngle(InShamal[playerid],A);
X+=(5*floatsin(-floatsub(A,45.0),degrees)),
Y+=(5*floatcos(-floatsub(A,45.0),degrees));
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,X,Y,floatsub(Z,0.94));
SetPlayerFacingAngle(playerid,A);
SetCameraBehindPlayer(playerid);
InShamal[playerid]=0;
}
if (newkeys & 16 && InNevada[playerid] > 0)
{
new Float:X,Float:Y,Float:Z,Float:A;
GetVehiclePos(InNevada[playerid],X,Y,Z);
GetVehicleZAngle(InNevada[playerid],A);
X+=(5*floatsin(-floatsub(A,45.0),degrees)),
Y+=(5*floatcos(-floatsub(A,45.0),degrees));
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,X,Y,floatsub(Z,0.94));
SetPlayerFacingAngle(playerid,A);
SetCameraBehindPlayer(playerid);
InNevada[playerid]=0;
}
return 1;
}
SetPlayerVirtualWorld ( playerid, vehicleid ) ;
new counter;//global
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (GetVehicleModel(vehicleid) == 592 && ispassenger == 1)
{
counter++; //decrease by one when they leave the interior
SetPlayerInterior(playerid,9);
SetPlayerVirtualWorld(playerid, counter);//*
SetPlayerFacingAngle(playerid,0.0);
SetPlayerPos(playerid, 315.856170,1024.496459,1949.797363);
SetCameraBehindPlayer(playerid);
InAndrom[playerid]=vehicleid;
}
return 1;
}
https://sampwiki.blast.hk/wiki/SetPlayerVirtualWorld
https://sampwiki.blast.hk/wiki/SetVehicleVirtualWorld Use them only players in the same virtualworld can see see each other, same for vehicles. EDIT: If you want a different virtual world for each one use an integer variable as a counter and set the world of the player/vehicle to that number. And increase it by one everytime its used. eg, pawn Код:
![]() |
new InAndrom[MAX_PLAYERS];
new InShamal[MAX_PLAYERS];
new InNevada[MAX_PLAYERS];
//onplayerconnect
InAndrom[playerid]=0;
InShamal[playerid]=0;
InNevada[playerid]=0;
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (GetVehicleModel(vehicleid) == 592 && ispassenger == 1)
{
SetPlayerInterior(playerid,9);
SetPlayerFacingAngle(playerid,0.0);
SetPlayerPos(playerid, 315.856170,1024.496459,1949.797363);
SetCameraBehindPlayer(playerid);
InAndrom[playerid]=vehicleid;
SetPlayerVirtualWorld(playerid,vehicleid);
}
else if (GetVehicleModel(vehicleid) == 519 && ispassenger == 1)
{
TogglePlayerControllable(playerid, 0);
SetTimerEx("UnfreezePlayer", 3000, false, "d", playerid);
SetPlayerFacingAngle(playerid,270.0);
SetPlayerPos(playerid, 1377.7186,-3785.6904,1226.5165);
SetCameraBehindPlayer(playerid);
InShamal[playerid]=vehicleid;
SetPlayerVirtualWorld(playerid,vehicleid);
}
else if (GetVehicleModel(vehicleid) == 553 && ispassenger == 1)
{
TogglePlayerControllable(playerid, 0);
SetTimerEx("UnfreezePlayer", 3000, false, "d", playerid);
SetPlayerFacingAngle(playerid,15.0);
SetPlayerPos(playerid, 1777.8147,-3872.2085,1206.4860);
SetCameraBehindPlayer(playerid);
InNevada[playerid]=vehicleid;
SetPlayerVirtualWorld(playerid,vehicleid);
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys & 16 && InAndrom[playerid] > 0)
{
new Float:X,Float:Y,Float:Z,Float:A;
GetVehiclePos(InAndrom[playerid],X,Y,Z);
GetVehicleZAngle(InAndrom[playerid],A);
X+=(5*floatsin(-floatsub(A,45.0),degrees)),
Y+=(5*floatcos(-floatsub(A,45.0),degrees));
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,X,Y,floatsub(Z,0.94));
SetPlayerFacingAngle(playerid,A);
SetCameraBehindPlayer(playerid);
InAndrom[playerid]=0;
SetPlayerVirtualWorld(playerid,0);
}
if (newkeys & 16 && InShamal[playerid] > 0)
{
new Float:X,Float:Y,Float:Z,Float:A;
GetVehiclePos(InShamal[playerid],X,Y,Z);
GetVehicleZAngle(InShamal[playerid],A);
X+=(5*floatsin(-floatsub(A,45.0),degrees)),
Y+=(5*floatcos(-floatsub(A,45.0),degrees));
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,X,Y,floatsub(Z,0.94));
SetPlayerFacingAngle(playerid,A);
SetCameraBehindPlayer(playerid);
InShamal[playerid]=0;
SetPlayerVirtualWorld(playerid,0);
}
if (newkeys & 16 && InNevada[playerid] > 0)
{
new Float:X,Float:Y,Float:Z,Float:A;
GetVehiclePos(InNevada[playerid],X,Y,Z);
GetVehicleZAngle(InNevada[playerid],A);
X+=(5*floatsin(-floatsub(A,45.0),degrees)),
Y+=(5*floatcos(-floatsub(A,45.0),degrees));
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,X,Y,floatsub(Z,0.94));
SetPlayerFacingAngle(playerid,A);
SetCameraBehindPlayer(playerid);
InNevada[playerid]=0;
SetPlayerVirtualWorld(playerid,0);
}
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if (GetVehicleModel(vehicleid) == 592 && ispassenger == 1)
{
new vw;
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || playerid == i)continue;
if(IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == PLAYER_STATE_PASSENGER)
{
vw = GetPlayerVirtualWorld(i);
SetPlayerVirtualWorld(playerid, vw);
SetPlayerInterior(playerid,9);
SetPlayerFacingAngle(playerid,0.0);
SetPlayerPos(playerid, 315.856170,1024.496459,1949.797363);
SetCameraBehindPlayer(playerid);
InAndrom[playerid] = vehicleid;
return 1;
}
}
counter++; //decrease by one when they leave the interior
SetPlayerInterior(playerid,9);
SetPlayerVirtualWorld(playerid, counter);
SetPlayerFacingAngle(playerid,0.0);
SetPlayerPos(playerid, 315.856170,1024.496459,1949.797363);
SetCameraBehindPlayer(playerid);
InAndrom[playerid]=vehicleid;
return 1;
}
//else if
return 1;
}
SetPlayerVirtualWorld(playerid, vehicleid);//much better method