<BaRReT[T]>
Новичок
/putinboot [playerid] - засунуть игрока в багажник. Необходимо обоим быть в 3-х метрах от багажника любого автотранспорта обоим игрокам. (багажник должен быть открытым)
/takeoutboot [playerid] - вытащить игрока из багажника. Необходимо быть в 3-х метрах от багажника с игроком. (багажник должен быть открытым)
/togetout - вылезти с багажника (багажник должен быть открытым)
К глобальным переменным:
Команды:
Засунуть в багажник
Вытащить с багажника
Вылезти с багажника
Функции для работы:
ps, тестировал сам на себе, т.к. нет возможности проверить с 2-х компов =(
/takeoutboot [playerid] - вытащить игрока из багажника. Необходимо быть в 3-х метрах от багажника с игроком. (багажник должен быть открытым)
/togetout - вылезти с багажника (багажник должен быть открытым)
К глобальным переменным:
HTML:
new InABoot[MAX_PLAYERS];
new InBoot[MAX_VEHICLES];
Засунуть в багажник
HTML:
CMD:putinboot(playerid,params[])
{
new tid;
if(sscanf(params,"d",tid)) return SendClientMessage(playerid,-1,"Используйте /putinboot [playerid]");
if(tid == playerid) return 1;
new Float:x,Float:y,Float:z;
new str[64];
new name[24];
new e,l,a,d,b,t,o;
GetPlayerName(playerid,name,24);
for(new i=0;i<MAX_VEHICLES;i++)
{
if(!IsALand(i) || IsABike(i) || InBoot[i] >= 0) continue;
GetCoordBootVehicle(i,x,y,z);
if(!IsPlayerInRangeOfPoint(playerid,3,x,y,z) || !IsPlayerInRangeOfPoint(tid,3,x,y,z)) continue;
GetVehicleParamsEx(i,e,l,a,d,b,t,o);
if(!b) continue;
TogglePlayerSpectating(tid,1);
PlayerSpectateVehicle(tid,i);
InABoot[tid] = i;
InBoot[i] = tid;
format(str,sizeof(str), "%s засунул(а) Вас в багажник!",name);
SendClientMessage(tid,-1,str);
break;
}
return 1;
}
HTML:
CMD:takeoutboot(playerid,params[])
{
new tid;
if(sscanf(params,"d",tid)) return SendClientMessage(playerid,-1,"Используйте /takeoutboot [playerid]");
new Float:x,Float:y,Float:z;
new str[64];
new name[24];
new e,l,a,d,b,t,o;
GetCoordBootVehicle(InABoot[tid],x,y,z);
if(!IsPlayerInRangeOfPoint(playerid,3,x,y,z) || !InABoot[tid]) return 1;
GetVehicleParamsEx(InABoot[tid],e,l,a,d,b,t,o);
if(!b) return SendClientMessage(playerid,-1,"Багажник закрыт!");
InBoot[InABoot[tid]] = -1;
InABoot[tid] = 0;
TogglePlayerSpectating(tid,0);
GetPlayerName(playerid,name,24);
format(str,sizeof(str), "%s вытащил(а) Вас из багажника!",name);
SendClientMessage(tid,-1,str);
SetPlayerPos(tid,x,y,z);
return 1;
}
HTML:
HTML:
CMD:togetout(playerid,params[])
{
new Float:x,Float:y,Float:z;
new e,l,a,d,b,t,o;
GetCoordBootVehicle(InABoot[playerid],x,y,z);
if(!InABoot[playerid]) return SendClientMessage(playerid,-1,"Вы не в багажнике!");
GetVehicleParamsEx(InABoot[playerid],e,l,a,d,b,t,o);
if(!b) return SendClientMessage(playerid,-1,"Багажник закрыт!");
InBoot[InABoot[playerid]] = -1;
InABoot[playerid] = 0;
TogglePlayerSpectating(playerid,0);
SetPlayerPos(playerid,x,y,z);
SendClientMessage(playerid,-1,"Вы вылезли из багажника!");
return 1;
}
HTML:
stock GetCoordBootVehicle(vehicleid, &Float:x, &Float:y, &Float:z)
{
new Float:angle,Float:distance;
GetVehicleModelInfo(GetVehicleModel(vehicleid), 1, x, distance, z);
distance = distance/2 + 0.1;
GetVehiclePos(vehicleid, x, y, z);
GetVehicleZAngle(vehicleid, angle);
x += (distance * floatsin(-angle+180, degrees));
y += (distance * floatcos(-angle+180, degrees));
return 1;
}
stock IsALand(vid)
{
if(!IsAPlane(vid) && !IsABoat(vid)) return 1;
return 0;
}
stock IsAPlane(vid)
{
switch(GetVehicleModel(vid))
{
case 417,425,447,460,469,476,487,488,497,511..513,519,520,548,553,563,577,592,593: return 1;
}
return 0;
}
stock IsABoat(vid)
{
switch(GetVehicleModel(vid))
{
case 472,473,493,495,484,430,453,452,446,454:return 1;
}
return 0;
}
stock IsABike(vid)
{
switch(GetVehicleModel(vid))
{
case 509,481,510,462,448,581,522,461,521,523,463,586,468,471:return 1;
}
return 0;
}
