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

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

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

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

Мануал Система скейта

BlackSTOP

Начинающий
Пользователь
Регистрация
14 Фев 2019
Сообщения
77
Лучшие ответы
1
Репутация
0
Решил выложить мою систему скейта, похожую на Arizona RP
Нужен streamer

Где нибудь вверху
PHP:
#define KEY_ACCELERATE 			(8)

new
	addskate[MAX_PLAYERS],
	SkateWait[MAX_PLAYERS],
    takeskate[MAX_PLAYERS],
    Skate[MAX_PLAYERS];
В OnPlayerConnect
PHP:
addskate[playerid] = 0;
takeskate[playerid] = 0;
В OnPlayerKeyStateChange
PHP:
if(newkeys == KEY_ACCELERATE) {
        if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, !"Нельзя использовать скейт в машине!");
		if(addskate[playerid] == 1) CreateSkate(playerid);
}
if oldkeys == KEY_ACCELERATE *then {
	if(addskate[playerid] == 2) {
			SetPlayerAttachedObject(playerid,6,19878,6,-0.055999,0.013000,0.000000,-84.099983,0.000000,-106.099998,1.000000,1.000000,1.000000);
			DestroyDynamicObject(Skate[playerid]);
			addskate[playerid] = 1;
			SkateWait[playerid] = 1;
			ApplyAnimation(playerid, !"PED", "FALL_collapse", 4.1, 0, 1, 0, 0, 0, 1);
			SetTimerEx("deleteskateb", 1150, 0, "d", playerid);
	}
}
В OnPlayerUpdate
PHP:
    if(addskate[playerid] == 2) {
	    new
			Float:X,
			Float:Y,
			Float:Z;
		GetDynamicObjectPos(Skate[playerid], X, Y, Z);
		if(!IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z)) return StopDynamicObject(Skate[playerid]);
	}
    // если не хотите, чтобы игрок поворачивал скейт, то удалите код ниже:
	new keys,lr,ud;
	GetPlayerKeys(playerid,keys,ud,lr);
	if(lr == KEY_LEFT) {
		if(addskate[playerid] == 2) {
				StopDynamicObject(Skate[playerid]);
			    new
					Float:XXZ,
					Float:XXA,
					Float:XXC,
					Float:A;
				GetPlayerPos(playerid, XXZ,XXA,XXC);
				GetPlayerFacingAngle(playerid, A);
				SetPlayerFacingAngle(playerid, A+1);
				A += 360;
				XXZ += (60 * floatsin(-A, degrees));
			    XXA += (60 * floatcos(-A, degrees));
			    SetDynamicObjectRot(Skate[playerid], 0.0, 0.0, A+270);
				MoveDynamicObject(Skate[playerid], XXZ,XXA,XXC-0.9000, 14);
		}
	}
	if(lr == KEY_RIGHT) {
		if(addskate[playerid] == 2) {
				StopDynamicObject(Skate[playerid]);
			    new
					Float:XXZ,
				 	Float:XXA,
				 	Float:XXC,
				 	Float:A;
				GetPlayerPos(playerid, XXZ,XXA,XXC);
				GetPlayerFacingAngle(playerid, A);
				SetPlayerFacingAngle(playerid, A-1);
				A += 360;
				XXZ += (60 * floatsin(-A, degrees));
			    XXA += (60 * floatcos(-A, degrees));
			    SetDynamicObjectRot(Skate[playerid], 0.0, 0.0, A+270);
				MoveDynamicObject(Skate[playerid], XXZ,XXA,XXC-0.9000, 14);
		}
	}
Вниз мода
PHP:
stock onskate(playerid)
{
	if(takeskate[playerid] == 0) return SendClientMessage(playerid, -1, "У вас нет скейта!");
	if(addskate[playerid] == 0) {
	    RemovePlayerAttachedObject(playerid, 5);
		SetPlayerAttachedObject(playerid,6,19878,6,-0.055999,0.013000,0.000000,-84.099983,0.000000,-106.099998,1.000000,1.000000,1.000000);
		SendClientMessage(playerid, 0x42B02CFF, !"Вы взяли скейт в руку, чтобы его использовать зажмите 'КЛАВИШУ ДЛЯ БЕГА'");
		addskate[playerid] = 1;
	}
	else RemovePlayerAttachedObject(playerid, 6), addskate[playerid] = 0;
	return 1;
}

stock CreateSkate(playerid)
{
	if(SkateWait[playerid] == 1) return 0;

	new
		Float:XXZ,
		Float:XXA,
		Float:XXD,
		Float:A;

    GetPlayerPos(playerid, XXZ,XXA,XXD);
    SetPlayerPos(playerid, XXZ,XXA,XXD+0.18);
    ApplyAnimation(playerid, !"CLOTHES", "CLO_POSE_LOOP", 4.1, false, false, false, true, 0, true);
    RemovePlayerAttachedObject(playerid, 6);
	GetPlayerFacingAngle(playerid, A);
	Skate[playerid] = CreateDynamicObject(19878, XXZ,XXA,XXD-0.9000, 0.000000,0.000000,A+270, -1, -1, -1, 100.0);
	Streamer_Update(playerid);
	A += 360;
	XXZ += (60 * floatsin(-A, degrees));
    XXA += (60 * floatcos(-A, degrees));
	MoveDynamicObject(Skate[playerid], XXZ,XXA,XXD-0.9000, 14);
	SkateWait[playerid] = 1;
	addskate[playerid] = 2;
	return 1;
}

forward deleteskateb(playerid);
public deleteskateb(playerid) SkateWait[playerid] = 0;

cmd:skate(playerid)
{
	onskate(playerid);
	return 1;
}
cmd:skatetake(playerid)
{
	if(takeskate[playerid] == 0) {
	    SetPlayerAttachedObject(playerid,5,19878,1,0.146999,-0.155000,-0.012000,-88.499992,-4.499999,-42.999996,0.607999,0.582000,1.000000);
	    SendClientMessage(playerid, -1, !"Вы успешно взяли скейт!");
		takeskate[playerid] = 1;
	}
	else {
        if(addskate[playerid] == 1) RemovePlayerAttachedObject(playerid, 6);
        if(addskate[playerid] == 0) RemovePlayerAttachedObject(playerid, 5);
        if(addskate[playerid] == 2) {
            DestroyDynamicObject(Skate[playerid]);
            ApplyAnimation(playerid, !"PED", "FALL_collapse", 4.1, 0, 1, 0, 0, 0, 1);
		}
	    SendClientMessage(playerid, -1, !"Вы успешно убрали скейт!");
		takeskate[playerid] = 0;
		addskate[playerid] = 0;
	}
	return 1;
}
в OnPlayerDisconnect
PHP:
if(addskate[playerid] == 2) {
        DestroyDynamicObject(Skate[playerid]);
        ApplyAnimation(playerid, !"PED", "FALL_collapse", 4.1, 0, 1, 0, 0, 0, 1);
	}
Этот скейт был создан для фана. На нем можно летать и проходить сквозь стены
Чтобы поворачивать скейтом, нужно прижимать буквы A и D, чтобы кататься прижмите ПРОБЕЛ
Надеть скейт - /skatetake | Взять скейт в руки - /skate
 
Последнее редактирование:
Сверху Снизу