Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Засунуть в багажник

Статус
В этой теме нельзя размещать новые ответы.

<BaRReT[T]>

Новичок
/putinboot [playerid] - засунуть игрока в багажник. Необходимо обоим быть в 3-х метрах от багажника любого автотранспорта обоим игрокам. (багажник должен быть открытым)
/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;
}
ps, тестировал сам на себе, т.к. нет возможности проверить с 2-х компов =(
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу