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);
}
Последнее редактирование:
