Advertisement
Guest User

Untitled

a guest
Sep 6th, 2010
1,264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.72 KB | None | 0 0
  1. // This is a comment
  2. // uncomment the line below if you want to write a filterscript
  3. #define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6. #include <dini>
  7.  
  8. #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  9.  
  10. #define GREY 0xAFAFAFAA
  11. #define GREEN 0x33AA33AA
  12. #define YELLOW 0xFFFF00AA
  13. #define WHITE 0xFFFFFFAA
  14. #define LIGHTBLUE 0x33CCFFAA
  15. #define ORANGE 0xFF9900AA
  16. enum gPInfo
  17. {
  18. Logged,
  19. Regged,
  20. Level
  21. };
  22. new PInfo[MAX_PLAYERS][gPInfo];
  23. #if defined FILTERSCRIPT
  24.  
  25. public OnFilterScriptInit()
  26. {
  27. print("\n--------------------------------------");
  28. print(" Admin Script Tutorial By Cale");
  29. print("--------------------------------------\n");
  30. return 1;
  31. }
  32.  
  33. public OnFilterScriptExit()
  34. {
  35. return 1;
  36. }
  37.  
  38. #else
  39.  
  40. main()
  41. {
  42. print("\n----------------------------------");
  43. print(" Blank Gamemode by your name here");
  44. print("----------------------------------\n");
  45. }
  46.  
  47. #endif
  48.  
  49. public OnGameModeInit()
  50. {
  51. // Don't use these lines if it's a filterscript
  52. SetGameModeText("Blank Script");
  53. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  54. return 1;
  55. }
  56.  
  57.  
  58. public OnPlayerConnect(playerid)
  59. {
  60. PInfo[playerid][Logged] = 0;
  61. PInfo[playerid][Regged] = 0;
  62. PInfo[playerid][Level] = 0;
  63. new n[MAX_PLAYER_NAME], file[256];
  64. GetPlayerName(playerid,n,sizeof(n));
  65. format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  66. if(dini_Exists(file))
  67. {
  68. SendClientMessage(playerid,LIGHTBLUE,"You are registered, Please /login!");
  69. PInfo[playerid][Regged] = 1;
  70. PInfo[playerid][Logged] = 0;
  71. return 1;
  72. }
  73. if(!dini_Exists(file))
  74. {
  75. SendClientMessage(playerid,LIGHTBLUE,"You are not registered, Please /register!");
  76. PInfo[playerid][Regged] = 0;
  77. PInfo[playerid][Logged] = 0;
  78. return 1;
  79. }
  80. return 1;
  81. }
  82.  
  83. public OnPlayerDisconnect(playerid, reason)
  84. {
  85. new n[MAX_PLAYER_NAME], file[256];
  86. GetPlayerName(playerid,n,sizeof(n));
  87. format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  88. PInfo[playerid][Logged] = 0;
  89. dini_IntSet(file,"Logged",0);
  90. return 1;
  91. }
  92.  
  93. public OnPlayerText(playerid, text[])
  94. {
  95. return 1;
  96. }
  97.  
  98. public OnPlayerCommandText(playerid, cmdtext[])
  99. {
  100. new cmd[256], idx;
  101. cmd = strtok(cmdtext, idx);
  102. dcmd(register,8,cmdtext);
  103. dcmd(login,5,cmdtext);
  104. dcmd(setlevel,8,cmdtext);
  105. dcmd(kick,4,cmdtext);
  106. dcmd(ban,3,cmdtext);
  107. return 0;
  108. }
  109. //========================= >>> REGISTER <<< =================================//
  110. dcmd_register(playerid,params[])
  111. {
  112. new file[256],n[MAX_PLAYER_NAME];
  113. GetPlayerName(playerid,n,MAX_PLAYER_NAME);
  114. format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  115. if(dini_Exists(file)) return SendClientMessage(playerid,YELLOW,"You are already registered!");
  116. if(PInfo[playerid][Regged] == 1) return SendClientMessage(playerid,LIGHTBLUE,"You are already registered!");
  117. if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid,ORANGE,"You are already registered, and logged in!");
  118. if(strlen(params))
  119. {
  120. if(!dini_Exists(file))
  121. {
  122. dini_Create(file);
  123. dini_Set(file,"Password",params);
  124. dini_IntSet(file,"Regged",1);
  125. dini_IntSet(file,"Logged",0);
  126. dini_IntSet(file,"Level",0);
  127. SendClientMessage(playerid,LIGHTBLUE,"Congratulations, you have just registered, please /login");
  128. PInfo[playerid][Regged] = 1;
  129. return 1;
  130. }
  131. }
  132. else
  133. {
  134. SendClientMessage(playerid,GREY,"USAGE: /register <Password>");
  135. return 1;
  136. }
  137. return 1;
  138. }
  139. //===========================>>> LOGIN <<<======================================
  140. dcmd_login(playerid,params[])
  141. {
  142. new file[256],n[MAX_PLAYER_NAME];
  143. GetPlayerName(playerid,n,MAX_PLAYER_NAME);
  144. format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
  145. if(!dini_Exists(file)) return SendClientMessage(playerid,YELLOW,"You are not registered! Please /register");
  146. if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid,LIGHTBLUE,"You are already logged in!");
  147. if(PInfo[playerid][Regged] == 0) return SendClientMessage(playerid,ORANGE,"You are not registered! Please /register");
  148. if(strlen(params))
  149. {
  150. new pass[256];
  151. pass = dini_Get(file,"Password");
  152. if(dini_Exists(file))
  153. {
  154. if(strcmp(params,pass,false) != 0)
  155. {
  156. SendClientMessage(playerid,YELLOW,"Wrong Password!");
  157. }
  158. else
  159. {
  160. dini_IntSet(file,"Logged",1);
  161. PInfo[playerid][Logged] = 1;
  162. PInfo[playerid][Level] = dini_Int(file,"Level");
  163. SendClientMessage(playerid,YELLOW,"You have now logged in!");
  164. return 1;
  165. }
  166. }
  167. }
  168. else
  169. {
  170. SendClientMessage(playerid,GREY,"USAGE: /login <Password>");
  171. return 1;
  172. }
  173. return 1;
  174. }
  175. /*==============================================================================
  176. =============================ADMIN COMMANDS!====================================
  177. ================================================================================*/
  178. dcmd_setlevel(playerid,params[])
  179. {
  180. new level,id,file[256],n[MAX_PLAYER_NAME];//creating the new variabls
  181. new tmp[256], tmp2[256], Index,str[50];// creating the new variables
  182. tmp = strtok(params,Index), tmp2 = strtok(params,Index),id = strval(tmp),level = strval(tmp2);// setting them to strtok so we can use them as parameters of our command
  183. GetPlayerName(id,n,MAX_PLAYER_NAME);//getting the players name
  184. format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);//formatting the file
  185. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,GREY,"You are not an RCON admin!");//if the player is not rcon admin
  186. if(!strlen(params)) return SendClientMessage(playerid,GREY,"USAGE: /setlevel <ID> <Level>");// if the string is empty
  187. if(!IsPlayerConnected(id))return SendClientMessage(playerid,GREY,"You have entered an incorrect ID"); //if the id is not connected
  188. PInfo[id][Level] = level;//sets the level of the player
  189. dini_IntSet(file,"Level",level);//saves the new level to the file
  190. format(str,sizeof(str),"You have set %s's level to %d",n,level);//creates the string
  191. SendClientMessage(playerid,LIGHTBLUE,str);
  192. return 1;
  193. }
  194. dcmd_kick(playerid,params[])
  195. {
  196. new id,n[MAX_PLAYER_NAME],on[MAX_PLAYER_NAME];
  197. new tmp[256], Index, str[49];
  198. tmp = strtok(params,Index), id = strval(tmp);
  199. GetPlayerName(id,on,sizeof(on));
  200. GetPlayerName(playerid,n,sizeof(n));
  201. if(PInfo[playerid][Level] < 3) return SendClientMessage(playerid,ORANGE,"You need to be level 3 to use this command!");
  202. if(!strlen(params)) return SendClientMessage(playerid,GREY,"USAGE: /kick <ID> ");
  203. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,GREY,"Invalid ID");
  204. format(str,sizeof(str),"%s has kicked %s",n,on);
  205. SendClientMessageToAll(LIGHTBLUE,str);
  206. Kick(id);
  207. return 1;
  208. }
  209. dcmd_ban(playerid,params[])
  210. {
  211. new id, n[MAX_PLAYER_NAME],on[MAX_PLAYER_NAME];
  212. new tmp[256], Index, str[49];
  213. tmp = strtok(params,Index), id = strval(tmp);
  214. GetPlayerName(id,on,sizeof(on));
  215. GetPlayerName(playerid,n,sizeof(n));
  216. if(PInfo[playerid][Level] < 3) return SendClientMessage(playerid,ORANGE,"You need to be level 3 to use this command!");
  217. if(!strlen(params)) return SendClientMessage(playerid,GREY,"USAGE: /ban <ID> ");
  218. if(!IsPlayerConnected(id)) return SendClientMessage(playerid,GREY,"Invalid ID");
  219. format(str,sizeof(str),"%s has banned %s",n,on);
  220. SendClientMessageToAll(ORANGE,str);
  221. Ban(id);
  222. return 1;
  223. }
  224.  
  225. strtok(const string[], &index)
  226. {
  227. new length = strlen(string);
  228. while ((index < length) && (string[index] <= ' '))
  229. {
  230. index++;
  231. }
  232. new offset = index;
  233. new result[20];
  234. while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  235. {
  236. result[index - offset] = string[index];
  237. index++;
  238. }
  239. result[index - offset] = EOS;
  240. return result;
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement