aviPhunk

Dynamisches Fraktionsystem

Mar 20th, 2013
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.62 KB | None | 0 0
  1. /*
  2. Dynamisches Fraktionsystem by aviPhunk
  3. */
  4.  
  5. #include <a_samp>
  6. #include <a_mysql>
  7. #include <a_http>
  8. #include <dini>
  9. //#include <zcmd>
  10. #include <sscanf>
  11. #include <MD5>
  12.  
  13. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  14.  
  15. #define SCHWARZ 0x000000FF
  16. #define WEIS 0xFFFFFFFF
  17. #define GELB 0xFFFF00FF
  18. #define HELLBLAU 0x0069FFFF
  19. #define BLAU 0x000FFFFF
  20. #define ROT 0x000FFFFF
  21. #define ORANGE 0xFF5219FF
  22.  
  23. #define DIALOG_REGISTER 1
  24. #define DIALOG_LOGIN 2
  25.  
  26. #define DIA_FRAK_LIST 100
  27. #define DIA_FRAK_RANKLIST 101
  28. #define DIA_FRAK_EDITRANK 102
  29. #define DIA_FRAK_SKINCHANGE 103
  30.  
  31. enum SpielerDateiInfos
  32. {
  33. Fraktion,
  34. Rank,
  35. }
  36. new SpielerInfo[MAX_PLAYERS][SpielerDateiInfos];
  37.  
  38. enum _Car {
  39. cOwner,
  40. cDbID,
  41. }
  42. new Car[MAX_VEHICLES][_Car];
  43.  
  44. /*=======================[ Fraktionssystem Einstellungen ]=======================*/
  45. #define MAX_FRAK 20 // Anpassen wenn mehr als 20 Fraktionen benötigt werden
  46. new FRAK_PICKUP = 1; // Soll ein Pickup am Spawnpunkt der Fraktion angezeigt werden? (1 = Ja | 0 = Nein)
  47. /*===============================================================================*/
  48.  
  49.  
  50. enum _FrakSystem {
  51. fDbID,
  52. fName[56],
  53. Float:fSpawnX,
  54. Float:fSpawnY,
  55. Float:fSpawnZ,
  56. Float:fSpawnRot,
  57. fCopFrak,
  58.  
  59. fPickupID,
  60. Text3D:fTextID,
  61. bool:fCreated
  62. }
  63. new FrakSystem[MAX_FRAK][_FrakSystem];
  64. new FrakRank[MAX_FRAK][6][128];
  65. new ExistFraks;
  66.  
  67. main()
  68. {
  69. print("\n----------------------------------");
  70. print("Der Server wurde erfolgreich gestartet.");
  71. print("----------------------------------\n");
  72. }
  73.  
  74. public OnFilterScriptInit()
  75. {
  76. mysql_connect("localhost","root","Dynamisches Fraktionsystem","root"); mysql_debug(1);
  77. if(!mysql_ping()){print("[ERROR] -> Kein Datenbankzugriff - Die Verbindung ist Tot!");}
  78.  
  79. //---[Fraktionssystem]
  80. for(new veh; veh < MAX_VEHICLES; veh++){Car[veh][cOwner] = -1;}
  81. new result[128],fID;
  82. mysql_query("SELECT * FROM fraktionen"); mysql_store_result();
  83. while(mysql_retrieve_row())
  84. {
  85. mysql_fetch_field_row(result,"ID"); FrakSystem[fID][fDbID] = strval(result);
  86. mysql_fetch_field_row(result,"Name"); format(FrakSystem[fID][fName],56,"%s",result);
  87. mysql_fetch_field_row(result,"SpawnX"); FrakSystem[fID][fSpawnX] = floatstr(result);
  88. mysql_fetch_field_row(result,"SpawnY"); FrakSystem[fID][fSpawnY] = floatstr(result);
  89. mysql_fetch_field_row(result,"SpawnZ"); FrakSystem[fID][fSpawnZ] = floatstr(result);
  90. mysql_fetch_field_row(result,"SpawnRot"); FrakSystem[fID][fSpawnRot] = floatstr(result);
  91. mysql_fetch_field_row(result,"CopFrak"); FrakSystem[fID][fCopFrak] = strval(result);
  92. FrakSystem[fID][fCreated] = true;
  93.  
  94. if(FRAK_PICKUP == 1)
  95. {
  96. FrakSystem[fID][fPickupID] = CreatePickup(1314,1,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],-1);
  97. format(result,sizeof(result),"[Fraktionsspawn]\n%s",FrakSystem[fID][fName]);
  98. FrakSystem[fID][fTextID] = Create3DTextLabel(result,WEIS,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],15.0,0,0);
  99. }
  100.  
  101. printf("> Fraktion '%s' (ID: %d) Erfolgreich Geladen!",FrakSystem[fID][fName],FrakSystem[fID][fDbID]);
  102. fID++; ExistFraks++;
  103. }
  104. mysql_free_result();
  105. mysql_query("SELECT * FROM fraktionen_ranks"); mysql_store_result();
  106. while(mysql_retrieve_row())
  107. {
  108. mysql_fetch_field_row(result,"Fraktion"); fID = GetFrakByDB(strval(result));
  109. mysql_fetch_field_row(result,"Rank1"); format(FrakRank[fID][0],128,"%s",result);
  110. mysql_fetch_field_row(result,"Rank2"); format(FrakRank[fID][1],128,"%s",result);
  111. mysql_fetch_field_row(result,"Rank3"); format(FrakRank[fID][2],128,"%s",result);
  112. mysql_fetch_field_row(result,"Rank4"); format(FrakRank[fID][3],128,"%s",result);
  113. mysql_fetch_field_row(result,"Rank5"); format(FrakRank[fID][4],128,"%s",result);
  114. mysql_fetch_field_row(result,"Rank6"); format(FrakRank[fID][5],128,"%s",result);
  115. }
  116. mysql_query("SELECT * FROM fraktionen_cars"); mysql_store_result();
  117. while(mysql_retrieve_row())
  118. {
  119. new Float:coord[4],color[2],model,owner,dbid;
  120. mysql_fetch_field_row(result,"ID"); dbid = strval(result);
  121. mysql_fetch_field_row(result,"Model"); model = strval(result);
  122. mysql_fetch_field_row(result,"Owner"); owner = strval(result);
  123. mysql_fetch_field_row(result,"X"); coord[0] = floatstr(result);
  124. mysql_fetch_field_row(result,"Y"); coord[1] = floatstr(result);
  125. mysql_fetch_field_row(result,"Z"); coord[2] = floatstr(result);
  126. mysql_fetch_field_row(result,"Rot"); coord[3] = floatstr(result);
  127. mysql_fetch_field_row(result,"Color1"); color[0] = strval(result);
  128. mysql_fetch_field_row(result,"Color2"); color[1] = strval(result);
  129.  
  130. new veh = AddStaticVehicleEx(model,coord[0],coord[1],coord[2],coord[3],color[0],color[1],-1);
  131. Car[veh][cOwner] = owner;
  132. Car[veh][cDbID] = dbid;
  133. }
  134. return 1;
  135. }
  136.  
  137. public OnFilterScriptExit()
  138. {
  139. mysql_close();
  140. return 1;
  141. }
  142.  
  143. public OnPlayerRequestClass(playerid, classid)
  144. {
  145. return 1;
  146. }
  147.  
  148. public OnPlayerConnect(playerid)
  149. {
  150. return 1;
  151. }
  152.  
  153. public OnPlayerDisconnect(playerid, reason)
  154. {
  155. return 1;
  156. }
  157.  
  158. public OnPlayerSpawn(playerid)
  159. {
  160. return 1;
  161. }
  162.  
  163. public OnPlayerDeath(playerid, killerid, reason)
  164. {
  165. return 1;
  166. }
  167.  
  168. public OnVehicleSpawn(vehicleid)
  169. {
  170. return 1;
  171. }
  172.  
  173. public OnVehicleDeath(vehicleid, killerid)
  174. {
  175. return 1;
  176. }
  177.  
  178. public OnPlayerText(playerid, text[])
  179. {
  180. return 1;
  181. }
  182.  
  183. public OnPlayerCommandText(playerid, cmdtext[])
  184. {
  185. dcmd(createfrak,10,cmdtext);
  186. dcmd(setfrakspawn,12,cmdtext);
  187. dcmd(setfrakname,11,cmdtext);
  188. dcmd(togfrakcop,10,cmdtext);
  189. dcmd(showfraks,9,cmdtext);
  190. dcmd(addfrakcar,10,cmdtext);
  191. dcmd(delfrakcar,10,cmdtext);
  192. dcmd(parkfrakcar,11,cmdtext);
  193. dcmd(addfrakskin,11,cmdtext);
  194. dcmd(delfrakskin,11,cmdtext);
  195. dcmd(skinchange,10,cmdtext);
  196. dcmd(showranks,9,cmdtext);
  197. dcmd(f,1,cmdtext);
  198. dcmd(makeleader,10,cmdtext);
  199. dcmd(setrank,7,cmdtext);
  200. dcmd(invite,6,cmdtext);
  201. dcmd(uninvite,8,cmdtext);
  202. return 1;
  203. }
  204.  
  205. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  206. {
  207. return 1;
  208. }
  209.  
  210. public OnPlayerExitVehicle(playerid, vehicleid)
  211. {
  212. return 1;
  213. }
  214.  
  215. public OnPlayerStateChange(playerid, newstate, oldstate)
  216. {
  217. return 1;
  218. }
  219.  
  220. public OnPlayerEnterCheckpoint(playerid)
  221. {
  222. return 1;
  223. }
  224.  
  225. public OnPlayerLeaveCheckpoint(playerid)
  226. {
  227. return 1;
  228. }
  229.  
  230. public OnPlayerEnterRaceCheckpoint(playerid)
  231. {
  232. return 1;
  233. }
  234.  
  235. public OnPlayerLeaveRaceCheckpoint(playerid)
  236. {
  237. return 1;
  238. }
  239.  
  240. public OnRconCommand(cmd[])
  241. {
  242. return 1;
  243. }
  244.  
  245. public OnPlayerRequestSpawn(playerid)
  246. {
  247. return 1;
  248. }
  249.  
  250. public OnObjectMoved(objectid)
  251. {
  252. return 1;
  253. }
  254.  
  255. public OnPlayerObjectMoved(playerid, objectid)
  256. {
  257. return 1;
  258. }
  259.  
  260. public OnPlayerPickUpPickup(playerid, pickupid)
  261. {
  262. return 1;
  263. }
  264.  
  265. public OnVehicleMod(playerid, vehicleid, componentid)
  266. {
  267. return 1;
  268. }
  269.  
  270. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  271. {
  272. return 1;
  273. }
  274.  
  275. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  276. {
  277. return 1;
  278. }
  279.  
  280. public OnPlayerSelectedMenuRow(playerid, row)
  281. {
  282. return 1;
  283. }
  284.  
  285. public OnPlayerExitedMenu(playerid)
  286. {
  287. return 1;
  288. }
  289.  
  290. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  291. {
  292. return 1;
  293. }
  294.  
  295. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  296. {
  297. return 1;
  298. }
  299.  
  300. public OnRconLoginAttempt(ip[], password[], success)
  301. {
  302. return 1;
  303. }
  304.  
  305. public OnPlayerUpdate(playerid)
  306. {
  307. return 1;
  308. }
  309.  
  310. public OnPlayerStreamIn(playerid, forplayerid)
  311. {
  312. return 1;
  313. }
  314.  
  315. public OnPlayerStreamOut(playerid, forplayerid)
  316. {
  317. return 1;
  318. }
  319.  
  320. public OnVehicleStreamIn(vehicleid, forplayerid)
  321. {
  322. return 1;
  323. }
  324.  
  325. public OnVehicleStreamOut(vehicleid, forplayerid)
  326. {
  327. return 1;
  328. }
  329.  
  330. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  331. {
  332. if(dialogid == DIA_FRAK_LIST)
  333. {
  334. if(response)
  335. {
  336. new string[128],qs[256];
  337. format(string,sizeof(string),"fraklist_%d",listitem);
  338. new dbid = GetPVarInt(playerid,string);
  339. format(string,sizeof(string),"fraklist_%d_frakid",listitem);
  340. new fID = GetPVarInt(playerid,string);
  341.  
  342. FrakSystem[fID][fCreated] = false;
  343.  
  344. format(string,sizeof(string),"** Du hast die Fraktion '%s' Erfolgreich Gelöscht!",FrakSystem[fID][fName]);
  345. SendClientMessage(playerid,WEIS,string);
  346.  
  347. format(qs,sizeof(qs),"DELETE FROM fraktionen WHERE ID = '%d'",dbid);
  348. mysql_query(qs); mysql_free_result();
  349.  
  350. for(new pID; pID < MAX_PLAYERS; pID++)
  351. {
  352. if(IsPlayerConnected(pID) && SpielerInfo[pID][Fraktion] == fID)
  353. {
  354. SendClientMessage(playerid,WEIS,"** Deine Fraktion wurde Aufgelöst!");
  355. SpielerInfo[playerid][Fraktion] = 0;
  356. }
  357. }
  358. for(new veh; veh < MAX_VEHICLES; veh++)
  359. {
  360. if(Car[veh][cOwner] == fID)
  361. {
  362. DestroyVehicle(veh);
  363. Car[veh][cOwner] = -1;
  364. }
  365. }
  366. }
  367. }
  368. else if(dialogid == DIA_FRAK_RANKLIST)
  369. {
  370. if(response)
  371. {
  372. SetPVarInt(playerid,"edit_rank",listitem+1);
  373. ShowPlayerDialog(playerid,DIA_FRAK_EDITRANK,DIALOG_STYLE_INPUT,"Ranknamen Ändern","Gib den neuen Ranknamen ein:","Weiter","Abbrechen");
  374. }
  375. }
  376. else if(dialogid == DIA_FRAK_EDITRANK)
  377. {
  378. if(response)
  379. {
  380. if(strlen(inputtext) < 56)
  381. {
  382. new fID = SpielerInfo[playerid][Fraktion];
  383. new rank = GetPVarInt(playerid,"edit_rank");
  384. format(FrakRank[fID][rank-1],56,"%s",inputtext);
  385.  
  386. new qs[128];
  387. if(rank == 1){format(qs,sizeof(qs),"UPDATE fraktionen_ranks SET `Rank1` = '%s' WHERE `Fraktion` = '%d'",inputtext,FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();}
  388. else if(rank == 2){format(qs,sizeof(qs),"UPDATE fraktionen_ranks SET `Rank2` = '%s' WHERE `Fraktion` = '%d'",inputtext,FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();}
  389. else if(rank == 3){format(qs,sizeof(qs),"UPDATE fraktionen_ranks SET `Rank3` = '%s' WHERE `Fraktion` = '%d'",inputtext,FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();}
  390. else if(rank == 4){format(qs,sizeof(qs),"UPDATE fraktionen_ranks SET `Rank4` = '%s' WHERE `Fraktion` = '%d'",inputtext,FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();}
  391. else if(rank == 5){format(qs,sizeof(qs),"UPDATE fraktionen_ranks SET `Rank5` = '%s' WHERE `Fraktion` = '%d'",inputtext,FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();}
  392. else if(rank == 6){format(qs,sizeof(qs),"UPDATE fraktionen_ranks SET `Rank6` = '%s' WHERE `Fraktion` = '%d'",inputtext,FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();}
  393.  
  394. SendClientMessage(playerid,WEIS,"** Du hast den Ranknamen Erfolgreich geändert!");
  395. }
  396. else {
  397. SendClientMessage(playerid,ROT,"** Der Rankname ist zu lang!");
  398. ShowPlayerDialog(playerid,DIA_FRAK_EDITRANK,DIALOG_STYLE_INPUT,"Ranknamen Ändern","Gib den neuen Ranknamen ein:","Weiter","Abbrechen");
  399. }
  400. }
  401. }
  402. else if(dialogid == DIA_FRAK_SKINCHANGE)
  403. {
  404. if(response)
  405. {
  406. new string[128]; format(string,sizeof(string),"skinchange_%d",listitem);
  407. new skin = GetPVarInt(playerid,string);
  408. SetPlayerSkin(playerid,skin);
  409. SendClientMessage(playerid,WEIS,"** Du hast deinen Skin geändert!");
  410. }
  411. }
  412. return 1;
  413. }
  414.  
  415. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  416. {
  417. return 1;
  418. }
  419. //Funktionen:Allgemein
  420. stock GetName(playerid)
  421. {
  422. new name[MAX_PLAYER_NAME];
  423. GetPlayerName(playerid,name,sizeof(name));
  424. return name;
  425. }
  426. stock IsFrakNameTaken(name[])
  427. {
  428. new qs[128];
  429. format(qs,sizeof(qs),"SELECT * FROM fraktionen WHERE Name = '%s'",name);
  430. mysql_query(qs); mysql_store_result();
  431. if(mysql_num_rows() > 0){mysql_free_result(); return 1;}
  432. else{mysql_free_result(); return 0;}
  433. }
  434. stock SaveFraktion(fID)
  435. {
  436. new qs[128];
  437. format(qs,sizeof(qs),"UPDATE fraktionen SET `Name` = '%s' WHERE `ID` = '%d'",FrakSystem[fID][fName],FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();
  438. format(qs,sizeof(qs),"UPDATE fraktionen SET `SpawnX` = '%f' WHERE `ID` = '%d'",FrakSystem[fID][fSpawnX],FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();
  439. format(qs,sizeof(qs),"UPDATE fraktionen SET `SpawnY` = '%f' WHERE `ID` = '%d'",FrakSystem[fID][fSpawnY],FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();
  440. format(qs,sizeof(qs),"UPDATE fraktionen SET `SpawnZ` = '%f' WHERE `ID` = '%d'",FrakSystem[fID][fSpawnZ],FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();
  441. format(qs,sizeof(qs),"UPDATE fraktionen SET `SpawnRot` = '%f' WHERE `ID` = '%d'",FrakSystem[fID][fSpawnRot],FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();
  442. format(qs,sizeof(qs),"UPDATE fraktionen SET `Copfrak` = '%d' WHERE `ID` = '%d'",FrakSystem[fID][fCopFrak],FrakSystem[fID][fDbID]); mysql_query(qs); mysql_free_result();
  443. }
  444. stock IsACop(playerid)
  445. {
  446. if(SpielerInfo[playerid][Fraktion] == 0){return 0;}
  447. else {return FrakSystem[SpielerInfo[playerid][Fraktion]][fCopFrak];}
  448. }
  449. stock SendFraktionMessage(fID,text[])
  450. {
  451. for(new pID; pID < MAX_PLAYERS; pID++)
  452. {
  453. if(SpielerInfo[pID][Fraktion] == fID)
  454. {
  455. SendClientMessage(pID,BLAU,text);
  456. }
  457. }
  458. }
  459. stock GetFrakByDB(dbid)
  460. {
  461. for(new fID; fID < MAX_FRAK; fID++)
  462. {
  463. if(FrakSystem[fID][fCreated] == true && FrakSystem[fID][fDbID] == dbid)
  464. {
  465. return fID;
  466. }
  467. }
  468. return -1;
  469. }
  470. stock GetFraktionRank(playerid)
  471. {
  472. return FrakRank[SpielerInfo[playerid][Fraktion]][SpielerInfo[playerid][Rank]-1];
  473. }
  474. stock HasFrakSkin(sID)
  475. {
  476. new qs[128]; format(qs,sizeof(qs),"SELECT * FROM fraktionen_skins WHERE Skin = '%d'",sID);
  477. mysql_query(qs); mysql_store_result();
  478. if(mysql_num_rows() > 0){mysql_free_result(); return 1;}
  479. else{mysql_free_result(); return 0;}
  480. }
  481.  
  482. dcmd_createfrak(playerid, params[])
  483. {
  484. new fname[56];
  485. if(sscanf(params,"s",fname))return SendClientMessage(playerid,ROT,"** Benutze: /createfrak [Fraktionsname]");
  486. if(IsFrakNameTaken(fname))return SendClientMessage(playerid,ROT,"** Dieser Name wird bereits verwendet!");
  487. else {
  488. new qs[256],Float:coord[4],result[128],fID;
  489. GetPlayerPos(playerid,coord[0],coord[1],coord[2]); GetPlayerFacingAngle(playerid,coord[3]);
  490. format(qs,sizeof(qs),"INSERT INTO fraktionen (Name,SpawnX,SpawnY,SpawnZ,SpawnRot) VALUES ('%s','%f','%f','%f','%f')",fname,coord[0],coord[1],coord[2],coord[3]);
  491. mysql_query(qs); mysql_free_result();
  492.  
  493. format(qs,sizeof(qs),"SELECT * FROM fraktionen WHERE Name = '%s'",fname);
  494. mysql_query(qs); mysql_store_result();
  495. while(mysql_retrieve_row())
  496. {
  497. mysql_fetch_field_row(result,"ID"); FrakSystem[strval(result)][fDbID] = strval(result);
  498. fID = FrakSystem[strval(result)][fDbID];
  499. mysql_fetch_field_row(result,"CopFrak"); FrakSystem[fID][fCopFrak] = strval(result);
  500.  
  501. format(FrakSystem[fID][fName],56,"%s",fname);
  502. FrakSystem[fID][fSpawnX] = coord[0];
  503. FrakSystem[fID][fSpawnY] = coord[1];
  504. FrakSystem[fID][fSpawnZ] = coord[2];
  505. FrakSystem[fID][fSpawnRot] = coord[3];
  506. FrakSystem[fID][fCreated] = true;
  507.  
  508. format(qs,sizeof(qs),"INSERT INTO fraktionen_ranks (Fraktion) VALUES ('%d')",fID);
  509. mysql_query(qs);
  510.  
  511. if(FRAK_PICKUP == 1)
  512. {
  513. FrakSystem[fID][fPickupID] = CreatePickup(1314,1,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],-1);
  514. format(result,sizeof(result),"[Fraktionsspawn]\n%s",FrakSystem[fID][fName]);
  515. FrakSystem[fID][fTextID] = Create3DTextLabel(result,WEIS,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],15.0,0,0);
  516. }
  517.  
  518. SaveFraktion(fID);
  519. format(qs,sizeof(qs),"** Du hast Erfolgreich die Fraktion '%s' Erstellt. ID: %d",FrakSystem[fID][fName],fID);
  520. SendClientMessage(playerid,WEIS,qs);
  521.  
  522. printf("> Fraktion '%s' (ID: %d) Erfolgreich Erstellt und Geladen!",FrakSystem[fID][fName],FrakSystem[fID][fDbID]);
  523. ExistFraks++;
  524. }
  525. mysql_query("SELECT * FROM fraktionen_ranks"); mysql_store_result();
  526. while(mysql_retrieve_row())
  527. {
  528. mysql_fetch_field_row(result,"Fraktion"); fID = GetFrakByDB(strval(result));
  529. mysql_fetch_field_row(result,"Rank1"); format(FrakRank[fID][0],128,"%s",result);
  530. mysql_fetch_field_row(result,"Rank2"); format(FrakRank[fID][1],128,"%s",result);
  531. mysql_fetch_field_row(result,"Rank3"); format(FrakRank[fID][2],128,"%s",result);
  532. mysql_fetch_field_row(result,"Rank4"); format(FrakRank[fID][3],128,"%s",result);
  533. mysql_fetch_field_row(result,"Rank5"); format(FrakRank[fID][4],128,"%s",result);
  534. mysql_fetch_field_row(result,"Rank6"); format(FrakRank[fID][5],128,"%s",result);
  535. }
  536. }
  537. return 1;
  538. }
  539. dcmd_setfrakspawn(playerid, params[])
  540. {
  541. new fID;
  542. if(sscanf(params,"d",fID))return SendClientMessage(playerid,ROT,"** Benutze: /setspawn [FraktionsID]");
  543. if(fID < 1 || fID > ExistFraks)return SendClientMessage(playerid,ROT,"** Ungültige Fraktions-ID!");
  544. else {
  545. new Float:coord[4],string[128];
  546. GetPlayerPos(playerid,coord[0],coord[1],coord[2]); GetPlayerFacingAngle(playerid,coord[3]);
  547. FrakSystem[fID][fSpawnX] = coord[0];
  548. FrakSystem[fID][fSpawnY] = coord[1];
  549. FrakSystem[fID][fSpawnZ] = coord[2];
  550. FrakSystem[fID][fSpawnRot] = coord[3];
  551.  
  552. if(FRAK_PICKUP == 1)
  553. {
  554. DestroyPickup(FrakSystem[fID][fPickupID]); Delete3DTextLabel(FrakSystem[fID][fTextID]);
  555. FrakSystem[fID][fPickupID] = CreatePickup(1314,1,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],-1);
  556. format(string,sizeof(string),"[Fraktionsspawn]\n%s",FrakSystem[fID][fName]);
  557. FrakSystem[fID][fTextID] = Create3DTextLabel(string,WEIS,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],15.0,0,0);
  558. }
  559.  
  560. SaveFraktion(fID);
  561. format(string,sizeof(string),"** Du hast den Spawn der Fraktion '%s' Erfolgreich verlegt.",FrakSystem[fID][fName]);
  562. SendClientMessage(playerid,WEIS,string);
  563. }
  564. return 1;
  565. }
  566. dcmd_togfrakcop(playerid, params[])
  567. {
  568. new fID;
  569. if(sscanf(params,"d",fID))return SendClientMessage(playerid,ROT,"** Benutze: /setspawn [FraktionsID]");
  570. if(fID < 1 || fID > ExistFraks)return SendClientMessage(playerid,ROT,"** Ungültige Fraktions-ID!");
  571. else {
  572. new string[128];
  573. if(FrakSystem[fID][fCopFrak] == 0)
  574. {
  575. format(string,sizeof(string),"** Die Fraktion '%s' verfügt nun über Polizerechte.",FrakSystem[fID][fName]);
  576. SendClientMessage(playerid,WEIS,string);
  577. FrakSystem[fID][fCopFrak] = 1;
  578. SaveFraktion(fID);
  579. }
  580. else {
  581. format(string,sizeof(string),"** Der Fraktion '%s' wurden die Polizeirechte entzogen.",FrakSystem[fID][fName]);
  582. SendClientMessage(playerid,WEIS,string);
  583. FrakSystem[fID][fCopFrak] = 0;
  584. SaveFraktion(fID);
  585. }
  586. }
  587. return 1;
  588. }
  589. dcmd_setfrakname(playerid, params[])
  590. {
  591. new fID,fname[56];
  592. if(sscanf(params,"ds",fID,fname))return SendClientMessage(playerid,ROT,"** Benutze: /setfrakname [FraktionsID] [Name]");
  593. if(fID < 1 || fID > ExistFraks)return SendClientMessage(playerid,ROT,"** Ungültige Fraktions-ID!");
  594. if(IsFrakNameTaken(fname))return SendClientMessage(playerid,ROT,"** Dieser Name wird bereits verwendet!");
  595. else {
  596. new string[128];
  597. format(string,sizeof(string),"** Die Fraktion '%s' wurde in '%s' Umbenannt.",FrakSystem[fID][fName],fname);
  598. SendClientMessage(playerid,WEIS,string);
  599. format(FrakSystem[fID][fName],56,"%s",fname);
  600. SaveFraktion(fID);
  601.  
  602. if(FRAK_PICKUP == 1)
  603. {
  604. DestroyPickup(FrakSystem[fID][fPickupID]); Delete3DTextLabel(FrakSystem[fID][fTextID]);
  605. FrakSystem[fID][fPickupID] = CreatePickup(1314,1,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],-1);
  606. format(string,sizeof(string),"[Fraktionsspawn]\n%s",FrakSystem[fID][fName]);
  607. FrakSystem[fID][fTextID] = Create3DTextLabel(string,WEIS,FrakSystem[fID][fSpawnX],FrakSystem[fID][fSpawnY],FrakSystem[fID][fSpawnZ],15.0,0,0);
  608. }
  609. }
  610. return 1;
  611. }
  612. dcmd_showfraks(playerid, params[])
  613. {
  614. #pragma unused params
  615. {
  616. new allstring[2000],string[100],zahl;
  617. for(new fID; fID < sizeof(FrakSystem); fID++)
  618. {
  619. if(FrakSystem[fID][fCreated] == true && fID != 0)
  620. {
  621. format(string,sizeof(string),"-> [%d]: %s\n",fID,FrakSystem[fID][fName]);
  622. strcat(allstring,string,100);
  623. format(string,sizeof(string),"fraklist_%d",zahl);
  624. SetPVarInt(playerid,string,FrakSystem[fID][fDbID]);
  625. format(string,sizeof(string),"fraklist_%d_frakid",zahl);
  626. SetPVarInt(playerid,string,fID);
  627. zahl++;
  628. }
  629. }
  630. ShowPlayerDialog(playerid,DIA_FRAK_LIST,DIALOG_STYLE_LIST,"Fraktionsauflistung",allstring,"Löschen","Abbrechen");
  631. }
  632. return 1;
  633. }
  634. dcmd_addfrakcar(playerid, params[])
  635. {
  636. new fID,model,color1,color2;
  637. if(sscanf(params,"dddd",fID,model,color1,color2))return SendClientMessage(playerid,ROT,"** Benutze: /addfrakcar [FraktionsID] [ModelID] [Color1] [Color2]");
  638. if(fID < 1 || fID > ExistFraks)return SendClientMessage(playerid,ROT,"** Ungültige Fraktions-ID!");
  639. if(model < 400 || model > 611)return SendClientMessage(playerid,ROT,"** Ungültige Model-ID!");
  640. if(color1 < 0 || color1 > 126 || color2 < 0 || color2 > 126)return SendClientMessage(playerid,ROT,"** Ungültige Farbe!");
  641. else {
  642. new Float:coord[4]; GetPlayerPos(playerid,coord[0],coord[1],coord[2]); GetPlayerFacingAngle(playerid,coord[3]);
  643. new veh = AddStaticVehicleEx(model,coord[0],coord[1],coord[2],coord[3],color1,color2,-1);
  644. Car[veh][cOwner] = fID;
  645.  
  646. new qs[256],result[56];
  647. format(qs,sizeof(qs),"INSERT INTO fraktionen_cars (Owner,Model,X,Y,Z,Rot,Color1,Color2) VALUES ('%d','%d','%f','%f','%f','%f','%d','%d')",fID,model,coord[0],coord[1],coord[2],coord[3],color1,color2);
  648. mysql_query(qs); mysql_free_result();
  649.  
  650. format(qs,sizeof(qs),"SELECT * FROM fraktionen_cars WHERE X = '%f'",coord[0]);
  651. mysql_query(qs); mysql_store_result();
  652. while(mysql_retrieve_row())
  653. {
  654. mysql_fetch_field_row(result,"ID"); Car[veh][cDbID] = strval(result);
  655. }
  656. mysql_free_result();
  657.  
  658. format(qs,sizeof(qs),"** Du hast ein Fraktionsfahrzeug für die Fraktion '%s' Hinzugefügt!",FrakSystem[fID][fName]);
  659. SendClientMessage(playerid,WEIS,qs);
  660. }
  661. return 1;
  662. }
  663. dcmd_delfrakcar(playerid, params[])
  664. {
  665. #pragma unused params
  666. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid,ROT,"** Du fährst kein Fahrzeug!");
  667. new veh = GetPlayerVehicleID(playerid);
  668. if(Car[veh][cOwner] == -1)return SendClientMessage(playerid,ROT,"** Das Fahrzeug ist kein Frakionsfahrzeug!");
  669. else {
  670. new qs[128];
  671. format(qs,sizeof(qs),"DELETE FROM fraktionen_cars WHERE ID = '%d'",Car[veh][cDbID]);
  672. mysql_query(qs); mysql_free_result();
  673. DestroyVehicle(veh);
  674. new fID = Car[veh][cOwner];
  675. Car[veh][cOwner] = -1;
  676.  
  677. format(qs,sizeof(qs),"** Du hast ein Fahrzeug der Fraktion '%s' entfernt!",FrakSystem[fID][fName]);
  678. SendClientMessage(playerid,WEIS,qs);
  679. }
  680. return 1;
  681. }
  682. dcmd_parkfrakcar(playerid, params[])
  683. {
  684. #pragma unused params
  685. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid,ROT,"** Du fährst kein Fahrzeug!");
  686. new veh = GetPlayerVehicleID(playerid);
  687. if(Car[veh][cOwner] == -1)return SendClientMessage(playerid,ROT,"** Das Fahrzeug ist kein Frakionsfahrzeug!");
  688. else {
  689. new Float:coord[4]; GetVehiclePos(veh,coord[0],coord[1],coord[2]); GetVehicleZAngle(veh,coord[3]);
  690. new qs[128];
  691. format(qs,sizeof(qs),"UPDATE fraktionen_cars SET `X` = '%f' WHERE `ID` = '%d'",coord[0],Car[veh][cDbID]); mysql_query(qs); mysql_free_result();
  692. format(qs,sizeof(qs),"UPDATE fraktionen_cars SET `Y` = '%f' WHERE `ID` = '%d'",coord[1],Car[veh][cDbID]); mysql_query(qs); mysql_free_result();
  693. format(qs,sizeof(qs),"UPDATE fraktionen_cars SET `Z` = '%f' WHERE `ID` = '%d'",coord[2],Car[veh][cDbID]); mysql_query(qs); mysql_free_result();
  694. format(qs,sizeof(qs),"UPDATE fraktionen_cars SET `Rot` = '%f' WHERE `ID` = '%d'",coord[3],Car[veh][cDbID]); mysql_query(qs); mysql_free_result();
  695. SendClientMessage(playerid,WEIS,"** Das Fahrzeug wird ab dem nächsten Restart hier spawnen!");
  696. }
  697. return 1;
  698. }
  699. dcmd_addfrakskin(playerid, params[])
  700. {
  701. new fID, sID;
  702. if(sscanf(params,"dd",fID,sID))return SendClientMessage(playerid,ROT,"** Benutze: /addfrakskin [FraktionsID] [SkinID]");
  703. if(FrakSystem[fID][fCreated] == false)return SendClientMessage(playerid,ROT,"** Diese Fraktion existiert nicht!");
  704. if(sID < 1 || sID > 299)return SendClientMessage(playerid,ROT,"** Ungültige Skin-ID!");
  705. if(HasFrakSkin(sID))return SendClientMessage(playerid,ROT,"** Dieser Skin wird bereits von einer Fraktion benutzt!");
  706. else {
  707. new qs[128]; format(qs,sizeof(qs),"INSERT INTO fraktionen_skins VALUES ('%d','%d')",sID,fID);
  708. mysql_query(qs);
  709. format(qs,sizeof(qs),"** Du hast die Skin-ID %d zu der Skinliste der Fraktion '%s' hinzugefügt.",sID,FrakSystem[fID][fName]);
  710. SendClientMessage(playerid,WEIS,qs);
  711. }
  712. return 1;
  713. }
  714. dcmd_delfrakskin(playerid, params[])
  715. {
  716. new sID;
  717. if(sscanf(params,"d",sID))return SendClientMessage(playerid,ROT,"** Benutze: /delfrakskin [SkinID]");
  718. if(sID < 1 || sID > 299)return SendClientMessage(playerid,ROT,"** Ungültige Skin-ID!");
  719. if(!HasFrakSkin(sID))return SendClientMessage(playerid,ROT,"** Dieser Skin wird von keiner Fraktion genutzt!");
  720. else {
  721. new qs[128]; format(qs,sizeof(qs),"DELETE FROM fraktionen_skins WHERE Skin = '%d'",sID);
  722. mysql_query(qs);
  723. format(qs,sizeof(qs),"** Die Skin-ID %d ist ab nun wieder frei!",sID);
  724. SendClientMessage(playerid,WEIS,qs);
  725. }
  726. return 1;
  727. }
  728. dcmd_skinchange(playerid, params[])
  729. {
  730. #pragma unused params
  731. if(SpielerInfo[playerid][Fraktion] == 0)return SendClientMessage(playerid,ROT,"** Du bist in keiner Fraktion!");
  732. else {
  733. new fID = SpielerInfo[playerid][Fraktion];
  734. new allstring[1200],string[100],result[56],zahl;
  735. new qs[128]; format(qs,sizeof(qs),"SELECT * FROM fraktionen_skins WHERE Fraktion = '%d'",fID);
  736. mysql_query(qs); mysql_store_result();
  737. while(mysql_retrieve_row())
  738. {
  739. format(string,sizeof(string),"skinchange_%d",zahl);
  740. mysql_fetch_field_row(result,"Skin"); SetPVarInt(playerid,string,strval(result));
  741. format(string,sizeof(string),"-> Skin-ID: %d",strval(result));
  742. strcat(allstring,string,100);
  743. zahl++;
  744. }
  745. if(zahl == 0){return SendClientMessage(playerid,ROT,"** Für deine Fraktion existieren keine Skins!");}
  746. else {ShowPlayerDialog(playerid,DIA_FRAK_SKINCHANGE,DIALOG_STYLE_LIST,"Skinchange",allstring,"Ändern","Zurück");}
  747. }
  748. return 1;
  749. }
  750. dcmd_showranks(playerid, params[])
  751. {
  752. #pragma unused params
  753. if(SpielerInfo[playerid][Fraktion] == 0)return SendClientMessage(playerid,ROT,"** Du bist in keiner Fraktion!");
  754. if(SpielerInfo[playerid][Rank] != 6)return SendClientMessage(playerid,ROT,"** Du leitest deine Fraktion nicht!");
  755. else {
  756. new fID = SpielerInfo[playerid][Fraktion];
  757. new string[100],allstring[600],i;
  758. while(i < 6)
  759. {
  760. format(string,sizeof(string),"-> [%d] %s\n",i+1,FrakRank[fID][i]);
  761. strcat(allstring,string,100);
  762. i++;
  763. }
  764. ShowPlayerDialog(playerid,DIA_FRAK_RANKLIST,DIALOG_STYLE_LIST,"Rankübersicht",allstring,"Ändern","Abbrechen");
  765. }
  766. return 1;
  767. }
  768. dcmd_f(playerid, params[])
  769. {
  770. if(SpielerInfo[playerid][Fraktion] == 0)return SendClientMessage(playerid,ROT,"** Du bist in keiner Fraktion!");
  771. new text[128];
  772. if(sscanf(params,"s",text))return SendClientMessage(playerid,ROT,"** Benutze: /f [Text]");
  773. else {
  774. new string[160];
  775. format(string,sizeof(string),"[FC] -> %s %s: %s",GetFraktionRank(playerid),GetName(playerid),text);
  776. SendFraktionMessage(SpielerInfo[playerid][Fraktion],string);
  777. }
  778. return 1;
  779. }
  780. dcmd_makeleader(playerid, params[])
  781. {
  782. new pID, fID;
  783. if(sscanf(params,"ud",pID,fID))return SendClientMessage(playerid,ROT,"** Benute: /makeleader [Playerid/Name] [FraktionsID]");
  784. if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"** Dieser Spieler ist nicht Online!");
  785. if(fID < 1 || fID > ExistFraks)return SendClientMessage(playerid,ROT,"** Ungültige Fraktions-ID!");
  786. if(FrakSystem[fID][fCreated] == false)return SendClientMessage(playerid,ROT,"** Diese Fraktion existiert nicht!");
  787. else {
  788. new string[128];
  789. if(fID == 0)
  790. {
  791. format(string,sizeof(string),"** Du hast %s aus seiner Fraktion entlassen!",GetName(pID));
  792. SendClientMessage(playerid,WEIS,string);
  793. format(string,sizeof(string),"** %s hat dich aus deiner Fraktion entlassen!",GetName(playerid));
  794. SendClientMessage(pID,WEIS,string);
  795.  
  796. SpielerInfo[pID][Fraktion] = 0;
  797. SpielerInfo[pID][Rank] = 0;
  798. }
  799. else {
  800. format(string,sizeof(string),"** Du hast %s zum Leader der Fraktion '%s' gemacht!",GetName(pID),FrakSystem[fID][fName]);
  801. SendClientMessage(playerid,WEIS,string);
  802. format(string,sizeof(string),"** %s hat dich zum Leader der Fraktion '%s' gemacht!",GetName(playerid),FrakSystem[fID][fName]);
  803. SendClientMessage(pID,WEIS,string);
  804.  
  805. SpielerInfo[pID][Fraktion] = fID;
  806. SpielerInfo[pID][Rank] = 6;
  807. }
  808. }
  809. return 1;
  810. }
  811. dcmd_setrank(playerid, params[])
  812. {
  813. if(SpielerInfo[playerid][Fraktion] == 0)return SendClientMessage(playerid,ROT,"** Du bist in keiner Fraktion!");
  814. if(SpielerInfo[playerid][Rank] != 6)return SendClientMessage(playerid,ROT,"** Du leitest deine Fraktion nicht!");
  815. new pID, rank;
  816. if(sscanf(params,"ud",pID,rank))return SendClientMessage(playerid,ROT,"** Benutze: /setrank [Playerid/Name] [Rank]");
  817. if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"** Dieser Spieler ist nicht Online!");
  818. if(SpielerInfo[playerid][Fraktion] != SpielerInfo[pID][Fraktion])return SendClientMessage(playerid,ROT,"** Dieser Spieler ist nicht deiner Fraktion!");
  819. else {
  820. new string[128];
  821. format(string,sizeof(string),"** Du hast %s auf Rank %d gesetzt!",GetName(pID),rank);
  822. SendClientMessage(playerid,WEIS,string);
  823. format(string,sizeof(string),"** %s hat dich auf Rank %d gesetzt!",GetName(playerid),rank);
  824. SendClientMessage(pID,WEIS,string);
  825. SpielerInfo[pID][Rank] = rank;
  826. }
  827. return 1;
  828. }
  829. dcmd_invite(playerid, params[])
  830. {
  831. if(SpielerInfo[playerid][Fraktion] == 0)return SendClientMessage(playerid,ROT,"** Du bist in keiner Fraktion!");
  832. if(SpielerInfo[playerid][Rank] != 6)return SendClientMessage(playerid,ROT,"** Du leitest deine Fraktion nicht!");
  833. new pID;
  834. if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"** Benutze: /invite [Playerid/Name]");
  835. if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"** Dieser Spieler ist nicht Online!");
  836. if(SpielerInfo[pID][Fraktion] != 0)return SendClientMessage(playerid,ROT,"** Dieser Spieler ist bereits in einer Fraktion!");
  837. else {
  838. new string[128];
  839. new fID = SpielerInfo[playerid][Fraktion];
  840. format(string,sizeof(string),"** Du hast %s in die Fraktion Eingeladen.",GetName(pID));
  841. SendClientMessage(playerid,WEIS,string);
  842. format(string,sizeof(string),"** %s hat dich Eingeladen, der Fraktion '%s' beizutreten!",GetName(playerid),FrakSystem[fID][fName]);
  843. SendClientMessage(pID,WEIS,string);
  844. SpielerInfo[pID][Fraktion] = fID;
  845. }
  846. return 1;
  847. }
  848. dcmd_uninvite(playerid, params[])
  849. {
  850. if(SpielerInfo[playerid][Fraktion] == 0)return SendClientMessage(playerid,ROT,"** Du bist in keiner Fraktion!");
  851. if(SpielerInfo[playerid][Rank] != 6)return SendClientMessage(playerid,ROT,"** Du leitest deine Fraktion nicht!");
  852. new pID;
  853. if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"** Benutze: /uninvite [Playerid/Name]");
  854. if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"** Dieser Spieler ist nicht Online!");
  855. if(SpielerInfo[playerid][Fraktion] != SpielerInfo[pID][Fraktion])return SendClientMessage(playerid,ROT,"** Dieser Spieler ist nicht in deiner Fraktion!");
  856. else {
  857. new string[128];
  858. format(string,sizeof(string),"** Du hast %s aus der Fraktion geschmissen.",GetName(pID));
  859. SendClientMessage(playerid,WEIS,string);
  860. format(string,sizeof(string),"** %s hat dich aus deiner Fraktion geschmissen!",GetName(playerid));
  861. SendClientMessage(pID,WEIS,string);
  862. SpielerInfo[pID][Fraktion] = 0;
  863. }
  864. return 1;
  865. }
Advertisement
Add Comment
Please, Sign In to add comment