Guest User

Dynamisches Haussystem by DrMurphy V2.0

a guest
Mar 15th, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 69.92 KB | None | 0 0
  1. /*
  2. ============================================================= Dynamisches Haussystem by DrLiightninG ========================================================================================================
  3.  
  4. Copyright: Dieses Filterscript ist Eigentum von DrMurphy (samp Forum: http://forum.sa-mp.de/index.php?page=User&userID=32610)
  5. und darf zwar verwendet und auch verändert werden, jedoch nicht als eigenes System ausgegeben werden, sondern es muss darauf hingewiesen werden,
  6. dass die Grundstruktur des Scripts von DrLiightninG bzw DrMurphy stammt.
  7. Außerdem darf dieser Text weder entfernt, noch von anderen Personen außer DrMurphy verändert werden.
  8.  
  9. Benutzerhinweise: Eine ausführliche Erklärung aller Befehle und Funktionen ist im sa-mp.de Forum im Showroom des Systems zu finden.
  10. Verbesserungsvorschläge und Ideen für neue Funktionen werden dort ebenfalls gerne gesehen.
  11.  
  12. Version: 2.0
  13.  
  14. Datum: 15.03.2014 um 21:55 Uhr
  15.  
  16. =============================================================================================================================================================================================================
  17. */
  18.  
  19. //********** Einstellungen: **********
  20. #define MAX_HAUS 500 //Dies ist die maximale Anzahl von erstellbaren Häusern. Der Wert muss immer mindestens so groß sein, wie der Wert 'Anzahl Häuser' in der config-Datei.
  21. //************************************
  22.  
  23. #define FILTERSCRIPT
  24.  
  25. #include <a_samp>
  26. #include <dini>
  27. #include <sscanf2>
  28.  
  29. #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
  30.  
  31. new hauscfg[128];
  32. new anzahlhaus;
  33. new anzahlgeladen;
  34. new enterid[MAX_PLAYERS];
  35. new editid[MAX_PLAYERS];
  36. new Float:interiorx[MAX_PLAYERS];
  37. new Float:interiory[MAX_PLAYERS];
  38. new Float:interiorz[MAX_PLAYERS];
  39. new interiorkauf[MAX_PLAYERS];
  40. new interiorkaufpreis[MAX_PLAYERS];
  41. new VWorld[MAX_PLAYERS];
  42. new paydayzeit;
  43.  
  44. forward SaveDataT();
  45. forward PayDayT();
  46.  
  47. //Dialoge
  48. #define DIALOG_DELHAUS 100000
  49. #define DIALOG_HKAUFEN 200000
  50. #define DIALOG_HMIETBAR 300000
  51. #define DIALOG_HVERKAUFEN 400000
  52. #define DIALOG_HINTERIOR 500000
  53. #define DIALOG_HINFO 600000
  54. #define DIALOG_HCSPAWN 700000
  55. #define DIALOG_HUPGRADE 800000
  56. #define sec 1000
  57.  
  58. #if defined FILTERSCRIPT
  59.  
  60. //Farben:
  61. #define COLOR_GREY 0xAFAFAFAA
  62. #define COLOR_GREEN 0x33AA33AA
  63. #define COLOR_RED 0xAA3333AA
  64. #define COLOR_YELLOW 0xFFFF00AA
  65. #define COLOR_WHITE 0xFFFFFFAA
  66. #define COLOR_BLUE 0x0000BBAA
  67. #define COLOR_LIGHTBLUE 0x33CCFFAA
  68. #define COLOR_ORANGE 0xFF9900AA
  69. #define COLOR_LIME 0x10F441AA
  70. #define COLOR_MAGENTA 0xFF00FFFF
  71. #define COLOR_NAVY 0x000080AA
  72. #define COLOR_AQUA 0xF0F8FFAA
  73. #define COLOR_CRIMSON 0xDC143CAA
  74. #define COLOR_FLBLUE 0x6495EDAA
  75. #define COLOR_BISQUE 0xFFE4C4AA
  76. #define COLOR_BLACK 0x000000AA
  77. #define COLOR_CHARTREUSE 0x7FFF00AA
  78. #define COLOR_BROWN 0XA52A2AAA
  79. #define COLOR_CORAL 0xFF7F50AA
  80. #define COLOR_GOLD 0xB8860BAA
  81. #define COLOR_GREENYELLOW 0xADFF2FAA
  82. #define COLOR_INDIGO 0x4B00B0AA
  83. #define COLOR_IVORY 0xFFFF82AA
  84. #define COLOR_LAWNGREEN 0x7CFC00AA
  85. #define COLOR_SEAGREEN 0x20B2AAAA
  86. #define COLOR_DARKLIME 0x32CD32AA
  87. #define COLOR_MIDNIGHTBLUE 0X191970AA
  88. #define COLOR_MAROON 0x800000AA
  89. #define COLOR_OLIVE 0x808000AA
  90. #define COLOR_ORANGERED 0xFF4500AA
  91. #define COLOR_LIGHTLIGHTPINK 0xFFC0CBAA
  92. #define COLOR_SPRINGGREEN 0x00FF7FAAP
  93. #define COLOR_YELLOWGREEN 0x9ACD32AA
  94. #define COLOR_MEDIUMAQUA 0x83BFBFAA
  95. #define COLOR_DARKMAGENTA 0x8B008BAA
  96.  
  97. enum HSpielerDaten
  98. {
  99. ahaus,
  100. spawn
  101. }
  102.  
  103. new playerD[MAX_PLAYERS][HSpielerDaten];
  104.  
  105. enum HausDaten
  106. {
  107. id,
  108. Float:posx,
  109. Float:posy,
  110. Float:posz,
  111. interior,
  112. vworld,
  113. mietbar,
  114. besitzer[128],
  115. preis,
  116. mietpreis,
  117. minmiete,
  118. maxmiete,
  119. pickup,
  120. Text3D:dtext,
  121. oldinterior,
  122. kasse,
  123. heal,
  124. armour,
  125. aktiv,
  126. offen,
  127. level
  128. }
  129.  
  130. new haus[MAX_HAUS][HausDaten];
  131.  
  132. public OnFilterScriptInit()
  133. {
  134. format(hauscfg,sizeof(hauscfg),"/cfghaus.cfg");
  135. anzahlhaus = dini_Int(hauscfg,"Anzahl Häuser");
  136. print("\n-------------------------------------------------------------");
  137. print("Dynamisches Haussystem by DrMurphy erolgreich geladen!");
  138. print("-------------------------------------------------------------\n");
  139. if(!dini_Exists(hauscfg))
  140. {
  141. dini_Create(hauscfg);
  142. dini_Set(hauscfg,"Warnung"," Der Wert 'Anzahl Häuser' wird vom System verwendet und darf unter keinen Umständen vom Benutzer selbst geändert werden. Andernfalls könnte das komplette System fehlerhaft werden.");
  143. dini_Set(hauscfg,"Hinweis"," Hilfe zur config-Datei, sowie dem kompletten System, kann man im sa-mp.de Forum im Showroom des Systems finden.");
  144. dini_IntSet(hauscfg,"Anzahl Häuser",0);
  145. dini_Set(hauscfg,"Max_Haus"," Dieser Wert gibt die maximale Zahl an erstellbaren Häusern an. Er muss direkt im Filterscript geändert werden. Die Einstellungen sind ganz oben im Script zu finden. (Standartmäßiger Wert: 500)");
  146. dini_IntSet(hauscfg,"Max_Häuser_Kaufbar",1);
  147. dini_IntSet(hauscfg,"Mietbar",1);
  148. dini_IntSet(hauscfg,"Max_Miete",-1);
  149. dini_IntSet(hauscfg,"Min_Miete",-1);
  150. dini_IntSet(hauscfg,"Max_Mieter",10);
  151. dini_IntSet(hauscfg,"Upgrades",1);
  152. dini_IntSet(hauscfg,"Healpoint_Preis",5000);
  153. dini_IntSet(hauscfg,"Armourpoint_Preis",5000);
  154. dini_IntSet(hauscfg,"Interiorkauf",1);
  155. dini_IntSet(hauscfg,"PayDay",0);
  156. dini_IntSet(hauscfg,"Nutze_Spawnsystem",0);
  157. dini_FloatSet(hauscfg,"S_Spawnx",0);
  158. dini_FloatSet(hauscfg,"S_Spawny",0);
  159. dini_FloatSet(hauscfg,"S_Spawnz",0);
  160. print("Haussystem erfolgreich installiert.");
  161. return 1;
  162. }
  163. else
  164. {
  165. for(new i = 0; anzahlhaus >= i; i++)
  166. {
  167. new hausid[128];
  168. format(hausid,sizeof(hausid),"/Haus/Haus%i.cfg",i);
  169. if(dini_Exists(hausid))
  170. {
  171. if(dini_Int(hausid,"Aktiv") == 1)
  172. {
  173. //Haus laden
  174. anzahlgeladen ++;
  175. haus[i][id] = dini_Int(hausid,"ID");
  176. haus[i][aktiv] = 1;
  177. haus[i][level] = dini_Int(hausid,"Level");
  178. haus[i][posx] = dini_Float(hausid,"PosX");
  179. haus[i][posy] = dini_Float(hausid,"PosY");
  180. haus[i][posz] = dini_Float(hausid,"PosZ");
  181. haus[i][interior] = dini_Int(hausid,"Interior");
  182. haus[i][vworld] = dini_Int(hausid,"VirtualWorld");
  183. haus[i][mietbar] = dini_Int(hausid,"Mietbar");
  184. haus[i][heal] = dini_Int(hausid,"Healpoint");
  185. haus[i][armour] = dini_Int(hausid,"Armourpoint");
  186. format(haus[i][besitzer],128,"%s",dini_Get(hausid,"Besitzer"));
  187. haus[i][preis] = dini_Int(hausid,"Preis");
  188. haus[i][minmiete] = dini_Int(hausid,"Min_Miete");
  189. haus[i][maxmiete] = dini_Int(hausid,"Max_Miete");
  190. haus[i][mietpreis] = dini_Int(hausid,"Mietpreis");
  191. haus[i][oldinterior] = dini_Int(hausid,"Old_Interior");
  192. haus[i][kasse] = dini_Int(hausid,"Kasse");
  193. haus[i][offen] = dini_Int(hausid,"Offen");
  194. if(dini_Int(hauscfg,"Min_Miete") != -1)
  195. {
  196. if(haus[i][minmiete] == -1)
  197. {
  198. if(haus[i][mietpreis] < dini_Int(hauscfg,"Min_Miete"))
  199. {
  200. haus[i][mietpreis] = dini_Int(hauscfg,"Min_Miete");
  201. }
  202. }
  203. }
  204. if(dini_Int(hauscfg,"Max_Miete") != -1)
  205. {
  206. if(haus[i][maxmiete] == -1)
  207. {
  208. if(haus[i][mietpreis] > dini_Int(hauscfg,"Max_Miete"))
  209. {
  210. haus[i][mietpreis] = dini_Int(hauscfg,"Max_Miete");
  211. }
  212. }
  213. }
  214. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  215. for(new x = 0; maxmieter > x; x++)
  216. {
  217. new mietername[128];
  218. format(mietername,sizeof(mietername),"Mieter%i",x);
  219. if(strcmp(dini_Get(hausid,mietername),"",false) == 0)
  220. {
  221. dini_Set(hausid,mietername,"Niemand");
  222. }
  223. }
  224. if(strcmp(haus[i][besitzer],"Niemand",false) == 0)
  225. {
  226. haus[i][pickup] = CreatePickup(1273,1,haus[i][posx],haus[i][posy],haus[i][posz],0);
  227. new string[128];
  228. format(string,sizeof(string),"Zum Verkauf\nID: %i\nPreis: %i\nminimale Miete: %i\nmaximale Miete: %i\nInterior ID: %i",haus[i][id],haus[i][preis],haus[i][minmiete],haus[i][maxmiete],haus[i][interior]);
  229. haus[i][dtext] = Create3DTextLabel(string,COLOR_BLUE,haus[i][posx],haus[i][posy],haus[i][posz],10,0,0);
  230. }
  231. else
  232. {
  233. haus[i][pickup] = CreatePickup(1272,1,haus[i][posx],haus[i][posy],haus[i][posz],0);
  234. if(haus[i][mietbar] == 0 || dini_Int(hauscfg,"Mietbar") == 0)
  235. {
  236. new string2[128];
  237. format(string2,sizeof(string2),"Besitzer: %s\nID: %i",haus[i][besitzer],haus[i][id]);
  238. haus[i][dtext] = Create3DTextLabel(string2,COLOR_BLUE,haus[i][posx],haus[i][posy],haus[i][posz],10,0,0);
  239. }
  240. if(dini_Int(hauscfg,"Mietbar") == 1)
  241. {
  242. if(haus[i][mietbar] == 1)
  243. {
  244. new string3[128];
  245. format(string3,sizeof(string3),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  246. haus[i][dtext] = Create3DTextLabel(string3,COLOR_BLUE,haus[i][posx],haus[i][posy],haus[i][posz],10,0,0);
  247. }
  248. }
  249. }
  250. }
  251. }
  252. }
  253. paydayzeit = dini_Int(hauscfg,"PayDay");
  254. printf("Es wurden %i Häuser geladen!",anzahlgeladen);
  255. SetTimer("SaveDataT",60*60*sec,true);
  256. SetTimer("PayDayT",60*sec,true);
  257. return 1;
  258. }
  259. }
  260.  
  261. public OnFilterScriptExit()
  262. {
  263. dini_IntSet(hauscfg,"PayDay",paydayzeit);
  264. saveHausDaten();
  265. return 1;
  266. }
  267.  
  268. #else
  269.  
  270. main()
  271. {
  272. print("\n----------------------------------");
  273. print(" Blank Gamemode by your name here");
  274. print("----------------------------------\n");
  275. }
  276.  
  277. #endif
  278.  
  279. public OnPlayerConnect(playerid)
  280. {
  281. new SDatei[128];
  282. format(SDatei,sizeof(SDatei),"/HSpieler/%s.cfg",getPlayerName(playerid));
  283. if(dini_Exists(SDatei))
  284. {
  285. playerD[playerid][ahaus] = dini_Int(SDatei,"Anzahl_Häuser");
  286. playerD[playerid][spawn] = dini_Int(SDatei,"Spawn");
  287. return 1;
  288. }
  289. else
  290. {
  291. dini_Create(SDatei);
  292. dini_IntSet(SDatei,"Anzahl_Häuser",0);
  293. dini_IntSet(SDatei,"Spawn",0);
  294. return 1;
  295. }
  296. }
  297.  
  298. public OnPlayerDisconnect(playerid, reason)
  299. {
  300. enterid[playerid] = 0;
  301. editid[playerid] = 0;
  302. interiorx[playerid] = 0;
  303. interiory[playerid] = 0;
  304. interiorz[playerid] = 0;
  305. interiorkauf[playerid] = 0;
  306. interiorkaufpreis[playerid] = 0;
  307. VWorld[playerid] = 0;
  308. return 1;
  309. }
  310.  
  311. public OnPlayerSpawn(playerid)
  312. {
  313. if(dini_Int(hauscfg,"Nutze_Spawnsystem") == 1)
  314. {
  315. if(playerD[playerid][spawn] == 0)
  316. {
  317. SetPlayerPos(playerid,dini_Float(hauscfg,"S_Spawnx"),dini_Float(hauscfg,"S_Spawny"),dini_Float(hauscfg,"S_Spawnz"));
  318. SetPlayerInterior(playerid,0);
  319. SetPlayerVirtualWorld(playerid,0);
  320. return 1;
  321. }
  322. else
  323. {
  324. for(new i = 0; MAX_HAUS >= i; i++)
  325. {
  326. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  327. {
  328. new inter[128];
  329. format(inter,sizeof(inter),"/Interiors/Interior%i.txt",haus[i][interior]);
  330. SetPlayerPos(playerid,dini_Float(inter,"SpawnX"),dini_Float(inter,"SpawnY"),dini_Float(inter,"SpawnZ"));
  331. SetPlayerInterior(playerid,haus[i][interior]);
  332. SetPlayerVirtualWorld(playerid,haus[i][vworld]);
  333. enterid[playerid] = haus[i][id];
  334. return 1;
  335. }
  336. new HDatei[128];
  337. format(HDatei,sizeof(HDatei),"/Haus/Haus%i.cfg",haus[i][id]);
  338. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  339. for(new x = 0; maxmieter > x; x++)
  340. {
  341. new mietername[128];
  342. format(mietername,sizeof(mietername),"Mieter%i",x);
  343. if(strcmp(dini_Get(HDatei,mietername),"",false) == 0)
  344. {
  345. new inter[128];
  346. format(inter,sizeof(inter),"/Interiors/Interior%i.txt",haus[i][interior]);
  347. SetPlayerPos(playerid,dini_Float(inter,"SpawnX"),dini_Float(inter,"SpawnY"),dini_Float(inter,"SpawnZ"));
  348. SetPlayerInterior(playerid,haus[i][interior]);
  349. SetPlayerVirtualWorld(playerid,haus[i][vworld]);
  350. enterid[playerid] = haus[i][id];
  351. return 1;
  352. }
  353. }
  354. }
  355. SetPlayerPos(playerid,dini_Float(hauscfg,"S_Spawnx"),dini_Float(hauscfg,"S_Spawny"),dini_Float(hauscfg,"S_Spawnz"));
  356. SetPlayerInterior(playerid,0);
  357. SetPlayerVirtualWorld(playerid,0);
  358. return 1;
  359. }
  360. }
  361. return 1;
  362. }
  363.  
  364. public OnPlayerDeath(playerid, killerid, reason)
  365. {
  366. return 1;
  367. }
  368.  
  369. public OnVehicleSpawn(vehicleid)
  370. {
  371. return 1;
  372. }
  373.  
  374. public OnVehicleDeath(vehicleid, killerid)
  375. {
  376. return 1;
  377. }
  378.  
  379. public OnPlayerText(playerid, text[])
  380. {
  381. return 1;
  382. }
  383.  
  384. public OnPlayerCommandText(playerid, cmdtext[])
  385. {
  386. dcmd(chaus, 5, cmdtext);
  387. dcmd(cinterior, 9, cmdtext);
  388. dcmd(delinterior, 11, cmdtext);
  389. dcmd(sinterior, 9, cmdtext);
  390. dcmd(hinterior, 9, cmdtext);
  391. dcmd(hmiete, 6, cmdtext);
  392. dcmd(hkickmieter, 11, cmdtext);
  393. dcmd(heinzahlen, 10, cmdtext);
  394.  
  395. if(strcmp("/hauf", cmdtext, true, 10) == 0)
  396. {
  397. for(new i = 0; MAX_HAUS >= i; i++)
  398. {
  399. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  400. {
  401. if(haus[i][aktiv] == 1)
  402. {
  403. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  404. {
  405. if(haus[i][offen] == 0)
  406. {
  407. haus[i][offen] = 1;
  408. SendClientMessage(playerid,COLOR_RED,"Du hast dein Haus aufgeschlossen! Nun kann es jeder Spieler betreten!");
  409. return 1;
  410. }
  411. else
  412. {
  413. return SendClientMessage(playerid,COLOR_RED,"Dein Haus ist bereits aufgeschlossen!");
  414. }
  415. }
  416. else
  417. {
  418. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer dieses Hauses!");
  419. }
  420. }
  421. }
  422. }
  423. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  424. return 1;
  425. }
  426.  
  427. if(strcmp("/hzu", cmdtext, true, 10) == 0)
  428. {
  429. for(new i = 0; MAX_HAUS >= i; i++)
  430. {
  431. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  432. {
  433. if(haus[i][aktiv] == 1)
  434. {
  435. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  436. {
  437. if(haus[i][offen] == 1)
  438. {
  439. haus[i][offen] = 0;
  440. SendClientMessage(playerid,COLOR_RED,"Du hast dein Haus zugeschlossen! Nun können nur Mieter und du es betreten!");
  441. return 1;
  442. }
  443. else
  444. {
  445. return SendClientMessage(playerid,COLOR_RED,"Dein Haus ist bereits zugeschlossen!");
  446. }
  447. }
  448. else
  449. {
  450. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer dieses Hauses!");
  451. }
  452. }
  453. }
  454. }
  455. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  456. return 1;
  457. }
  458.  
  459. if(strcmp("/hupgrade", cmdtext, true, 10) == 0)
  460. {
  461. if(dini_Int(hauscfg,"Upgrades") == 1)
  462. {
  463. for(new i = 0; MAX_HAUS >= i; i++)
  464. {
  465. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  466. {
  467. if(haus[i][aktiv] == 1)
  468. {
  469. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  470. {
  471. new string[128];
  472. format(string,sizeof(string),"Healpoint (%i$)\nArmourpoint (%i$)",dini_Int(hauscfg,"Healpoint_Preis"),dini_Int(hauscfg,"Armourpoint"));
  473. editid[playerid] = haus[i][id];
  474. ShowPlayerDialog(playerid,DIALOG_HUPGRADE,DIALOG_STYLE_LIST,"Upgrade wählen:",string,"Wählen","Abbrechen");
  475. return 1;
  476. }
  477. else
  478. {
  479. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer dieses Hauses!");
  480. }
  481. }
  482. }
  483. }
  484. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  485. return 1;
  486. }
  487. else
  488. {
  489. return SendClientMessage(playerid,COLOR_RED,"Der Server verbietet den Kauf von Upgrades!");
  490. }
  491. }
  492.  
  493. if(strcmp("/hheal", cmdtext, true, 10) == 0)
  494. {
  495. if(enterid[playerid] != 0)
  496. {
  497. if(haus[enterid[playerid]][heal] == 1)
  498. {
  499. SetPlayerHealth(playerid,100);
  500. SendClientMessage(playerid,COLOR_GREEN,"Du hast dich geheilt!");
  501. return 1;
  502. }
  503. else
  504. {
  505. return SendClientMessage(playerid,COLOR_RED,"Dieses Haus hat keinen Healpoint!");
  506. }
  507. }
  508. else
  509. {
  510. return SendClientMessage(playerid,COLOR_RED,"Du befindest dich in keinem Haus!");
  511. }
  512. }
  513.  
  514. if(strcmp("/harmour", cmdtext, true, 10) == 0)
  515. {
  516. if(enterid[playerid] != 0)
  517. {
  518. if(haus[enterid[playerid]][armour] == 1)
  519. {
  520. SetPlayerArmour(playerid,100);
  521. SendClientMessage(playerid,COLOR_GREEN,"Du hast dich geheilt!");
  522. return 1;
  523. }
  524. else
  525. {
  526. return SendClientMessage(playerid,COLOR_RED,"Dieses Haus hat keinen Healpoint!");
  527. }
  528. }
  529. else
  530. {
  531. return SendClientMessage(playerid,COLOR_RED,"Du befindest dich in keinem Haus!");
  532. }
  533. }
  534.  
  535. if(strcmp("/hchangespawn", cmdtext, true, 15) == 0)
  536. {
  537. ShowPlayerDialog(playerid,DIALOG_HCSPAWN,DIALOG_STYLE_LIST,"Spawnpunkt wählen:","Am Noobspawn\nIn meinem Haus","Ändern","Schließen");
  538. return 1;
  539. }
  540.  
  541. if(strcmp("/hhelp", cmdtext, true, 10) == 0)
  542. {
  543. SendClientMessage(playerid,COLOR_WHITE," ");
  544. SendClientMessage(playerid,COLOR_YELLOW,"******************** Dynamisches Haussystem by DrMurphy Hilfe: ********************");
  545. SendClientMessage(playerid,COLOR_WHITE," ");
  546. SendClientMessage(playerid,COLOR_BLUE,"Adminbefehle:");
  547. SendClientMessage(playerid,COLOR_YELLOW,"/chaus = Neues Haus erstellen");
  548. SendClientMessage(playerid,COLOR_YELLOW,"/delhaus = Vorhandenes Haus löschen");
  549. SendClientMessage(playerid,COLOR_YELLOW,"/cinterior = Neues Interior erstellen");
  550. SendClientMessage(playerid,COLOR_YELLOW,"/delinterior = Vorhandenes Interior löschen");
  551. SendClientMessage(playerid,COLOR_WHITE," ");
  552. SendClientMessage(playerid,COLOR_BLUE,"Userbefehle:");
  553. SendClientMessage(playerid,COLOR_YELLOW,"/sinterior = Vorschau eines vorhandenen Interiors");
  554. SendClientMessage(playerid,COLOR_YELLOW,"/linterior = Vorschau des Interiors verlassen");
  555. SendClientMessage(playerid,COLOR_YELLOW,"/listinteriors = Zeigt eine Liste aller verfügbaren Interiors");
  556. SendClientMessage(playerid,COLOR_YELLOW,"/hinterior = Wählt ein Interior für das Haus in der Nähe");
  557. SendClientMessage(playerid,COLOR_YELLOW,"/hinfo = Zeigt Informationen zum Haus in der Nähe");
  558. SendClientMessage(playerid,COLOR_YELLOW,"/hkaufen = Kauft das Haus in der Nähe");
  559. SendClientMessage(playerid,COLOR_YELLOW,"/hverkaufen = Verkauft das Haus in der Nähe");
  560. SendClientMessage(playerid,COLOR_YELLOW,"/hauf = Eigenes Haus aufschließen");
  561. SendClientMessage(playerid,COLOR_YELLOW,"/hzu = Eigenes Haus zuschließen");
  562. SendClientMessage(playerid,COLOR_YELLOW,"/henter = Betritt das Haus in der Nähe");
  563. SendClientMessage(playerid,COLOR_YELLOW,"/hexit = Verlässt das aktuelle Haus");
  564. SendClientMessage(playerid,COLOR_YELLOW,"/hupgrade = Heal-/Armourpoint kaufen");
  565. SendClientMessage(playerid,COLOR_YELLOW,"/hheal = In einem Haus heilen (falls Healpoint vorhanden)");
  566. SendClientMessage(playerid,COLOR_YELLOW,"/harmour = In einem Haus Panzerung anlegen (falls Armourpoint vorhanden)");
  567. SendClientMessage(playerid,COLOR_YELLOW,"/hmietbar = Stellt ein ob das Haus mietbar ist oder nicht");
  568. SendClientMessage(playerid,COLOR_YELLOW,"/hmiete = Stellt den Mietpreis ein");
  569. SendClientMessage(playerid,COLOR_YELLOW,"/hkickmieter = Kickt einen Mieter aus dem Haus (Mieter kündigen)");
  570. SendClientMessage(playerid,COLOR_YELLOW,"/hrent = Mietet das Haus in der Nähe");
  571. SendClientMessage(playerid,COLOR_YELLOW,"/hunrent = Kündigt die Miete des Hauses in der Nähe");
  572. SendClientMessage(playerid,COLOR_YELLOW,"/hchangespawn = Ändert den Spawnpunkt des Spielers (Im Haus oder am Noobspawn)");
  573. SendClientMessage(playerid,COLOR_YELLOW,"***********************************************************************************");
  574. }
  575.  
  576. if(strcmp("/hkonto", cmdtext, true, 10) == 0)
  577. {
  578. for(new i = 0; MAX_HAUS >= i; i++)
  579. {
  580. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  581. {
  582. if(haus[i][aktiv] == 1)
  583. {
  584. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  585. {
  586. new string[128];
  587. format(string,sizeof(string),"In deinem Haus befinden sich aktuell %i$",haus[i][kasse]);
  588. SendClientMessage(playerid,COLOR_GREEN,string);
  589. return 1;
  590. }
  591. else
  592. {
  593. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer dieses Hauses!");
  594. }
  595. }
  596. }
  597. }
  598. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  599. return 1;
  600. }
  601.  
  602. if(strcmp("/hauszahlen", cmdtext, true, 15) == 0)
  603. {
  604. for(new i = 0; MAX_HAUS >= i; i++)
  605. {
  606. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  607. {
  608. if(haus[i][aktiv] == 1)
  609. {
  610. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  611. {
  612. GivePlayerMoney(playerid,haus[i][kasse]);
  613. new string[128];
  614. format(string,sizeof(string),"Du hast dir %i auszahlen lassen.",haus[i][kasse]);
  615. SendClientMessage(playerid,COLOR_GREEN,string);
  616. haus[i][kasse] = 0;
  617. return 1;
  618. }
  619. else
  620. {
  621. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer dieses Hauses!");
  622. }
  623. }
  624. }
  625. }
  626. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  627. return 1;
  628. }
  629.  
  630. if(strcmp("/hinfo", cmdtext, true, 10) == 0)
  631. {
  632. for(new i = 0; MAX_HAUS >= i; i++)
  633. {
  634. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  635. {
  636. if(haus[i][aktiv] == 1)
  637. {
  638. new hausid[128];
  639. format(hausid,sizeof(hausid),"/Haus/Haus%i.cfg",haus[i][id]);
  640. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  641. new string[300];
  642. for(new x = 0; maxmieter > x; x++)
  643. {
  644. new mietername[128];
  645. format(mietername,sizeof(mietername),"Mieter%i",x);
  646. format(string,sizeof(string),"%s\nMieter %i: %s",string,x,dini_Get(hausid,mietername));
  647. }
  648. new string2[600];
  649. format(string2,sizeof(string2),"Haus ID: %i\nBesitzer: %s\nInterior ID: %i\nMietbar: %i\nMietpreis: %i\n%s",haus[i][id],haus[i][besitzer],haus[i][interior],haus[i][mietbar],haus[i][mietpreis],string);
  650. new string3[128];
  651. format(string3,sizeof(string3),"Hausinformationen von Haus %i",haus[i][id]);
  652. ShowPlayerDialog(playerid,DIALOG_HINFO,DIALOG_STYLE_MSGBOX,string3,string2,"OK","Schließen");
  653. return 1;
  654. }
  655. }
  656. }
  657. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  658. return 1;
  659. }
  660.  
  661. if(strcmp("/hunrent", cmdtext, true, 15) == 0)
  662. {
  663. for(new i = 0; MAX_HAUS >= i; i++)
  664. {
  665. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  666. {
  667. if(haus[i][aktiv] == 1)
  668. {
  669. new hausid[128];
  670. format(hausid,sizeof(hausid),"/Haus/Haus%i.cfg",haus[i][id]);
  671. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  672. for(new x = 0; maxmieter > x; x++)
  673. {
  674. new mietername[128];
  675. format(mietername,sizeof(mietername),"Mieter%i",x);
  676. if(strcmp(dini_Get(hausid,mietername),getPlayerName(playerid),false) == 0)
  677. {
  678. dini_Set(hausid,mietername,"Niemand");
  679. SendClientMessage(playerid,COLOR_GREEN,"Du mietest dieses Haus nun nicht mehr.");
  680. return 1;
  681. }
  682. else
  683. {
  684. return SendClientMessage(playerid,COLOR_RED,"Du mietest dieses Haus nicht!");
  685. }
  686. }
  687. }
  688. }
  689. }
  690. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  691. return 1;
  692. }
  693.  
  694. if(strcmp("/hrent", cmdtext, true, 10) == 0)
  695. {
  696. for(new i = 0; MAX_HAUS >= i; i++)
  697. {
  698. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  699. {
  700. if(haus[i][aktiv] == 1)
  701. {
  702. if(strcmp(haus[i][besitzer],"Niemand",false) != 0)
  703. {
  704. new hausid[128];
  705. format(hausid,sizeof(hausid),"/Haus/Haus%i.cfg",haus[i][id]);
  706. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  707. for(new x = 0; maxmieter > x; x++)
  708. {
  709. new mietername[128];
  710. format(mietername,sizeof(mietername),"Mieter%i",x);
  711. if(strcmp(dini_Get(hausid,mietername),getPlayerName(playerid),false) == 0)
  712. {
  713. return SendClientMessage(playerid,COLOR_RED,"Du mietest dieses Haus bereits!");
  714. }
  715. }
  716. for(new x = 0; maxmieter > x; x++)
  717. {
  718. new mietername[128];
  719. format(mietername,sizeof(mietername),"Mieter%i",x);
  720. if(strcmp(dini_Get(hausid,mietername),"Niemand",false) == 0)
  721. {
  722. dini_Set(hausid,mietername,getPlayerName(playerid));
  723. new string[128];
  724. format(string,sizeof(string),"Du hast Haus %i für %i gemietet.",haus[i][id],haus[i][mietpreis]);
  725. SendClientMessage(playerid,COLOR_GREEN,string);
  726. return 1;
  727. }
  728. }
  729. return 1;
  730. }
  731. else
  732. {
  733. return SendClientMessage(playerid,COLOR_RED,"Dieses Haus hat keinen Besitzer und ist somit nicht mietbar!");
  734. }
  735. }
  736. }
  737. }
  738. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  739. return 1;
  740. }
  741.  
  742. if(strcmp("/linterior", cmdtext, true, 15) == 0)
  743. {
  744. if(GetPlayerVirtualWorld(playerid) == VWorld[playerid])
  745. {
  746. SetPlayerPos(playerid,interiorx[playerid],interiory[playerid],interiorz[playerid]);
  747. SetPlayerInterior(playerid,0);
  748. SetPlayerVirtualWorld(playerid,0);
  749. VWorld[playerid] = 0;
  750. SendClientMessage(playerid,COLOR_GREEN,"Du hast die Interior Vorschau verlassen.");
  751. return 1;
  752. }
  753. else
  754. {
  755. return SendClientMessage(playerid,COLOR_RED,"Du bist in keiner Interior Vorschau!");
  756. }
  757. }
  758.  
  759. if(strcmp("/listinteriors", cmdtext, true, 15) == 0)
  760. {
  761. new intdatei[128];
  762. SendClientMessage(playerid,COLOR_YELLOW,"========== Verfügbare Interiors: ==========");
  763. for(new i = 0; 19 > i; i++)
  764. {
  765. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",i);
  766. if(dini_Exists(intdatei))
  767. {
  768. new string[128];
  769. format(string,sizeof(string),"Interior ID: %i || Interior Preis: %i",i,dini_Int(intdatei,"Preis"));
  770. SendClientMessage(playerid,COLOR_YELLOW,string);
  771. }
  772. }
  773. SendClientMessage(playerid,COLOR_YELLOW,"===========================================");
  774. return 1;
  775. }
  776.  
  777. if(strcmp("/hverkaufen", cmdtext, true, 15) == 0)
  778. {
  779. for(new i = 0; MAX_HAUS >= i; i++)
  780. {
  781. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  782. {
  783. if(haus[i][aktiv] == 1)
  784. {
  785. if(strcmp(getPlayerName(playerid),haus[i][besitzer],false) == 0)
  786. {
  787. new string[128], vpreis;
  788. editid[playerid] = haus[i][id];
  789. vpreis = haus[i][preis] / 2;
  790. format(string,sizeof(string),"Bist du sicher dass du dein Haus für %i verkaufen möchtest?",vpreis);
  791. ShowPlayerDialog(playerid,DIALOG_HVERKAUFEN,DIALOG_STYLE_MSGBOX,"Haus verkaufen: (Bestätigung)",string,"Ja","Nein");
  792. return 1;
  793. }
  794. else
  795. {
  796. SendClientMessage(playerid,COLOR_RED,"Dir gehört dieses Haus nicht!");
  797. return 1;
  798. }
  799. }
  800. }
  801. }
  802. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  803. return 1;
  804. }
  805.  
  806. if(strcmp("/hmietbar", cmdtext, true, 10) == 0)
  807. {
  808. for(new i = 0; MAX_HAUS >= i; i++)
  809. {
  810. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  811. {
  812. if(haus[i][aktiv] == 1)
  813. {
  814. if(strcmp(getPlayerName(playerid),haus[i][besitzer],false) == 0)
  815. {
  816. if(dini_Int(hauscfg,"Mietbar") == 1)
  817. {
  818. editid[playerid] = haus[i][id];
  819. ShowPlayerDialog(playerid,DIALOG_HMIETBAR,DIALOG_STYLE_MSGBOX,"Haus vermieten:","Möchtest du dass andere Spieler zur Miete in deinem Haus wohnen dürfen?","Ja","Nein");
  820. return 1;
  821. }
  822. else
  823. {
  824. return SendClientMessage(playerid,COLOR_RED,"Der Server verbietet es Häuser zu vermieten!");
  825. }
  826. }
  827. else
  828. {
  829. SendClientMessage(playerid,COLOR_RED,"Dir gehört dieses Haus nicht!");
  830. return 1;
  831. }
  832. }
  833. }
  834. }
  835. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  836. return 1;
  837. }
  838.  
  839. if(strcmp("/hkaufen", cmdtext, true, 10) == 0)
  840. {
  841. if(playerD[playerid][ahaus] < dini_Int(hauscfg,"Max_Häuser_Kaufbar"))
  842. {
  843. for(new i = 0; MAX_HAUS >= i; i++)
  844. {
  845. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  846. {
  847. if(haus[i][aktiv] == 1)
  848. {
  849. if(strcmp(haus[i][besitzer],"Niemand",false) == 0)
  850. {
  851. new string[128];
  852. format(string,sizeof(string),"Bist du sicher dass du Haus %i für %i kaufen möchtest? (Mindestlevel: %i)",haus[i][id],haus[i][preis],haus[i][level]);
  853. editid[playerid] = haus[i][id];
  854. ShowPlayerDialog(playerid,DIALOG_HKAUFEN,DIALOG_STYLE_MSGBOX,"Haus kaufen: (Bestätigung)",string,"Ja","Nein");
  855. return 1;
  856. }
  857. else
  858. {
  859. return SendClientMessage(playerid,COLOR_RED,"Dieses Haus gehört bereits einem anderen Spieler!");
  860. }
  861. }
  862. }
  863. }
  864. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  865. return 1;
  866. }
  867. else
  868. {
  869. return SendClientMessage(playerid,COLOR_RED,"Du kannst nicht noch mehr Häuser kaufen!");
  870. }
  871. }
  872.  
  873. if(strcmp("/delhaus", cmdtext, true, 10) == 0)
  874. {
  875. if(IsPlayerAdmin(playerid) == 1)
  876. {
  877. for(new i = 0; MAX_HAUS >= i; i++)
  878. {
  879. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  880. {
  881. if(haus[i][aktiv] == 1)
  882. {
  883. new string[128];
  884. format(string,sizeof(string),"Bist du sicher dass du Haus %i löschen möchtest?",haus[i][id]);
  885. editid[playerid] = haus[i][id];
  886. ShowPlayerDialog(playerid,DIALOG_DELHAUS,DIALOG_STYLE_MSGBOX,"Haus löschen: (Bestätigung)",string,"Ja","Nein");
  887. return 1;
  888. }
  889. }
  890. }
  891. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  892. return 1;
  893. }
  894. else
  895. {
  896. return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
  897. }
  898. }
  899.  
  900. if(strcmp("/henter", cmdtext, true, 10) == 0)
  901. {
  902. new idhaus[128], Float:x, Float:y, Float:z;
  903. GetPlayerPos(playerid,x,y,z);
  904. for(new i = 0; MAX_HAUS >= i; i++)
  905. {
  906. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  907. {
  908. if(haus[i][aktiv] == 1)
  909. {
  910. //Haus betreten
  911. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  912. {
  913. new intdatei[128];
  914. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",haus[i][interior]);
  915. if(dini_Exists(intdatei))
  916. {
  917. enterid[playerid] = haus[i][id];
  918. SetPlayerPos(playerid,dini_Int(intdatei,"SpawnX"),dini_Int(intdatei,"SpawnY"),dini_Int(intdatei,"SpawnZ"));
  919. SetPlayerInterior(playerid,haus[i][interior]);
  920. SetPlayerVirtualWorld(playerid,haus[i][vworld]);
  921. return 1;
  922. }
  923. else
  924. {
  925. return SendClientMessage(playerid,COLOR_RED,"Das Interior des Hauses wurde gelöscht!");
  926. }
  927. }
  928. else
  929. {
  930. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  931. for(new d = 0; maxmieter > d; d++)
  932. {
  933. new mietername[128];
  934. format(mietername,sizeof(mietername),"Mieter%i",d);
  935. format(idhaus,sizeof(idhaus),"/Haus/Haus%i.cfg",i);
  936. if(strcmp(dini_Get(idhaus,mietername),getPlayerName(playerid),false) == 0)
  937. {
  938. new intdatei[128];
  939. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",haus[i][interior]);
  940. if(dini_Exists(intdatei))
  941. {
  942. enterid[playerid] = haus[i][id];
  943. SetPlayerPos(playerid,dini_Int(intdatei,"SpawnX"),dini_Int(intdatei,"SpawnY"),dini_Int(intdatei,"SpawnZ"));
  944. SetPlayerInterior(playerid,haus[i][interior]);
  945. SetPlayerVirtualWorld(playerid,haus[i][vworld]);
  946. return 1;
  947. }
  948. else
  949. {
  950. return SendClientMessage(playerid,COLOR_RED,"Das Interior des Hauses wurde gelöscht!");
  951. }
  952. }
  953. }
  954. if(haus[i][offen] == 1)
  955. {
  956. new intdatei[128];
  957. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",haus[i][interior]);
  958. if(dini_Exists(intdatei))
  959. {
  960. enterid[playerid] = haus[i][id];
  961. SetPlayerPos(playerid,dini_Int(intdatei,"SpawnX"),dini_Int(intdatei,"SpawnY"),dini_Int(intdatei,"SpawnZ"));
  962. SetPlayerInterior(playerid,haus[i][interior]);
  963. SetPlayerVirtualWorld(playerid,haus[i][vworld]);
  964. return 1;
  965. }
  966. else
  967. {
  968. return SendClientMessage(playerid,COLOR_RED,"Das Interior des Hauses wurde gelöscht!");
  969. }
  970. }
  971. else
  972. {
  973. return SendClientMessage(playerid,COLOR_RED,"Dieses Haus kannst du nicht betreten!");
  974. }
  975. }
  976. }
  977. }
  978. }
  979. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  980. return 1;
  981. }
  982.  
  983. if(strcmp("/hexit", cmdtext, true, 10) == 0)
  984. {
  985. if(enterid[playerid] != 0)
  986. {
  987. SetPlayerPos(playerid,haus[enterid[playerid]][posx],haus[enterid[playerid]][posy],haus[enterid[playerid]][posz]);
  988. SetPlayerInterior(playerid,0);
  989. SetPlayerVirtualWorld(playerid,0);
  990. enterid[playerid] = 0;
  991. return 1;
  992. }
  993. else
  994. {
  995. return SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Haus!");
  996. }
  997. }
  998.  
  999. if (strcmp("/tp", cmdtext, true, 10) == 0)
  1000. {
  1001. SetPlayerPos(playerid,844.420410,-1013.591796,28.357248);
  1002. return 1;
  1003. }
  1004. return 0;
  1005. }
  1006.  
  1007. dcmd_heinzahlen(playerid, params[])
  1008. {
  1009. new betrag;
  1010. if(sscanf(params, "i", betrag))
  1011. {
  1012. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /heinzahlen [Betrag]");
  1013. }
  1014. else
  1015. {
  1016. new geld = GetPlayerMoney(playerid);
  1017. if(geld >= betrag)
  1018. {
  1019. for(new i = 0; MAX_HAUS >= i; i++)
  1020. {
  1021. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  1022. {
  1023. if(haus[i][aktiv] == 1)
  1024. {
  1025. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  1026. {
  1027. haus[i][kasse] = haus[i][kasse] + betrag;
  1028. new string[128];
  1029. format(string,sizeof(string),"Du hast %i$ in dein Haus gelegt. (Neuer Stand: %i$)",betrag,haus[i][kasse]);
  1030. SendClientMessage(playerid,COLOR_GREEN,string);
  1031. return 1;
  1032. }
  1033. else
  1034. {
  1035. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer dieses Hauses!");
  1036. }
  1037. }
  1038. }
  1039. }
  1040. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  1041. return 1;
  1042. }
  1043. else
  1044. {
  1045. return SendClientMessage(playerid,COLOR_RED,"Du hast nicht soviel Geld!");
  1046. }
  1047. }
  1048. }
  1049.  
  1050. dcmd_hkickmieter(playerid, params[])
  1051. {
  1052. new mid;
  1053. if(sscanf(params, "i", mid))
  1054. {
  1055. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /hkickmieter [Mieter ID]");
  1056. }
  1057. else
  1058. {
  1059. for(new i = 0; MAX_HAUS >= i; i++)
  1060. {
  1061. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  1062. {
  1063. if(haus[i][aktiv] == 1)
  1064. {
  1065. new hausid[128];
  1066. format(hausid,sizeof(hausid),"/Haus/Haus%i.cfg",haus[i][id]);
  1067. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  1068. for(new x = 0; maxmieter > x; x++)
  1069. {
  1070. new mietername[128];
  1071. format(mietername,sizeof(mietername),"Mieter%i",x);
  1072. if(x == mid)
  1073. {
  1074. new string[128];
  1075. format(string,sizeof(string),"%s mietet dein Haus nun nicht mehr.",dini_Get(hausid,mietername));
  1076. SendClientMessage(playerid,COLOR_GREEN,string);
  1077. dini_Set(hausid,mietername,"Niemand");
  1078. return 1;
  1079. }
  1080. }
  1081. new string[128];
  1082. format(string,sizeof(string),"Die Mieter ID %i existiert nicht!",mid);
  1083. SendClientMessage(playerid,COLOR_RED,string);
  1084. return 1;
  1085. }
  1086. }
  1087. }
  1088. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  1089. return 1;
  1090. }
  1091. }
  1092.  
  1093. dcmd_hmiete(playerid, params[])
  1094. {
  1095. new mpreis;
  1096. if(sscanf(params, "i", mpreis))
  1097. {
  1098. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /hmiete [Mietpreis]");
  1099. }
  1100. else
  1101. {
  1102. for(new i = 0; MAX_HAUS >= i; i++)
  1103. {
  1104. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  1105. {
  1106. if(haus[i][aktiv] == 1)
  1107. {
  1108. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  1109. {
  1110. if(haus[i][mietbar] == 1)
  1111. {
  1112. if(haus[i][minmiete] != -1 && haus[i][maxmiete] != -1)
  1113. {
  1114. if(mpreis >= haus[i][minmiete] && mpreis <= haus[i][maxmiete])
  1115. {
  1116. haus[i][mietpreis] = mpreis;
  1117. new string[128];
  1118. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1119. SendClientMessage(playerid,COLOR_GREEN,string);
  1120. new string2[128];
  1121. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1122. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1123. return 1;
  1124. }
  1125. else
  1126. {
  1127. new string[128];
  1128. format(string,sizeof(string),"Der Mietpreis muss zwischen %i und %i liegen!",haus[i][minmiete],haus[i][maxmiete]);
  1129. SendClientMessage(playerid,COLOR_RED,string);
  1130. return 1;
  1131. }
  1132. }
  1133. else
  1134. {
  1135. if(haus[i][minmiete] == -1 && haus[i][maxmiete] != -1)
  1136. {
  1137. if(dini_Int(hauscfg,"Min_Miete") != -1)
  1138. {
  1139. if(mpreis >= dini_Int(hauscfg,"Min_Miete") && mpreis <= haus[i][maxmiete])
  1140. {
  1141. haus[i][mietpreis] = mpreis;
  1142. new string[128];
  1143. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1144. SendClientMessage(playerid,COLOR_GREEN,string);
  1145. new string2[128];
  1146. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1147. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1148. return 1;
  1149. }
  1150. else
  1151. {
  1152. new string[128];
  1153. format(string,sizeof(string),"Der Mietpreis muss zwischen %i und %i liegen!",dini_Int(hauscfg,"Min_Miete"),haus[i][maxmiete]);
  1154. SendClientMessage(playerid,COLOR_RED,string);
  1155. return 1;
  1156. }
  1157. }
  1158. else
  1159. {
  1160. if(mpreis >= 1 && mpreis <= haus[i][maxmiete])
  1161. {
  1162. haus[i][mietpreis] = mpreis;
  1163. new string[128];
  1164. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1165. SendClientMessage(playerid,COLOR_GREEN,string);
  1166. new string2[128];
  1167. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1168. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1169. return 1;
  1170. }
  1171. else
  1172. {
  1173. new string[128];
  1174. format(string,sizeof(string),"Der Mietpreis muss zwischen %i und %i liegen!",1,haus[i][maxmiete]);
  1175. SendClientMessage(playerid,COLOR_RED,string);
  1176. return 1;
  1177. }
  1178. }
  1179. }
  1180. if(haus[i][minmiete] != -1 && haus[i][maxmiete] == -1)
  1181. {
  1182. if(dini_Int(hauscfg,"Max_Miete") != -1)
  1183. {
  1184. if(mpreis >= haus[i][minmiete] && mpreis <= dini_Int(hauscfg,"Max_Miete"))
  1185. {
  1186. haus[i][mietpreis] = mpreis;
  1187. new string[128];
  1188. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1189. SendClientMessage(playerid,COLOR_GREEN,string);
  1190. new string2[128];
  1191. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1192. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1193. return 1;
  1194. }
  1195. else
  1196. {
  1197. new string[128];
  1198. format(string,sizeof(string),"Der Mietpreis muss zwischen %i und %i liegen!",haus[i][minmiete],dini_Int(hauscfg,"Max_Miete"));
  1199. SendClientMessage(playerid,COLOR_RED,string);
  1200. return 1;
  1201. }
  1202. }
  1203. else
  1204. {
  1205. if(mpreis >= 1)
  1206. {
  1207. haus[i][mietpreis] = mpreis;
  1208. new string[128];
  1209. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1210. SendClientMessage(playerid,COLOR_GREEN,string);
  1211. new string2[128];
  1212. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1213. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1214. return 1;
  1215. }
  1216. else
  1217. {
  1218. new string[128];
  1219. format(string,sizeof(string),"Der Mietpreis muss mindestens %i sein!",1);
  1220. SendClientMessage(playerid,COLOR_RED,string);
  1221. return 1;
  1222. }
  1223. }
  1224. }
  1225. if(haus[i][minmiete] == -1 && haus[i][maxmiete] == -1)
  1226. {
  1227. if(dini_Int(hauscfg,"Min_Miete") != -1 && dini_Int(hauscfg,"Max_Miete") != -1)
  1228. {
  1229. if(mpreis >= dini_Int(hauscfg,"Min_Miete") && mpreis <= dini_Int(hauscfg,"Max_Miete"))
  1230. {
  1231. haus[i][mietpreis] = mpreis;
  1232. new string[128];
  1233. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1234. SendClientMessage(playerid,COLOR_GREEN,string);
  1235. new string2[128];
  1236. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1237. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1238. return 1;
  1239. }
  1240. else
  1241. {
  1242. new string[128];
  1243. format(string,sizeof(string),"Der Mietpreis muss zwischen %i und %i sein!",dini_Int(hauscfg,"Min_Miete"),dini_Int(hauscfg,"Max_Miete"));
  1244. SendClientMessage(playerid,COLOR_RED,string);
  1245. return 1;
  1246. }
  1247. }
  1248. if(dini_Int(hauscfg,"Min_Miete") == -1 && dini_Int(hauscfg,"Max_Miete") != -1)
  1249. {
  1250. if(mpreis >= 1 && mpreis <= dini_Int(hauscfg,"Max_Miete"))
  1251. {
  1252. haus[i][mietpreis] = mpreis;
  1253. new string[128];
  1254. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1255. SendClientMessage(playerid,COLOR_GREEN,string);
  1256. new string2[128];
  1257. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1258. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1259. return 1;
  1260. }
  1261. else
  1262. {
  1263. new string[128];
  1264. format(string,sizeof(string),"Der Mietpreis muss zwischen %i und %i sein!",1,dini_Int(hauscfg,"Max_Miete"));
  1265. SendClientMessage(playerid,COLOR_RED,string);
  1266. return 1;
  1267. }
  1268. }
  1269. if(dini_Int(hauscfg,"Min_Miete") != -1 && dini_Int(hauscfg,"Max_Miete") == -1)
  1270. {
  1271. if(mpreis >= dini_Int(hauscfg,"Min_Miete"))
  1272. {
  1273. haus[i][mietpreis] = mpreis;
  1274. new string[128];
  1275. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1276. SendClientMessage(playerid,COLOR_GREEN,string);
  1277. new string2[128];
  1278. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1279. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1280. return 1;
  1281. }
  1282. else
  1283. {
  1284. new string[128];
  1285. format(string,sizeof(string),"Der Mietpreis muss mindestens %i sein!",dini_Int(hauscfg,"Min_Miete"));
  1286. SendClientMessage(playerid,COLOR_RED,string);
  1287. return 1;
  1288. }
  1289. }
  1290. if(dini_Int(hauscfg,"Min_Miete") == -1 && dini_Int(hauscfg,"Max_Miete") == -1)
  1291. {
  1292. if(mpreis >= 1)
  1293. {
  1294. haus[i][mietpreis] = mpreis;
  1295. new string[128];
  1296. format(string,sizeof(string),"Du hast den Mietpreis für dein Haus geändert. (Neuer Mietpreis: %i)",mpreis);
  1297. SendClientMessage(playerid,COLOR_GREEN,string);
  1298. new string2[128];
  1299. format(string2,sizeof(string2),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[i][besitzer],haus[i][id],haus[i][interior],haus[i][mietpreis]);
  1300. Update3DTextLabelText(haus[i][dtext],COLOR_BLUE,string2);
  1301. return 1;
  1302. }
  1303. else
  1304. {
  1305. new string[128];
  1306. format(string,sizeof(string),"Der Mietpreis muss mindestens %i sein!",1);
  1307. SendClientMessage(playerid,COLOR_RED,string);
  1308. return 1;
  1309. }
  1310. }
  1311. }
  1312. return 1;
  1313. }
  1314. }
  1315. else
  1316. {
  1317. return SendClientMessage(playerid,COLOR_RED,"Du musst dein Haus erst mietbar machen!");
  1318. }
  1319. }
  1320. else
  1321. {
  1322. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer dieses Hauses!");
  1323. }
  1324. }
  1325. }
  1326. }
  1327. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  1328. return 1;
  1329. }
  1330. }
  1331.  
  1332. dcmd_hinterior(playerid, params[])
  1333. {
  1334. if(dini_Int(hauscfg,"Interiorkauf") == 1)
  1335. {
  1336. new iid, intdatei[128];
  1337. if(sscanf(params, "i", iid))
  1338. {
  1339. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /hinterior [Interior ID]");
  1340. }
  1341. else
  1342. {
  1343. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",iid);
  1344. if(dini_Exists(intdatei))
  1345. {
  1346. for(new i = 0; MAX_HAUS >= i; i++)
  1347. {
  1348. if(IsPlayerInRangeOfPoint(playerid,1,haus[i][posx],haus[i][posy],haus[i][posz]))
  1349. {
  1350. if(haus[i][aktiv] == 1)
  1351. {
  1352. if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
  1353. {
  1354. new intpreis = dini_Int(intdatei,"Preis");
  1355. new string[128];
  1356. format(string,sizeof(string),"Möchtest du wirklich das Interior %i für %i kaufen?",iid,intpreis);
  1357. editid[playerid] = haus[i][id];
  1358. interiorkauf[playerid] = iid;
  1359. interiorkaufpreis[playerid] = dini_Int(intdatei,"Preis");
  1360. ShowPlayerDialog(playerid,DIALOG_HINTERIOR,DIALOG_STYLE_MSGBOX,"Interior kaufen: (Bestätigung)",string,"Ja","Nein");
  1361. return 1;
  1362. }
  1363. else
  1364. {
  1365. return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Besitzer des Hauses!");
  1366. }
  1367. }
  1368. }
  1369. }
  1370. SendClientMessage(playerid,COLOR_RED,"In deiner Nähe befindet sich kein Haus!");
  1371. return 1;
  1372. }
  1373. else
  1374. {
  1375. new string[128];
  1376. format(string,sizeof(string),"Ein Interior mit der ID %i existiert nicht!",iid);
  1377. SendClientMessage(playerid,COLOR_RED,string);
  1378. return 1;
  1379. }
  1380. }
  1381. }
  1382. else
  1383. {
  1384. return SendClientMessage(playerid,COLOR_RED,"Der Server verbietet es Interiors zu kaufen!");
  1385. }
  1386. }
  1387.  
  1388. dcmd_sinterior(playerid, params[])
  1389. {
  1390. new iid, intdatei[128];
  1391. if(sscanf(params, "i", iid))
  1392. {
  1393. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /sinterior [Interior ID]");
  1394. }
  1395. else
  1396. {
  1397. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",iid);
  1398. if(dini_Exists(intdatei))
  1399. {
  1400. VWorld[playerid] = MAX_HAUS + playerid;
  1401. GetPlayerPos(playerid,interiorx[playerid],interiory[playerid],interiorz[playerid]);
  1402. SetPlayerPos(playerid,dini_Int(intdatei,"SpawnX"),dini_Int(intdatei,"SpawnY"),dini_Int(intdatei,"SpawnZ"));
  1403. SetPlayerInterior(playerid,iid);
  1404. SetPlayerVirtualWorld(playerid,VWorld[playerid]);
  1405. new string[128];
  1406. format(string,sizeof(string),"Du hast Interior %i betreten. ('/linterior' um es zu verlassen)",iid);
  1407. SendClientMessage(playerid,COLOR_GREEN,string);
  1408. return 1;
  1409. }
  1410. else
  1411. {
  1412. new string[128];
  1413. format(string,sizeof(string),"Ein Interior mit der ID %i existiert nicht!",iid);
  1414. SendClientMessage(playerid,COLOR_RED,string);
  1415. return 1;
  1416. }
  1417. }
  1418. }
  1419.  
  1420. dcmd_delinterior(playerid, params[])
  1421. {
  1422. if(IsPlayerAdmin(playerid) == 1)
  1423. {
  1424. new iid, intdatei[128];
  1425. if(sscanf(params, "i", iid))
  1426. {
  1427. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /delinterior [Interior ID]");
  1428. }
  1429. else
  1430. {
  1431. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",iid);
  1432. if(dini_Exists(intdatei))
  1433. {
  1434. dini_Remove(intdatei);
  1435. new string[128];
  1436. format(string,sizeof(string),"Das Interior %i wurde erfolgreich gelöscht!",iid);
  1437. SendClientMessage(playerid,COLOR_GREEN,string);
  1438. return 1;
  1439. }
  1440. else
  1441. {
  1442. new string[128];
  1443. format(string,sizeof(string),"Ein Interior mit der ID %i existiert nicht!",iid);
  1444. SendClientMessage(playerid,COLOR_RED,string);
  1445. return 1;
  1446. }
  1447. }
  1448. }
  1449. else
  1450. {
  1451. return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
  1452. }
  1453. }
  1454.  
  1455. dcmd_cinterior(playerid, params[])
  1456. {
  1457. if(IsPlayerAdmin(playerid) == 1)
  1458. {
  1459. new iid, intdatei[128], Float:ispawnx, Float:ispawny, Float:ispawnz, ipreis;
  1460. if(sscanf(params, "ifffi", iid, ispawnx, ispawny, ispawnz, ipreis))
  1461. {
  1462. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /cinterior [Interior ID] [Spawn x] [Spawn y] [Spawn z] [Interior Preis]");
  1463. }
  1464. else
  1465. {
  1466. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",iid);
  1467. if(!dini_Exists(intdatei))
  1468. {
  1469. dini_Create(intdatei);
  1470. dini_IntSet(intdatei,"Interior_ID",iid);
  1471. dini_FloatSet(intdatei,"SpawnX",ispawnx);
  1472. dini_FloatSet(intdatei,"SpawnY",ispawny);
  1473. dini_FloatSet(intdatei,"SpawnZ",ispawnz);
  1474. dini_IntSet(intdatei,"Preis",ipreis);
  1475. new string[128];
  1476. format(string,sizeof(string),"Das Interior %i wurde erfolgreich erstellt und kann nun verwendet werden!",iid);
  1477. SendClientMessage(playerid,COLOR_GREEN,string);
  1478. return 1;
  1479. }
  1480. else
  1481. {
  1482. new string[128];
  1483. format(string,sizeof(string),"Das Interior %i existiert bereits!",iid);
  1484. SendClientMessage(playerid,COLOR_RED,string);
  1485. return 1;
  1486. }
  1487. }
  1488. }
  1489. else
  1490. {
  1491. return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
  1492. }
  1493. }
  1494.  
  1495. dcmd_chaus(playerid, params[])
  1496. {
  1497. if(IsPlayerAdmin(playerid) == 1)
  1498. {
  1499. new apreis, mlevel , ainterior, amietemin, amietemax;
  1500. if(sscanf(params, "iiiii", apreis, mlevel, ainterior, amietemin, amietemax))
  1501. {
  1502. return SendClientMessage(playerid,COLOR_BLUE,"Verwendung: /chaus [Kaufpreis] [Mindestlevel] [Interior ID] [minimale Miete] [maximale Miete]");
  1503. }
  1504. else
  1505. {
  1506. new hausanzahl;
  1507. hausanzahl = dini_Int(hauscfg,"Anzahl Häuser");
  1508. hausanzahl ++;
  1509. new neuhaus[128];
  1510. format(neuhaus,sizeof(neuhaus),"/Haus/Haus%i.cfg",hausanzahl);
  1511. if(dini_Exists(neuhaus))
  1512. {
  1513. return SendClientMessage(playerid,COLOR_RED,"Das Haus konnte nicht erstellt werden. Das System ist fehlerhaft und muss erneut installiert werden!");
  1514. }
  1515. else
  1516. {
  1517. new intdatei[128];
  1518. format(intdatei,sizeof(intdatei),"/Interiors/Interior%i.txt",ainterior);
  1519. if(dini_Exists(intdatei))
  1520. {
  1521. //Haus speichern
  1522. new Float:x,Float:y,Float:z;
  1523. GetPlayerPos(playerid,x,y,z);
  1524. dini_Create(neuhaus);
  1525. dini_IntSet(neuhaus,"ID",hausanzahl);
  1526. dini_IntSet(neuhaus,"Preis",apreis);
  1527. dini_IntSet(neuhaus,"Level",mlevel);
  1528. dini_Set(neuhaus,"Besitzer","Niemand");
  1529. dini_FloatSet(neuhaus,"PosX",x);
  1530. dini_FloatSet(neuhaus,"PosY",y);
  1531. dini_FloatSet(neuhaus,"PosZ",z);
  1532. dini_IntSet(neuhaus,"Interior",ainterior);
  1533. dini_IntSet(neuhaus,"Old_Interior",ainterior);
  1534. dini_IntSet(neuhaus,"VirtualWorld",hausanzahl);
  1535. dini_IntSet(neuhaus,"Mietbar",0);
  1536. dini_IntSet(neuhaus,"Min_Miete",amietemin);
  1537. dini_IntSet(neuhaus,"Max_Miete",amietemax);
  1538. dini_IntSet(neuhaus,"Aktiv",1);
  1539. dini_IntSet(neuhaus,"Kasse",0);
  1540. dini_IntSet(neuhaus,"Healpoint",0);
  1541. dini_IntSet(neuhaus,"Armourpoint",0);
  1542. dini_IntSet(neuhaus,"Offen",0);
  1543. if(amietemin != -1)
  1544. {
  1545. dini_IntSet(neuhaus,"Mietpreis",amietemin);
  1546. }
  1547. if(amietemin == -1)
  1548. {
  1549. dini_IntSet(neuhaus,"Mietpreis",0);
  1550. }
  1551. //Haus laden
  1552. haus[hausanzahl][id] = dini_Int(neuhaus,"ID");
  1553. haus[hausanzahl][aktiv] = dini_Int(neuhaus,"Aktiv");
  1554. haus[hausanzahl][level] = dini_Int(neuhaus,"Level");
  1555. haus[hausanzahl][posx] = dini_Float(neuhaus,"PosX");
  1556. haus[hausanzahl][posy] = dini_Float(neuhaus,"PosY");
  1557. haus[hausanzahl][posz] = dini_Float(neuhaus,"PosZ");
  1558. haus[hausanzahl][interior] = dini_Int(neuhaus,"Interior");
  1559. haus[hausanzahl][oldinterior] = haus[hausanzahl][interior];
  1560. haus[hausanzahl][vworld] = dini_Int(neuhaus,"VirtualWorld");
  1561. haus[hausanzahl][mietbar] = dini_Int(neuhaus,"Mietbar");
  1562. format(haus[hausanzahl][besitzer],128,"%s",dini_Get(neuhaus,"Besitzer"));
  1563. haus[hausanzahl][preis] = dini_Int(neuhaus,"Preis");
  1564. haus[hausanzahl][mietpreis] = dini_Int(neuhaus,"Mietpreis");
  1565. haus[hausanzahl][minmiete] = dini_Int(neuhaus,"Min_Miete");
  1566. haus[hausanzahl][maxmiete] = dini_Int(neuhaus,"Max_Miete");
  1567. haus[hausanzahl][kasse] = dini_Int(neuhaus,"Kasse");
  1568. haus[hausanzahl][heal] = dini_Int(neuhaus,"Healpoint");
  1569. haus[hausanzahl][armour] = dini_Int(neuhaus,"Armourpoint");
  1570. haus[hausanzahl][offen] = dini_Int(neuhaus,"Offen");
  1571. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  1572. for(new d = 0; maxmieter > d; d++)
  1573. {
  1574. new mietername[128];
  1575. format(mietername,sizeof(mietername),"Mieter%i",d);
  1576. dini_Set(neuhaus,mietername,"Niemand");
  1577. }
  1578. haus[hausanzahl][pickup] = CreatePickup(1273,1,x,y,z,0);
  1579. new string[128];
  1580. format(string,sizeof(string),"Zum Verkauf\nID: %i\nPreis: %i\nminimale Miete: %i\nmaximale Miete: %i\nInterior ID: %i",hausanzahl,apreis,amietemin,amietemax,ainterior);
  1581. haus[hausanzahl][dtext] = Create3DTextLabel(string,COLOR_BLUE,x,y,z,10,0,0);
  1582. dini_IntSet(hauscfg,"Anzahl Häuser",hausanzahl);
  1583. return 1;
  1584. }
  1585. else
  1586. {
  1587. return SendClientMessage(playerid,COLOR_RED,"Das angegebene Interior existiert nicht!");
  1588. }
  1589. }
  1590. }
  1591. }
  1592. else
  1593. {
  1594. return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!");
  1595. }
  1596. }
  1597.  
  1598. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  1599. {
  1600. return 1;
  1601. }
  1602.  
  1603. public OnPlayerExitVehicle(playerid, vehicleid)
  1604. {
  1605. return 1;
  1606. }
  1607.  
  1608. public OnPlayerStateChange(playerid, newstate, oldstate)
  1609. {
  1610. return 1;
  1611. }
  1612.  
  1613. public OnPlayerEnterCheckpoint(playerid)
  1614. {
  1615. return 1;
  1616. }
  1617.  
  1618. public OnPlayerLeaveCheckpoint(playerid)
  1619. {
  1620. return 1;
  1621. }
  1622.  
  1623. public OnPlayerEnterRaceCheckpoint(playerid)
  1624. {
  1625. return 1;
  1626. }
  1627.  
  1628. public OnPlayerLeaveRaceCheckpoint(playerid)
  1629. {
  1630. return 1;
  1631. }
  1632.  
  1633. public OnRconCommand(cmd[])
  1634. {
  1635. return 1;
  1636. }
  1637.  
  1638. public OnPlayerRequestSpawn(playerid)
  1639. {
  1640. return 1;
  1641. }
  1642.  
  1643. public OnObjectMoved(objectid)
  1644. {
  1645. return 1;
  1646. }
  1647.  
  1648. public OnPlayerObjectMoved(playerid, objectid)
  1649. {
  1650. return 1;
  1651. }
  1652.  
  1653. public OnPlayerPickUpPickup(playerid, pickupid)
  1654. {
  1655. return 1;
  1656. }
  1657.  
  1658. public OnVehicleMod(playerid, vehicleid, componentid)
  1659. {
  1660. return 1;
  1661. }
  1662.  
  1663. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1664. {
  1665. return 1;
  1666. }
  1667.  
  1668. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  1669. {
  1670. return 1;
  1671. }
  1672.  
  1673. public OnPlayerSelectedMenuRow(playerid, row)
  1674. {
  1675. return 1;
  1676. }
  1677.  
  1678. public OnPlayerExitedMenu(playerid)
  1679. {
  1680. return 1;
  1681. }
  1682.  
  1683. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  1684. {
  1685. return 1;
  1686. }
  1687.  
  1688. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  1689. {
  1690. return 1;
  1691. }
  1692.  
  1693. public OnRconLoginAttempt(ip[], password[], success)
  1694. {
  1695. return 1;
  1696. }
  1697.  
  1698. public OnPlayerUpdate(playerid)
  1699. {
  1700. return 1;
  1701. }
  1702.  
  1703. public OnPlayerStreamIn(playerid, forplayerid)
  1704. {
  1705. return 1;
  1706. }
  1707.  
  1708. public OnPlayerStreamOut(playerid, forplayerid)
  1709. {
  1710. return 1;
  1711. }
  1712.  
  1713. public OnVehicleStreamIn(vehicleid, forplayerid)
  1714. {
  1715. return 1;
  1716. }
  1717.  
  1718. public OnVehicleStreamOut(vehicleid, forplayerid)
  1719. {
  1720. return 1;
  1721. }
  1722.  
  1723. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1724. {
  1725. if(dialogid == DIALOG_HUPGRADE)
  1726. {
  1727. if(response == 1)
  1728. {
  1729. new geld = GetPlayerMoney(playerid);
  1730. switch(listitem)
  1731. {
  1732. case 0:
  1733. {
  1734. if(haus[editid[playerid]][heal] == 0)
  1735. {
  1736. if(geld >= dini_Int(hauscfg,"Healpoint_Preis"))
  1737. {
  1738. haus[editid[playerid]][heal] = 1;
  1739. SendClientMessage(playerid,COLOR_GREEN,"Healpoint erfolgreich gekauft! (Im Haus: /hheal)");
  1740. GivePlayerMoney(playerid, -dini_Int(hauscfg,"Healpoint_Preis"));
  1741. return 1;
  1742. }
  1743. else
  1744. {
  1745. return SendClientMessage(playerid,COLOR_RED,"Du hast nicht genug Geld!");
  1746. }
  1747. }
  1748. }
  1749. case 1:
  1750. {
  1751. if(haus[editid[playerid]][armour] == 0)
  1752. {
  1753. if(geld >= dini_Int(hauscfg,"Armourpoint_Preis"))
  1754. {
  1755. haus[editid[playerid]][armour] = 1;
  1756. SendClientMessage(playerid,COLOR_GREEN,"Armourpoint erfolgreich gekauft! (Im Haus: /harmour)");
  1757. GivePlayerMoney(playerid, -dini_Int(hauscfg,"Armourpoint_Preis"));
  1758. return 1;
  1759. }
  1760. else
  1761. {
  1762. return SendClientMessage(playerid,COLOR_RED,"Du hast nicht genug Geld!");
  1763. }
  1764. }
  1765. }
  1766. }
  1767. }
  1768. if(response == 0)
  1769. {
  1770. return 1;
  1771. }
  1772. return 1;
  1773. }
  1774.  
  1775. if(dialogid == DIALOG_HCSPAWN)
  1776. {
  1777. if(response == 1)
  1778. {
  1779. switch(listitem)
  1780. {
  1781. case 0:
  1782. {
  1783. playerD[playerid][spawn] = 0;
  1784. SendClientMessage(playerid,COLOR_GREEN,"Du spawnst nun immer am Noobspawn.");
  1785. }
  1786. case 1:
  1787. {
  1788. playerD[playerid][spawn] = 1;
  1789. SendClientMessage(playerid,COLOR_GREEN,"Wenn du Besitzer oder Mieter eines Hauses bist spawnst du nun immer in diesem Haus.");
  1790. }
  1791. }
  1792. return 1;
  1793. }
  1794. if(response == 0)
  1795. {
  1796. return 1;
  1797. }
  1798. }
  1799.  
  1800. if(dialogid == DIALOG_HINFO)
  1801. {
  1802. if(response == 1)
  1803. {
  1804. return 1;
  1805. }
  1806. if(response == 0)
  1807. {
  1808. return 1;
  1809. }
  1810. return 1;
  1811. }
  1812.  
  1813. if(dialogid == DIALOG_HINTERIOR)
  1814. {
  1815. if(response == 1)
  1816. {
  1817. new geld = GetPlayerMoney(playerid);
  1818. new hausid = editid[playerid];
  1819. new string[128];
  1820. if(geld >= interiorkaufpreis[playerid])
  1821. {
  1822. new string2[128];
  1823. format(string2,sizeof(string2),"Du hast für dein Haus das Interior %i gekauft.",interiorkauf[playerid]);
  1824. SendClientMessage(playerid,COLOR_GREEN,string2);
  1825. haus[hausid][interior] = interiorkauf[playerid];
  1826. format(string,sizeof(string),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[hausid][besitzer],haus[hausid][id],haus[hausid][interior],haus[hausid][mietpreis]);
  1827. Update3DTextLabelText(haus[hausid][dtext],COLOR_BLUE,string);
  1828. GivePlayerMoney(playerid,- interiorkaufpreis[playerid]);
  1829. return 1;
  1830. }
  1831. else
  1832. {
  1833. return SendClientMessage(playerid,COLOR_RED,"Du hast nicht genug Geld um das Interior zu kaufen!");
  1834. }
  1835. }
  1836. if(response == 0)
  1837. {
  1838. return 1;
  1839. }
  1840. return 1;
  1841. }
  1842.  
  1843. if(dialogid == DIALOG_HVERKAUFEN)
  1844. {
  1845. new hausid = editid[playerid];
  1846. new hausdatei[128];
  1847. format(hausdatei,sizeof(hausdatei),"/Haus/Haus%i.cfg",hausid);
  1848. new vpreis = haus[hausid][preis] / 2;
  1849. if(response == 1)
  1850. {
  1851. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  1852. for(new x = 0; maxmieter > x; x++)
  1853. {
  1854. new mietername[128];
  1855. format(mietername,sizeof(mietername),"Mieter%i",x);
  1856. dini_Set(hausdatei,mietername,"Niemand");
  1857. }
  1858. haus[hausid][interior] = haus[hausid][oldinterior];
  1859. new string[128];
  1860. format(string,sizeof(string),"Du hast dein Haus für %i verkauft.",vpreis);
  1861. SendClientMessage(playerid,COLOR_GREEN,string);
  1862. GivePlayerMoney(playerid,vpreis);
  1863. format(haus[hausid][besitzer],128,"%s","Niemand");
  1864. new string2[128];
  1865. format(string2,sizeof(string2),"Zum Verkauf\nID: %i\nPreis: %i\nminimale Miete: %i\nmaximale Miete: %i\nInterior ID: %i",haus[hausid][id],haus[hausid][preis],haus[hausid][minmiete],haus[hausid][maxmiete],haus[hausid][interior]);
  1866. Update3DTextLabelText(haus[hausid][dtext],COLOR_BLUE,string2);
  1867. DestroyPickup(haus[hausid][pickup]);
  1868. haus[hausid][pickup] = CreatePickup(1273,1,haus[hausid][posx],haus[hausid][posy],haus[hausid][posz],0);
  1869. return 1;
  1870. }
  1871. if(response == 0)
  1872. {
  1873. return 1;
  1874. }
  1875. return 1;
  1876. }
  1877.  
  1878. if(dialogid == DIALOG_HMIETBAR)
  1879. {
  1880. new hausid = editid[playerid];
  1881. if(response == 1)
  1882. {
  1883. haus[hausid][mietbar] = 1;
  1884. if(haus[hausid][minmiete] != -1)
  1885. {
  1886. haus[hausid][mietpreis] = haus[hausid][minmiete];
  1887. }
  1888. if(haus[hausid][minmiete] == -1)
  1889. {
  1890. if(dini_Int(hauscfg,"Min_Miete") != -1)
  1891. {
  1892. haus[hausid][mietpreis] = dini_Int(hauscfg,"Min_Miete");
  1893. }
  1894. if(dini_Int(hauscfg,"Min_Miete") == -1)
  1895. {
  1896. haus[hausid][mietpreis] = 100;
  1897. }
  1898. }
  1899. new string[128];
  1900. format(string,sizeof(string),"Besitzer: %s\nID: %i\nInterior ID: %i\nMietpreis: %i",haus[hausid][besitzer],haus[hausid][id],haus[hausid][interior],haus[hausid][mietpreis]);
  1901. Update3DTextLabelText(haus[hausid][dtext],COLOR_BLUE,string);
  1902. new string2[128];
  1903. format(string2,sizeof(string2),"Dein Haus ist jetzt mietbar. (Aktueller Mietpreis: %i)",haus[hausid][mietpreis]);
  1904. SendClientMessage(playerid,COLOR_GREEN,string2);
  1905. return 1;
  1906. }
  1907. if(response == 0)
  1908. {
  1909. haus[hausid][mietbar] = 0;
  1910. new string[128];
  1911. format(string,sizeof(string),"Besitzer: %s\nID: %i",haus[hausid][besitzer],haus[hausid][id]);
  1912. Update3DTextLabelText(haus[hausid][dtext],COLOR_BLUE,string);
  1913. SendClientMessage(playerid,COLOR_BLUE,"Dein Haus ist jetzt nicht mehr mietbar");
  1914. return 1;
  1915. }
  1916. return 1;
  1917. }
  1918.  
  1919. if(dialogid == DIALOG_HKAUFEN)
  1920. {
  1921. if(response == 1)
  1922. {
  1923. new score = GetPlayerScore(playerid);
  1924. if(score >= haus[editid[playerid]][level])
  1925. {
  1926. new geld = GetPlayerMoney(playerid);
  1927. new hausid = editid[playerid];
  1928. editid[playerid] = 0;
  1929. if(geld >= haus[hausid][preis])
  1930. {
  1931. format(haus[hausid][besitzer],128,"%s",getPlayerName(playerid));
  1932. GivePlayerMoney(playerid,- haus[hausid][preis]);
  1933. new string[128];
  1934. format(string,sizeof(string),"Besitzer: %s\nID: %i",haus[hausid][besitzer],haus[hausid][id]);
  1935. Update3DTextLabelText(haus[hausid][dtext],COLOR_BLUE,string);
  1936. DestroyPickup(haus[hausid][pickup]);
  1937. haus[hausid][pickup] = CreatePickup(1272,1,haus[hausid][posx],haus[hausid][posy],haus[hausid][posz],0);
  1938. new string2[128];
  1939. format(string2,sizeof(string2),"Du haus Haus %i gekauft.",haus[hausid][id]);
  1940. SendClientMessage(playerid,COLOR_GREEN,string2);
  1941. new string3[128];
  1942. format(string3,sizeof(string3),"%s hat Haus %i für %i gekauft.",getPlayerName(playerid),haus[hausid][id],haus[hausid][preis]);
  1943. SendClientMessageToAll(COLOR_YELLOW,string3);
  1944. return 1;
  1945. }
  1946. else
  1947. {
  1948. new string[128];
  1949. new differenz;
  1950. differenz = haus[hausid][preis] - geld;
  1951. format(string,sizeof(string),"Du hast nicht genug Geld. Dir fehlen %i!",differenz);
  1952. SendClientMessage(playerid,COLOR_RED,string);
  1953. return 1;
  1954. }
  1955. }
  1956. else
  1957. {
  1958. return SendClientMessage(playerid,COLOR_RED,"Du hast nicht das benötigte Level!");
  1959. }
  1960. }
  1961. if(response == 0)
  1962. {
  1963. return 1;
  1964. }
  1965. return 1;
  1966. }
  1967.  
  1968. if(dialogid == DIALOG_DELHAUS)
  1969. {
  1970. if(response == 1)
  1971. {
  1972. haus[editid[playerid]][aktiv] = 0;
  1973. new ehausid, hausdatei[128];
  1974. ehausid = editid[playerid];
  1975. format(hausdatei,sizeof(hausdatei),"/Haus/Haus%i.cfg",ehausid);
  1976. dini_IntSet(hausdatei,"Aktiv",0);
  1977. new string[128];
  1978. format(string,sizeof(string),"Haus %i wurde erfolgreich gelöscht!",ehausid);
  1979. SendClientMessage(playerid,COLOR_GREEN,string);
  1980. editid[playerid] = 0;
  1981. Delete3DTextLabel(haus[ehausid][dtext]);
  1982. DestroyPickup(haus[ehausid][pickup]);
  1983. return 1;
  1984. }
  1985. if(response == 0)
  1986. {
  1987. return 1;
  1988. }
  1989. return 1;
  1990. }
  1991. return 1;
  1992. }
  1993.  
  1994. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  1995. {
  1996. return 1;
  1997. }
  1998.  
  1999. public SaveDataT()
  2000. {
  2001. dini_IntSet(hauscfg,"PayDay",paydayzeit);
  2002. saveHausDaten();
  2003. saveSpielerDaten();
  2004. for(new i = 0; MAX_PLAYERS > i; i++)
  2005. {
  2006. if(IsPlayerAdmin(i))
  2007. {
  2008. SendClientMessage(i,COLOR_GREEN,"***** Daten des dynamischen Haussystems by DrMurphy erfolgreich gespeichert! *****");
  2009. }
  2010. }
  2011. return 1;
  2012. }
  2013.  
  2014. public PayDayT()
  2015. {
  2016. paydayzeit ++;
  2017. if(paydayzeit == 60)
  2018. {
  2019. for(new i = 0; MAX_PLAYERS > i; i++)
  2020. {
  2021. for(new y = 0; MAX_HAUS >= y; y++)
  2022. {
  2023. new hausid[128];
  2024. format(hausid,sizeof(hausid),"/Haus/Haus%i",haus[y][id]);
  2025. new maxmieter = dini_Int(hauscfg,"Max_Mieter");
  2026. for(new x = 0; maxmieter > x; x++)
  2027. {
  2028. new mietername[128];
  2029. format(mietername,sizeof(mietername),"Mieter%i",x);
  2030. if(strcmp(dini_Get(hausid,mietername),getPlayerName(i),false) == 0)
  2031. {
  2032. new geld = GetPlayerMoney(i);
  2033. if(geld >= haus[y][mietpreis])
  2034. {
  2035. GivePlayerMoney(i,- haus[y][mietpreis]);
  2036. haus[y][kasse] = haus[y][kasse] + haus[y][mietpreis];
  2037. new string[128];
  2038. format(string,sizeof(string),"Du hast deine Miete in Höhe von %i bezahlt.",haus[y][mietpreis]);
  2039. SendClientMessage(i,COLOR_YELLOW,string);
  2040. }
  2041. else
  2042. {
  2043. dini_Set(hausid,mietername,"Niemand");
  2044. new string[128];
  2045. format(string,sizeof(string),"Du konntest deine Miete in Höhe von %i nicht bezahlen und wurdest rausgeschmissen!",haus[y][mietpreis]);
  2046. SendClientMessage(i,COLOR_RED,string);
  2047. }
  2048. }
  2049. }
  2050. }
  2051. }
  2052. }
  2053. }
  2054.  
  2055. stock saveSpielerDaten()
  2056. {
  2057. for(new i = 0; MAX_PLAYERS > i; i++)
  2058. {
  2059. new SDatei[128];
  2060. format(SDatei,sizeof(SDatei),"/HSpieler/%s.cfg",getPlayerName(i));
  2061. dini_IntSet(SDatei,"Anzahl_Häuser",playerD[i][ahaus]);
  2062. dini_IntSet(SDatei,"Spawn",playerD[i][spawn]);
  2063. }
  2064. return 1;
  2065. }
  2066.  
  2067. stock getPlayerName(playerid)
  2068. {
  2069. new name[MAX_PLAYER_NAME], string[128];
  2070. GetPlayerName(playerid, name, sizeof(name));
  2071. format(string, sizeof(string), "%s", name);
  2072. return name;
  2073. }
  2074.  
  2075. stock saveHausDaten()
  2076. {
  2077. for(new i = 0; MAX_HAUS >= i; i++)
  2078. {
  2079. new hausid[128];
  2080. format(hausid,sizeof(hausid),"/Haus/Haus%i.cfg",i);
  2081. dini_Set(hausid,"Besitzer",haus[i][besitzer]);
  2082. dini_IntSet(hausid,"Mietbar",haus[i][mietbar]);
  2083. dini_IntSet(hausid,"Interior",haus[i][interior]);
  2084. dini_IntSet(hausid,"Mietpreis",haus[i][mietpreis]);
  2085. dini_IntSet(hausid,"Kasse",haus[i][kasse]);
  2086. dini_IntSet(hausid,"Offen",haus[i][offen]);
  2087. dini_IntSet(hausid,"Healpoint",haus[i][heal]);
  2088. dini_IntSet(hausid,"Armourpoint",haus[i][armour]);
  2089. }
  2090. }
Advertisement
Add Comment
Please, Sign In to add comment