Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Инфо-панель для разработчиков
- Панель в виде текстдрава, показывающая некоторые данные игрока
- (по самому себе). Создана для разработчиков игровых модов.
- Как образно будет выглядеть панель на экране -
- x: 0.0 y: 0.0 z: 0.0 angle: 0.0 world: 0 int: 0
- где:
- x, y, z - позиция;
- angle - угол поворота;
- world - виртуальный мир;
- int - интерьер.
- */
- // Подключаемые файлы
- #include <a_samp>
- // Настройки
- #define INFO_VERSION 1.1
- #define TIME_UPDATE_DI 500// время обновления (млс.)
- #define MAX_STRING_DI 164// максимальный размер строки
- #define TD_COORD 132.000000, 428.000000
- #define TD_FONT 1
- #define TD_LETTER_SIZE 0.259999, 1.499999
- #define TD_SET_OUTLINE 1
- #define TD_SET_PROPORTIONAL 1
- #define TD_TEXT_STRING\
- "~w~~h~x: ~y~~h~%.4f ~w~~h~y: ~y~~h~%.4f ~w~~h~z: ~y~~h~%.4f \
- ~w~~h~angle: ~y~~h~%.4f \
- ~w~~h~world: ~y~~h~%d ~w~~h~int: ~y~~h~%d"
- #define TXT_CMD_DI "/инфо"
- #define TXT_SHOW_DI "Инфо-панель включена"
- #define TXT_HIDE_DI "Инфо-панель отключена"
- #define COLOR_MSG_ON (0x00ff00ff)
- #define COLOR_MSG_OFF (0xff0000ff)
- // Переменные
- static Text:td_id[MAX_PLAYERS] = {Text:INVALID_TEXT_DRAW, ...};
- static timer_id[MAX_PLAYERS];
- static string_buffer_info[MAX_PLAYERS][MAX_STRING_DI];
- // Изменяет текст в инфо
- ChangeStringDevInfo(playerid)
- {
- new Float:data[4];
- GetPlayerPos(playerid, data[0], data[1], data[2]);
- GetPlayerFacingAngle(playerid, data[3]);
- new string_current[MAX_STRING_DI];
- format
- (
- string_current, sizeof string_current, TD_TEXT_STRING,
- data[0], data[1], data[2], data[3],
- GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)
- );
- if (strcmp(string_buffer_info[playerid], string_current, true))
- {
- TextDrawSetString(td_id[playerid], string_current);
- }
- string_buffer_info[playerid] = string_current;
- }
- // Обновляет текст в инфо
- forward UpdateDevInfo(playerid);
- public UpdateDevInfo(playerid)
- {
- ChangeStringDevInfo(playerid);
- }
- // Колбеки
- public OnFilterScriptInit()
- {
- print("Инфо-панель для разработчиков \
- v"#INFO_VERSION" загружена");
- return 1;
- }
- public OnFilterScriptExit()
- {
- print("Инфо-панель для разработчиков \
- v"#INFO_VERSION" выгружена");
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- timer_id[playerid] = -1;
- string_buffer_info[playerid] = " ";
- if (td_id[playerid] == Text:INVALID_TEXT_DRAW)
- {
- td_id[playerid] = TextDrawCreate(TD_COORD, " ");
- TextDrawFont(td_id[playerid], TD_FONT);
- TextDrawLetterSize(td_id[playerid], TD_LETTER_SIZE);
- TextDrawSetOutline(td_id[playerid], TD_SET_OUTLINE);
- TextDrawSetProportional(td_id[playerid], TD_SET_PROPORTIONAL);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- #pragma unused reason
- if (timer_id[playerid] != -1)
- {
- TextDrawHideForPlayer(playerid, td_id[playerid]);
- KillTimer(timer_id[playerid]);
- timer_id[playerid] = -1;
- string_buffer_info[playerid] = " ";
- }
- if (td_id[playerid] != Text:INVALID_TEXT_DRAW)
- {
- TextDrawDestroy(td_id[playerid]);
- td_id[playerid] = Text:INVALID_TEXT_DRAW;
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp(cmdtext, TXT_CMD_DI, true) == 0)
- {
- if (timer_id[playerid] == -1)
- {
- ChangeStringDevInfo(playerid);
- TextDrawShowForPlayer(playerid, td_id[playerid]);
- timer_id[playerid] = SetTimerEx("UpdateDevInfo",
- TIME_UPDATE_DI, 1, "d", playerid);
- SendClientMessage(playerid, COLOR_MSG_ON, TXT_SHOW_DI);
- }
- else
- {
- TextDrawHideForPlayer(playerid, td_id[playerid]);
- KillTimer(timer_id[playerid]);
- timer_id[playerid] = -1;
- string_buffer_info[playerid] = " ";
- SendClientMessage(playerid, COLOR_MSG_OFF, TXT_HIDE_DI);
- }
- return 1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement