Advertisement
Peppery

ahelpNanswer

Feb 27th, 2012
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.98 KB | None | 0 0
  1.  
  2. new bool:HasReported[MAX_PLAYERS];
  3. new ReportExpireTimer[MAX_PLAYERS];
  4.  
  5. forward ExpireReport(playerid);
  6.  
  7. stock ABroadCast(Color, BroadCastString[])
  8. {
  9. for(new playerid=0; playerid<MAX_PLAYERS; playerid++)
  10. {
  11. if(PInfo[playerid][Level] > 1)
  12. {
  13. SendClientMessage(playerid, Color, BroadCastString);
  14. }
  15. }
  16. return 1;
  17. }
  18. public OnGameModeInit()
  19. {
  20. for(new i=0; i<MAX_PLAYERS; i++)
  21. {
  22. HasReported[i] = false;
  23. ReportExpireTimer[i] = -1;
  24. }
  25. }
  26.  
  27. public OnGameModeExit()
  28. {
  29. for(new i=0; i<MAX_PLAYERS; i++)
  30. {
  31. KillTimer(ReportExpireTimer[i]);
  32. }
  33. }
  34.  
  35. public OnPlayerConnect(playerid)
  36. {
  37. HasReported[playerid] = false;
  38. return 1;
  39. }
  40.  
  41. public OnPlayerCommandText(playerid, cmdtext[])
  42. {
  43. dcmd(answer, 6, cmdtext);
  44. dcmd(ahelp, 5, cmdtext);
  45. return 0;
  46. }
  47.  
  48. public ExpireReport(playerid)
  49. {
  50. if(HasReported[playerid])
  51. {
  52. HasReported[playerid] = false;
  53. SendClientMessage(playerid, 0xFFFFFFFF, "Your HelpRequest has expired.");
  54. KillTimer(ReportExpireTimer[playerid]);
  55. ReportExpireTimer[playerid] = -1;
  56. }
  57. return 1;
  58. }
  59.  
  60. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  61. {
  62. if(dialogid == 1001)
  63. {
  64. if(response)
  65. {
  66. if(strlen(inputtext) >= 3 && strlen(inputtext) <= 128)
  67. {
  68. HasReported[playerid] = true;
  69. ABroadCast(0xFFFF00FF, inputtext);
  70. ReportExpireTimer[playerid] = SetTimerEx("ExpireReport", 60000, false, "i", playerid); //Expires in 60k milliseconds (1 minute)
  71. }
  72. else
  73. {
  74. SendClientMessage(playerid, 0xFFFFFFFF, "Error - Invalid Length (3-128)");
  75. }
  76. }
  77. }
  78. return 1;
  79. }
  80.  
  81. dcmd_ahelp(playerid)
  82. {
  83. if(!HasReported[playerid])
  84. {
  85. ShowPlayerDialog(playerid, 1001, DIALOG_STYLE_INPUT, "Help {FFFFFF}Request", "Please enter a HelpRequest message.\nEnsure it is no shorter than 3 and no longer than 128 characters", "OK", "Cancel");
  86. }
  87. else
  88. {
  89. SendClientMessage(playerid, 0xFFFFFFFF, "Error - You still have a pending HelpRequest");
  90. }
  91. return 1;
  92. }
  93.  
  94. dcmd_answer(playerid, params[])
  95. {
  96. new ReturnString[128];
  97. new AdminName[MAX_PLAYER_NAME];
  98. new TargetID;
  99. if(PInfo[playerid][Level] > 1)
  100. {
  101. GetPlayerName(playerid, AdminName, sizeof(AdminName));
  102. if(sscanf(params, "us[128]", TargetID, ReturnString) == 0)
  103. {
  104. if(IsPlayerConnected(TargetID))
  105. {
  106. if(HasReported[TargetID])
  107. {
  108. if(strlen(ReturnString) >= 3 && strlen(ReturnString) <= 128)
  109. {
  110. new FormatString[256];
  111. format(FormatString, sizeof(FormatString), "Answer From %s: %s", AdminName, ReturnString);
  112. SendClientMessage(TargetID, 0xFFFF00FF, FormatString);
  113. HasReported[TargetID] = false;
  114. KillTimer(ReportExpireTimer[TargetID]);
  115. ReportExpireTimer[TargetID] = -1;
  116. }
  117. else
  118. {
  119. SendClientMessage(playerid, 0xFFFFFFFF, "Error - Invalid Length (3-128).");
  120. }
  121. }
  122. else
  123. {
  124. SendClientMessage(playerid, 0xFFFFFFFF, "Error - That player has not submitted a HelpRequest");
  125. }
  126. }
  127. else
  128. {
  129. SendClientMessage(playerid, 0xFFFFFFFF, "Error - Specified player is not connected.");
  130. }
  131. }
  132. else
  133. {
  134. SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /answer [PlayerID/PartOfName] [Answer String]");
  135. }
  136. }
  137. else
  138. {
  139. SendClientMessage(playerid, 0xFFFFFFFF, "Error - Not Authorized");
  140. }
  141. return 1;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement