commands.inc 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. ShowAdminHelpCommands(playerid)
  2. {
  3. SendClientMessage(playerid, 0xb380ffff, "> Admin commands:");
  4. SendClientMessage(playerid, 0xeeeeeeff, "/goto /gethere /setvw /setint /freeze /unfreeze /slap /check /jetpack");
  5. SendClientMessage(playerid, 0xb3b3b3ff, "/sethp /setarmour /settime /setweather /spawncar /destroycar /fixcar /agun /setskin /setadmin /a");
  6. SendClientMessage(playerid, 0xeeeeeeff, "/tempban /offban /unban /agivekey /createproperty /editproperty /deleteproperty /gotoproperty /createinterior /interiors");
  7. SendClientMessage(playerid, 0xb3b3b3ff, "/createvehicle /deletevehicle /spawnvehicle /despawnvehicle");
  8. return 1;
  9. }
  10. CMD:agivekey(playerid, params[])
  11. {
  12. if(isnull(params)) return SendSyntaxMessage(playerid, "/agivekey (property/vehicle)");
  13. if(!strcmp(params, "property", true, 8))
  14. {
  15. new targetid, propertyid;
  16. if(sscanf(params, "{s[9]}ui", targetid, propertyid)) return SendSyntaxMessage(playerid, "/agivekey property (playerid) (propertyid)");
  17. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  18. if(Iter_Contains(PropertyKey[targetid], propertyid)) return SendErrorMessage(playerid, "That player already has the keys to this property.");
  19. Iter_Add(PropertyKey[targetid], propertyid);
  20. Key_Give(targetid, KEY_PROPERTY, propertyid);
  21. SendAdminWarningF(playerid, "You gave %s the keys to property %d.", ReturnPlayerRPName(targetid), propertyid);
  22. SendAdminWarningF(targetid, "%s gave you the keys to property %d.", ReturnPlayerRPName(playerid), propertyid);
  23. }
  24. else if(!strcmp(params, "vehicle", true, 7))
  25. {
  26. new targetid, vehiclesqlid;
  27. if(sscanf(params, "{s[8]}ui", targetid, vehiclesqlid)) return SendSyntaxMessage(playerid, "/agivekey vehicle (playerid) (vehicle SQL ID)");
  28. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  29. if(Iter_Contains(VehicleKey[targetid], vehiclesqlid)) return SendErrorMessage(playerid, "That player already has the keys to this vehicle.");
  30. Iter_Add(VehicleKey[targetid], vehiclesqlid);
  31. Key_Give(targetid, KEY_VEHICLE, vehiclesqlid);
  32. SendAdminWarningF(playerid, "You gave %s the keys to vehicle SQLID %d.", ReturnPlayerRPName(targetid), vehiclesqlid);
  33. SendAdminWarningF(targetid, "%s gave you the keys to vehicle SQLID %d.", ReturnPlayerRPName(playerid), vehiclesqlid);
  34. }
  35. else SendSyntaxMessage(playerid, "/agivekey (property/vehicle)");
  36. return 1;
  37. }
  38. CMD:admins(playerid, params[])
  39. {
  40. new admins = 0;
  41. for(new j = 5; j >= 2; j--)
  42. {
  43. foreach(new i : Admin) if(Admin_GetLevel(i) == j)
  44. {
  45. admins ++;
  46. if(admins == 1)
  47. {
  48. SendClientMessage(playerid, 0x99ccffff, "Online administrators:");
  49. }
  50. va_SendClientMessage(playerid, 0xc3c3c3ff, "(ID %d) %s %s - %s", i, Admin_GetRankName(i), ReturnPlayerRPName(i), Account_GetName(i));
  51. }
  52. }
  53. if(admins == 0) SendClientMessage(playerid, 0xc3c3c3ff, "There are no administrators online.");
  54. return 1;
  55. }
  56. CMD:helpers(playerid, params[])
  57. {
  58. new helpers = 0;
  59. foreach(new i : Admin) if(Admin_GetLevel(i) == 1)
  60. {
  61. helpers ++;
  62. if(helpers == 1)
  63. {
  64. SendClientMessage(playerid, 0x99ccffff, "Online helpers:");
  65. }
  66. va_SendClientMessage(playerid, 0xc3c3c3ff, "(ID %d) %s %s - %s", i, Admin_GetRankName(i), ReturnPlayerRPName(i), Account_GetName(i));
  67. }
  68. if(helpers == 0) SendClientMessage(playerid, 0xc3c3c3ff, "There are no helpers online.");
  69. return 1;
  70. }
  71. CMD:setadmin(playerid, params[])
  72. {
  73. new targetid, value;
  74. if(sscanf(params, "ui", targetid, value)) return SendSyntaxMessage(playerid, "/setadmin (playerid) (level)");
  75. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  76. if(Admin_GetLevel(targetid) > Admin_GetLevel(playerid)) return SendErrorMessageF(playerid, "You can't use this command on %s.", ReturnPlayerRPName(targetid));
  77. if(Admin_GetLevel(targetid) == value) return SendErrorMessageF(playerid, "%s is already a %s.", ReturnPlayerRPName(targetid), Admin_GetRankName(targetid));
  78. Admin_SetLevel(targetid, value, true);
  79. if(value == 0) SendAdminWarningF(targetid, "%s has set %s's admin level to %s.", ReturnPlayerRPName(playerid), ReturnPlayerRPName(targetid), Admin_GetRankName(targetid));
  80. foreach(new i : Admin) SendAdminWarningF(i, "%s has set %s's admin level to %s.", ReturnPlayerRPName(playerid), ReturnPlayerRPName(targetid), Admin_GetRankName(targetid));
  81. return 1;
  82. }
  83. CMD:setskin(playerid, params[])
  84. {
  85. new targetid, value;
  86. if(sscanf(params, "ui", targetid, value)) return SendSyntaxMessage(playerid, "/setskin (playerid) (modelid)");
  87. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  88. Player_SetSkin(targetid, value, true);
  89. SendAdminWarningF(playerid, "You have set %s's skin to %d.", ReturnPlayerRPName(targetid), value);
  90. SendAdminWarningF(targetid, "%s has set your skin to %d.", ReturnPlayerRPName(playerid), value);
  91. return 1;
  92. }
  93. CMD:a(playerid, params[])
  94. {
  95. if(isnull(params)) return SendSyntaxMessage(playerid, "/a (text)");
  96. if(strlen(params) > 84)
  97. {
  98. foreach(new i : Admin)
  99. {
  100. va_SendClientMessage(i, 0xff6666ff, "%s %s: %.84s ...", Admin_GetRankName(playerid), ReturnPlayerRPName(playerid), params);
  101. va_SendClientMessage(i, 0xff6666ff, "%s %s: ... %s", Admin_GetRankName(playerid), ReturnPlayerRPName(playerid), params[84]);
  102. }
  103. }
  104. else
  105. {
  106. foreach(new i : Admin)
  107. {
  108. va_SendClientMessage(i, 0xff6666ff, "%s %s: %s", Admin_GetRankName(playerid), ReturnPlayerRPName(playerid), params);
  109. }
  110. }
  111. return 1;
  112. }
  113. CMD:spawncar(playerid, params[])
  114. {
  115. if(IsPlayerInAnyVehicle(playerid)) return SendErrorMessage(playerid, "You're already in a vehicle");
  116. new carName[36], col1, col2;
  117. if(sscanf(params, "s[36]I(1)I(1)", carName, col1, col2)) return SendSyntaxMessage(playerid, "/spawncar (model) (color 1) (color 2)");
  118. new modelid = 0;
  119. if(IsNumeric(carName))
  120. {
  121. modelid = strval(carName);
  122. if(!(400 <= modelid <= 611)) return SendErrorMessage(playerid, "The model ID must be between 400 and 611.");
  123. }
  124. else
  125. {
  126. for(new v; v < sizeof(g_arrVehicleNames); v++)
  127. {
  128. if(strfind(g_arrVehicleNames[v], carName, true) != -1)
  129. {
  130. modelid = v + 400;
  131. break;
  132. }
  133. }
  134. }
  135. if(modelid == 0) return SendErrorMessage(playerid, "You specified an invalid model.");
  136. if(!(0 <= col1 <= 255 && 0 <= col2 <= 255)) return SendErrorMessage(playerid, "The vehicle color must be between 0 and 255.");
  137. new Float:x, Float:y, Float:z, Float:angle;
  138. GetPlayerPos(playerid, x, y, z);
  139. GetPlayerFacingAngle(playerid, angle);
  140. new vehicleid = CreateVehicle(modelid, x, y, z, angle, col1, col2, -1);
  141. LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
  142. PutPlayerInVehicle(playerid, vehicleid, 0);
  143. SendAdminWarningF(playerid, "You spawned a %s. (ID %d)", GetVehicleName(vehicleid), vehicleid);
  144. return 1;
  145. }
  146. CMD:destroycar(playerid, params[])
  147. {
  148. new vehicleid;
  149. if(!IsPlayerInAnyVehicle(playerid))
  150. {
  151. if(sscanf(params, "i", vehicleid)) return SendSyntaxMessage(playerid, "/destroycar (vehicleid)");
  152. if(!IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You specified an invalid vehicle.");
  153. }
  154. else if(isnull(params)) vehicleid = GetPlayerVehicleID(playerid);
  155. else
  156. {
  157. if(sscanf(params, "i", vehicleid)) return SendSyntaxMessage(playerid, "/destroycar (vehicleid)");
  158. if(!IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You specified an invalid vehicle.");
  159. }
  160. if(IsValidServerVehicle(vehicleid)) return SendErrorMessage(playerid, "This is a server vehicle, use /deletevehicle or /despawnvehicle instead.");
  161. SendAdminWarningF(playerid, "You destroyed a %s. (ID %d)", GetVehicleName(vehicleid), vehicleid);
  162. DestroyVehicle(vehicleid);
  163. return 1;
  164. }
  165. CMD:fixcar(playerid, params[])
  166. {
  167. new vehicleid;
  168. if(!IsPlayerInAnyVehicle(playerid))
  169. {
  170. if(sscanf(params, "i", vehicleid)) return SendSyntaxMessage(playerid, "/fixcar (vehicleid)");
  171. if(!IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You specified an invalid vehicle.");
  172. }
  173. else if(isnull(params)) vehicleid = GetPlayerVehicleID(playerid);
  174. else
  175. {
  176. if(sscanf(params, "i", vehicleid)) return SendSyntaxMessage(playerid, "/destroycar (vehicleid)");
  177. if(!IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You specified an invalid vehicle.");
  178. }
  179. if(IsVehicleWrecked(vehicleid))
  180. {
  181. SetVehicleWrecked(vehicleid, false);
  182. }
  183. RepairVehicle(vehicleid);
  184. foreach(new i : Admin) SendAdminWarningF(i, "%s (%s) repaired vehicle %s. (ID %d)", ReturnPlayerRPName(playerid), Account_GetName(playerid), GetVehicleName(vehicleid), vehicleid);
  185. return 1;
  186. }
  187. CMD:agun(playerid, params[])
  188. {
  189. new gun, ammo;
  190. if(sscanf(params, "iI(250)", gun, ammo)) return SendSyntaxMessage(playerid, "/agun (gun) (ammo)");
  191. Player_GiveWeapon(playerid, gun, ammo);
  192. return 1;
  193. }
  194. CMD:sethp(playerid, params[])
  195. {
  196. new targetid, value;
  197. if(sscanf(params, "ui", targetid, value)) return SendSyntaxMessage(playerid, "/sethp (playerid) (health)");
  198. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  199. if(!(1 <= value <= 100)) return SendErrorMessage(playerid, "HP must be between 1 and 100.");
  200. SetPlayerHealth(targetid, value);
  201. SendAdminWarningF(targetid, "%s has set your health to %d.", ReturnPlayerRPName(playerid), value);
  202. foreach(new i : Admin)
  203. {
  204. SendAdminWarningF(i, "%s (%s) has set %s's health to %d.", ReturnPlayerRPName(playerid), Account_GetName(playerid), ReturnPlayerRPName(targetid), value);
  205. }
  206. if(value == 100)
  207. {
  208. RevivePlayer(targetid);
  209. }
  210. return 1;
  211. }
  212. CMD:setarmour(playerid, params[])
  213. {
  214. new targetid, value;
  215. if(sscanf(params, "ui", targetid, value)) return SendSyntaxMessage(playerid, "/setarmour (playerid) (armour)");
  216. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  217. if(!(1 <= value <= 100)) return SendErrorMessage(playerid, "Armour must be between 1 and 100.");
  218. SetPlayerArmour(targetid, value);
  219. SendAdminWarningF(targetid, "%s has set your armour to %d.", ReturnPlayerRPName(playerid), value);
  220. foreach(new i : Admin)
  221. {
  222. SendAdminWarningF(i, "%s (%s) has set %s's armour to %d.", ReturnPlayerRPName(playerid), Account_GetName(playerid), ReturnPlayerRPName(targetid), value);
  223. }
  224. return 1;
  225. }
  226. CMD:goto(playerid, params[])
  227. {
  228. if(!isnull(params) && !strcmp(params, "xyz", true, 3))
  229. {
  230. new Float:x, Float:y, Float:z;
  231. if(sscanf(params, "{s[4]}fff", x, y, z)) return SendSyntaxMessage(playerid, "/goto xyz (x) (y) (z)");
  232. if(!IsPlayerInAnyVehicle(playerid)) SetPlayerPos(playerid, x, y, z);
  233. else
  234. {
  235. SetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
  236. }
  237. return 1;
  238. }
  239. new targetid;
  240. if(sscanf(params, "u", targetid)) return SendSyntaxMessage(playerid, "/goto (playerid, xyz)");
  241. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  242. SetPlayerInterior(playerid, GetPlayerInterior(targetid));
  243. SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(targetid));
  244. new Float:x, Float:y, Float:z;
  245. GetPlayerPos(targetid, x, y, z);
  246. if(!IsPlayerInAnyVehicle(playerid)) SetPlayerPos(playerid, x, y + 1.5, z);
  247. else
  248. {
  249. SetVehiclePos(GetPlayerVehicleID(playerid), x, y + 3, z);
  250. }
  251. return 1;
  252. }
  253. CMD:gethere(playerid, params[])
  254. {
  255. new targetid;
  256. if(sscanf(params, "u", targetid)) return SendSyntaxMessage(playerid, "/gethere (playerid)");
  257. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  258. SetPlayerInterior(targetid, GetPlayerInterior(playerid));
  259. SetPlayerVirtualWorld(targetid, GetPlayerVirtualWorld(playerid));
  260. new Float:x, Float:y, Float:z;
  261. GetPlayerPos(playerid, x, y, z);
  262. SetPlayerPos(targetid, x, y + 1.5, z);
  263. return 1;
  264. }
  265. CMD:setvw(playerid, params[])
  266. {
  267. new targetid, value;
  268. if(sscanf(params, "ui", targetid, value)) return SendSyntaxMessage(playerid, "/setvw (playerid) (virtual world)");
  269. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  270. SetPlayerVirtualWorld(targetid, value);
  271. SendAdminWarningF(playerid, "You have set %s's Virtual World to %d.", ReturnPlayerRPName(targetid), value);
  272. SendAdminWarningF(targetid, "%s has set your Virtual World to %d.", ReturnPlayerRPName(playerid), value);
  273. return 1;
  274. }
  275. CMD:setint(playerid, params[])
  276. {
  277. new targetid, value;
  278. if(sscanf(params, "ui", targetid, value)) return SendSyntaxMessage(playerid, "/setint (playerid) (interior)");
  279. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  280. SetPlayerInterior(targetid, value);
  281. SendAdminWarningF(playerid, "You have set %s's Interior to %d.", ReturnPlayerRPName(targetid), value);
  282. SendAdminWarningF(targetid, "%s has set your Interior to %d.", ReturnPlayerRPName(playerid), value);
  283. return 1;
  284. }
  285. CMD:freeze(playerid, params[])
  286. {
  287. if(!isnull(params) && !strcmp(params, "all", true))
  288. {
  289. foreach(new i : Player) TogglePlayerControllable(i, false);
  290. SendAdmCmdF("%s (%s) freezed everyone.", ReturnPlayerRPName(playerid), Account_GetName(playerid));
  291. return 1;
  292. }
  293. new targetid;
  294. if(sscanf(params, "u", targetid)) return SendSyntaxMessage(playerid, "/freeze (playerid, all)");
  295. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  296. if(Admin_GetLevel(targetid) > Admin_GetLevel(playerid)) return SendErrorMessageF(playerid, "You can't use this command on %s.", Account_GetName(targetid));
  297. TogglePlayerControllable(targetid, false);
  298. SendAdminWarningF(playerid, "You freezed %s.", ReturnPlayerRPName(targetid));
  299. SendAdminWarningF(targetid, "%s freezed you.", ReturnPlayerRPName(playerid));
  300. return 1;
  301. }
  302. CMD:unfreeze(playerid, params[])
  303. {
  304. if(!isnull(params) && !strcmp(params, "all", true))
  305. {
  306. foreach(new i : Player) TogglePlayerControllable(i, true);
  307. SendAdmCmdF("%s (%s) unfreezed everyone.", ReturnPlayerRPName(playerid), Account_GetName(playerid));
  308. return 1;
  309. }
  310. new targetid;
  311. if(sscanf(params, "u", targetid)) return SendSyntaxMessage(playerid, "/unfreeze (playerid, all)");
  312. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  313. if(Admin_GetLevel(targetid) > Admin_GetLevel(playerid)) return SendErrorMessageF(playerid, "You can't use this command on %s.", Account_GetName(targetid));
  314. TogglePlayerControllable(targetid, true);
  315. SendAdminWarningF(playerid, "You unfreezed %s.", ReturnPlayerRPName(targetid));
  316. SendAdminWarningF(targetid, "%s unfreezed you.", ReturnPlayerRPName(playerid));
  317. return 1;
  318. }
  319. CMD:settime(playerid, params[])
  320. {
  321. if(!isnull(params) && !strcmp(params, "reset", true))
  322. {
  323. Time_StartUpdate();
  324. return 1;
  325. }
  326. new hour, minute;
  327. if(sscanf(params, "iI(0)", hour, minute)) return SendSyntaxMessage(playerid, "/settime (hour, reset) (optional: minute)");
  328. if(!(0 <= hour <= 24)) return SendErrorMessage(playerid, "The hour must be between 0 and 24.");
  329. if(!(0 <= minute <= 59)) return SendErrorMessage(playerid, "The minute must be between 0 and 59.");
  330. SendAdminWarningF(playerid, "Time is now %02d:%02d. Type /resettime to reset it.", hour, minute);
  331. Time_StopUpdate(hour, minute);
  332. return 1;
  333. }
  334. CMD:setweather(playerid, params[])
  335. {
  336. if(!isnull(params) && !strcmp(params, "reset", true))
  337. {
  338. Weather_StartUpdate();
  339. return 1;
  340. }
  341. new weather;
  342. if(sscanf(params, "i", weather)) return SendSyntaxMessage(playerid, "/setweather (weather, reset)");
  343. if(!(0 <= weather <= 22)) return SendErrorMessage(playerid, "Weather ID must be between 0 and 22.");
  344. SendAdminWarningF(playerid, "The weather ID is now %d. Type /resetweather to reset it.", weather);
  345. Weather_StopUpdate(weather);
  346. return 1;
  347. }
  348. CMD:slap(playerid, params[])
  349. {
  350. new targetid, value;
  351. if(sscanf(params, "uI(3)", targetid, value)) return SendSyntaxMessage(playerid, "/slap (playerid) (optional: value)");
  352. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  353. SendAdminWarningF(playerid, "You slapped %s.", ReturnPlayerRPName(targetid));
  354. SendAdminWarningF(targetid, "%s slapped you.", ReturnPlayerRPName(playerid));
  355. new Float:x, Float:y, Float:z;
  356. GetPlayerPos(targetid, x, y, z);
  357. SetPlayerPos(targetid, x, y, z + value);
  358. return 1;
  359. }
  360. CMD:check(playerid, params[])
  361. {
  362. new targetid;
  363. if(sscanf(params, "u", targetid)) return SendSyntaxMessage(playerid, "/check (playerid)");
  364. if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
  365. new count = 0;
  366. new weapon[24];
  367. new string[144];
  368. new gun;
  369. new ammo;
  370. for(new i = 0; i < 13; i++)
  371. {
  372. GetPlayerWeaponData(targetid, i, gun, ammo);
  373. if(gun > 0)
  374. {
  375. GetWeaponName(gun, weapon, sizeof(weapon));
  376. if(count == 0)
  377. {
  378. count++;
  379. strcat(string, va_return("%s (%d)", weapon, ammo));
  380. }
  381. else strcat(string, va_return(", %s (%d)", weapon, ammo));
  382. }
  383. }
  384. if(count == 0) strcat(string, "None");
  385. new Float:health, Float:armour;
  386. GetPlayerHealth(playerid, health);
  387. GetPlayerArmour(playerid, armour);
  388. SendAdminWarningF(playerid, "%s's weapons: %s.", ReturnPlayerRPName(targetid), string, health, armour);
  389. SendAdminWarningF(playerid, "%s's money: $%s. Health: %.2f, Armour: %.2f", ReturnPlayerRPName(targetid), MoneyFormat(GetPlayerMoney(playerid)), health, armour);
  390. return 1;
  391. }
  392. CMD:jetpack(playerid, params[])
  393. {
  394. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
  395. return 1;
  396. }