Advertisement
Guest User

Untitled

a guest
Apr 30th, 2012
4,534
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.37 KB | None | 0 0
  1. /*
  2.  
  3. (c) für NiLsx3 aka. Easy
  4. Haussystem 2012
  5.  
  6. */
  7. #include a_samp
  8. #include ocmd
  9.  
  10. #define MAX_HAUSER 80
  11. #define STARTMAPICON 19
  12. #define INTERIOR_TYPWAHL 500
  13. #define INTERIOR_WAHL 501
  14. #define INTERIOR_WAHL_BEDSIT 502
  15. #define INTERIOR_WAHL_APPARTMENT 503
  16. #define INTERIOR_WAHL_BUNGALOW 504
  17. #define INTERIOR_WAHL_LUXUS 505
  18. #define INTERIOR_WAHL_HAUS 506
  19. #define HAUS_PREIS 507
  20.  
  21. enum h
  22. {
  23. Besitzer[MAX_PLAYER_NAME],
  24. bool:Gekauft,
  25. bool:Abgeschlossen,
  26. Float:Pos[6],
  27. Int,
  28. VirtualWorld,
  29. Preis,
  30. PickupID,
  31. Text3D:Label
  32. };
  33. new Haus[MAX_HAUSER][h];
  34. enum ii
  35. {
  36. Float:posx,
  37. Float:posy,
  38. Float:posz,
  39. _interior,
  40. };
  41. new IntInfo[][ii] =
  42. {
  43. { 1.200000,-3.400000,999.400024,2 }, // Trailer
  44. { 244.500000,305.000000,999.099975,1 },// 'Bedsit'
  45. { 267.100006,305.000000,999.099975,2 },// 'Bedsit'
  46. { 301.299987,306.299987,1003.500000,4 },// 'Bedsit'
  47. { 344.299987,305.200012,999.099975,6 },// 'Bedsit'
  48. { 446.100006,507.899993,1001.400024,12 },// '2 Zimmer Apartment'
  49. { -42.400001,1408.199951,1084.400024,8 },// '3 Zimmer Bungalow'
  50. { 2464.100097,-1698.599975,1013.500000,2 },// '3 Zimmer Bungalow'
  51. { 386.100006,1471.800048,1080.099975,15 },// '3 Zimmer Apartment'
  52. { 221.600006,1143.599975,1082.599975,4 },// '3 Zimmer Apartment'
  53. { 260.600006,1238.800048,1084.199951,9 },// '4 Zimmer Apartment'
  54. { 261.000000,1286.000000,1080.199951,4 },// '4 Zimmer Haus'
  55. { 745.299987,1437.699951,1102.699951,6 },// '4 Zimmer Apartment'
  56. { 376.299987,1417.199951,1081.300048,15 },// '4 Zimmer Apartment'
  57. { 27.100000,1341.099975,1084.300048,10 },// '4 Zimmer Haus'
  58. { 2526.399902,-1679.000000,1015.400024,1 },// '4 Zimmer Bedsit'
  59. { 222.800003,1288.699951,1082.099975,1 },// '4 Zimmer Apartment'
  60. { 23.000000,1405.599975,1084.400024,5 },// '4 Zimmer Haus'
  61. { 235.300003,1189.199951,1080.199951,3 },// '4 Zimmer Haus'
  62. { 447.000000,1400.300048,1084.300048,2 },// '5 Zimmer Apartment'
  63. { 234.199996,1064.900024,1084.199951,6 },// '5 Zimmer Haus'
  64. { 327.899993,1478.300048,1084.400024,15 },// '5 Zimmer Slum'
  65. { 295.399993,1473.199951,1080.199951,15 },// '5 Zimmer Apartment'
  66. { 140.399993,1370.300048,1083.800048,5 },// '6 Zimmer Haus'
  67. { 489.700012,1402.500000,1080.199951,2 },// '6 Zimmer Luxus'
  68. { 83.300003,1324.699951,1083.800048,9 },// '6 Zimmer Haus'
  69. { 231.399993,1114.099975,1080.900024,5 },// '7 Zimmer Luxus'
  70. { 225.600006,1023.500000,1084.000000,7 },// '8 Zimmer Luxus'
  71. { -285.899993,1470.800048,1084.300048,15 },// '4 Zimmer Luxus'
  72. { -262.700012,1456.599975,1084.300048,4 },// '3 Zimmer Luxus'
  73. { -68.800003,1354.699951,1080.199951,6 },// '2 Zimmer Luxus'
  74. { 2254.300048,-1140.000000,1050.599975,9 },// '2 Zimmer Luxus'
  75. { 2261.300048,-1135.900024,1050.599975,10 },// '3 Zimmer Luxus'
  76. { 2324.399902,-1147.500000,1050.699951,12 }// '8 Zimmer Luxus'
  77. };
  78. public OnFilterScriptInit()
  79. {
  80. for(new i;i!=MAX_HAUSER;i++) LoadHaus(i);
  81. return true;
  82. }
  83. public OnFilterScriptExit()
  84. {
  85. for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
  86. return true;
  87. }
  88. public OnGameModeExit()
  89. {
  90. for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
  91. return true;
  92. }
  93. public OnPlayerConnect(playerid)
  94. {
  95. new pfad[20];
  96. for(new i;i!=MAX_HAUSER;i++)
  97. {
  98. format(pfad,20,"Häuser/Haus %d.ini",i);
  99. if(fexist(pfad)) SetPlayerMapIcon(playerid,STARTMAPICON+i,Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2],(Haus[i][Gekauft])?32:31,0xFFFFFFFF);
  100. }
  101. return true;
  102. }
  103. stock LoadHaus(hausid)
  104. {
  105. new inhalt[35],File:f;
  106. format(inhalt,20,"Häuser/Haus %d.ini",hausid);
  107. if(!fexist(inhalt)) return false;
  108. f=fopen(inhalt,io_read);
  109. while(fread(f,inhalt))
  110. {
  111. StripNL(inhalt);
  112. if(strfind(inhalt,"Besitzer: ")!=-1) strdel(inhalt,0,10), format(Haus[hausid][Besitzer],MAX_PLAYER_NAME,inhalt);
  113. else if(strfind(inhalt,"Gekauft: ")!=-1) strdel(inhalt,0,9), Haus[hausid][Gekauft]=(strval(inhalt))?true:false;
  114. else if(strfind(inhalt,"Abgeschlossen: ")!=-1) strdel(inhalt,0,15), Haus[hausid][Abgeschlossen]=(strval(inhalt))?true:false;
  115. else if(strfind(inhalt,"AußenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][0]=floatstr(inhalt);
  116. else if(strfind(inhalt,"AußenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][1]=floatstr(inhalt);
  117. else if(strfind(inhalt,"AußenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][2]=floatstr(inhalt);
  118. else if(strfind(inhalt,"InnenPosX: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][3]=floatstr(inhalt);
  119. else if(strfind(inhalt,"InnenPosY: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][4]=floatstr(inhalt);
  120. else if(strfind(inhalt,"InnenPosZ: ")!=-1) strdel(inhalt,0,11), Haus[hausid][Pos][5]=floatstr(inhalt);
  121. else if(strfind(inhalt,"Interior: ")!=-1) strdel(inhalt,0,10), Haus[hausid][Int]=strval(inhalt);
  122. else if(strfind(inhalt,"VirtualWorld: ")!=-1) strdel(inhalt,0,14), Haus[hausid][VirtualWorld]=strval(inhalt);
  123. else if(strfind(inhalt,"Preis: ")!=-1) strdel(inhalt,0,7), Haus[hausid][Preis]=strval(inhalt);
  124. }
  125. Haus[hausid][PickupID] = CreatePickup((Haus[hausid][Gekauft])?1239:1273,1,Haus[hausid][Pos][0],Haus[hausid][Pos][1],Haus[hausid][Pos][2]);
  126. fclose(f);
  127. return true;
  128. }
  129. stock SaveHaus(hausid)
  130. {
  131. if(!Haus[hausid][Int]) return false;
  132. new inhalt[35],File:f;
  133. format(inhalt,35,"Häuser/Haus %d.ini",hausid);
  134. f=fopen(inhalt,io_write);
  135. format(inhalt,35,"Besitzer: %s\r\n",Haus[hausid][Besitzer]),fwrite(f,inhalt);
  136. format(inhalt,35,"Gekauft: %d\r\n",Haus[hausid][Gekauft]),fwrite(f,inhalt);
  137. format(inhalt,35,"Abgeschlossen: %d\r\n",Haus[hausid][Abgeschlossen]),fwrite(f,inhalt);
  138. format(inhalt,35,"AußenPosX: %f\r\n",Haus[hausid][Pos][0]),fwrite(f,inhalt);
  139. format(inhalt,35,"AußenPosY: %f\r\n",Haus[hausid][Pos][1]),fwrite(f,inhalt);
  140. format(inhalt,35,"AußenPosZ: %f\r\n",Haus[hausid][Pos][2]),fwrite(f,inhalt);
  141. format(inhalt,35,"InnenPosX: %f\r\n",Haus[hausid][Pos][3]),fwrite(f,inhalt);
  142. format(inhalt,35,"InnenPosY: %f\r\n",Haus[hausid][Pos][4]),fwrite(f,inhalt);
  143. format(inhalt,35,"InnenPosZ: %f\r\n",Haus[hausid][Pos][5]),fwrite(f,inhalt);
  144. format(inhalt,35,"Interior: %d\r\n",Haus[hausid][Int]),fwrite(f,inhalt);
  145. format(inhalt,35,"VirtualWorld: %d\r\n",Haus[hausid][VirtualWorld]),fwrite(f,inhalt);
  146. format(inhalt,35,"Preis: %d\r\n",Haus[hausid][Preis]),fwrite(f,inhalt);
  147. fclose(f);
  148. return true;
  149. }
  150. stock CreateHaus(Owner[],Float:X,Float:Y,Float:Z,Float:iX,Float:iY,Float:iZ,Interior,p)
  151. {
  152. new ID=GetFreeHausID();
  153. if(ID==-1) print("Es sind bereits zuviele Häuser erstellt worden | Lösch zu erst eins");
  154. format(Haus[ID][Besitzer],MAX_PLAYER_NAME,Owner);
  155. Haus[ID][Gekauft]=false;
  156. Haus[ID][Abgeschlossen]=true;
  157. Haus[ID][Pos][0]=X;
  158. Haus[ID][Pos][1]=Y;
  159. Haus[ID][Pos][2]=Z;
  160. Haus[ID][Pos][3]=iX;
  161. Haus[ID][Pos][4]=iY;
  162. Haus[ID][Pos][5]=iZ;
  163. Haus[ID][Int]=Interior;
  164. Haus[ID][Preis]=p;
  165. Haus[ID][VirtualWorld]=GetFreeInteriorVW(Haus[ID][Int]);
  166. Haus[ID][PickupID] = CreatePickup(1273,1,X,Y,Z);
  167. for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) SetPlayerMapIcon(i,STARTMAPICON+ID,X,Y,Z,31,0xFFFFFFFF);
  168. new string[55];
  169. format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
  170. Haus[ID][Label] = Create3DTextLabel(string,0x33AA33FF,X,Y,Z,100.0,0,1);
  171. return ID;
  172. }
  173. stock DeleteHaus(hausid)
  174. {
  175. strdel(Haus[hausid][Besitzer],0,MAX_PLAYER_NAME);
  176. Haus[hausid][Gekauft]=false;
  177. Haus[hausid][Abgeschlossen]=false;
  178. Haus[hausid][Pos][0]=0;
  179. Haus[hausid][Pos][1]=0;
  180. Haus[hausid][Pos][2]=0;
  181. Haus[hausid][Pos][3]=0;
  182. Haus[hausid][Pos][4]=0;
  183. Haus[hausid][Pos][5]=0;
  184. Haus[hausid][Int]=0;
  185. Haus[hausid][VirtualWorld]=0;
  186. DestroyPickup(Haus[hausid][PickupID]);
  187. Delete3DTextLabel(Haus[hausid][Label]);
  188. for(new i,j=GetMaxPlayers();i!=j;i++) if(IsPlayerConnected(i)) RemovePlayerMapIcon(i,STARTMAPICON+hausid);
  189. new pfad[20];
  190. format(pfad,20,"Häuser/Haus %d.ini",hausid);
  191. fremove(pfad);
  192. return true;
  193. }
  194. ocmd:hauserstellen(playerid)
  195. {
  196. //if(!IsPlayerAdmin(playerid)) return true;
  197. ShowPlayerDialog(playerid,INTERIOR_TYPWAHL,DIALOG_STYLE_LIST,"Interior Typ auswählen","Trailer\nBedsit\nAppartment\nBungalow\nLuxus\nHaus","Weiter","Abbrechen");
  198. return true;
  199. }
  200. ocmd:buyhaus(playerid)
  201. {
  202. new ID=GetNearestHaus(playerid,4);
  203. if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  204. if(GetPlayerMoney(playerid)<Haus[ID][Preis]) return SendClientMessage(playerid,-1,"Soviel Geld hast du nicht bei dir");
  205. if(!strcmp(Haus[ID][Besitzer],"Niemand"))
  206. {
  207. GetPlayerName(playerid,Haus[ID][Besitzer],MAX_PLAYER_NAME);
  208. DestroyPickup(Haus[ID][PickupID]);
  209. RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
  210. SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],32,0xFFFFFFFF);
  211. Haus[ID][PickupID] = CreatePickup(1239,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
  212. new string[65];
  213. format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
  214. Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
  215. return true;
  216. }
  217. return SendClientMessage(playerid,-1,"Dieses Haus kann man nicht kaufen");
  218. }
  219. ocmd:sellhaus(playerid)
  220. {
  221. new ID=GetNearestHaus(playerid,4);
  222. if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  223. Haus[ID][Abgeschlossen]=true;
  224. DestroyPickup(Haus[ID][PickupID]);
  225. RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
  226. SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],31,0xFFFFFFFF);
  227. Haus[ID][PickupID] = CreatePickup(1273,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
  228. new string[55];
  229. format(string,55,"Dieses Haus steht zum Verkauf\n\nPreis: %d $",Haus[ID][Preis]);
  230. Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
  231. GivePlayerMoney(playerid,Haus[ID][Preis]/2);
  232. return SendClientMessage(playerid,-1,"Du hast dein Haus erfolgreich verkauft");
  233. }
  234. ocmd:speicherhauser(playerid)
  235. {
  236. //if(!IsPlayerAdmin(playerid)) return true;
  237. for(new i;i!=MAX_HAUSER;i++) SaveHaus(i);
  238. return SendClientMessage(playerid,-1,"Aller Häusergespeichert");
  239. }
  240. ocmd:deletehaus(playerid)
  241. {
  242. //if(!IsPlayerAdmin(playerid)) return true;
  243. new ID=GetNearestHaus(playerid,4);
  244. if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  245. DeleteHaus(ID);
  246. return SendClientMessage(playerid,-1,"Du hast das Haus erfolgreich gelöscht");
  247. }
  248. ocmd:lockhaus(playerid)
  249. {
  250. new ID=GetNearestHaus(playerid,4);
  251. if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines Hauses");
  252. new name[MAX_PLAYER_NAME];
  253. GetPlayerName(playerid,name,MAX_PLAYER_NAME);
  254. if(strcmp(Haus[ID][Besitzer],name)) return SendClientMessage(playerid,-1,"Du bist nicht Besitzer dieses Hauses");
  255. Haus[ID][Abgeschlossen]=(Haus[ID][Abgeschlossen])?false:true;
  256. new string[65];
  257. format(string,65,"Dieses Haus gehört:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
  258. Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
  259. return SendClientMessage(playerid,-1,(!Haus[ID][Abgeschlossen])?("Du hast dein Haus aufgeschlossen"):("Du hast dein Haus abgeschlossen"));
  260. }
  261. public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
  262. {
  263. switch(dialogid)
  264. {
  265. case INTERIOR_TYPWAHL:
  266. {
  267. if(!response) return false;
  268. switch(listitem)
  269. {
  270. case 0:
  271. {
  272. SetPVarInt(playerid,"HUHNFISCH_Slot",0);
  273. ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  274. }
  275. case 1:
  276. {
  277. ShowPlayerDialog(playerid,INTERIOR_WAHL_BEDSIT,DIALOG_STYLE_LIST,"Interior auswählen","Bedsit 1\nBedsit 2\nBedsit 3\nBedsit 4\n4 Zimmer Bedsit\nZurück","Auswählen","Abbruch");
  278. return true;
  279. }
  280. case 2:
  281. {
  282. ShowPlayerDialog(playerid,INTERIOR_WAHL_APPARTMENT,DIALOG_STYLE_LIST,"Interior auswählen","2 Zimmer Apartment\n3 Zimmer Apartment {33AA33}1\n3 Zimmer Apartment {33AA33}2\n4 Zimmer Apartment {33AA33}1\n4 Zimmer Apartment {33AA33}2\n4 Zimmer Apartment {33AA33}3\n4 Zimmer Apartment {33AA33}4\n5 Zimmer Apartment {33AA33}1\n5 Zimmer Apartment {33AA33}2\nZurück","Auswählen","Abbruch");
  283. return true;
  284. }
  285. case 3:
  286. {
  287. ShowPlayerDialog(playerid,INTERIOR_WAHL_BUNGALOW,DIALOG_STYLE_LIST,"Interior auswählen","3 Zimmer Bungalow {33AA33}1\n3 Zimmer Bungalow {33AA33}2\nZurück","Auswählen","Abbruch");
  288. return true;
  289. }
  290. case 4:
  291. {
  292. ShowPlayerDialog(playerid,INTERIOR_WAHL_LUXUS,DIALOG_STYLE_LIST,"Interior auswählen","5 Zimmer Luxus\n6 Zimmer Luxus\n7 Zimmer Luxus\n8 Zimmer Luxus\n4 Zimmer Luxus\n3 Zimmer Luxus {33AA33}1\n2 Zimmer Luxus {33AA33}1\n2 Zimmer Luxus {33AA33}2\n3 Zimmer Luxus {33AA33}2\n8 Zimmer Luxus\nZurück","Auswählen","Abbruch");
  293. return true;
  294. }
  295. case 5:
  296. {
  297. ShowPlayerDialog(playerid,INTERIOR_WAHL_HAUS,DIALOG_STYLE_LIST,"Interior auswählen","4 Zimmer Haus {33AA33}1\n4 Zimmer Haus {33AA33}2\n4 Zimmer Haus {33AA33}3\n4 Zimmer Haus {33AA33}4\n5 Zimmer Haus\n6 Zimmer Haus 1\6 Zimmer Haus 2\nZurück","Auswählen","Abbruch");
  298. return true;
  299. }
  300. }
  301. return true;
  302. }
  303. case INTERIOR_WAHL_BEDSIT:
  304. {
  305. if(!response) return ocmd_hauserstellen(playerid);
  306. switch(listitem)
  307. {
  308. case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",1);
  309. case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",2);
  310. case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",3);
  311. case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",4);
  312. case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
  313. default: return ocmd_hauserstellen(playerid);
  314. }
  315. ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  316. }
  317. case INTERIOR_WAHL_APPARTMENT:
  318. {
  319. if(!response) return ocmd_hauserstellen(playerid);
  320. switch(listitem)
  321. {
  322. case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",6);
  323. case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",9);
  324. case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",10);
  325. case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",11);
  326. case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",13);
  327. case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",14);
  328. case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",17);
  329. case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",20);
  330. case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",23);
  331. default: return ocmd_hauserstellen(playerid);
  332. }
  333. ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  334. }
  335. case INTERIOR_WAHL_BUNGALOW:
  336. {
  337. if(!response) return ocmd_hauserstellen(playerid);
  338. switch(listitem)
  339. {
  340. case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",7);
  341. case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",8);
  342. default: return ocmd_hauserstellen(playerid);
  343. }
  344. ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  345. }
  346. case INTERIOR_WAHL_LUXUS:
  347. {
  348. if(!response) return ocmd_hauserstellen(playerid);
  349. switch(listitem)
  350. {
  351. case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",22);
  352. case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",25);
  353. case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",27);
  354. case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",28);
  355. case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",29);
  356. case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",30);
  357. case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",31);
  358. case 7: SetPVarInt(playerid,"HUHNFISCH_Slot",32);
  359. case 8: SetPVarInt(playerid,"HUHNFISCH_Slot",33);
  360. case 9: SetPVarInt(playerid,"HUHNFISCH_Slot",34);
  361. default: return ocmd_hauserstellen(playerid);
  362. }
  363. ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  364. }
  365. case INTERIOR_WAHL_HAUS:
  366. {
  367. if(!response) return ocmd_hauserstellen(playerid);
  368. switch(listitem)
  369. {
  370. case 0: SetPVarInt(playerid,"HUHNFISCH_Slot",12);
  371. case 1: SetPVarInt(playerid,"HUHNFISCH_Slot",15);
  372. case 2: SetPVarInt(playerid,"HUHNFISCH_Slot",18);
  373. case 3: SetPVarInt(playerid,"HUHNFISCH_Slot",19);
  374. case 4: SetPVarInt(playerid,"HUHNFISCH_Slot",21);
  375. case 5: SetPVarInt(playerid,"HUHNFISCH_Slot",24);
  376. case 6: SetPVarInt(playerid,"HUHNFISCH_Slot",26);
  377. default: return ocmd_hauserstellen(playerid);
  378. }
  379. ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","Wie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  380. }
  381. case HAUS_PREIS:
  382. {
  383. if(!inputtext[0]) return ocmd_hauserstellen(playerid);
  384. new preis=strval(inputtext);
  385. for(new i,l=strlen(inputtext);i!=l;i++)
  386. if(inputtext[i] >= '0' && inputtext[i] <= '9') continue;
  387. else return ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","{FF0000}Error: {A9C4E4}Ein Preis ist doch kein Text\nWie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  388.  
  389. if(!preis) return ShowPlayerDialog(playerid,HAUS_PREIS,DIALOG_STYLE_INPUT,"Kauf Preis","{FF0000}Error: {A9C4E4}Du musst schon einen Preis über 0 eingeben.\nWie hoch soll der Kaufpreis für dieses Haus sein?","OK","Zurück");
  390. new Float:x,Float:y,Float:z;
  391. GetPlayerPos(playerid,x,y,z);
  392. new Slot=GetPVarInt(playerid,"HUHNFISCH_Slot");
  393. DeletePVar(playerid,"HUHNFISCH_Slot");
  394. SetPlayerMapIcon(playerid,STARTMAPICON+CreateHaus("Niemand",x,y,z,IntInfo[Slot][posx],IntInfo[Slot][posy],IntInfo[Slot][posz],IntInfo[Slot][_interior],preis),x,y,z,31,0xFFFFFFFF);
  395. return SendClientMessage(playerid,-1,"Haus erfolgreich erstellt");
  396. }
  397. }
  398. return true;
  399. }
  400. public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
  401. {
  402. if(newkeys & KEY_SECONDARY_ATTACK)
  403. {
  404. if(!GetPVarInt(playerid,"HUHNFISCH_InHaus"))
  405. {
  406. new ID=GetNearestHaus(playerid,4);
  407. if(ID==-1) return true;
  408. if(Haus[ID][Abgeschlossen]) return true;
  409. SetPlayerInterior(playerid,Haus[ID][Int]);
  410. SetPlayerPos(playerid,Haus[ID][Pos][3],Haus[ID][Pos][4],Haus[ID][Pos][5]);
  411. SetPlayerVirtualWorld(playerid,Haus[ID][VirtualWorld]);
  412. SetPVarInt(playerid,"HUHNFISCH_InHaus",true);
  413. return true;
  414. }
  415. new ID=GetNearestHausExit(playerid,3);
  416. if(ID==-1) return true;
  417. SetPlayerInterior(playerid,0);
  418. SetPlayerPos(playerid,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
  419. SetPlayerVirtualWorld(playerid,0);
  420. DeletePVar(playerid,"HUHNFISCH_InHaus");
  421. return true;
  422. }
  423. return true;
  424. }
  425. GetFreeHausID()
  426. {
  427. for(new i;i!=MAX_HAUSER;i++) if(!Haus[i][Int]) return i;
  428. return -1;
  429. }
  430. GetFreeInteriorVW(interior)
  431. {
  432. new VW;
  433. for(new i;i!=10000;i++)
  434. {
  435. for(new j;j!=MAX_HAUSER;j++) if(Haus[j][Int]==interior&&Haus[j][VirtualWorld]!=i) { VW=i; break; }
  436. if(VW) return i;
  437. }
  438. return -1;
  439. }
  440. GetNearestHaus(playerid, Float:dist = 12.0)
  441. {
  442. new Float:tmpdist = dist,Float:x,Float:y,Float:z;
  443. new Float:tempdist,ID=-1;
  444. for(new i;i!=MAX_HAUSER;i++)
  445. {
  446. if(!Haus[i][Int]) continue;
  447. GetPlayerPos(playerid,x,y,z);
  448. tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
  449. if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
  450. }
  451. return ID;
  452. }
  453. GetNearestHausExit(playerid, Float:dist = 12.0)
  454. {
  455. new Float:tmpdist = dist,Float:x,Float:y,Float:z;
  456. new Float:tempdist,ID=-1;
  457. for(new i;i!=MAX_HAUSER;i++)
  458. {
  459. if(!Haus[i][Int]||Haus[i][VirtualWorld]!=GetPlayerVirtualWorld(playerid)) continue;
  460. GetPlayerPos(playerid,x,y,z);
  461. tempdist = GetPlayerDistanceFromPoint(playerid,Haus[i][Pos][3],Haus[i][Pos][4],Haus[i][Pos][5]);
  462. if(tempdist < tmpdist) tmpdist=tempdist,ID=i;
  463. }
  464. return ID;
  465. }
  466. StripNL(str[]) /* Credits to Y_Less */
  467. {
  468. new l=strlen(str);
  469. while(l--&&str[l]<=' ')str[l]='\0';
  470. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement