Advertisement
Gguiz007

Sistema de afk com o tempo que você está ausente

Oct 25th, 2017
429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.63 KB | None | 0 0
  1. #include <a_samp>
  2. #include <Pawn.CMD>
  3.  
  4.  
  5. enum pew{
  6. tempoafk,
  7. bool:afk
  8. }
  9.  
  10. #define DialogAfk   100
  11.  
  12. new pInfo[MAX_PLAYERS][pew];
  13.  
  14. #if defined FILTERSCRIPT
  15.  
  16. public OnFilterScriptInit()
  17. {
  18.         print("\n--------------------------------------");
  19.         print("Desenvolvido por Gguiz, não retire os créditos!");
  20.         print("--------------------------------------\n");
  21. }
  22.  
  23. public OnFilterScriptExit()
  24. {
  25.     return 1;
  26. }
  27.  
  28. #else
  29.  
  30. main()
  31. {
  32.     print("\n----------------------------------");
  33.     print(" Sistema de AFK carregado com sucesso!");
  34.     print("----------------------------------\n");
  35. }
  36.  
  37. #endif
  38. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
  39.  
  40. forward afktime();
  41. public afktime()
  42. {
  43.     for (new i = 0; i < MAX_PLAYERS; i++)
  44.     {
  45.         pInfo[i][tempoafk]++;
  46.     }
  47. }
  48. public OnGameModeInit()
  49. {
  50.     SetTimer("afktime", 1000, true);
  51.     return 1;
  52. }
  53. public OnPlayerDisconnect(playerid, reason)
  54. {
  55.         pInfo[playerid][tempoafk] = 0;
  56.         pInfo[playerid][afk] = false;
  57.         return 1;
  58. }
  59. //////////////////////////////////////////////////COMANDOS////////////////////////////////////////////////////////
  60. CMD:afk(playerid)
  61. {
  62.     new msg[39];
  63.     if(pInfo[playerid][afk]) return SendClientMessage(playerid, 0xff0000FF, "Você já está ausente!");
  64.     pInfo[playerid][afk] = true;
  65.     pInfo[playerid][tempoafk] = false;
  66.     TogglePlayerControllable(playerid, false);
  67.     SendClientMessage(playerid, -1, "Use: /afksair, para sair do modo ausente");
  68.     format(msg, sizeof(msg), "O jogador %s está ausente", rNome(playerid));
  69.     SendClientMessageToAll(-1, msg);
  70.     return true;
  71. }
  72. CMD:afksair(playerid)
  73. {
  74.     new mensagem[37];
  75.     if(!pInfo[playerid][afk]) return SendClientMessage(playerid, 0xff0000FF, "Você não está ausente!");
  76.     pInfo[playerid][afk] = false;
  77.     pInfo[playerid][tempoafk] = 0;
  78.     TogglePlayerControllable(playerid, true);
  79.     format(mensagem, sizeof(mensagem), "O jogador %s saiu do /AFK", rNome(playerid));
  80.     SendClientMessageToAll(-1, mensagem);
  81.     return 1;
  82. }
  83. CMD:meutempoafk(playerid)
  84. {
  85.     if (!pInfo[playerid][afk]) return SendClientMessage(playerid, 0xff0000FF, "Você não está ausente!");
  86.     new string[40];
  87.     format(string, sizeof(string), "Esse é seu tempo ausente: [%s]", Convert(pInfo[playerid][tempoafk]));
  88.     SendClientMessage(playerid, -1, string);
  89.     return 1;
  90. }
  91. CMD:ausentes(playerid)
  92. {
  93.     new mensagem2[128], nome[MAX_PLAYER_NAME];
  94.     for (new i;i <MAX_PLAYERS; i++)
  95.     {
  96.         if(pInfo[i][afk] == true)
  97.         {
  98.             GetPlayerName(i, nome, sizeof(nome));
  99.             format(mensagem2, sizeof(mensagem2), "%s O jogador %s está ausente por: [%s]\n", mensagem2, nome, Convert(pInfo[i][tempoafk]));
  100.         }
  101.     }
  102.     if (strlen(mensagem2) > 0)
  103.         ShowPlayerDialog(playerid, DialogAfk, DIALOG_STYLE_MSGBOX, "Jogadores ausentes:", mensagem2, "FECHAR", "");
  104.     else
  105.         SendClientMessage(playerid, 0xFF0000FF, "{FF0000}Não há jogadores ausentes.");
  106.     return 1;
  107. }
  108. stock rNome(playerid)
  109. {
  110.    new nome[MAX_PLAYER_NAME];
  111.    GetPlayerName(playerid, nome, MAX_PLAYER_NAME);
  112.    return nome;
  113. }
  114. stock Convert(number)
  115. {
  116.     new hours = 0, mins = 0, secs = 0, string[100];
  117.     hours = floatround(number / 3600);
  118.     mins = floatround((number / 60) - (hours * 60));
  119.     secs = floatround(number - ((hours * 3600) + (mins * 60)));
  120.     new days = 0;
  121.  
  122.     if(hours >= 24)
  123.     {
  124.         days = floatround((hours/24), floatround_floor);
  125.         hours = hours % 24;
  126.     }
  127.  
  128.     if(days > 0)
  129.     {
  130.         format(string, 100, "%ddias, %dh %dm e %ds", days, hours, mins, secs);
  131.     }
  132.     else if(hours > 0)
  133.     {
  134.         format(string, 100, "%dh %dm e %ds", hours, mins, secs);
  135.     }
  136.     else
  137.     {
  138.         format(string, 100, "%dm e %ds", mins, secs);
  139.     }
  140.     return string;
  141. }
  142. //Uma ajuda do seu colega Gguiz
  143. // ;)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement