Advertisement
Guest User

T-Admin

a guest
Oct 30th, 2012
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.09 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. #define version "0.1"
  11. #define DIALOG_REGISTER 1
  12. #define DIALOG_LOGIN 2
  13.  
  14. enum PlayerInfo
  15. {
  16. Password[129],
  17. Admin,
  18. Score,
  19. Cash,
  20. Deaths,
  21. Kills
  22. }
  23. new pInfo[MAX_PLAYERS][PlayerInfo];
  24.  
  25.  
  26. /* Callbacks */
  27. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  28. {
  29. if(dialogid == DIALOG_REGISTER)
  30. {
  31. if(isnull(inputtext)) return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Please enter a password.","Register","Quit");
  32. OnPlayerRegister(playerid,inputtext);
  33. }
  34. if(dialogid == DIALOG_LOGIN)
  35. {
  36. if(isnull(inputtext)) return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Please enter a password.","Login","Quit");
  37. OnPlayerLogin(playerid,inputtext);
  38. }
  39. return 1;
  40. }
  41.  
  42. public OnPlayerConnect(playerid)
  43. {
  44. new pFile[64],pName[24];
  45. GetPlayerName(playerid,pName,sizeof(pName));
  46. format(pFile,sizeof(pFile),"Users/%s.ini",pName);
  47. muted[playerid] = 0;
  48. if(fexist(pFile))
  49. {
  50. INI_ParseFile(pFile,"LoadUserData",.bExtra = true,.extra = playerid);
  51. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Please enter a password.","Login","Quit");
  52. }
  53. else
  54. {
  55. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Please enter a password.","Register","Quit");
  56. }
  57. return 1;
  58. }
  59.  
  60. public LoadUserData(playerid,name[],value[])
  61. {
  62. INI_String("Password",pInfo[playerid][Password],129);
  63. INI_Int("Admin",pInfo[playerid][Admin]);
  64. INI_Int("Score",pInfo[playerid][Score]);
  65. INI_Int("Cash",pInfo[playerid][Cash]);
  66. INI_Int("Deaths",pInfo[playerid][Deaths]);
  67. INI_Int("Kills",pInfo[playerid][Kills]);
  68. return 1;
  69. }
  70.  
  71. public OnPlayerRegister(playerid,password[])
  72. {
  73. new hashed[129],pFile[64],pName[24],string[124];
  74. GetPlayerName(playerid,pName,sizeof(pName));
  75. format(pFile,sizeof(pFile),"Users/%s.ini",pName);
  76. WP_Hash(hashed,129,password);
  77. new INI:PlayerFile = INI_Open(pFile);
  78. INI_WriteString(PlayerFile,"Password",hashed);
  79. INI_WriteInt(PlayerFile,"Admin",0);
  80. INI_WriteInt(PlayerFile,"Score",0);
  81. INI_WriteInt(PlayerFile,"Cash",0);
  82. INI_WriteInt(PlayerFile,"Deaths",0);
  83. INI_WriteInt(PlayerFile,"Kills",0);
  84. INI_Close(PlayerFile);
  85. format(string,sizeof(string),"%s has registered an account.");
  86. print(string);
  87. return 1;
  88. }
  89.  
  90. public OnPlayerLogin(playerid,password[])
  91. {
  92. if(strcmp(password,pInfo[playerid][Password]))
  93. {
  94. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Password incorrect.\nPlease enter a password.","Login","Quit");
  95. }
  96. else
  97. {
  98. SetPlayerScore(playerid,pInfo[playerid][Score]);
  99. GivePlayerMoney(playerid,pInfo[playerid][Cash]);
  100. }
  101. return 1;
  102. }
  103.  
  104. public OnPlayerDisconnect(playerid,reason)
  105. {
  106. new pFile[124],pName[124];
  107. GetPlayerName(playerid,pName,sizeof(pName));
  108. format(pFile,sizeof(pFile),"Users/%s.ini",pName);
  109. new INI:PlayerFile = INI_Open(pFile);
  110. INI_WriteString(PlayerFile,"Password",pInfo[playerid][Password]);
  111. INI_WriteInt(PlayerFile,"Admin",pInfo[playerid][Admin]);
  112. INI_WriteInt(PlayerFile,"Score",GetPlayerScore(playerid));
  113. INI_WriteInt(PlayerFile,"Cash",GetPlayerMoney(playerid));
  114. INI_WriteInt(PlayerFile,"Deaths",pInfo[playerid][Deaths]);
  115. INI_WriteInt(PlayerFile,"Kills",pInfo[playerid][Kills]);
  116. INI_Close(PlayerFile);
  117. return 1;
  118. }
  119.  
  120. public OnPlayerDeath(playerid,killerid,reason)
  121. {
  122. pInfo[killerid][Kills] ++;
  123. pInfo[playerid][Deaths] ++;
  124. return 1;
  125. }
  126.  
  127. public OnPlayerText(playerid,text[])
  128. {
  129. if(muted[playerid] == 1)
  130. {
  131. SendClientMessage(playerid,-1,"ERROR:Your muted.");
  132. return 0;
  133. }
  134. return 1;
  135. }
  136. /* Commands */
  137. CMD:changepass(playerid,params[])
  138. {
  139. new newpass[124],hashed[129];
  140. if(sscanf(params,"s[124]",newpass)) return SendClientMessage(playerid,-1,"USAGE:/changepass [newpass]");
  141. WP_Hash(hashed,129,newpass);
  142. pInfo[playerid][Password] = hashed;
  143. SendClientMessage(playerid,-1,"Changed.");
  144. return 1;
  145. }
  146.  
  147. CMD:goto(playerid,params[])
  148. {
  149. if(pInfo[playerid][Admin] < 1) return 0;
  150. new target,Float:x,Float:y,Float:z;
  151. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/goto [playerid]");
  152. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  153. GetPlayerPos(target,x,y,z);
  154. SetPlayerPos(playerid,x,y,z);
  155. return 1;
  156. }
  157.  
  158. CMD:get(playerid,params[])
  159. {
  160. if(pInfo[playerid][Admin] < 1) return 0;
  161. new target,Float:x,Float:y,Float:z;
  162. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/get [playerid]");
  163. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  164. GetPlayerPos(playerid,x,y,z);
  165. SetPlayerPos(target,x,y,z);
  166. return 1;
  167. }
  168.  
  169. CMD:mute(playerid,params[])
  170. {
  171. if(pInfo[playerid][Admin] < 1) return 0;
  172. new target,string[124],pName[24];
  173. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/mute [playerid]");
  174. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  175. GetPlayerName(target,pName,sizeof(pName));
  176. format(string,sizeof(string),"%s has been muted by an admin.",pName);
  177. SendClientMessageToAll(-1,string);
  178. muted[target] = 1;
  179. return 1;
  180. }
  181.  
  182. CMD:unmute(playerid,params[])
  183. {
  184. if(pInfo[playerid][Admin] < 1) return 0;
  185. new target,string[124],pName[24];
  186. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/unmute [playerid]");
  187. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  188. GetPlayerName(target,pName,sizeof(pName));
  189. format(string,sizeof(string),"%s has been unmuted by an admin.",pName);
  190. SendClientMessageToAll(-1,string);
  191. muted[target] = 0;
  192. return 1;
  193. }
  194.  
  195. CMD:kick(playerid,params[])
  196. {
  197. if(pInfo[playerid][Admin] < 2) return 0;
  198. new target,reason[66],string[124],pName[24];
  199. if(sscanf(params,"us[66]",target,reason)) return SendClientMessage(playerid,-1,"USAGE:/kick [playerid] [reason]");
  200. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  201. GetPlayerName(target,pName,sizeof(pName));
  202. format(string,sizeof(string),"%s has bene kicked by an admin. Reason:%s",pName,reason);
  203. SendClientMessageToAll(-1,string);
  204. Kick(target);
  205. return 1;
  206. }
  207.  
  208. CMD:ban(playerid,params[])
  209. {
  210. if(pInfo[playerid][Admin] < 2) return 0;
  211. new target,reason[66],string[124],pName[24];
  212. if(sscanf(params,"us[66]",target,reason)) return SendClientMessage(playerid,-1,"USAGE:/ban [playerid] [reason]");
  213. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  214. GetPlayerName(target,pName,sizeof(pName));
  215. format(string,sizeof(string),"%s has bene banned by an admin. Reason:%s",pName,reason);
  216. SendClientMessageToAll(-1,string);
  217. Ban(target);
  218. return 1;
  219. }
  220.  
  221. CMD:ip(playerid,params[])
  222. {
  223. if(pInfo[playerid][Admin] < 1) return 0;
  224. new target,pIP[34],pName[24],string[124];
  225. if(sscanf(params,"u",target)) return SendClientMessage(playerid,-1,"USAGE:/ip [playerid]");
  226. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  227. GetPlayerName(target,pName,sizeof(pName));
  228. GetPlayerIp(target,pIP,34);
  229. format(string,sizeof(string),"%s's IP is %s",pName,pIP);
  230. SendClientMessage(playerid,-1,string);
  231. return 1;
  232. }
  233.  
  234. CMD:setlevel(playerid,params[])
  235. {
  236. if(pInfo[playerid][Admin] < 3) return 0;
  237. new target,level,string[124],pName[24];
  238. if(sscanf(params,"ud",target,level)) return SendClientMessage(playerid,-1,"USAGE:/setlevel [playerid] [level]");
  239. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,-1,"ERROR:Player not connected.");
  240. if(level < 0 || level > 3) return SendClientMessage(playerid,-1,"ERROR:Invalid level. (1,2,3)");
  241. GetPlayerName(target,pName,sizeof(pName));
  242. format(string,sizeof(string),"%s has been promoted to a level %d admin!",pName,level);
  243. SendClientMessageToAll(-1,string);
  244. pInfo[playerid][Admin] = level;
  245. return 1;
  246. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement