Advertisement
Guest User

T-Admin

a guest
Oct 31st, 2012
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.61 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:changepass(playerid,params[])
  153. {
  154. new newpass[124],hashed[129];
  155. if(sscanf(params,"s[124]",newpass)) return SendClientMessage(playerid,-1,"USAGE:/changepass [newpass]");
  156. WP_Hash(hashed,129,newpass);
  157. pInfo[playerid][Password] = hashed;
  158. SendClientMessage(playerid,-1,"Changed.");
  159. return 1;
  160. }
  161.  
  162. CMD:freeze(playerid,params[])
  163. {
  164. if(pInfo[playerid][Admin] < 1) return 0;
  165. new target,string[124],pName[24];
  166. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/freeze [playerid]");
  167. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  168. GetPlayerName(target,pName,24);
  169. format(string,sizeof(string),"%s has been frozen by an admin",pName);
  170. SendClientMessageToAll(-1,string);
  171. TogglePlayerControllable(target,0);
  172. return 1;
  173. }
  174.  
  175. CMD:unfreeze(playerid,params[])
  176. {
  177. if(pInfo[playerid][Admin] < 1) return 0;
  178. new target,string[124],pName[24];
  179. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/unfreeze [playerid]");
  180. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  181. GetPlayerName(target,pName,24);
  182. format(string,sizeof(string),"%s has been unfrozen by an admin",pName);
  183. SendClientMessageToAll(-1,string);
  184. TogglePlayerControllable(target,1);
  185. return 1;
  186. }
  187.  
  188. CMD:goto(playerid,params[])
  189. {
  190. if(pInfo[playerid][Admin] < 1) return 0;
  191. new target,Float:x,Float:y,Float:z;
  192. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/goto [playerid]");
  193. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  194. GetPlayerPos(target,x,y,z);
  195. SetPlayerPos(playerid,x,y,z);
  196. return 1;
  197. }
  198.  
  199. CMD:get(playerid,params[])
  200. {
  201. if(pInfo[playerid][Admin] < 1) return 0;
  202. new target,Float:x,Float:y,Float:z;
  203. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/get [playerid]");
  204. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  205. GetPlayerPos(playerid,x,y,z);
  206. SetPlayerPos(target,x,y,z);
  207. return 1;
  208. }
  209.  
  210. CMD:mute(playerid,params[])
  211. {
  212. if(pInfo[playerid][Admin] < 1) return 0;
  213. new target,string[124],pName[24];
  214. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/mute [playerid]");
  215. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  216. GetPlayerName(target,pName,sizeof(pName));
  217. format(string,sizeof(string),"%s has been muted by an admin.",pName);
  218. SendClientMessageToAll(-1,string);
  219. muted[target] = 1;
  220. return 1;
  221. }
  222.  
  223. CMD:unmute(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:/unmute [playerid]");
  228. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  229. GetPlayerName(target,pName,sizeof(pName));
  230. format(string,sizeof(string),"%s has been unmuted by an admin.",pName);
  231. SendClientMessageToAll(-1,string);
  232. muted[target] = 0;
  233. return 1;
  234. }
  235.  
  236. CMD:kick(playerid,params[])
  237. {
  238. if(pInfo[playerid][Admin] < 2) return 0;
  239. new target,reason[66],string[124],pName[24];
  240. if(sscanf(params,"us[66]",target,reason)) return SendClientMessage(playerid,-1,"USAGE:/kick [playerid] [reason]");
  241. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  242. GetPlayerName(target,pName,sizeof(pName));
  243. format(string,sizeof(string),"%s has bene kicked by an admin. Reason:%s",pName,reason);
  244. SendClientMessageToAll(-1,string);
  245. Kick(target);
  246. return 1;
  247. }
  248.  
  249. CMD:ban(playerid,params[])
  250. {
  251. if(pInfo[playerid][Admin] < 2) return 0;
  252. new target,reason[66],string[124],pName[24];
  253. if(sscanf(params,"us[66]",target,reason)) return SendClientMessage(playerid,-1,"USAGE:/ban [playerid] [reason]");
  254. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  255. GetPlayerName(target,pName,sizeof(pName));
  256. format(string,sizeof(string),"%s has bene banned by an admin. Reason:%s",pName,reason);
  257. SendClientMessageToAll(-1,string);
  258. Ban(target);
  259. return 1;
  260. }
  261.  
  262. CMD:ip(playerid,params[])
  263. {
  264. if(pInfo[playerid][Admin] < 1) return 0;
  265. new target,pIP[34],pName[24],string[124];
  266. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/ip [playerid]");
  267. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  268. GetPlayerName(target,pName,sizeof(pName));
  269. GetPlayerIp(target,pIP,34);
  270. format(string,sizeof(string),"%s's IP is %s",pName,pIP);
  271. SendClientMessage(playerid,-1,string);
  272. return 1;
  273. }
  274.  
  275. CMD:setlevel(playerid,params[])
  276. {
  277. if(pInfo[playerid][Admin] < 3) return 0;
  278. new target,level,string[124],pName[24];
  279. if(sscanf(params,"ud",target,level)) return SendClientMessage(playerid,-1,"USAGE:/setlevel [playerid] [level]");
  280. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  281. if(level < 0 || level > 3) return SendClientMessage(playerid,-1,"ERROR:Invalid level. (1,2,3)");
  282. GetPlayerName(target,pName,sizeof(pName));
  283. format(string,sizeof(string),"%s has been promoted to a level %d admin!",pName,level);
  284. SendClientMessageToAll(-1,string);
  285. pInfo[playerid][Admin] = level;
  286. return 1;
  287. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement