Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2011
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.11 KB | None | 0 0
  1. #include <a_samp>
  2. #include <ocmd>
  3. #include <dini>
  4.  
  5. #define FILTERSCRIPT
  6.  
  7. #define DIALOG_REGISTER 0
  8. #define DIALOG_LOGIN 1
  9.  
  10. #define COLOR_ORANGE 0xFF9900AA
  11. #define COLOR_RED2 0xFF0000FF
  12. #define COLOR_GRAD2 0xBFC0C2FF
  13. #define COLOR_LIGHTBLUE 0x33CCFFAA
  14. #define COLOR_WHITE 0xFFFFFFAA
  15. #define ROT 0xAA3333AA
  16.  
  17. enum sinfo
  18. {
  19. Adminlevel,
  20. Score,
  21. Banned,
  22. LoggedIn
  23. }
  24.  
  25. new SpielerInfo[MAX_PLAYERS][sinfo];
  26.  
  27. forward SendAdminMessage(color, string[]);
  28.  
  29.  
  30. public OnFilterScriptInit()
  31. {
  32. print("\n--------------------------------------");
  33. print(" Login & Admin System by KayuZ ");
  34. print("--------------------------------------\n");
  35. return 1;
  36. }
  37.  
  38. public OnFilterScriptExit()
  39. {
  40. return 1;
  41. }
  42.  
  43. public OnPlayerConnect(playerid)
  44. {
  45. new Spielerdatei[64];
  46. new name[MAX_PLAYER_NAME];
  47. GetPlayerName(playerid,name,sizeof(name));
  48. format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
  49. if(dini_Exists(Spielerdatei))
  50. {
  51. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"{FFCC33}Login","Passwort eingeben:","Einloggen","Abbrechen");
  52. }
  53. else
  54. {
  55. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"{FFCC33}Registrieren","Bitte gib dein gewünschtes Passwort ein:","Registrieren","Abbrechen");
  56. }
  57. return 1;
  58. }
  59.  
  60. public OnPlayerDisconnect(playerid, reason)
  61. {
  62. if(SpielerInfo[playerid][LoggedIn] == 1)
  63. {
  64. SpielerSpeichern(playerid);
  65. SpielerInfo[playerid][LoggedIn] = 0;
  66. }
  67. return 1;
  68. }
  69.  
  70. ocmd:setadmin(playerid,params[])
  71. {
  72. if(SpielerInfo[playerid][Adminlevel] == 5)
  73. {
  74. new pID, rank, string[128],string2[128],ziel[MAX_PLAYER_NAME],sender[MAX_PLAYER_NAME];
  75. GetPlayerName(pID,ziel,sizeof(ziel));
  76. GetPlayerName(playerid,sender,sizeof(sender));
  77. if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid, COLOR_GRAD2, "/setadmin [ID/NAME] [Level 1-5]");
  78. SpielerInfo[pID][Adminlevel] = rank;
  79. format(string,sizeof(string),"Du wurdest zum Adminlevel %d ernannt! Glückwunsch!",rank);
  80. SendClientMessage(pID,COLOR_LIGHTBLUE,string);
  81. format(string2,sizeof(string2),"AdmCMD: %s hat %s Admin %d gegeben!!",sender,ziel,rank);
  82. print(string2);
  83. }
  84. else
  85. {
  86. SendClientMessage(playerid, COLOR_GRAD2, "Du bist kein Admin!");
  87. }
  88. return 1;
  89. }
  90. ocmd:kick(playerid,params[])
  91. {
  92. new name1[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME], pID, reason[128], string[128];
  93. if(SpielerInfo[playerid][Adminlevel] >= 1)
  94. {
  95. GetPlayerName(playerid,name1,sizeof(name1));
  96. GetPlayerName(pID,name2,sizeof(name2));
  97. if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, COLOR_GRAD2, "/kick [ID/NAME] [GRUND]");
  98. format(string,sizeof(string),"AdmCmd: Spieler %s wurde von Admin %s gekickt. Grund: %s",name1,name2,reason);
  99. SendClientMessageToAll(COLOR_RED2,string);
  100. Kick(pID);
  101. }
  102. return 1;
  103. }
  104. ocmd:ban(playerid,params[])
  105. {
  106. new name1[MAX_PLAYER_NAME];
  107. new name2[MAX_PLAYER_NAME];
  108. if(SpielerInfo[playerid][Adminlevel]>=2)
  109. {
  110. new pID, reason[128], string[128];
  111. GetPlayerName(playerid,name1,sizeof(name1));
  112. GetPlayerName(pID,name2,sizeof(name2));
  113. if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid, COLOR_GRAD2, "/ban [ID/NAME] [GRUND]");
  114. format(string,sizeof(string),"AdmCmd: Spieler %s wurde von Admin %s gebannt. Grund: %s",name1,name2,reason);
  115. SendClientMessageToAll(COLOR_RED2,string);
  116. SpielerInfo[pID][Banned] = 1;
  117. Ban(pID);
  118. }
  119. else
  120. {
  121. SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin!");
  122. }
  123. return 1;
  124. }
  125. ocmd:setskin(playerid,params[])
  126. {
  127. new skinid1,pID,string[128];
  128. if(sscanf(params,"ud",pID,skinid1))return SendClientMessage(playerid, COLOR_GRAD2,"/setskin [PLAYERID] [SKINID]");
  129. if(SpielerInfo[playerid][Adminlevel] >= 2)
  130. {
  131. SetPlayerSkin(pID,skinid1);
  132. format(string,sizeof(string),"Ein Admin hat dir den Skin %d zugewiesen!",skinid1);
  133. SendClientMessage(pID,COLOR_ORANGE,string);
  134. }
  135. else
  136. {
  137. SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin!");
  138. }
  139. return 1;
  140. }
  141. ocmd:admin(playerid,params[])
  142. {
  143.  
  144. if(SpielerInfo[playerid][Adminlevel] >=1)
  145. {
  146. new name1[MAX_PLAYER_NAME];
  147. new nachricht,string[128];
  148. GetPlayerName(playerid,name1,sizeof(name1));
  149. if(sscanf(params,"s",nachricht))return SendClientMessage(playerid, COLOR_GRAD2,"/admin [TEXT]");
  150. format(string,sizeof(string),"[a]%s:%s",name1,nachricht);
  151. SendAdminMessage(COLOR_LIGHTBLUE, string);
  152. }
  153. else
  154. {
  155. SendClientMessage(playerid, COLOR_GRAD2, "Du bist kein Admin!");
  156. }
  157. return 1;
  158. }
  159. ocmd:newveh(playerid,params[])
  160. {
  161. new Float:vehx,Float:vehy,Float:vehz;
  162. new vehid,cc1,cc2,string[128];
  163. if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, COLOR_GRAD2,"INFO: /newveh [VEHID] [COLOR 1] [COLOR 2]");
  164. if(SpielerInfo[playerid][Adminlevel] >= 2)
  165. {
  166. GetPlayerPos(playerid,vehx,vehy,vehz);
  167. AddStaticVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2);
  168. format(string,sizeof(string),"Du hast das Auto mit der ID %d gespawnt!",vehid);
  169. SendClientMessage(playerid,COLOR_GRAD2,string);
  170. }
  171. else
  172. {
  173. SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin");
  174. }
  175. return 1;
  176. }
  177. ocmd:setweather(playerid,params[])
  178. {
  179. new weatherid1,string[80];
  180. if(sscanf(params,"i",weatherid1))return SendClientMessage(playerid, COLOR_GRAD2,"INFO: /setweather [WEATHERID]");
  181. if(SpielerInfo[playerid][Adminlevel] >= 1)
  182. {
  183. SetWeather(weatherid1);
  184. format(string,sizeof(string),"Du hast das Wetter in die ID %d geändert!",weatherid1);
  185. SendClientMessage(playerid,COLOR_GRAD2,string);
  186. }
  187. else
  188. {
  189. SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin");
  190. }
  191. return 1;
  192. }
  193. ocmd:explode(playerid,params[])
  194. {
  195. new Float:pidx;
  196. new Float:pidy;
  197. new Float:pidz;
  198. new pID;
  199. if(sscanf(params,"u",pID))return SendClientMessage(playerid, COLOR_GRAD2, "INFO: /explode [PLAYERID]");
  200. if(SpielerInfo[playerid][Adminlevel] >= 2)
  201. {
  202. GetPlayerPos(pID,pidx,pidy,pidz);
  203. CreateExplosion(pidx,pidy,pidz,5,2);
  204. SendClientMessage(pID,COLOR_ORANGE,"Ein Admin hat dich explodieren lassen!");
  205. }
  206. else
  207. {
  208. SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin!");
  209. }
  210. return 1;
  211. }
  212. ocmd:getip(playerid,params[])
  213. {
  214. new string[60],ziel[MAX_PLAYER_NAME],zielip[MAX_PLAYERS],pID;
  215. if(sscanf(params,"u",pID))return SendClientMessage(playerid, COLOR_GRAD2,"INFO: /getip [PLAYERID/NAME]");
  216. if(SpielerInfo[playerid][Adminlevel] >= 2)
  217. {
  218. GetPlayerName(pID,ziel,sizeof(ziel));
  219. GetPlayerIp(pID,zielip,sizeof(zielip));
  220. format(string,sizeof(string),"Name: %s IP: %s",ziel,zielip);
  221. SendClientMessage(playerid,COLOR_WHITE,string);
  222. }
  223. else
  224. {
  225. SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin!");
  226. }
  227. return 1;
  228. }
  229. ocmd:ooc(playerid,params[])
  230. {
  231. new string[128],nachricht,sender[MAX_PLAYER_NAME];
  232. if(sscanf(params,"s",nachricht))return SendClientMessage(playerid,COLOR_GRAD2,"INFO: /ooc [NACHRICHT]");
  233. if(SpielerInfo[playerid][Adminlevel] > 1)
  234. {
  235. GetPlayerName(playerid, sender, sizeof(sender));
  236. format(string,sizeof(string),"(( Admin: %s: %s ))",sender,nachricht);
  237. SendClientMessageToAll(COLOR_WHITE,string);
  238. }
  239. else
  240. {
  241. SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Admin!");
  242. }
  243. return 1;
  244. }
  245. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  246. {
  247. if(dialogid == DIALOG_LOGIN)
  248. {
  249. if(response == 0)
  250. {
  251. SendClientMessage(playerid,ROT,"Du wurdest gekickt,da du dich nicht eingeloggt hast!");
  252. Kick(playerid);
  253. }
  254. if(response == 1)
  255. {
  256. if(!strlen(inputtext))
  257. {
  258. SendClientMessage(playerid,ROT,"Du hast nichts eingegeben!");
  259. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Passwort eingeben:","Einloggen","Abbrechen");
  260. }
  261. else
  262. {
  263. Login(playerid,inputtext);
  264. return 1;
  265. }
  266. }
  267. }
  268. if(dialogid == DIALOG_REGISTER)
  269. {
  270. if(response == 0)
  271. {
  272. SendClientMessage(playerid,COLOR_WHITE,"Du wurdest gekickt,da du dich nicht registriert hast!");
  273. Kick(playerid);
  274. }
  275. if(response == 1)
  276. {
  277. if(!strlen(inputtext))
  278. {
  279. SendClientMessage(playerid,COLOR_RED2,"Du hast nichts eingegeben!");
  280. ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registration","Bitte gib dein gewünschtes Passwort ein:","Registrieren","Abbrechen");
  281. }
  282. else
  283. {
  284. Register(playerid,inputtext);
  285.  
  286. }
  287. }
  288. }
  289. return 1;
  290. }
  291. public SendAdminMessage(color, string[])
  292. {
  293. for(new i = 0; i < MAX_PLAYERS; i++)
  294. {
  295. if(IsPlayerConnected(i))
  296. {
  297. if(SpielerInfo[i][Adminlevel] >= 1)
  298. {
  299. SendClientMessage(i, color, string);
  300. }
  301. }
  302. }
  303. }
  304.  
  305. stock Register(playerid,key[])
  306. {
  307. new Spielerdatei[64];
  308. new name[MAX_PLAYER_NAME];
  309. GetPlayerName(playerid,name,sizeof(name));
  310. format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
  311. dini_Create(Spielerdatei);
  312. dini_Set(Spielerdatei,"Passwort",key);
  313. dini_IntSet(Spielerdatei,"Level",1);
  314. dini_IntSet(Spielerdatei,"Geld",50000);
  315. dini_IntSet(Spielerdatei,"Adminlevel",0);
  316. dini_IntSet(Spielerdatei,"Banned",0);
  317. dini_IntSet(Spielerdatei,"Warns",0);
  318. dini_IntSet(Spielerdatei,"Fraksperre",0);
  319. dini_IntSet(Spielerdatei,"Chef",0);
  320. dini_IntSet(Spielerdatei,"Beruf",0);
  321. dini_IntSet(Spielerdatei,"Firma",0);
  322. dini_IntSet(Spielerdatei,"Skin",0);
  323. dini_IntSet(Spielerdatei,"Spielzeitinsgesamt",0);
  324. dini_IntSet(Spielerdatei,"Paydayzeit",0);
  325. dini_IntSet(Spielerdatei,"WantedLevel",0);
  326. dini_IntSet(Spielerdatei,"Job",0);
  327. dini_IntSet(Spielerdatei,"Ausweis",0);
  328. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Erfolgreich Registriert, Viel Spaß!");
  329. return 1;
  330. }
  331.  
  332. stock Login(playerid,key[])
  333. {
  334. new Spielerdatei[64];
  335. new name[MAX_PLAYER_NAME];
  336. GetPlayerName(playerid,name,sizeof(name));
  337. format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
  338. if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false))
  339. {
  340. if(SpielerInfo[playerid][Banned] == 1)
  341. {
  342. SendClientMessage(playerid, COLOR_GRAD2, "Dein Account wurde gebannt!");
  343. Kick(playerid);
  344. }
  345. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du wurdest eingeloggt!");
  346. SpielerInfo[playerid][LoggedIn] = 1;
  347. LoadAccount(playerid);
  348. return 1;
  349. }
  350. else
  351. {
  352. SendClientMessage(playerid,COLOR_LIGHTBLUE,"Passwort Falsch! Versuch es erneut!");
  353. ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Passwort eingeben:","Einloggen","Abbrechen");
  354. return 1;
  355. }
  356. }
  357.  
  358. stock LoadAccount(playerid)
  359. {
  360. new Spielerdatei[64];
  361. new name[MAX_PLAYER_NAME];
  362. GetPlayerName(playerid,name,sizeof(name));
  363. format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
  364. SpielerInfo[playerid][Adminlevel]=dini_Int(Spielerdatei,"Adminlevel");
  365. SetPlayerScore(playerid,dini_Int(Spielerdatei,"Score"));
  366. SpielerInfo[playerid][Banned]=dini_Int(Spielerdatei,"Banned");
  367. SpielerInfo[playerid][LoggedIn]=dini_Int(Spielerdatei,"LoggedIn");
  368.  
  369. return 1;
  370. }
  371.  
  372. stock SpielerSpeichern(playerid)
  373. {
  374. new Spielerdatei[64];
  375. new name[MAX_PLAYER_NAME];
  376. GetPlayerName(playerid,name,sizeof(name));
  377. format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",name);
  378. dini_IntSet(Spielerdatei,"Adminlevel",SpielerInfo[playerid][Adminlevel]);
  379. dini_IntSet(Spielerdatei,"Score",GetPlayerScore(playerid));
  380. dini_IntSet(Spielerdatei,"Banned",SpielerInfo[playerid][Banned]);
  381. dini_IntSet(Spielerdatei,"LoggedIn",SpielerInfo[playerid][LoggedIn]);
  382. return 1;
  383. }
  384. stock sscanf(sstring[], format[], {Float,_}:...)
  385. {
  386. #if defined isnull
  387. if (isnull(sstring))
  388. #else
  389. if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
  390. #endif
  391. {
  392. return format[0];
  393. }
  394. #pragma tabsize 4
  395. new
  396. formatPos = 0,
  397. sstringPos = 0,
  398. paramPos = 2,
  399. paramCount = numargs(),
  400. delim = ' ';
  401. while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
  402. {
  403. sstringPos++;
  404. }
  405. while (paramPos < paramCount && sstring[sstringPos])
  406. {
  407. switch (format[formatPos++])
  408. {
  409. case '\0':
  410. {
  411. return 0;
  412. }
  413. case 'i', 'd':
  414. {
  415. new
  416. neg = 1,
  417. num = 0,
  418. ch = sstring[sstringPos];
  419. if (ch == '-')
  420. {
  421. neg = -1;
  422. ch = sstring[++sstringPos];
  423. }
  424. do
  425. {
  426. sstringPos++;
  427. if ('0' <= ch <= '9')
  428. {
  429. num = (num * 10) + (ch - '0');
  430. }
  431. else
  432. {
  433. return -1;
  434. }
  435. }
  436. while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  437. setarg(paramPos, 0, num * neg);
  438. }
  439. case 'h', 'x':
  440. {
  441. new
  442. num = 0,
  443. ch = sstring[sstringPos];
  444. do
  445. {
  446. sstringPos++;
  447. switch (ch)
  448. {
  449. case 'x', 'X':
  450. {
  451. num = 0;
  452. continue;
  453. }
  454. case '0' .. '9':
  455. {
  456. num = (num << 4) | (ch - '0');
  457. }
  458. case 'a' .. 'f':
  459. {
  460. num = (num << 4) | (ch - ('a' - 10));
  461. }
  462. case 'A' .. 'F':
  463. {
  464. num = (num << 4) | (ch - ('A' - 10));
  465. }
  466. default:
  467. {
  468. return -1;
  469. }
  470. }
  471. }
  472. while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
  473. setarg(paramPos, 0, num);
  474. }
  475. case 'c':
  476. {
  477. setarg(paramPos, 0, sstring[sstringPos++]);
  478. }
  479. case 'f':
  480. {
  481.  
  482. new changestr[16], changepos = 0, strpos = sstringPos;
  483. while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
  484. {
  485. changestr[changepos++] = sstring[strpos++];
  486. }
  487. changestr[changepos] = '\0';
  488. setarg(paramPos,0,_:floatstr(changestr));
  489. }
  490. case 'p':
  491. {
  492. delim = format[formatPos++];
  493. continue;
  494. }
  495. case '\'':
  496. {
  497. new
  498. end = formatPos - 1,
  499. ch;
  500. while ((ch = format[++end]) && ch != '\'') {}
  501. if (!ch)
  502. {
  503. return -1;
  504. }
  505. format[end] = '\0';
  506. if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
  507. {
  508. if (format[end + 1])
  509. {
  510. return -1;
  511. }
  512. return 0;
  513. }
  514. format[end] = '\'';
  515. sstringPos = ch + (end - formatPos);
  516. formatPos = end + 1;
  517. }
  518. case 'u':
  519. {
  520. new
  521. end = sstringPos - 1,
  522. id = 0,
  523. bool:num = true,
  524. ch;
  525. while ((ch = sstring[++end]) && ch != delim)
  526. {
  527. if (num)
  528. {
  529. if ('0' <= ch <= '9')
  530. {
  531. id = (id * 10) + (ch - '0');
  532. }
  533. else
  534. {
  535. num = false;
  536. }
  537. }
  538. }
  539. if (num && IsPlayerConnected(id))
  540. {
  541. setarg(paramPos, 0, id);
  542. }
  543. else
  544. {
  545. #if !defined foreach
  546. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  547. #define __SSCANF_FOREACH__
  548. #endif
  549. sstring[end] = '\0';
  550. num = false;
  551. new
  552. name[MAX_PLAYER_NAME];
  553. id = end - sstringPos;
  554. foreach (Player, playerid)
  555. {
  556. GetPlayerName(playerid, name, sizeof (name));
  557. if (!strcmp(name, sstring[sstringPos], true, id))
  558. {
  559. setarg(paramPos, 0, playerid);
  560. num = true;
  561. break;
  562. }
  563. }
  564. if (!num)
  565. {
  566. setarg(paramPos, 0, INVALID_PLAYER_ID);
  567. }
  568. sstring[end] = ch;
  569. #if defined __SSCANF_FOREACH__
  570. #undef foreach
  571. #undef __SSCANF_FOREACH__
  572. #endif
  573. }
  574. sstringPos = end;
  575. }
  576. case 's', 'z':
  577. {
  578. new
  579. i = 0,
  580. ch;
  581. if (format[formatPos])
  582. {
  583. while ((ch = sstring[sstringPos++]) && ch != delim)
  584. {
  585. setarg(paramPos, i++, ch);
  586. }
  587. if (!i)
  588. {
  589. return -1;
  590. }
  591. }
  592. else
  593. {
  594. while ((ch = sstring[sstringPos++]))
  595. {
  596. setarg(paramPos, i++, ch);
  597. }
  598. }
  599. sstringPos--;
  600. setarg(paramPos, i, '\0');
  601. }
  602. default:
  603. {
  604. continue;
  605. }
  606. }
  607. while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
  608. {
  609. sstringPos++;
  610. }
  611. while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
  612. {
  613. sstringPos++;
  614. }
  615. paramPos++;
  616. }
  617. do
  618. {
  619. if ((delim = format[formatPos++]) > ' ')
  620. {
  621. if (delim == '\'')
  622. {
  623. while ((delim = format[formatPos++]) && delim != '\'') {}
  624. }
  625. else if (delim != 'z')
  626. {
  627. return delim;
  628. }
  629. }
  630. }
  631. while (delim > ' ');
  632. return 0;
  633. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement