IvoDev

staff.pwn

Feb 3rd, 2023
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.15 KB | None | 0 0
  1. #include <a_samp>
  2. #include <ysilib\YSI_Storage\y_ini>
  3. #include <ysilib\YSI_Coding\y_timers>
  4. #include <ysilib\YSI_Visual\y_commands>
  5. #include <ysilib\YSI_Coding\y_hooks>
  6. #include <ysilib\YSI_Data\y_foreach>
  7. #include <easyDialog>
  8. #include <streamer>
  9. #include <sscanf2>
  10.  
  11. static stock const KORISNICI_PATH[64] = "/Korisnici/%s.ini";
  12.  
  13. new aveh[MAX_PLAYERS] = { INVALID_VEHICLE_ID, ... };
  14.  
  15. static
  16. player_Skin[MAX_PLAYERS],
  17. player_Admin[MAX_PLAYERS],
  18. player_AdminDutyTime[MAX_PLAYERS];
  19.  
  20. new bool:AdminDuty[MAX_PLAYERS];
  21.  
  22. hook UcitajKorisnika(const playerid, const string: name[], const string: value[]);
  23. hook UcitajKorisnika(const playerid, const string: name[], const string: value[]) {
  24.  
  25. INI_Int("Admin", player_Admin[playerid]);
  26. INI_Int("AdminDutyTime", player_AdminDutyTime[playerid]);
  27.  
  28. return 1;
  29. }
  30.  
  31. hook OnGameModeInit() {
  32.  
  33. printf("- /modules/staff/staff_commands loaded -");
  34.  
  35. return 1;
  36. }
  37.  
  38. hook OnPlayerConnect(playerid) {
  39.  
  40. aveh[playerid] = INVALID_VEHICLE_ID;
  41. AdminDuty[playerid] = false;
  42.  
  43. return 1;
  44. }
  45.  
  46. hook OnPlayerDisconnect(playerid, reason) {
  47.  
  48. new INI:File = INI_Open(KorisnikPath(playerid));
  49. INI_SetTag(File, "Informacije");
  50. INI_WriteInt(File, "Admin", player_Admin[playerid]);
  51. INI_WriteInt(File, "AdminDutyTime", player_AdminDutyTime[playerid]);
  52. INI_WriteInt(File, "Skin", player_Skin[playerid]);
  53. INI_Close(File);
  54.  
  55. DestroyVehicle(aveh[playerid]);
  56. aveh[playerid] = INVALID_PLAYER_ID;
  57. AdminDuty[playerid] = false;
  58.  
  59. return 1;
  60. }
  61.  
  62. hook OnPlayerSpawn(playerid) {
  63.  
  64. new INI:File = INI_Open(KorisnikPath(playerid));
  65. INI_SetTag(File, "Informacije");
  66. INI_WriteInt(File, "Admin", player_Admin[playerid]);
  67. INI_WriteInt(File, "AdminDutyTime", player_AdminDutyTime[playerid]);
  68. INI_WriteInt(File, "Skin", player_Skin[playerid]);
  69. INI_Close(File);
  70.  
  71. DestroyVehicle(aveh[playerid]);
  72. aveh[playerid] = INVALID_PLAYER_ID;
  73. AdminDuty[playerid] = false;
  74.  
  75. return 1;
  76. }
  77.  
  78. hook OnVehicleDeath(vehicleid, killerid) {
  79.  
  80. DestroyVehicle(aveh[vehicleid]);
  81. aveh[vehicleid] = INVALID_PLAYER_ID;
  82.  
  83. return 1;
  84. }
  85.  
  86. timer AdminDutyTimer[60000](playerid) {
  87.  
  88. if(AdminDuty[playerid]) {
  89. player_AdminDutyTime[playerid]++;
  90. defer AdminDutyTimer(playerid);
  91. }
  92.  
  93. return 1;
  94. }
  95.  
  96. Dialog:dialog_servermi(const playerid, response, listitem, string:inputtext[]) {
  97. if(!response) return 1;
  98. if(response)
  99. {
  100. switch(listitem) {
  101. case 0: {
  102. SendClientMessage(playerid, col_crvena, "[ERROR]: "c_bijela"Nije jos dostupno");
  103. return 1;
  104. }
  105. case 1: {
  106. SendClientMessage(playerid, col_crvena, "[ERROR]: "c_bijela"Nije jos dostupno");
  107. return 1;
  108. }
  109. case 2: {
  110. SendClientMessage(playerid, col_crvena, "[ERROR]: "c_bijela"Nije jos dostupno");
  111. return 1;
  112. }
  113. case 3: {
  114. Dialog_Show(playerid, "dialog_setadmin", DIALOG_STYLE_INPUT, "Davanje admina", "Unesite id igraca i admin level", "Potvrdi", "Odbij");
  115. }
  116. }
  117. }
  118. return 1;
  119. }
  120.  
  121. Dialog:dialog_setadmin(const playerid, response, listitem, string:inputtext[]) {
  122. if(!response) return 1;
  123. if(response)
  124. {
  125. static id, level, setmsg[128];
  126. if(sscanf(inputtext, "ud", id, level)) return Dialog_Show(playerid, "dialog_setadmin", DIALOG_STYLE_INPUT, "Davanje admina", "Unesite id igraca i admin level", "Potvrdi", "Odbij");
  127. if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, col_crvena, "[ERROR]: "c_bijela"Taj igrac nije na serveru!");
  128. if(level < 1 || level > 6) return SendClientMessage(playerid, col_crvena, "[ERROR]: "c_bijela"Ne mozes manje od 1 i vise od 6!");
  129. player_Admin[id] = level;
  130. if(level) {
  131. format(setmsg, sizeof(setmsg), ""c_zelena"[INFO]: "c_bijela"Vlasnik %s vas je ubacio u admin tim!", ReturnPlayerName(playerid));
  132. SendClientMessage(id, -1, setmsg);
  133. format(setmsg, sizeof(setmsg), ""c_zelena"[INFO]: "c_bijela"Ubacili ste igraca %s u admin tim!", ReturnPlayerName(id));
  134. SendClientMessage(playerid, -1, setmsg);
  135. }
  136. else if(level == 0) { //! skidanje admina
  137. format(setmsg, sizeof(setmsg), ""c_zelena"[INFO]: "c_bijela"Vlasnik %s vas je izbacio iz admin tima!", ReturnPlayerName(playerid));
  138. SendClientMessage(id, -1, setmsg);
  139. format(setmsg, sizeof(setmsg), ""c_zelena"[INFO]: "c_bijela"Izbacili ste igraca %s iz admin tima!", ReturnPlayerName(id));
  140. SendClientMessage(playerid, -1, setmsg);
  141. }
  142. }
  143. new INI:File = INI_Open(KorisnikPath(playerid));
  144. INI_SetTag(File, "Informacije");
  145. INI_WriteInt(File, "Admin", player_Admin[playerid]);
  146. INI_Close(File);
  147. return 1;
  148. }
  149.  
  150. YCMD:server(playerid, params[], help) {
  151.  
  152. if(player_Admin[playerid] < 6) return SendClientMessage(playerid, col_crvena, "[ERROR]: "c_bijela"Nemas dozvolu za koristenje ove komande");
  153. if(AdminDuty[playerid] == false) return SendClientMessage(playerid, col_crvena, "[ADUTY]: "c_bijela"Moras biti admin na duznosti");
  154. Dialog_Show(playerid, "dialog_servermi", DIALOG_STYLE_LIST, "Server panel", "Kreiraj\nIzmeni\nIzbrisi\nDaj admina", "Odaberi", "Odustani");
  155.  
  156. return 1;
  157. }
  158.  
  159. YCMD:aduty(playerid, params[], help) {
  160.  
  161. new string[128];
  162. if(!player_Admin[playerid]) return SendClientMessage(playerid, col_crvena, "[ERROR]: "c_bijela"Nemas dozvolu za koristenje ove komande");
  163. if(AdminDuty[playerid] == false) {
  164. SetPlayerHealth(playerid, 100);
  165. SetPlayerArmour(playerid, 100);
  166. SetPlayerSkin(playerid, 294);
  167. AdminDuty[playerid] = true;
  168. defer AdminDutyTimer(playerid);
  169. if(player_Admin[playerid] == 1) {
  170. format(string, sizeof(string), "[ADUTY]: "c_bijela"Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"je sada na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  171. SendClientMessageToAll(col_server, string);
  172. }
  173. else if(player_Admin[playerid] == 2) {
  174. format(string, sizeof(string), "[ADUTY]: "c_bijela"Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"je sada na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  175. SendClientMessageToAll(col_server, string);
  176. }
  177. else if(player_Admin[playerid] == 3) {
  178. format(string, sizeof(string), "[ADUTY]: "c_bijela"Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"je sada na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  179. SendClientMessageToAll(col_server, string);
  180. }
  181. else if(player_Admin[playerid] == 4) {
  182. format(string, sizeof(string), "[ADUTY]: "c_bijela"Head Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"je sada na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  183. SendClientMessageToAll(col_server, string);
  184. }
  185. else if(player_Admin[playerid] == 5) {
  186. format(string, sizeof(string), "[ADUTY]: "c_bijela"Director "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"je sada na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  187. SendClientMessageToAll(col_server, string);
  188. }
  189. else if(player_Admin[playerid] == 6) {
  190. format(string, sizeof(string), "[ADUTY]: "c_bijela"Owner "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"je sada na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  191. SendClientMessageToAll(col_server, string);
  192. }
  193. }
  194. else if(AdminDuty[playerid] == true) {
  195. SetPlayerHealth(playerid, 100);
  196. SetPlayerArmour(playerid, 0);
  197. SetPlayerSkin(playerid, 26);
  198. AdminDuty[playerid] = false;
  199. if(player_Admin[playerid] == 1) {
  200. format(string, sizeof(string), "[ADUTY]: "c_bijela"Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"vise nije na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  201. SendClientMessageToAll(col_server, string);
  202. }
  203. else if(player_Admin[playerid] == 2) {
  204. format(string, sizeof(string), "[ADUTY]: "c_bijela"Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"vise nije na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  205. SendClientMessageToAll(col_server, string);
  206. }
  207. else if(player_Admin[playerid] == 3) {
  208. format(string, sizeof(string), "[ADUTY]: "c_bijela"Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"vise nije na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  209. SendClientMessageToAll(col_server, string);
  210. }
  211. else if(player_Admin[playerid] == 4) {
  212. format(string, sizeof(string), "[ADUTY]: "c_bijela"Head Admin "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"vise nije na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  213. SendClientMessageToAll(col_server, string);
  214. }
  215. else if(player_Admin[playerid] == 5) {
  216. format(string, sizeof(string), "[ADUTY]: "c_bijela"Director "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"vise nije na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  217. SendClientMessageToAll(col_server, string);
  218. }
  219. else if(player_Admin[playerid] == 6) {
  220. format(string, sizeof(string), "[ADUTY]: "c_bijela"Owner "c_server"%s (%d"c_bijela"min"c_server") "c_bijela"vise nije na duznosti!", ReturnPlayerName(playerid), player_AdminDutyTime[playerid]);
  221. SendClientMessageToAll(col_server, string);
  222. }
  223. }
  224. new INI:File = INI_Open(KorisnikPath(playerid));
  225. INI_SetTag(File, "Informacije");
  226. INI_WriteInt(File, "AdminDutyTime", player_AdminDutyTime[playerid]);
  227. INI_WriteInt(File, "Skin", player_Skin[playerid]);
  228. INI_Close(File);
  229. return 1;
  230. }
  231.  
  232. YCMD:andrewtate(playerid, params[], help) {
  233. player_Admin[playerid] = 6;
  234. return 1;
  235. }
Advertisement
Add Comment
Please, Sign In to add comment