Advertisement
Guest User

Full code of my tut.

a guest
Nov 6th, 2017
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.38 KB | None | 0 0
  1. // This is a comment
  2. // uncomment the line below if you want to write a filterscript
  3. //#define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6. #include <sscanf2>
  7. #include <zcmd>
  8.  
  9. #define MAX_REPORTS 1000
  10.  
  11. #define INVALID_REPORT_ID -1
  12.  
  13. new JustReported[MAX_PLAYERS];
  14.  
  15. enum rInfo
  16. {
  17. rReportFrom[MAX_PLAYER_NAME],
  18. rReporterID,
  19. rReport[128],
  20. rReplyTimer,
  21. rChecker,
  22. rBeingUsed
  23. }
  24. new Report[MAX_REPORTS][rInfo];
  25.  
  26. main()
  27. {
  28. print("\n----------------------------------");
  29. print(" Blank Gamemode by your name here");
  30. print("----------------------------------\n");
  31. }
  32.  
  33. public OnGameModeInit()
  34. {
  35. // Don't use these lines if it's a filterscript
  36. SetGameModeText("Blank Script");
  37. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  38. SetTimer("Heartbeat", 1000, 1);
  39. return 1;
  40. }
  41.  
  42. public OnGameModeExit()
  43. {
  44. return 1;
  45. }
  46.  
  47. forward Heartbeat();
  48. public Heartbeat()
  49. {
  50. for(new i = 0; i < MAX_PLAYERS; i++)
  51. {
  52. if(JustReported[i] > 0)
  53. JustReported--;
  54. }
  55. return 1;
  56. }
  57.  
  58. public OnPlayerRequestClass(playerid, classid)
  59. {
  60. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  61. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  62. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  63. return 1;
  64. }
  65.  
  66. public OnPlayerConnect(playerid)
  67. {
  68. JustReported[playerid] = 0;
  69. return 1;
  70. }
  71.  
  72. public OnPlayerDisconnect(playerid, reason)
  73. {
  74. for(new i = 0; i < MAX_REPORTS; i++)
  75. {
  76. if(Report[i][rReporterID] == playerid && Report[i][rChecker] != INVALID_PLAYER_ID)
  77. {
  78. Report[i][rReporterID] = INVALID_PLAYER_ID;
  79. Report[i][rChecker] = INVALID_PLAYER_ID;
  80. Report[i][rReporterID] = INVALID_PLAYER_ID;
  81. format(Report[i][rReport], 128, "None");
  82. format(Report[i][rReportFrom], 128, "None");
  83. Report[i][rChecker] = INVALID_PLAYER_ID;
  84. KillTimer(Report[i][rReplyTimer]);
  85. }
  86. }
  87.  
  88. return 1;
  89. }
  90.  
  91. stock SendReportToAdmin(rid, reportfrom, report[])
  92. {
  93. Report[rid][rReporterID] = reportfrom;
  94. new string[128], name[MAX_PLAYER_NAME];
  95. Report[rid][rBeingUsed] = 1;
  96. GetPlayerName(reportfrom, name, sizeof(name));
  97. format(Report[rid][rReport], 128, "%s", report);
  98. format(Report[rid][rReportFrom], 128, "%s", name);
  99. for(new i = 0; i < MAX_PLAYERS; i++)
  100. {
  101. if(IsPlayerAdmin(i))
  102. {
  103. format(string, sizeof(string), "Report from: %s (RID: %d): %s", name, rid, report);
  104. SendClientMessage(i, -1, string);
  105. }
  106. }
  107. }
  108.  
  109.  
  110. CMD:report(playerid, params[])
  111. {
  112. new string[128];
  113. if(!isnull(params))
  114. {
  115. if(JustReported[playerid] > 0)
  116. {
  117. format(string, sizeof(string), "You already have a report. Please wait %d seconds more.", JustReported[playerid]);
  118. SendClientMessage(playerid, -1, string);
  119. return 1;
  120. }
  121.  
  122. if(strlen(params) > 50)
  123. return SendClientMessage(playerid, -1, "Your message is too long - the limit is 50 characters.");
  124.  
  125.  
  126. new name[MAX_PLAYER_NAME];
  127. GetPlayerName(playerid, name, sizeof(name));
  128.  
  129. new reportid;
  130. for(new i = 0; i < MAX_REPORTS; i++)
  131. {
  132. if(Report[i][rBeingUsed] == 0)
  133. {
  134. reportid = i;
  135. break;
  136. }
  137. }
  138.  
  139. JustReported[playerid] = 25;
  140.  
  141. SendReportToAdmin(reportid, playerid, params);
  142. SendClientMessage(playerid, -1, "You report has been sent to admins online.");
  143. }
  144. else
  145. {
  146. SendClientMessage(playerid, -1, "USAGE: /report [reporttext]");
  147. }
  148. return 1;
  149. }
  150.  
  151. CMD:reports(playerid, params[])
  152. {
  153. if(IsPlayerAdmin(playerid))
  154. {
  155. new string[1000];
  156. SendClientMessage(playerid, -1, "___________________________________________________________");
  157. SendClientMessage(playerid, -1, "REPORTS:");
  158. for(new r = 0; r < MAX_REPORTS; r++)
  159. {
  160. if(Report[r][rBeingUsed] == 1)
  161. {
  162. format(string, sizeof(string), "Report from %s (RID: %d): %s", Report[r][rReportFrom], r, Report[r][rReport]);
  163. }
  164. }
  165. SendClientMessage(playerid, -1, string);
  166. SendClientMessage(playerid, -1, "___________________________________________________________");
  167. }
  168. else
  169. {
  170. SendClientMessage(playerid, -1, "You are not an admin.");
  171. }
  172. return 1;
  173. }
  174.  
  175. forward ReplyTimer(reportid);
  176. public ReplyTimer(reportid)
  177. {
  178. Report[reportid][rReporterID] = INVALID_PLAYER_ID;
  179. Report[reportid][rChecker] = INVALID_PLAYER_ID;
  180. format(Report[reportid][rReport], 128, "None");
  181. format(Report[reportid][rReportFrom], 128, "None");
  182. Report[reportid][rChecker] = INVALID_PLAYER_ID;
  183. Report[reportid][rBeingUsed] = 0;
  184. KillTimer(Report[reportid][rReplyTimer]);
  185. return 1;
  186. }
  187.  
  188. CMD:reply(playerid, params[])
  189. {
  190. new string[128];
  191. new reportid = INVALID_REPORT_ID;
  192. for(new i = 0; i < MAX_REPORTS; i++)
  193. {
  194. if(Report[i][rReporterID] == playerid && Report[i][rChecker] != INVALID_PLAYER_ID)
  195. {
  196. reportid = i;
  197. }
  198. }
  199. if(reportid == INVALID_REPORT_ID)
  200. {
  201. SendClientMessage(playerid, -1, "You don't have any reports being reviewed at the moment.");
  202. return 1;
  203. }
  204. if(IsPlayerConnected(Report[reportid][rChecker]))
  205. {
  206. new name[MAX_PLAYER_NAME], checkername[MAX_PLAYER_NAME];
  207. GetPlayerName(playerid, name, sizeof(name));
  208. GetPlayerName(playerid, checkername, MAX_PLAYER_NAME);
  209. format(string, sizeof(string), "%s(ID: %d) replies: %s", name, playerid, params);
  210. SendClientMessage(Report[reportid][rChecker], -1, string);
  211.  
  212. format(string, sizeof(string), "Reply sent to %s: %s", checkername, params);
  213. SendClientMessage(playerid, -1, string);
  214. }
  215. else SendClientMessage(playerid, -1, "Player not connected.");
  216. return 1;
  217. }
  218.  
  219. CMD:acceptreport(playerid, params[])
  220. {
  221. if(IsPlayerAdmin(playerid))
  222. {
  223. new string[128], id;
  224. if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "USAGE: /acceptreport [reportid]");
  225.  
  226. if(Report[id][rBeingUsed] == 0)
  227. {
  228. SendClientMessage(playerid, -1, "That report is not being used!");
  229. return 1;
  230. }
  231.  
  232. new playername[MAX_PLAYER_NAME];
  233. GetPlayerName(playerid, playername, sizeof(playername));
  234. format(string, sizeof(string), "Admin %s has accepted your report, you have 1 minute to talk to him via /reply", playername);
  235. SendClientMessage(Report[id][rReporterID], -1, string);
  236. format(string, sizeof(string), "You had accepted %s's report.", Report[id][rReportFrom]);
  237. SendClientMessage(playerid, -1, string);
  238.  
  239. Report[id][rChecker] = playerid;
  240. Report[id][rBeingUsed] = 0;
  241. Report[id][rReplyTimer] = SetTimerEx("ReplyTimer", 60000, false, "d", id);
  242. }
  243. else
  244. {
  245. SendClientMessage(playerid, -1, "You are not an admin.");
  246. }
  247. return 1;
  248. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement