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

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

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

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

Мануал Плавающий текст

faraday.

Специалист
Плавающий текст​

Готовое решение для тех, кто хочет украсить свой сервер такими текстами.


C++:
const MAX_MOVING_TEXT = 100;

enum e_INFO_MOVING_TEXT {
        text_object[32],
        Float:pos_X,
        Float:pos_Y,
        Float:pos_Z,
        Float:pos_rZ
}
new
    bool:replay_movie[MAX_MOVING_TEXT],
    //
    MOVING_TEXT_COUNT,//Количество созданных текстов
    movie_object[MAX_MOVING_TEXT]//объект
;

new textMovie[][e_INFO_MOVING_TEXT] = {
    {"Плавающий\nТекст", -1706.74,  1.19,  3.04, 85.21},
    {"unreal.", -1708.55,  2.02,  3.04, 47.98}//данные примеры находятся в ангаре в порту СФ
};

С кодом ниже ничего не менять и менять не придется, просто вставить.

C++:
//в OnObjectMoved(objectid)
if(objectid == movie_object[0])
    MovingText();



// public OnGameModeInit()
for(new u; u < sizeof textMovie; u++)
    CreateMovingText(textMovie[u][text_object], textMovie[u][pos_X], textMovie[u][pos_Y], textMovie[u][pos_Z], textMovie[u][pos_rZ]);

//Вниз, куда угодно

CreateMovingText(string_object[], Float:x, Float:y, Float:z, Float:ra) {

    movie_object[MOVING_TEXT_COUNT] = CreateObject(19477, x, y, z, 0.0, 0.0, ra);
  
    SetObjectMaterialText(movie_object[MOVING_TEXT_COUNT], string_object, 0, 130, "Tahoma", 45, 1, -12804353, 0, 1);
    if(MOVING_TEXT_COUNT+1 == sizeof textMovie) //Включает Movie на последнем созданном объекте.
        MovingText();

    MOVING_TEXT_COUNT++;
}


stock MovingText() {

    for(new objectid; objectid < sizeof textMovie; objectid++) {

        MoveObject(
            movie_object[objectid],
            textMovie[objectid][pos_X],
            textMovie[objectid][pos_Y],
            textMovie[objectid][pos_Z] + (!replay_movie[objectid] ? (0.3) : (-0.3)),
             0.25
         );
         replay_movie[objectid] = !replay_movie[objectid];
    }
}






Инструкция и удобная функция для создания
C++:
//После ввода /addobj [Текст] появляется визуально объект, для примера.
//Готовая строка с данными появляется в папке scriptfiles файле position.ini (заранее создавать не надо)
// в таком формате: {"unreal.", -1708.55,  2.02,  3.04, 47.98}, вставляйте в массив


CMD:addobj(playerid, params[]) {

    if(sscanf(params, "s[44]", params[0]))
        return SendClientMessage(playerid, -1, "Используйте: /addobj [Текст]");


    new
        Float:pos_x, Float:pos_y, Float:pos_z, Float:pos_fA;

    GetPlayerPos(playerid, pos_x, pos_y, pos_z);
    GetPlayerFacingAngle(playerid,  pos_fA);

    AddObjectMovie(params[0], pos_x, pos_y, pos_z-0.5,  pos_fA-90.0);

    return 1;
}

AddObjectMovie(string_object[], Float:x, Float:y, Float:z, Float:ra) {
    new object,
        string[144];

    object = CreateObject(19477, x, y, z, 0.0, 0.0, ra);
    SetObjectMaterialText(object, string_object, 0, 130, "Tahoma", 45, 1, -12804353, 0, 1);


    new File:hFile = fopen("position.ini", io_append);
    format(string, sizeof string , "{\"%s\", %.2f,  %.2f,  %.2f, %.2f},\r\n", string_object, x, y, z, ra);
    fwrite(hFile, string);
    fclose(hFile);
}
 
Последнее редактирование:
Сверху Снизу