Advertisement
Owen007

OAdmin+Register

Oct 6th, 2016
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.43 KB | None | 0 0
  1. //credits: Owen007
  2.  
  3. //created in free time.
  4.  
  5. //gtakillerIV for ban/unban offline player
  6.  
  7. //th for fixing the errors sryeas
  8.  
  9. // source samp forum and wiki samp
  10.  
  11. // created for new scripters.
  12.  
  13. // good luck and happy scripting.
  14.  
  15. //Includes:
  16. #include <a_samp>
  17. #include <YSI\y_ini>
  18. #include <zcmd>
  19. #include <sscanf2>
  20.  
  21. //defines:
  22. #define DIALOG_REGISTER 1
  23. #define DIALOG_LOGIN 2
  24. #define DIALOG_SUCCESS_1 3
  25. #define DIALOG_SUCCESS_2 4
  26.  
  27. #define PATH "OAdmin/Users/%s.ini"
  28.  
  29. //colors:
  30. #define ORANGE 0xF97804FF
  31. #define BLUE 0x1229FAFF
  32. #define GRAY 0xCECECEFF
  33. #define GREEN 0x21DD00FF
  34. #define red 0xFF0000AA
  35. #define LIGHTBLUE 0x00C2ECFF
  36. #define PURPLE 0xB360FDFF
  37. #define COLOR_RED 0xFF0000FF
  38. #define COLOR_YELLOW 0xFFFF00AA
  39. #define COLOR_ORANGE 0xFF9900AA
  40. #define COL_WHITE "{FFFFFF}"
  41. #define COL_RED "{F81414}"
  42. #define COL_GREEN "{00FF22}"
  43. #define COL_LIGHTBLUE "{00CED1}"
  44. #define ORANGE 0xF97804FF
  45. #define BLUE 0x1229FAFF
  46. #define COL_WHITE "{FFFFFF}"
  47. #define COL_RED "{F81414}"
  48. #define COL_GREEN "{00FF22}"
  49. #define COL_LIGHTBLUE "{00CED1}"
  50. #define COLOR_GRAD1 0xB4B5B7FF
  51. #define COLOR_GRAD2 0xBFC0C2FF
  52. #define COLOR_GRAD3 0xCBCCCEFF
  53. #define COLOR_GRAD4 0xD8D8D8FF
  54. #define COLOR_GRAD5 0xE3E3E3FF
  55. #define COLOR_GRAD6 0xF0F0F0FF
  56. #define COLOR_GREY 0xAFAFAFAA
  57. #define COLOR_GREEN 0x33AA33AA
  58. #define COLOR_RED 0xFF0000FF
  59. #define COLOR_YELLOW 0xFFFF00AA
  60. #define COLOR_WHITE 0xFFFFFFAA
  61. #define COLOR_FADE1 0xE6E6E6E6
  62. #define COLOR_FADE2 0xC8C8C8C8
  63. #define COLOR_FADE3 0xAAAAAAAA
  64. #define COLOR_FADE4 0x8C8C8C8C
  65. #define COLOR_FADE5 0x6E6E6E6E
  66. #define COLOR_PURPLE 0xC2A2DAAA
  67. #define COLOR_DARKBLUE 0x2641FEAA
  68. #define COLOR_ALLDEPT 0xFF8282AA
  69. #define COLOR_ADMIN 0xD2CAAEFF
  70.  
  71.  
  72. //fowards:
  73. forward LoadUser_data(playerid,name[],value[]);
  74. forward Unmute(playerid);
  75.  
  76. //enums:
  77. enum OAInfo
  78. {
  79. OAPass,
  80. OACash,
  81. OAKills,
  82. OADeaths,
  83. OAScore,
  84. OAAdmin,
  85. OABanned,
  86. BannedIP[22]
  87. }
  88.  
  89. //new:
  90. new PInfo[MAX_PLAYERS][OAInfo];
  91. new bool:
  92. muted[MAX_PLAYERS];
  93.  
  94. public LoadUser_data(playerid,name[],value[])
  95. {
  96. INI_Int("Password",PInfo[playerid][OAPass]);
  97. INI_Int("Cash",PInfo[playerid][OACash]);
  98. INI_Int("Kills",PInfo[playerid][OAKills]);
  99. INI_Int("Deaths",PInfo[playerid][OADeaths]);
  100. INI_Int("Score",PInfo[playerid][OAScore]);
  101. INI_Int("Admin",PInfo[playerid][OAAdmin]);
  102. INI_Int("Banned",PInfo[playerid][OABanned]);
  103. return 1;
  104. }
  105.  
  106. stock UserPath(playerid)
  107. {
  108. new string[128],playername[MAX_PLAYER_NAME];
  109. GetPlayerName(playerid,playername,sizeof(playername));
  110. format(string,sizeof(string),PATH,playername);
  111. return string;
  112. }
  113.  
  114. stock udb_hash(buf[]) {
  115. new length=strlen(buf);
  116. new s1 = 1;
  117. new s2 = 0;
  118. new n;
  119. for (n=0; n<length; n++)
  120. {
  121. s1 = (s1 + buf[n]) % 65521;
  122. s2 = (s2 + s1) % 65521;
  123. }
  124. return (s2 << 16) + s1;
  125. }
  126.  
  127. public OnGameModeInit()
  128. {
  129. SetGameModeText("This server is using OA System by Owen007");
  130. return 1;
  131. }
  132.  
  133. public OnGameModeExit()
  134. {
  135. return 1;
  136. }
  137.  
  138. public OnPlayerConnect(playerid)
  139. {
  140. PInfo[playerid][OAScore] = 0;
  141. if(fexist(UserPath(playerid)))
  142. {
  143. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  144. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login",""COL_WHITE"Account already registered enter your password to signin.","Login","Quit");
  145. }
  146. else
  147. {
  148. ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,""COL_WHITE"Registering...",""COL_WHITE"Register your account at our server database","Register","Quit");
  149. }
  150. new pname[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME];
  151. GetPlayerName(playerid, pname, sizeof(pname));
  152. format(string, sizeof(string), "%s has joined the server", pname);
  153. SendClientMessageToAll(GREEN, string);
  154. return 1;
  155. }
  156.  
  157. public OnPlayerDisconnect(playerid, reason)
  158. {
  159. new INI:
  160. File = INI_Open(UserPath(playerid));
  161. INI_SetTag(File,"data");
  162. INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
  163. INI_WriteInt(File,"Kills",PInfo[playerid][OAKills]);
  164. INI_WriteInt(File,"Deaths",PInfo[playerid][OADeaths]);
  165. INI_WriteInt(File,"Score",GetPlayerScore(playerid));
  166. INI_WriteInt(File,"Admin",PInfo[playerid][OAAdmin]);
  167. INI_Close(File);
  168. return 1;
  169. }
  170.  
  171.  
  172. public OnPlayerDeath(playerid, killerid, reason)
  173. {
  174. PInfo[killerid][OAKills]++;
  175. PInfo[playerid][OADeaths]++;
  176. return 1;
  177. }
  178.  
  179.  
  180. COMMAND:banoffline(playerid, params[])
  181. {
  182. new filestring[79];
  183. if(isnull(params)) return SendClientMessage(playerid, -1, "Correct Usage: /banoflline [Player's Name]");
  184. format(filestring, sizeof(filestring), "OAdmin/Users/%s.ini", params);
  185. if(!fexist(filestring)) return SendClientMessage(playerid, -1, "Error: The player name you have chosen was not found in our system.");
  186. else
  187. {
  188. new INI:
  189. File = INI_Open(filestring);
  190. INI_SetTag(File, "data");
  191. INI_WriteInt(File, "Banned", 1);
  192. INI_Close(File);
  193. new done[128];
  194. format(done, sizeof(done), "You have banned %s", params);
  195. SendClientMessage(playerid,-1 , done);
  196. }
  197. return 1;
  198. }
  199.  
  200. COMMAND:unban(playerid, params[])
  201. {
  202.  
  203. if(isnull(params)) return SendClientMessage(playerid,-1,"Correct Usage: /unban [Player Name] ");
  204. new filestring[79];
  205. format(filestring, sizeof(filestring), "OAdmin/Users/%s.ini", params);
  206. if(!fexist(filestring)) return SendClientMessage(playerid,red, "The name you've chosen was not found in our database ");
  207. else
  208. {
  209. new INI:
  210. File = INI_Open(filestring);
  211. INI_SetTag(File, "data");
  212. INI_WriteInt(File, "Banned",0);
  213. INI_Close(File);
  214. INI_ParseFile(filestring, "LoadIP_%s", .bExtra = true , .extra = playerid);
  215. new cmdstring[44];
  216. format(cmdstring, sizeof(cmdstring), "unbanip %s", PInfo[playerid][BannedIP]);
  217. SendRconCommand(cmdstring);
  218. SendRconCommand("reloadbans");
  219. new done[128];
  220. format(done, sizeof(done),"You have successfully unbanned %s", params);
  221. SendClientMessage(playerid, -1,done);
  222. }
  223. return 1;
  224. }
  225.  
  226. COMMAND:stats(playerid, params[])
  227. {
  228. new money = PInfo[playerid][OACash];
  229. new deaths = PInfo[playerid][OADeaths];
  230. new kills = PInfo[playerid][OAKills];
  231. new score = PInfo[playerid][OAScore];
  232. new admin = PInfo[playerid][OAAdmin];
  233. new string[500];
  234. format(string,sizeof(string),"Money: %d | Deaths: %d | Kills: %d | Score: %d | Admin: %d",money,deaths,kills,score,admin);
  235. SendClientMessage(playerid,GREEN,string);
  236. return 1;
  237. }
  238.  
  239. COMMAND:ban(playerid, params[])
  240. {
  241. new id, reason[50], string[128], banned[MAX_PLAYER_NAME];
  242. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,red,"You are not admin");
  243. if(sscanf(params, "uz", id, reason)) return SendClientMessage(playerid, -1, "USAGE: /ban [playerid] [reason(optional)]");
  244. GetPlayerName(id, banned, sizeof(banned));
  245. format(string, sizeof(string), "Server: %s has been banned by %s. reason: %s", banned, GetName(playerid), reason);
  246. SendClientMessageToAll(red, string);
  247. BanEx(id, reason);
  248. return 1;
  249. }
  250.  
  251. CMD:mute(playerid, params[])
  252. {
  253. new targetid, minutes, reason[128], string[128];
  254. if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_RED, "Player is not connected to the server");
  255. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,red,"You are not admin");
  256. if(muted[targetid] == true) return SendClientMessage(playerid, COLOR_RED, "Player is already muted");
  257. if(sscanf(params,"uis[128]", targetid, minutes, reason)) return SendClientMessage(playerid, COLOR_RED, "Mute: /mute (id) (minutes) (reason)");
  258. format(string, sizeof(string), "Administrator %s muted %s for %d minutes: %s", GetName(playerid),GetName(targetid), minutes, reason);
  259. SetTimerEx("Unmute", minutes*60000, false, "i", targetid);
  260. SendClientMessageToAll(COLOR_RED, string);
  261. muted[targetid] = true;
  262. return 1;
  263. }
  264.  
  265. CMD:unmute(playerid, params[])
  266. {
  267. new targetid, string[128];
  268. if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, COLOR_RED, "Player is not connected to the server");
  269. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,red,"You are not admin");
  270. if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, COLOR_RED, "Cancel player mute: /unmute (id)");
  271. format(string, sizeof(string), "Your mute has been canceled by administrator %s", GetName(playerid));
  272. SendClientMessage(targetid, COLOR_RED, string);
  273. format(string, sizeof(string), "Administrator %s has canceled %s's mute", GetName(playerid), GetName(targetid));
  274. SendClientMessageToAll(COLOR_RED, string);
  275. KillTimer(Unmute(playerid));
  276. muted[targetid] = false;
  277. return 1;
  278. }
  279.  
  280. COMMAND:kick(playerid, params[])
  281. {
  282. if(IsPlayerAdmin(playerid)) {
  283. if(!strlen(params[6])) {
  284. return SendClientMessage(playerid, 0xFFAA00AA, "Usage: /kick [targetid]");
  285. }
  286. new targetid = strval(params[6]);
  287. if(IsPlayerConnected(targetid)) {
  288. new string[128], playername[MAX_PLAYER_NAME], targetname[MAX_PLAYER_NAME];
  289. GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
  290. GetPlayerName(targetid, targetname, MAX_PLAYER_NAME);
  291. format(string, 128, "Admin %s kicked you from the server.", playername);
  292. SendClientMessage(targetid, 0xFFAA00AA, string);
  293. Kick(targetid);
  294. format(string, 128, "Admin %s kicked %s from the server.", playername, targetname);
  295. SendClientMessageToAll(0xFFAA00AA, string);
  296. }
  297. else {
  298. return SendClientMessage(playerid, 0xFFAA00AA, "That player is not connected.");
  299. }
  300. }
  301. else {
  302. return SendClientMessage(playerid, 0xFFAA00AA, "Admins only.");
  303. }
  304. return 1;
  305. }
  306.  
  307. stock GetName(playerid)
  308. {
  309. new
  310. pName[MAX_PLAYER_NAME];
  311.  
  312. GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  313. return pName;
  314. }
  315.  
  316. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  317. {
  318. switch( dialogid )
  319. {
  320. case DIALOG_REGISTER:
  321. {
  322. if (!response) return Kick(playerid);
  323. if(response)
  324. {
  325. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, ""COL_WHITE"Registering",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
  326. new IP[22];
  327. GetPlayerIp(playerid, IP, sizeof(IP));
  328. new INI:
  329. File = INI_Open(UserPath(playerid));
  330. INI_SetTag(File,"data");
  331. INI_WriteInt(File,"Password",udb_hash(inputtext));
  332. INI_WriteString(File, "Ip", IP);
  333. INI_WriteInt(File,"Cash",0);
  334. INI_WriteInt(File,"Kills",0);
  335. INI_WriteInt(File,"Deaths",0);
  336. INI_WriteInt(File,"Score",0);
  337. INI_WriteInt(File,"Admin",0);
  338. INI_Close(File);
  339.  
  340. ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Thanks! You are registered at,"COL_LIGHTBLUE"our server have fun around","Ok","");
  341. }
  342. }
  343.  
  344. case DIALOG_LOGIN:
  345. {
  346. if ( !response ) return Kick ( playerid );
  347. if( response )
  348. {
  349. if(udb_hash(inputtext) == PInfo[playerid][OAPass])
  350. {
  351. INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  352. GivePlayerMoney(playerid, PInfo[playerid][OACash]);
  353. SetPlayerScore(playerid,PInfo[playerid][OAScore]);
  354. ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
  355. }
  356. else
  357. {
  358. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
  359. }
  360. return 1;
  361. }
  362. }
  363. }
  364. return 1;
  365. }
  366.  
  367. public OnPlayerRequestClass(playerid, classid)
  368. {
  369. if(PInfo[playerid][OABanned] == 1)
  370. {
  371. Ban(playerid);
  372. }
  373. return 1;
  374. }
  375.  
  376. public Unmute(playerid)
  377. {
  378. muted[playerid] = false;
  379. SendClientMessage(playerid, COLOR_RED, "You have been unmuted automatically");
  380. return 1;
  381. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement