Advertisement
Guest User

[BG]Crunks Admin system

a guest
Nov 26th, 2014
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.38 KB | None | 0 0
  1. /* Crunks Admin system
  2.  
  3. Съдържание:
  4.  
  5. +Register & Login - направени са в диалог, а паролите ще се криптират под udb_hash
  6. +Admin система - състои се от 5 нива
  7. +Chat ранк система - Това(http://cs-bg.info/forum/viewtopic.php?f=171&t=138454) е тя,но е направено да се запазват убийствата.
  8. +RCON admin control panel - съдържа Kick, Ban и правене на админ.Появява се когато цъкнете 2 пъти на някой играч в scoreboard-a.
  9. +Anti-Swear системка - системата ще блокира съобщенията в които има псувни(можете да добавите каквито думи искате)
  10.  
  11. Команди за играчите: /helpme
  12.  
  13. Credits:
  14. Crunks - главен скриптер
  15. Dracoblue - hash системата за пароли
  16. WestSize - началната идея и скрипт за chat ранк системата
  17.  
  18. Ако съм забравил някой се извинявам.
  19.  
  20. *Моля, не трийте тези редове.
  21. **Реклами от сорта на съобщения и т.н НЯМА.Всичко което е пускано от мен(Crunks) безплатно няма да съдържа реклами.
  22.  
  23. Поздрави,
  24. С.Игнатов
  25.  
  26. */
  27.  
  28. #include <a_samp>
  29. #include <YSI\y_ini>
  30. #include <zcmd>
  31. #include <sscanf2>
  32.  
  33. #define DIALOG_REGISTER 1
  34. #define DIALOG_LOGIN 2
  35. #define DIALOG_SUCCESS_1 3
  36. #define DIALOG_SUCCESS_2 4
  37. #define DIALOG_PMENU 5
  38. #define DIALOG_MADMIN 6
  39. #define DIALOG_PKICK 7
  40. #define DIALOG_PBAN 8
  41.  
  42. #define COLOR_YELLOW    0xFFFF00AA
  43.  
  44. #define PATH "CAS/Players/%s.ini"
  45. #define SCM SendClientMessage
  46. #define SCMToAll SendClientMessageToAll
  47.  
  48. forward LoadUser_data(playerid,name[],value[]);
  49.  
  50. new SwearWords[][] = //Добавете още колкото искате :)
  51. {
  52.   "noob",
  53.   "******",
  54.   "fuck u",
  55.   "fuck",
  56.   "pedal",
  57.   "retard",
  58.   "laino"
  59. };
  60.  
  61. enum pInfo
  62. {
  63.     pPass,
  64.     pCash,
  65.     pAdmin,
  66.     pKills,
  67.     pDeaths,
  68.     pSkin
  69. }
  70. new PlayerInfo[MAX_PLAYERS][pInfo];
  71.  
  72.  
  73. public LoadUser_data(playerid,name[],value[])
  74. {
  75.     INI_Int("Password",PlayerInfo[playerid][pPass]);
  76.     INI_Int("Cash",PlayerInfo[playerid][pCash]);
  77.     INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
  78.     INI_Int("Kills",PlayerInfo[playerid][pKills]);
  79.     INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
  80.     INI_Int("Skin",PlayerInfo[playerid][pSkin]);
  81.     return 1;
  82. }
  83.  
  84. stock UserPath(playerid)
  85. {
  86.     new string[128],playername[MAX_PLAYER_NAME];
  87.     GetPlayerName(playerid,playername,sizeof(playername));
  88.     format(string,sizeof(string),PATH,playername);
  89.     return string;
  90. }
  91.  
  92. stock GetName(playerid)
  93. {
  94.     new pname[MAX_PLAYER_NAME]; pname="Invalid PlayerID";
  95.     if(IsPlayerConnected(playerid)) {
  96.     GetPlayerName(playerid, pname, sizeof (pname));
  97.     }
  98.     return pname;
  99. }
  100.  
  101. stock SendToAdmins(COLOR,message[])
  102. {
  103.     new string[128];
  104.     for(new i = 0; < MAX_PLAYERS; i++);
  105.     if(PlayerInfo[i][pAdmin] > 1)
  106.     {
  107.         SendClientMessage(i,COLOR,message);
  108.     }
  109.     return 0;
  110. }
  111.  
  112.  
  113. /*Създадено от Dracoblue*/
  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. main()
  128. {
  129.     print("Loaded Crunks Admin system");
  130. }
  131.  
  132. public OnFilterScriptInit()
  133. {
  134.     return 1;
  135. }
  136.  
  137. public OnFilterScriptExit()
  138. {
  139.     return 1;
  140. }
  141.  
  142. public OnPlayerRequestClass(playerid, classid)
  143. {
  144.     return 1;
  145. }
  146.  
  147. public OnPlayerConnect(playerid)
  148. {
  149.     if(fexist(UserPath(playerid)))
  150.     {
  151.         INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  152.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Влизане","Моля, въведи твоята парола,за да влезнеш","Влизане","Откажи");
  153.     }
  154.     else
  155.     {
  156.         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Регистриране","Въведи парола,за да регистрираш твоя акаунт.","Регистрация","Откажи");
  157.     }
  158.     return 1;
  159. }
  160.  
  161. public OnPlayerDisconnect(playerid, reason)
  162. {
  163.     new INI:File = INI_Open(UserPath(playerid));
  164.     INI_SetTag(File,"data");
  165.     INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
  166.     INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
  167.     INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
  168.     INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
  169.     INI_WriteInt(File,"Skin",GetPlayerSkin(playerid));
  170.     INI_Close(File);
  171.     return 1;
  172. }
  173.  
  174. public OnPlayerSpawn(playerid)
  175. {
  176.     SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  177.     return 1;
  178. }
  179.  
  180. public OnPlayerDeath(playerid, killerid, reason)
  181. {
  182.     PlayerInfo[killerid][pKills]++;
  183.     PlayerInfo[playerid][pDeaths]++;
  184.     SendDeathMessage(killerid, playerid, reason);
  185.     return 1;
  186. }
  187.  
  188. public OnVehicleSpawn(vehicleid)
  189. {
  190.     return 1;
  191. }
  192.  
  193. public OnVehicleDeath(vehicleid, killerid)
  194. {
  195.     SetVehicleToRespawn(vehicleid);
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerText(playerid, text[])
  200. {
  201.     for(new words; words<sizeof(SwearWords); words++)
  202.     {
  203.         if(strfind(text,SwearWords[words], true) != -1 ) { SCM(playerid, COLOR_YELLOW, "Псуването е забранено!"); return 0;}
  204.     }
  205.     new rankon[MAX_PLAYERS];
  206.     if(rankon[playerid] == 1)
  207.     {
  208.         new rank[32], PlayerName[MAX_PLAYER_NAME], String[128];
  209.         if(PlayerInfo[playerid][pKills] >= 500) { rank = "Най-добрия!"; }
  210.         else if(PlayerInfo[playerid][pKills] > 400 && PlayerInfo[playerid][pKills] <= 499) { rank = "Ultra Killer!"; }
  211.         else if(PlayerInfo[playerid][pKills] > 300 && PlayerInfo[playerid][pKills] <= 399) { rank = "Професионалист!"; }
  212.         else if(PlayerInfo[playerid][pKills] > 200 && PlayerInfo[playerid][pKills] <= 299) { rank = "Ветеран!"; }
  213.         else if(PlayerInfo[playerid][pKills] > 100 && PlayerInfo[playerid][pKills] <= 199) { rank = "Напредващ!"; }
  214.         else if(PlayerInfo[playerid][pKills] > 0 && PlayerInfo[playerid][pKills] <= 99) { rank = "Новак!"; }
  215.         GetPlayerName(playerid, PlayerName, 24);
  216.         format(String, sizeof(String), "{BA0000}[%s] {%06x}%s (%d): {FFFFFF}%s", rank, (GetPlayerColor(playerid) >>> 8), PlayerName, playerid, text);
  217.         SCMToAll(-1,String);
  218.         return 0;
  219.     }
  220.     return 1;
  221. }
  222.  
  223. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  224. {
  225.     return 1;
  226. }
  227.  
  228. public OnPlayerExitVehicle(playerid, vehicleid)
  229. {
  230.     return 1;
  231. }
  232.  
  233. public OnPlayerStateChange(playerid, newstate, oldstate)
  234. {
  235.     return 1;
  236. }
  237.  
  238. public OnPlayerEnterCheckpoint(playerid)
  239. {
  240.     return 1;
  241. }
  242.  
  243. public OnPlayerLeaveCheckpoint(playerid)
  244. {
  245.     return 1;
  246. }
  247.  
  248. public OnPlayerEnterRaceCheckpoint(playerid)
  249. {
  250.     return 1;
  251. }
  252.  
  253. public OnPlayerLeaveRaceCheckpoint(playerid)
  254. {
  255.     return 1;
  256. }
  257.  
  258. public OnRconCommand(cmd[])
  259. {
  260.     return 1;
  261. }
  262.  
  263. public OnPlayerRequestSpawn(playerid)
  264. {
  265.     return 1;
  266. }
  267.  
  268. public OnObjectMoved(objectid)
  269. {
  270.     return 1;
  271. }
  272.  
  273. public OnPlayerObjectMoved(playerid, objectid)
  274. {
  275.     return 1;
  276. }
  277.  
  278. public OnPlayerPickUpPickup(playerid, pickupid)
  279. {
  280.     return 1;
  281. }
  282.  
  283. public OnVehicleMod(playerid, vehicleid, componentid)
  284. {
  285.     return 1;
  286. }
  287.  
  288. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  289. {
  290.     return 1;
  291. }
  292.  
  293. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  294. {
  295.     return 1;
  296. }
  297.  
  298. public OnPlayerSelectedMenuRow(playerid, row)
  299. {
  300.     return 1;
  301. }
  302.  
  303. public OnPlayerExitedMenu(playerid)
  304. {
  305.     return 1;
  306. }
  307.  
  308. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  309. {
  310.     return 1;
  311. }
  312.  
  313. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  314. {
  315.     return 1;
  316. }
  317.  
  318. public OnRconLoginAttempt(ip[], password[], success)
  319. {
  320.     return 1;
  321. }
  322.  
  323. public OnPlayerUpdate(playerid)
  324. {
  325.     return 1;
  326. }
  327.  
  328. public OnPlayerStreamIn(playerid, forplayerid)
  329. {
  330.     return 1;
  331. }
  332.  
  333. public OnPlayerStreamOut(playerid, forplayerid)
  334. {
  335.     return 1;
  336. }
  337.  
  338. public OnVehicleStreamIn(vehicleid, forplayerid)
  339. {
  340.     return 1;
  341. }
  342.  
  343. public OnVehicleStreamOut(vehicleid, forplayerid)
  344. {
  345.     return 1;
  346. }
  347.  
  348. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  349. {
  350.     switch(dialogid)
  351.     {
  352.         case DIALOG_REGISTER:
  353.         {
  354.             if (!response) return Kick(playerid);
  355.             if(response)
  356.             {
  357.                 if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация","Тази парола е невалидна.\nМоля, въведи валидна парола,за да се регистрираш.","Регистриране","Откажи");
  358.                 new INI:File = INI_Open(UserPath(playerid));
  359.                 INI_SetTag(File,"data");
  360.                 INI_WriteInt(File,"Password",udb_hash(inputtext));
  361.                 INI_WriteInt(File,"Cash",0);
  362.                 INI_WriteInt(File,"Admin",0);
  363.                 INI_WriteInt(File,"Kills",0);
  364.                 INI_WriteInt(File,"Deaths",0);
  365.                 INI_Close(File);
  366.                 SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
  367.                 SpawnPlayer(playerid);
  368.             }
  369.         }
  370.         case DIALOG_LOGIN:
  371.         {
  372.             if (!response) return Kick ( playerid );
  373.             if(response)
  374.             {
  375.                 if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
  376.                 {
  377.                     INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
  378.                     GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
  379.                 }
  380.                 else
  381.                 {
  382.                     ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Влизане","Ти си въвел грешна парола.\nМоля, въведи вярната,за да влезнеш.","Влез","Откажи");
  383.                 }
  384.                 return 1;
  385.             }
  386.         }
  387.         case DIALOG_PMENU:
  388.         {
  389.             if(response)
  390.             {
  391.                 if(listitem == 0)
  392.                 {
  393.                     ShowPlayerDialog(playerid, DIALOG_MADMIN, DIALOG_STYLE_INPUT, "Направи админ", "Задай админ левел на играча", "Задай", "Откажи");
  394.                 }
  395.                 if(listitem == 1)
  396.                 {
  397.                     new kname[256];
  398.                     format(kname, 256, "Сигурен ли сте,че искате да кикнете %s?", GetName(GetPVarInt(playerid,"pplayerid")));
  399.                     ShowPlayerDialog(playerid, DIALOG_PKICK, DIALOG_STYLE_MSGBOX, "Kick-ване на играч", kname, "Kick", "Откажи");
  400.                 }
  401.                 if(listitem == 2)
  402.                 {
  403.                     new kname[256];
  404.                     format(kname, 256, "Сигурен ли сте,че искате да баннете %s?", GetName(GetPVarInt(playerid,"pplayerid")));
  405.                     ShowPlayerDialog(playerid, DIALOG_PBAN, DIALOG_STYLE_MSGBOX, "Ban-ване на играч", kname, "Ban", "Откажи");
  406.                 }
  407.                 return 1;
  408.             }
  409.         }
  410.         case DIALOG_MADMIN:
  411.         {
  412.             if(response)
  413.             {
  414.                 new string[256];
  415.                 if(strval(inputtext) < 0 || strval(inputtext) > 5) return SCM(playerid, COLOR_YELLOW, "ERROR: Админ левелите са от 0 до 5.");
  416.                 PlayerInfo[GetPVarInt(playerid,"pplayerid")][pAdmin] = strval(inputtext);
  417.                 format(string, 256, "ADMIN: %s даде %d админ левел на %s.", GetName(playerid), inputtext, GetName(GetPVarInt(playerid,"pplayerid")));
  418.                 SCMToAll(COLOR_YELLOW, string);
  419.                 SetPVarInt(playerid,"pplayerid",999);
  420.                 return 1;
  421.             }
  422.         }
  423.         case DIALOG_PKICK:
  424.         {
  425.             if(response)
  426.             {
  427.                 new string[256];
  428.                 Kick(GetPVarInt(playerid,"pplayerid"));
  429.                 format(string, 256, "ADMIN: %s кикна %s от сървъра", GetName(playerid), GetName(GetPVarInt(playerid,"pplayerid")));
  430.                 SCMToAll(COLOR_YELLOW, string);
  431.                 SetPVarInt(playerid,"pplayerid",999);
  432.                 return 1;
  433.             }
  434.         }
  435.         case DIALOG_PBAN:
  436.         {
  437.             if(response)
  438.             {
  439.                 new string[256];
  440.                 Ban(GetPVarInt(playerid,"pplayerid"));
  441.                 format(string, 256, "ADMIN: %s банна %s от сървъра", GetName(playerid), GetName(GetPVarInt(playerid,"pplayerid")));
  442.                 SCMToAll(COLOR_YELLOW, string);
  443.                 SetPVarInt(playerid,"pplayerid",999);
  444.                 return 1;
  445.             }
  446.         }
  447.     }
  448.     return 1;
  449. }
  450.  
  451. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  452. {
  453.     if(IsPlayerAdmin(playerid))
  454.     {
  455.         ShowPlayerDialog(playerid, DIALOG_PMENU, DIALOG_STYLE_LIST, GetName(clickedplayerid), "Направи админ\nKick\nBan", "Избери", "Откажи");
  456.         SetPVarInt(playerid,"pplayerid",clickedplayerid);
  457.         return 1;
  458.     }
  459.     return 1;
  460. }
  461.  
  462. CMD:helpme(playerid, params[])
  463. {
  464.     new string[128], text[48];
  465.     if(sscanf(params, "s[48]", text)) return SCM(playerid, COLOR_YELLOW, "Използвай /helpme [Text]");
  466.     for(new i = 0; i < MAX_PLAYERS; i++)
  467.     {
  468.         if(PlayerInfo[i][pAdmin] > 0)
  469.         {
  470.             format(string,sizeof(string),"HelpME: %s(ID: %d) попита: %s", GetName(playerid), playerid, text);
  471.             SCM(i, COLOR_YELLOW, string);
  472.         }
  473.     }
  474.     return 1;
  475. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement