Advertisement
Guest User

Info panel for developers

a guest
Dec 26th, 2015
396
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.51 KB | None | 0 0
  1. /*
  2.     Info panel for developers
  3.  
  4.     The panel in the form of textdraw, showing some details of the
  5.     player(by himself). Designed for developers of game mods.
  6.  
  7.     How vividly the panel will look on the screen -
  8.     x: 0.0 y: 0.0 z: 0.0 angle: 0.0 world: 0 int: 0
  9.  
  10.     where:
  11.     x, y, z - position;
  12.     angle - angle of rotation;
  13.     world - virtual world;
  14.     int - interior.
  15.  */
  16.  
  17. // Includes
  18. #include <a_samp>
  19.  
  20. // Settings
  21. #define INFO_VERSION            1.0
  22.  
  23. #define TIME_UPDATE_DI          500// update time (msec.)
  24. #define MAX_STRING_DI           164// max size string
  25.  
  26. #define TD_COORD                132.000000, 428.000000
  27. #define TD_FONT                 1
  28. #define TD_LETTER_SIZE          0.259999, 1.499999
  29. #define TD_SET_OUTLINE          1
  30. #define TD_SET_PROPORTIONAL     1
  31.  
  32. #define TD_TEXT_STRING\
  33. "~w~~h~x: ~y~~h~%.4f ~w~~h~y: ~y~~h~%.4f ~w~~h~z: ~y~~h~%.4f \
  34. ~w~~h~angle: ~y~~h~%.4f \
  35. ~w~~h~world: ~y~~h~%d ~w~~h~int: ~y~~h~%d"
  36.  
  37. #define TXT_CMD_DI              "/info"
  38. #define TXT_SHOW_DI             "Info panel on"
  39. #define TXT_HIDE_DI             "Info panel off"
  40.  
  41. #define COLOR_MSG_ON            (0x00ff00ff)
  42. #define COLOR_MSG_OFF           (0xff0000ff)
  43.  
  44. // Variables
  45. static Text:td_id[MAX_PLAYERS] = {Text:INVALID_TEXT_DRAW, ...};
  46. static timer_id[MAX_PLAYERS];
  47.  
  48. // Change the text in the info
  49. ChangeStringDevInfo(playerid)
  50. {
  51.     new Float: data[4];
  52.  
  53.     GetPlayerPos(playerid, data[0], data[1], data[2]);
  54.     GetPlayerFacingAngle(playerid, data[3]);
  55.  
  56.     new string_current[MAX_STRING_DI];
  57.  
  58.     format
  59.     (
  60.         string_current, sizeof string_current, TD_TEXT_STRING,
  61.         data[0], data[1], data[2], data[3],
  62.         GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)
  63.     );
  64.  
  65.     static string_buffer[MAX_STRING_DI] = ' ';
  66.  
  67.     if (strcmp(string_buffer, string_current, true))
  68.     {
  69.         TextDrawSetString(td_id[playerid], string_current);
  70.     }
  71.     string_buffer = string_current;
  72. }
  73.  
  74. // Updates the text in the info
  75. forward UpdateDevInfo(playerid);
  76. public UpdateDevInfo(playerid)
  77. {
  78.     ChangeStringDevInfo(playerid);
  79. }
  80.  
  81. // Callbacks
  82. public OnFilterScriptInit()
  83. {
  84.     print("Info panel for developers \
  85.     v"#INFO_VERSION" loaded");
  86.     return 1;
  87. }
  88.  
  89. public OnFilterScriptExit()
  90. {
  91.     print("Info panel for developers \
  92.     v"#INFO_VERSION" unloaded");
  93.     return 1;
  94. }
  95.  
  96. public OnPlayerConnect(playerid)
  97. {
  98.     timer_id[playerid] = -1;
  99.     if (td_id[playerid] == Text:INVALID_TEXT_DRAW)
  100.     {
  101.         td_id[playerid] = TextDrawCreate(TD_COORD, " ");
  102.         TextDrawFont(td_id[playerid], TD_FONT);
  103.         TextDrawLetterSize(td_id[playerid], TD_LETTER_SIZE);
  104.         TextDrawSetOutline(td_id[playerid], TD_SET_OUTLINE);
  105.         TextDrawSetProportional(td_id[playerid], TD_SET_PROPORTIONAL);
  106.     }
  107.     return 1;
  108. }
  109.  
  110. public OnPlayerDisconnect(playerid, reason)
  111. {
  112.     #pragma unused reason
  113.     if (timer_id[playerid] != -1)
  114.     {
  115.         TextDrawHideForPlayer(playerid, td_id[playerid]);
  116.         KillTimer(timer_id[playerid]);
  117.         timer_id[playerid] = -1;
  118.     }
  119.     if (td_id[playerid] != Text:INVALID_TEXT_DRAW)
  120.     {
  121.         TextDrawDestroy(td_id[playerid]);
  122.         td_id[playerid] = Text:INVALID_TEXT_DRAW;
  123.     }
  124.     return 1;
  125. }
  126.  
  127. public OnPlayerCommandText(playerid, cmdtext[])
  128. {
  129.     if (strcmp(cmdtext, TXT_CMD_DI, true) == 0)
  130.     {
  131.         if (timer_id[playerid] == -1)
  132.         {
  133.             ChangeStringDevInfo(playerid);
  134.             TextDrawShowForPlayer(playerid, td_id[playerid]);
  135.             timer_id[playerid] = SetTimerEx("UpdateDevInfo",\
  136.             TIME_UPDATE_DI, 1, "d", playerid);
  137.             SendClientMessage(playerid, COLOR_MSG_ON, TXT_SHOW_DI);
  138.         }
  139.         else
  140.         {
  141.             TextDrawHideForPlayer(playerid, td_id[playerid]);
  142.             KillTimer(timer_id[playerid]);
  143.             timer_id[playerid] = -1;
  144.             SendClientMessage(playerid, COLOR_MSG_OFF, TXT_HIDE_DI);
  145.         }
  146.         return 1;
  147.     }
  148.     return 0;
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement