newbie.pwn 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. #include <YSI\y_hooks>
  2. CMD:newb(playerid, params[]) {
  3. szMiscArray[0] = 0;
  4. if(PlayerInfo[playerid][pNMute] == 1) return SendClientMessageEx(playerid, COLOR_GREY, "You are muted from the newbie chat channel.");
  5. if(PlayerInfo[playerid][pToggledChats][0]) return SendClientMessageEx(playerid, COLOR_GREY, "You have the channel toggled, /tog newbie to re-enable!");
  6. if(PlayerInfo[playerid][pTut] == 0) return SendClientMessageEx(playerid, COLOR_GREY, "You can't do that at this time.");
  7. if(nonewbie) return SendClientMessageEx(playerid, COLOR_GRAD2, "The newbie chat channel has been disabled by an administrator!");
  8. if(GetPVarType(playerid, "HasNewbQues")) {
  9. SendClientMessageEx(playerid, COLOR_GREY, "You have already asked a newbie question.");
  10. return SendClientMessageEx(playerid, COLOR_GREY, "Type /cancelnewbie to submit a new one!");
  11. }
  12. ShowPlayerDialogEx(playerid, SEND_NEWBIE, DIALOG_STYLE_INPUT, "Ask Newbie Question", "Please input your question\nPlease bare in mind only script/server related questions will be answered.", "Send", "Cancel");
  13. return 1;
  14. }
  15. CMD:cancelnewbie(playerid, params[]) {
  16. SendClientMessageEx(playerid, COLOR_WHITE, "You have cancelled your request");
  17. ClearNewbVars(playerid);
  18. return 1;
  19. }
  20. CMD:newbquestions(playerid, params[]) {
  21. if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] > 0) {
  22. GetNewbieQuestions(playerid);
  23. }
  24. return 1;
  25. }
  26. CMD:an(playerid, params[]) {
  27. szMiscArray[0] = 0;
  28. new id;
  29. if(sscanf(params, "u", id)) return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /an [playerid]");
  30. if(!IsPlayerConnected(id)) return SendClientMessageEx(playerid, COLOR_GREY, "That player is no longer connected!");
  31. if(!GetPVarType(id, "HasNewbQues")) return SendClientMessageEx(playerid, COLOR_GREY, "That player hasn't asked a newbie question!");
  32. if(GetPVarType(id, "NewbBeingAnswered")) return SendClientMessageEx(playerid, COLOR_GREY, "Another helper is answering that request!");
  33. if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] > 0) {
  34. SetPVarInt(playerid, "AnsweringNewb", id);
  35. SetPVarInt(id, "NewbBeingAnswered", playerid);
  36. GetPVarString(id, "HasNewbQues", szMiscArray, 128);
  37. format(szMiscArray, sizeof(szMiscArray), "%s (ID:%d) Q: %s\nPlease type in your answer below!", GetPlayerNameEx(id), id, szMiscArray);
  38. ShowPlayerDialogEx(playerid, ACCEPT_NEWBIE, DIALOG_STYLE_INPUT, "Newbie Answer", szMiscArray, "Answer", "");
  39. }
  40. return 1;
  41. }
  42. CMD:tn(playerid, params[]) {
  43. szMiscArray[0] = 0;
  44. new id;
  45. if(sscanf(params, "u", id)) return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /tn [playerid]");
  46. if(!IsPlayerConnected(id)) return SendClientMessageEx(playerid, COLOR_GREY, "That player is no longer connected!");
  47. if(!GetPVarType(id, "HasNewbQues")) return SendClientMessageEx(playerid, COLOR_GREY, "That player hasn't asked a newbie question!");
  48. if(GetPVarType(id, "NewbBeingAnswered")) return SendClientMessageEx(playerid, COLOR_GREY, "Another helper is answering that request!");
  49. if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] > 0) {
  50. SetPVarInt(playerid, "AnsweringNewb", id);
  51. SetPVarInt(id, "NewbBeingAnswered", playerid);
  52. GetPVarString(id, "HasNewbQues", szMiscArray, 128);
  53. ShowPlayerDialogEx(playerid, DENY_NEWBIE, DIALOG_STYLE_LIST, "Why is this not a valid request?", "Not a Question\nIC Matter\nSpam", "Select","");
  54. }
  55. return 1;
  56. }
  57. SendNewbQuestionToQueue(iPlayerID, szQuestion[]) {
  58. szMiscArray[0] = 0;
  59. SetPVarString(iPlayerID, "HasNewbQues", szQuestion);
  60. format(szMiscArray, sizeof(szMiscArray), "Newb: %s (ID:%d) Q: %s", GetPlayerNameEx(iPlayerID), iPlayerID, szQuestion);
  61. foreach(new i : Player) {
  62. if((PlayerInfo[i][pAdmin] >= 1 || PlayerInfo[i][pHelper] > 0))
  63. ChatTrafficProcess(i, COLOR_NEWBIE, szMiscArray, 0);
  64. }
  65. SendClientMessageEx(iPlayerID, COLOR_WHITE, "Your question was submitted");
  66. return 1;
  67. }
  68. ClearNewbVars(iPlayerID) {
  69. DeletePVar(iPlayerID, "HasNewbQues");
  70. DeletePVar(GetPVarInt(iPlayerID, "NewbBeingAnswered"), "AnsweringNewb");
  71. DeletePVar(iPlayerID, "NewbBeingAnswered");
  72. return 1;
  73. }
  74. AnswerNewbie(iPlayerID, iNewbieID, szAnswer[]) {
  75. szMiscArray[0] = 0;
  76. if(!GetPVarType(iNewbieID, "HasNewbQues")) return SendClientMessageEx(iPlayerID, COLOR_GREY, "That player does not have an active question!");
  77. GetPVarString(iNewbieID, "HasNewbQues", szMiscArray, 128);
  78. format(szMiscArray, sizeof(szMiscArray), "Q: (%s): %s", GetPlayerNameEx(iNewbieID), szMiscArray);
  79. SendGlobalNewbMsg(szMiscArray);
  80. Log("logs/newbiechat.log", szMiscArray);
  81. szMiscArray[0] = 0;
  82. format(szMiscArray, sizeof(szMiscArray), "A: (%s): %s", GetPlayerNameEx(iPlayerID), szAnswer);
  83. SendGlobalNewbMsg(szMiscArray);
  84. Log("logs/newbiechat.log", szMiscArray);
  85. if(PlayerInfo[iPlayerID][pHelper] == 1 && PlayerInfo[iPlayerID][pAdmin] < 1) {
  86. ReportCount[iPlayerID]++;
  87. ReportHourCount[iPlayerID]++;
  88. AddCAReportToken(iPlayerID); // Advisor Tokens
  89. }
  90. SendClientMessageEx(iNewbieID, COLOR_NEWBIE, "Your question has been answered! If you have more questions or for additional assistance use [/requesthelp]");
  91. ClearNewbVars(iNewbieID);
  92. return 1;
  93. }
  94. SendGlobalNewbMsg(szMessage[]) {
  95. foreach(new i : Player) {
  96. if(PlayerInfo[i][pToggledChats][0] == 0) {
  97. SendClientMessageEx(i, COLOR_NEWBIE, szMessage);
  98. }
  99. }
  100. return 1;
  101. }
  102. GetNewbieQuestions(iPlayerID) {
  103. szMiscArray[0] = 0;
  104. SendClientMessageEx(iPlayerID, COLOR_GREEN,"_______________________________________");
  105. foreach(new i : Player) {
  106. if(GetPVarType(i, "HasNewbQues")) {
  107. GetPVarString(i, "HasNewbQues", szMiscArray, 128);
  108. format(szMiscArray, sizeof(szMiscArray), "Newb: %s (ID:%d) Q: %s", GetPlayerNameEx(i), i, szMiscArray);
  109. SendClientMessageEx(iPlayerID, COLOR_NEWBIE, szMiscArray);
  110. }
  111. }
  112. SendClientMessageEx(iPlayerID, COLOR_GREEN,"_______________________________________");
  113. return 1;
  114. }
  115. hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  116. if(arrAntiCheat[playerid][ac_iFlags][AC_DIALOGSPOOFING] > 0) return 1;
  117. switch(dialogid) {
  118. case SEND_NEWBIE: {
  119. if(response) {
  120. if(isnull(inputtext)) return SendClientMessageEx(playerid, COLOR_GRAD2, "You cannot send no question!");
  121. if(strlen(inputtext) > 110) return SendClientMessageEx(playerid, COLOR_GRAD2, "That message is too long!");
  122. SendNewbQuestionToQueue(playerid, inputtext);
  123. }
  124. }
  125. case ACCEPT_NEWBIE: {
  126. if(response) {
  127. if(isnull(inputtext)) return SendClientMessageEx(playerid, COLOR_GRAD2, "You cannot send no question!");
  128. if(strlen(inputtext) > 110) {
  129. DeletePVar(GetPVarInt(playerid, "AnsweringNewb"), "NewbBeingAnswered");
  130. DeletePVar(playerid, "AnsweringNewb");
  131. return SendClientMessageEx(playerid, COLOR_GRAD2, "That message is too long!");
  132. }
  133. AnswerNewbie(playerid, GetPVarInt(playerid, "AnsweringNewb"), inputtext);
  134. }
  135. else {
  136. DeletePVar(GetPVarInt(playerid, "AnsweringNewb"), "NewbBeingAnswered");
  137. DeletePVar(playerid, "AnsweringNewb");
  138. }
  139. }
  140. case DENY_NEWBIE: {
  141. if(response) {
  142. new id = GetPVarInt(playerid, "AnsweringNewb");
  143. switch(listitem) {
  144. case 0: {
  145. SendClientMessageEx(id, COLOR_WHITE, "Your newbie message has not been answered due to it not being considered a question.");
  146. }
  147. case 1: {
  148. SendClientMessageEx(id, COLOR_WHITE, "Your newbie message has not been answered due to it being considered an IC matter.");
  149. SendClientMessageEx(id, COLOR_WHITE, "We may only answer script/server related questions on /newb.");
  150. }
  151. case 2: {
  152. SendClientMessageEx(id, COLOR_WHITE, "Your newbie message has not been answered due to it being considered spam.");
  153. SendClientMessageEx(id, COLOR_WHITE, "Repeated abuse will result in a mute and/or further punishment.");
  154. }
  155. }
  156. ClearNewbVars(id);
  157. }
  158. else {
  159. DeletePVar(GetPVarInt(playerid, "AnsweringNewb"), "NewbBeingAnswered");
  160. DeletePVar(playerid, "AnsweringNewb");
  161. }
  162. }
  163. }
  164. return 0;
  165. }
  166. hook OnPlayerDisconnect(playerid, reason) {
  167. // cancel newbie report if they have one
  168. ClearNewbVars(playerid);
  169. return 1;
  170. }