Advertisement
Guest User

T-Admin

a guest
Nov 1st, 2012
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.28 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <YSI\y_ini>
  4. #include <zcmd>
  5. forward LoadUserData(playerid,name[],value[]);
  6. forward OnPlayerRegister(playerid,password[]);
  7. forward OnPlayerLogin(playerid,password[]);
  8. native WP_Hash(buffer[],len,const str[]);
  9. new muted[MAX_PLAYERS];
  10. new PlayerIP[64][MAX_PLAYERS];
  11. #define version "0.1"
  12. #define DIALOG_REGISTER 1
  13. #define DIALOG_LOGIN 2
  14.  
  15. enum PlayerInfo
  16. {
  17. Password[129],
  18. Admin,
  19. Score,
  20. Cash,
  21. Deaths,
  22. Kills,
  23. IP[64]
  24. }
  25. new pInfo[MAX_PLAYERS][PlayerInfo];
  26.  
  27.  
  28. /* Callbacks */
  29. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  30. {
  31. if(dialogid == DIALOG_REGISTER)
  32. {
  33. if(isnull(inputtext)) return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Please enter a password.","Register","Quit");
  34. OnPlayerRegister(playerid,inputtext);
  35. }
  36. if(dialogid == DIALOG_LOGIN)
  37. {
  38. if(isnull(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Please enter a password.","Login","Quit");
  39. OnPlayerLogin(playerid,inputtext);
  40. }
  41. return 1;
  42. }
  43.  
  44. public OnPlayerConnect(playerid)
  45. {
  46. new pFile[64],pName[24],pIP[64],string[124];
  47. GetPlayerIp(playerid,pIP,64);
  48. PlayerIP[playerid] = pIP;
  49. GetPlayerName(playerid,pName,sizeof(pName));
  50. format(pFile,sizeof(pFile),"Users/%s.ini",pName);
  51. muted[playerid] = 0;
  52. if(fexist(pFile))
  53. {
  54. INI_ParseFile(pFile,"LoadUserData",.bExtra = true,.extra = playerid);
  55. if(!strcmp(pIP,pInfo[playerid][IP]))
  56. {
  57. SetPlayerScore(playerid,pInfo[playerid][Score]);
  58. GivePlayerMoney(playerid,pInfo[playerid][Cash]);
  59. SendClientMessage(playerid,-1,"You have been auto-logged. IP match.");
  60. }
  61. else
  62. {
  63. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Please enter a password.","Login","Quit");
  64. format(string,sizeof(string),"Welcome back %s! Your previous IP was %s.",pName,pInfo[playerid][IP]);
  65. SendClientMessage(playerid,-1,string);
  66. }
  67. }
  68. else
  69. {
  70. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Please enter a password.","Register","Quit");
  71. }
  72. return 1;
  73. }
  74.  
  75. public LoadUserData(playerid,name[],value[])
  76. {
  77. INI_String("Password",pInfo[playerid][Password],129);
  78. INI_Int("Admin",pInfo[playerid][Admin]);
  79. INI_Int("Score",pInfo[playerid][Score]);
  80. INI_Int("Cash",pInfo[playerid][Cash]);
  81. INI_Int("Deaths",pInfo[playerid][Deaths]);
  82. INI_Int("Kills",pInfo[playerid][Kills]);
  83. return 1;
  84. }
  85.  
  86. public OnPlayerRegister(playerid,password[])
  87. {
  88. new hashed[129],pFile[64],pName[24],string[124];
  89. GetPlayerName(playerid,pName,sizeof(pName));
  90. format(pFile,sizeof(pFile),"Users/%s.ini",pName);
  91. WP_Hash(hashed,129,password);
  92. new INI:PlayerFile = INI_Open(pFile);
  93. INI_WriteString(PlayerFile,"Password",hashed);
  94. INI_WriteInt(PlayerFile,"Admin",0);
  95. INI_WriteInt(PlayerFile,"Score",0);
  96. INI_WriteInt(PlayerFile,"Cash",0);
  97. INI_WriteInt(PlayerFile,"Deaths",0);
  98. INI_WriteInt(PlayerFile,"Kills",0);
  99. INI_Close(PlayerFile);
  100. format(string,sizeof(string),"%s has registered an account.");
  101. print(string);
  102. return 1;
  103. }
  104.  
  105. public OnPlayerLogin(playerid,password[])
  106. {
  107. if(strcmp(password,pInfo[playerid][Password]))
  108. {
  109. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Password incorrect.\nPlease enter a password.","Login","Quit");
  110. }
  111. else
  112. {
  113. SetPlayerScore(playerid,pInfo[playerid][Score]);
  114. GivePlayerMoney(playerid,pInfo[playerid][Cash]);
  115. }
  116. return 1;
  117. }
  118.  
  119. public OnPlayerDisconnect(playerid,reason)
  120. {
  121. new pFile[124],pName[124];
  122. GetPlayerName(playerid,pName,sizeof(pName));
  123. format(pFile,sizeof(pFile),"Users/%s.ini",pName);
  124. new INI:PlayerFile = INI_Open(pFile);
  125. INI_WriteString(PlayerFile,"Password",pInfo[playerid][Password]);
  126. INI_WriteInt(PlayerFile,"Admin",pInfo[playerid][Admin]);
  127. INI_WriteInt(PlayerFile,"Score",GetPlayerScore(playerid));
  128. INI_WriteInt(PlayerFile,"Cash",GetPlayerMoney(playerid));
  129. INI_WriteInt(PlayerFile,"Deaths",pInfo[playerid][Deaths]);
  130. INI_WriteInt(PlayerFile,"Kills",pInfo[playerid][Kills]);
  131. INI_Close(PlayerFile);
  132. return 1;
  133. }
  134.  
  135. public OnPlayerDeath(playerid,killerid,reason)
  136. {
  137. pInfo[killerid][Kills] ++;
  138. pInfo[playerid][Deaths] ++;
  139. return 1;
  140. }
  141.  
  142. public OnPlayerText(playerid,text[])
  143. {
  144. if(muted[playerid] == 1)
  145. {
  146. SendClientMessage(playerid,-1,"ERROR:Your muted.");
  147. return 0;
  148. }
  149. return 1;
  150. }
  151. /* Commands */
  152. CMD:admins(playerid,params[])
  153. {
  154. new string[128],pName[MAX_PLAYER_NAME],bool:dfound = false,dcount = 0;
  155. for(new i = 0; i < MAX_PLAYERS; i++)
  156. {
  157. if(pInfo[i][Admin] > 0) continue;
  158. if(dcount == 0)
  159. {
  160. dfound = true; dcount += 1;
  161. GetPlayerName(i,pName,sizeof(pName));
  162. format(string,sizeof(string),"%s",pName);
  163. }
  164. else
  165. {
  166. dcount += 1;
  167. GetPlayerName(i,pName,sizeof(pName));
  168. format(string,sizeof(string),"%s,%s",string,pName);
  169. }
  170. if(dcount == 6)
  171. {
  172. dcount = 0;
  173. SendClientMessage(playerid,-1,string);
  174. }
  175. }
  176. if(dcount != 0)
  177. {
  178. SendClientMessage(playerid,-1,string);
  179. }
  180. if(!dfound)
  181. {
  182. SendClientMessage(playerid,-1,"No admins online");
  183. }
  184. return 1;
  185. }
  186.  
  187. CMD:slap(playerid,params[])
  188. {
  189. if(pInfo[playerid][Admin] < 1) return 0;
  190. new target,pName[MAX_PLAYER_NAME],Float:x,Float:y,Float:z,string[124];
  191. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/slap [playerid]");
  192. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  193. GetPlayerName(target,pName,sizeof(pName));
  194. format(string,sizeof(string),"%s has been slapped by admin.",pName);
  195. SendClientMessageToAll(-1,string);
  196. GetPlayerPos(target,x,y,z);
  197. SetPlayerPos(target,x,y,z+15);
  198. return 1;
  199. }
  200.  
  201. CMD:banip(playerid,params[])
  202. {
  203. if(pInfo[playerid][Admin] < 3) return 0;
  204. new ip[44],string[124];
  205. if(sscanf(params,"s[44]",ip)) return SendClientMessage(playerid,-1,"USAGE:/banip [ip]");
  206. format(string,sizeof(string),"banip %s",ip);
  207. SendRconCommand(string);
  208. format(string,sizeof(string),"'%s' has been banned.",ip);
  209. SendClientMessage(playerid,-1,string);
  210. return 1;
  211. }
  212.  
  213. CMD:changepass(playerid,params[])
  214. {
  215. new newpass[124],hashed[129];
  216. if(sscanf(params,"s[124]",newpass)) return SendClientMessage(playerid,-1,"USAGE:/changepass [newpass]");
  217. WP_Hash(hashed,129,newpass);
  218. pInfo[playerid][Password] = hashed;
  219. SendClientMessage(playerid,-1,"Changed.");
  220. return 1;
  221. }
  222.  
  223. CMD:freeze(playerid,params[])
  224. {
  225. if(pInfo[playerid][Admin] < 1) return 0;
  226. new target,string[124],pName[24];
  227. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/freeze [playerid]");
  228. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  229. GetPlayerName(target,pName,24);
  230. format(string,sizeof(string),"%s has been frozen by an admin",pName);
  231. SendClientMessageToAll(-1,string);
  232. TogglePlayerControllable(target,0);
  233. return 1;
  234. }
  235.  
  236. CMD:unfreeze(playerid,params[])
  237. {
  238. if(pInfo[playerid][Admin] < 1) return 0;
  239. new target,string[124],pName[24];
  240. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/unfreeze [playerid]");
  241. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  242. GetPlayerName(target,pName,24);
  243. format(string,sizeof(string),"%s has been unfrozen by an admin",pName);
  244. SendClientMessageToAll(-1,string);
  245. TogglePlayerControllable(target,1);
  246. return 1;
  247. }
  248.  
  249. CMD:goto(playerid,params[])
  250. {
  251. if(pInfo[playerid][Admin] < 1) return 0;
  252. new target,Float:x,Float:y,Float:z;
  253. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/goto [playerid]");
  254. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  255. GetPlayerPos(target,x,y,z);
  256. SetPlayerPos(playerid,x,y,z);
  257. return 1;
  258. }
  259.  
  260. CMD:get(playerid,params[])
  261. {
  262. if(pInfo[playerid][Admin] < 1) return 0;
  263. new target,Float:x,Float:y,Float:z;
  264. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/get [playerid]");
  265. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  266. GetPlayerPos(playerid,x,y,z);
  267. SetPlayerPos(target,x,y,z);
  268. return 1;
  269. }
  270.  
  271. CMD:mute(playerid,params[])
  272. {
  273. if(pInfo[playerid][Admin] < 1) return 0;
  274. new target,string[124],pName[24];
  275. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/mute [playerid]");
  276. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  277. GetPlayerName(target,pName,sizeof(pName));
  278. format(string,sizeof(string),"%s has been muted by an admin.",pName);
  279. SendClientMessageToAll(-1,string);
  280. muted[target] = 1;
  281. return 1;
  282. }
  283.  
  284. CMD:unmute(playerid,params[])
  285. {
  286. if(pInfo[playerid][Admin] < 1) return 0;
  287. new target,string[124],pName[24];
  288. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/unmute [playerid]");
  289. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  290. GetPlayerName(target,pName,sizeof(pName));
  291. format(string,sizeof(string),"%s has been unmuted by an admin.",pName);
  292. SendClientMessageToAll(-1,string);
  293. muted[target] = 0;
  294. return 1;
  295. }
  296.  
  297. CMD:kick(playerid,params[])
  298. {
  299. if(pInfo[playerid][Admin] < 2) return 0;
  300. new target,reason[66],string[124],pName[24];
  301. if(sscanf(params,"us[66]",target,reason)) return SendClientMessage(playerid,-1,"USAGE:/kick [playerid] [reason]");
  302. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  303. GetPlayerName(target,pName,sizeof(pName));
  304. format(string,sizeof(string),"%s has bene kicked by an admin. Reason:%s",pName,reason);
  305. SendClientMessageToAll(-1,string);
  306. Kick(target);
  307. return 1;
  308. }
  309.  
  310. CMD:ban(playerid,params[])
  311. {
  312. if(pInfo[playerid][Admin] < 2) return 0;
  313. new target,reason[66],string[124],pName[24];
  314. if(sscanf(params,"us[66]",target,reason)) return SendClientMessage(playerid,-1,"USAGE:/ban [playerid] [reason]");
  315. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  316. GetPlayerName(target,pName,sizeof(pName));
  317. format(string,sizeof(string),"%s has bene banned by an admin. Reason:%s",pName,reason);
  318. SendClientMessageToAll(-1,string);
  319. Ban(target);
  320. return 1;
  321. }
  322.  
  323. CMD:ip(playerid,params[])
  324. {
  325. if(pInfo[playerid][Admin] < 1) return 0;
  326. new target,pIP[34],pName[24],string[124];
  327. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/ip [playerid]");
  328. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  329. GetPlayerName(target,pName,sizeof(pName));
  330. GetPlayerIp(target,pIP,34);
  331. format(string,sizeof(string),"%s's IP is %s",pName,pIP);
  332. SendClientMessage(playerid,-1,string);
  333. return 1;
  334. }
  335.  
  336. CMD:setlevel(playerid,params[])
  337. {
  338. if(pInfo[playerid][Admin] < 3) return 0;
  339. new target,level,string[124],pName[24];
  340. if(sscanf(params,"ud",target,level)) return SendClientMessage(playerid,-1,"USAGE:/setlevel [playerid] [level]");
  341. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  342. if(level < 0 || level > 3) return SendClientMessage(playerid,-1,"ERROR:Invalid level. (1,2,3)");
  343. GetPlayerName(target,pName,sizeof(pName));
  344. format(string,sizeof(string),"%s has been promoted to a level %d admin!",pName,level);
  345. SendClientMessageToAll(-1,string);
  346. pInfo[playerid][Admin] = level;
  347. return 1;
  348. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement