Advertisement
aviPhunk

Dynamisches Fraktionsystem

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