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

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

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

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

Бот "Дневальный" для армии San Andreas

plakapenka

Специалист
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

Привет, форумчане.

Данный урок он больше как идея, т.к. абсолютно ничего сложного в этом нет. А для рп составляющей вполне себе интересно

Опишу суть. В армии есть человек который все время стоит возле двери казармы, отдает воинское приветствие всем кто входи в казарму, а так же кричит команды "Дежурный по роте на выход!" для прапорщиков и выше, и "Смирно!" для командира роты и выше.

Ну что, поехали?
Для начала объявим переменные, которые нам понадобятся.
C++:
new army_actor; // переменная актера дневального
new Text3D:army_actor_text = Text3D:INVALID_3DTEXT_ID; // переменная для 3-д текста над головой
//(у актеров нет чат-бабла (текста над головой когда пишешь в чат), по этому для его имитации у нас будет 3-д текст )
new army_actor_time; // это нам понадобится чтобы удалять этот 3д текст, через время
Дальше создадим самого актера, в OnGameModeInit или куда вам угодно
C++:
army_actor = CreateActor(287, 2531.4487,-1305.2017,2166.6021,95.0); // дневальный
Думаю не стоит объяснять что координаты нужно заменить на свои

Дальше, ищем пикап входа в казарму, тот который в инт перемещает, и добавляем туда следующее
C++:
army_actor_time = 5; // время в секундах текста над головой
        if(pData[playerid][pRank] => 3 && pData[playerid][pRank] < 7)
        {
            // здесь вам нужно заменить ранги на те что у вас и сами названия переменных с рангами
            // вместо 3 поставить ранг прапорщика, а вместо 7 ранг командира роты
            ProxDetector(60.0, playerid, " Дневальный кричит: Дежурный по роте на выход!",COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_FADE1,COLOR_FADE2);
            if(Text3D:army_actor_text  != Text3D:INVALID_3DTEXT_ID) DestroyDynamic3DTextLabel(army_actor_text );
            army_actor_text = CreateDynamic3DTextLabel("Дежурный по роте на выход!", 0x6495EDFF, 2531.4487,-1305.2017,2166.6021+1.2, 30.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID,1,-1);
        }
        else if(pData[playerid][pRank] =>7)
        {
            ProxDetector(60.0, playerid, " Дневальный кричит: Смирно!!!",COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_FADE1,COLOR_FADE2);
            if(Text3D:army_actor_text  != Text3D:INVALID_3DTEXT_ID) DestroyDynamic3DTextLabel(army_actor_text );
            army_actor_text = CreateDynamic3DTextLabel("Смирно!!!", 0x6495EDFF, 2531.4487,-1305.2017,2166.6021+1.2, 30.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID,1,-1);
        }
        ApplyActorAnimation(army_actor, "VENDING", "VEND_Drink_P",4.1, 0, 1, 1, 1, 1); // Анимация воинского приветсвия
Ну и в ежесекундном паблике, удаляем наш 3д текст и чистим анимацию:
C++:
if(army_actor_time)
    {
        army_actor_time --;
        if(!army_actor_time)
        {
            ClearActorAnimations(army_actor);
            DestroyDynamic3DTextLabel(army_actor_text);
            army_actor_text  = Text3D:INVALID_3DTEXT_ID;
        }
    }

Если кто-то подгонит более подходящую анимку -- обновлю. Удачи;)
 
Последнее редактирование модератором:
Сверху Снизу