Advertisement
Guest User

Untitled

a guest
Sep 18th, 2011
1,581
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.26 KB | None | 0 0
  1. /* Dynamisches Haus System (c) 2010 by BlackFoX_UD_
  2.  
  3.  
  4. * Credits *
  5.  
  6. - Sa-mp Team for GTA San Andreas Multiplayer
  7. - BlackFoX_UD_ ( This Script ) and BFX iStream
  8. - strtok by Compu Phase
  9.  
  10.  
  11. -= DONT REMOVE CREDITS =-
  12.  
  13. * Features *
  14.  
  15. - Häuser im Spiel erstellen ( Rcon )
  16. - Vorschau Funktion ( Rcon )
  17. - Häuser können betreten & verlassen werden ( Benutzer && > )
  18. - Definierte Häuser + Innenraum Daten
  19. - Für jedes Haus wird eine gewisse Spielzeit verlangt. ( [[h]] Stunden )
  20. - Häuser können von jedem betreten werden
  21. - Häuser können verschlossen werden
  22. - Optisch angepasst
  23.  
  24. ** Changes ( 1. März 2010 ) **
  25.  
  26. - Häuser können gelöscht werden
  27. - Es kann bestimmt werden ob Score oder Spielzeit verwendet werden soll
  28. - Maximale Anzahl der Häuser für den Spieler einstellbar
  29. - Der kleine Logikfehler für hkaufen & verkaufen wurde behoben ( Nun wird Geld genommen & dazugegeben wie es sein sollte )
  30. - Index der Maximalen Häuser Dynamisch gestaltet ( for ex. werden Häuser gelöscht, wird/werden diese Plätze mit dem nächsten neuen Haus besetzt ohne das FS/GM neuzustarten )
  31.  
  32. ** Changes ( 2. März 2010 ) **
  33.  
  34. - /hlöschen ( Bug Fix )
  35. - Interior 0 = Ungültig
  36.  
  37. ** Changes ( 5. März 2010 ) **
  38.  
  39. - Spielzeit komplett entfernt nur noch Score!
  40. - Spielerdaten werden nicht mehr geladen ( Haus Spawn wird durch Skript übernommen )
  41.  
  42. */
  43.  
  44. #include <a_samp>
  45. #include <bfx_imStream>
  46.  
  47. #define MAX_HH 500 // Maximale Häuser Anzahl
  48. #define HAUS_DATEI "haus_daten.cfg" // Datei wo die Häuser gespeichert werden
  49. #define INFO_TAFEL // Informationen durch Pickup , einfach kommentieren oder löschen wenn nicht nötig
  50. #define MAX_SPIELER_HAUS 1 // Maximale Häuser Anzahl die der Spieler besitzen darf
  51.  
  52. forward ZeitTimer();
  53. forward SaveCache();
  54. forward initSlot();
  55. new _cache_haus;
  56. enum haus
  57. {
  58. Float:ax,
  59. Float:ay,
  60. Float:az,
  61. Float:ix,
  62. Float:iy,
  63. Float:iz,
  64. interior,
  65. virtual_world,
  66. Besitzer[MAX_PLAYER_NAME],
  67. kosten,
  68. play_time,
  69. Text3D:lbl_haus,
  70. nicht_zum_kauf,
  71. verschlossen,
  72. #if defined INFO_TAFEL
  73. pickid,
  74. #endif
  75. icon_id
  76. }
  77. new HausDaten[MAX_HH][haus];
  78.  
  79. enum haus_typ
  80. {
  81. interior,
  82. Float:haus_x,
  83. Float:haus_y,
  84. Float:haus_z
  85. }
  86. new Typen[][haus_typ] = { // Wenn nötig neue Haus Typen bzw. vorgegebene Räume hinzufügen...
  87. {3,235.508994,1189.169897,1080.339966},
  88. {2,225.756989,1240.000000,1082.149902},
  89. {1,223.043991,1289.259888,1082.199951},
  90. {7,225.630997,1022.479980,1084.069946},
  91. {15,295.138977,1474.469971,1080.519897},
  92. {15,328.493988,1480.589966,1084.449951},
  93. {15,385.803986,1471.769897,1080.209961},
  94. {1,244.411987,305.032989,999.148437},
  95. {2,271.884979,306.631988,999.148437},
  96. {3,291.282989,310.031982,999.148437},
  97. {4,302.180999,300.722991,999.148437},
  98. {3,1527.229980,-11.574499,1002.097106},
  99. {3,513.882507,-11.269994,1001.565307},
  100. {2,2454.717041,-1700.871582,1013.515197}
  101. };
  102.  
  103. enum spieler_daten
  104. {
  105. haus_schau,
  106. Float:h_schaux,
  107. Float:h_schauy,
  108. Float:h_schauz,
  109. last_int,
  110. last_vw,
  111. haus_zahl
  112. }
  113. new Player[MAX_PLAYERS][spieler_daten];
  114.  
  115. public OnFilterScriptInit()
  116. {
  117. new line[255],File:hausx = fopen(HAUS_DATEI,io_read),
  118. haus_index;
  119. if(hausx)
  120. {
  121. while(fread(hausx,line))
  122. {
  123. if(line[strlen(line)-2] == '\r')line[strlen(line)-2] = '\0';
  124. if(line[strlen(line)-1] == '\n')line[strlen(line)-1] = '\0';
  125. strmid(HausDaten[_cache_haus][Besitzer],strtok(line,haus_index,','),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
  126. HausDaten[_cache_haus][ax] = floatstr(strtok(line,haus_index,','));
  127. HausDaten[_cache_haus][ay] = floatstr(strtok(line,haus_index,','));
  128. HausDaten[_cache_haus][az] = floatstr(strtok(line,haus_index,','));
  129. HausDaten[_cache_haus][ix] = floatstr(strtok(line,haus_index,','));
  130. HausDaten[_cache_haus][iy] = floatstr(strtok(line,haus_index,','));
  131. HausDaten[_cache_haus][iz] = floatstr(strtok(line,haus_index,','));
  132. HausDaten[_cache_haus][interior] = strval(strtok(line,haus_index,','));
  133. HausDaten[_cache_haus][virtual_world] = strval(strtok(line,haus_index,','));
  134. HausDaten[_cache_haus][kosten] = strval(strtok(line,haus_index,','));
  135. HausDaten[_cache_haus][play_time] = strval(strtok(line,haus_index,','));
  136. HausDaten[_cache_haus][nicht_zum_kauf] = strval(strtok(line,haus_index,','));
  137. HausDaten[_cache_haus][verschlossen] = strval(strtok(line,haus_index,','));
  138. format(line,sizeof line,"Besitzer : %s\nScore : %d\nKosten : %d$",HausDaten[_cache_haus][Besitzer],HausDaten[_cache_haus][play_time],HausDaten[_cache_haus][kosten]);
  139. HausDaten[_cache_haus][lbl_haus] = Create3DTextLabel(line,(!HausDaten[_cache_haus][nicht_zum_kauf]) ? (0x00FF00FF) : (0xFF0000FF),HausDaten[_cache_haus][ax],HausDaten[_cache_haus][ay],HausDaten[_cache_haus][az],10.0,0,0);
  140. HausDaten[_cache_haus][pickid] = CreatePickup(1273,1,HausDaten[_cache_haus][ax],HausDaten[_cache_haus][ay],HausDaten[_cache_haus][az],0);
  141. HausDaten[_cache_haus][icon_id] = bCreateMapIcon(HausDaten[_cache_haus][ax],HausDaten[_cache_haus][ay],_,(HausDaten[_cache_haus][nicht_zum_kauf]) ? (32) : (31),0);
  142. haus_index = 0;
  143. _cache_haus++;
  144.  
  145. }
  146. fclose(hausx);
  147. }
  148. return 1;
  149. }
  150. public OnFilterScriptExit()
  151. {
  152. SaveCache();
  153. return 1;
  154. }
  155.  
  156. public OnPlayerConnect(playerid)
  157. {
  158. return 1;
  159. }
  160.  
  161. public OnPlayerDisconnect(playerid, reason)
  162. {
  163. Player[playerid][haus_schau] = 0;
  164. Player[playerid][h_schaux] = (0.0);
  165. Player[playerid][h_schauy] = (0.0);
  166. Player[playerid][h_schauz] = (0.0);
  167. Player[playerid][last_int] = 0;
  168. Player[playerid][last_vw] = 0;
  169. Player[playerid][haus_zahl] = 0;
  170. return 1;
  171. }
  172.  
  173. public OnPlayerSpawn(playerid)
  174. {
  175. for(new i = 0;i<_cache_haus;i++)
  176. {
  177. if(!strcmp(HausDaten[i][Besitzer],spielername(playerid)))
  178. {
  179. SetPlayerPos(playerid,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]);
  180. break;
  181. }
  182. }
  183. return 1;
  184. }
  185. spielername(playerid)
  186. {
  187. new xname[MAX_PLAYER_NAME];
  188. GetPlayerName(playerid,xname,sizeof xname);
  189. return xname;
  190. }
  191. public OnPlayerCommandText(playerid, cmdtext[])
  192. {
  193. new idx,cmd[128];
  194. cmd = strtok(cmdtext,idx);
  195. if(!strcmp(cmd,"/enter",true))
  196. {
  197. for(new i = 0;i<_cache_haus;i++)
  198. {
  199. if(HausDaten[i][interior] == 0)continue;
  200. if(!IsPlayerInRangeOfPoint(playerid,1.5,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]))continue;
  201. if(HausDaten[i][verschlossen]){SendClientMessage(playerid,0xFF0000FF,"Dieses Haus ist verschlossen!");break;}
  202. SetPlayerInterior(playerid,HausDaten[i][interior]);
  203. SetPlayerVirtualWorld(playerid,HausDaten[i][virtual_world]);
  204. SetPlayerPos(playerid,HausDaten[i][ix],HausDaten[i][iy],HausDaten[i][iz]);
  205. }
  206. return 1;
  207. }
  208. if(!strcmp(cmd,"/hlock",true))
  209. {
  210. for(new i = 0;i<_cache_haus;i++)
  211. {
  212. if(HausDaten[i][interior] == 0)continue;
  213. if(!IsPlayerInRangeOfPoint(playerid,1.2,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]) && !(IsPlayerInRangeOfPoint(playerid,1.5,HausDaten[i][ix],HausDaten[i][iy],HausDaten[i][iz]) && GetPlayerInterior(playerid) == HausDaten[i][interior] && GetPlayerVirtualWorld(playerid) == HausDaten[i][virtual_world]))continue;
  214. if(strcmp(HausDaten[i][Besitzer],spielername(playerid))){SendClientMessage(playerid,0xFF0000FF,"Dieses Haus gehört nicht dir!");break;}
  215. if(!HausDaten[i][verschlossen])GameTextForPlayer(playerid,"~b~Haus ~r~verschlossen.",2000,3);
  216. else GameTextForPlayer(playerid,"~b~Haus ~g~aufgeschlossen.",2000,3);
  217. HausDaten[i][verschlossen] = (HausDaten[i][verschlossen]) ? (0) : (1);
  218. SaveCache();
  219. break;
  220. }
  221. return 1;
  222. }
  223. if(!strcmp(cmd,"/hkaufen",true))
  224. {
  225. for(new i = 0;i<_cache_haus;i++)
  226. {
  227. if(HausDaten[i][interior] == 0)continue;
  228. if(!IsPlayerInRangeOfPoint(playerid,1.5,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]))continue;
  229. if(HausDaten[i][nicht_zum_kauf]){SendClientMessage(playerid,0xFF0000FF,"Haus kann nicht gekauft werden!");break;}
  230. if(Player[playerid][haus_zahl] >= MAX_SPIELER_HAUS){SendClientMessage(playerid,0xFF0000FF,"Du hast bereits die Maximale Anzahl der kaufbaren Häuser erreicht!");break;}
  231. if(GetPlayerScore(playerid) < HausDaten[i][play_time]){SendClientMessage(playerid,0xFF0000FF,"Du brauchst mehr Score!");break;}
  232. if(GetPlayerMoney(playerid) < HausDaten[i][kosten]){SendClientMessage(playerid,0xFF0000FF,"Du brauchst mehr Geld!");break;}
  233. strmid(HausDaten[i][Besitzer],spielername(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
  234. HausDaten[i][nicht_zum_kauf] = 1;
  235. format(cmd,sizeof cmd,"Besitzer : %s\nScore : %d\nKosten : %d$",spielername(playerid),HausDaten[i][play_time],HausDaten[i][kosten]);
  236. Update3DTextLabelText(HausDaten[i][lbl_haus],0xFF0000FF,cmd);
  237. bRemoveMapIcon(HausDaten[i][icon_id]);
  238. HausDaten[i][icon_id] = bCreateMapIcon(HausDaten[i][ax],HausDaten[i][ay],_,32,0);
  239. GivePlayerMoney(playerid,-HausDaten[i][kosten]);
  240. Player[playerid][haus_zahl]++;
  241. SaveCache();
  242. break;
  243. }
  244. return 1;
  245. }
  246. if(!strcmp(cmd,"/setowner",true))
  247. {
  248. if(!IsPlayerAdmin(playerid))return 1;
  249. cmd = strtok(cmdtext,idx);
  250. if(!cmd[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze /setowner [Besitzername]");
  251. for(new i = 0;i<_cache_haus;i++)
  252. {
  253. if(HausDaten[i][interior] == 0)continue;
  254. if(!IsPlayerInRangeOfPoint(playerid,1.5,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]))continue;
  255. strmid(HausDaten[i][Besitzer],cmd,0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
  256. format(cmd,sizeof cmd,"Besitzer : %s\nScore : %d\nKosten : %d$",cmd,HausDaten[i][play_time],HausDaten[i][kosten]);
  257. Update3DTextLabelText(HausDaten[i][lbl_haus],0xFF0000FF,cmd);
  258. SaveCache();
  259. break;
  260. }
  261. return 1;
  262. }
  263. if(!strcmp(cmd,"/hverkaufen",true))
  264. {
  265. for(new i = 0;i<_cache_haus;i++)
  266. {
  267. if(HausDaten[i][interior] == 0)continue;
  268. if(!IsPlayerInRangeOfPoint(playerid,1.5,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]))continue;
  269. if(!HausDaten[i][nicht_zum_kauf]){SendClientMessage(playerid,0xFF0000FF,"Haus kann nicht verkauft werden!");break;}
  270. if(strcmp(HausDaten[i][Besitzer],spielername(playerid))){SendClientMessage(playerid,0xFF0000FF,"Dieses Haus gehört nicht dir!");break;}
  271. strmid(HausDaten[i][Besitzer],"Keiner",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
  272. HausDaten[i][nicht_zum_kauf] = 0;
  273. format(cmd,sizeof cmd,"Besitzer : Keiner\nScore : %d\nKosten : %d$",HausDaten[i][play_time],HausDaten[i][kosten]);
  274. Update3DTextLabelText(HausDaten[i][lbl_haus],0x00FF00FF,cmd);
  275. bRemoveMapIcon(HausDaten[i][icon_id]);
  276. HausDaten[i][icon_id] = bCreateMapIcon(HausDaten[i][ax],HausDaten[i][ay],_,31,0);
  277. Player[playerid][haus_zahl]--;
  278. GivePlayerMoney(playerid,(HausDaten[i][kosten]/2));
  279. SaveCache();
  280. break;
  281. }
  282. return 1;
  283. }
  284. if(!strcmp(cmd,"/exit",true))
  285. {
  286. for(new i = 0;i<_cache_haus;i++)
  287. {
  288. if(HausDaten[i][interior] == 0)continue;
  289. if(IsPlayerInRangeOfPoint(playerid,5.0,HausDaten[i][ix],HausDaten[i][iy],HausDaten[i][iz]) && GetPlayerInterior(playerid) == HausDaten[i][interior] && GetPlayerVirtualWorld(playerid) == HausDaten[i][virtual_world])
  290. {
  291. if(HausDaten[i][verschlossen]){SendClientMessage(playerid,0xFF0000FF,"Dieses Haus ist verschlossen!");break;}
  292. SetPlayerPos(playerid,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]);
  293. SetPlayerInterior(playerid,0);
  294. SetPlayerVirtualWorld(playerid,0);
  295. break;
  296. }
  297. }
  298. return 1;
  299. }
  300. if(!strcmp(cmd,"/hlöschen",true))
  301. {
  302. if(!IsPlayerAdmin(playerid))return 1;
  303. for(new i = 0;i<_cache_haus;i++)
  304. {
  305. if(HausDaten[i][interior] == 0)continue;
  306. if(!IsPlayerInRangeOfPoint(playerid,5.0,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]))continue;
  307. HausDaten[i][interior] = 0;
  308. DestroyPickup(HausDaten[i][pickid]);
  309. Delete3DTextLabel(HausDaten[i][lbl_haus]);
  310. SendClientMessage(playerid,0x00FF00FF,"Haus gelöscht.");
  311. bRemoveMapIcon(HausDaten[i][icon_id]);
  312. HausDaten[i][ax] = (0.0);
  313. HausDaten[i][ay] = (0.0);
  314. HausDaten[i][az] = (0.0);
  315. HausDaten[i][play_time] = 0;
  316. HausDaten[i][kosten] = 0;
  317. HausDaten[i][interior] = 0;
  318. HausDaten[i][ix] = (0.0);
  319. HausDaten[i][iy] = (0.0);
  320. HausDaten[i][iz] = (0.0);
  321. HausDaten[i][virtual_world] = 0;
  322. HausDaten[i][verschlossen] = 0;
  323. strmid(HausDaten[i][Besitzer],"",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
  324. HausDaten[i][pickid] = -1;
  325. HausDaten[i][lbl_haus] = Text3D:-1;
  326. HausDaten[i][icon_id] = -1;
  327. HausDaten[i][nicht_zum_kauf] = 0;
  328. SaveCache();
  329. break;
  330. }
  331. return 1;
  332. }
  333. if(!strcmp(cmd,"/chaus",true))
  334. {
  335. if(!IsPlayerAdmin(playerid))return 1;
  336. cmd = strtok(cmdtext,idx);
  337. if(!cmd[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze : /chaus [kosten] [spielzeit in h] [haus] [Virtual World]");
  338. new hkosten = strval(cmd);
  339. cmd = strtok(cmdtext,idx);
  340. if(!cmd[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze : /chaus [kosten] [spielzeit in h] [haus] [Virtual World]");
  341. new spielzeit = strval(cmd);
  342. if(spielzeit < 0)return SendClientMessage(playerid,0xFF0000FF,"Die Spielzeit muss minimal bei 0 Stunden liegen!");
  343. cmd = strtok(cmdtext,idx);
  344. if(!cmd[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze : /chaus [kosten] [spielzeit in h] [haus] [Virtual World]");
  345. new hhaus = strval(cmd);
  346. if(hhaus > sizeof(Typen) || hhaus < 0)return SendClientMessage(playerid,0xFF0000FF,"Ungültiges Haus!");
  347. cmd = strtok(cmdtext,idx);
  348. if(!cmd[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze : /chaus [kosten] [spielzeit in h] [haus] [Virtual World]");
  349. new hvw = strval(cmd);
  350. new Float:nowPos[3];
  351. new slotid = initSlot();
  352. new fullid = (slotid==-1) ? (_cache_haus) : (slotid);
  353. GetPlayerPos(playerid,nowPos[0],nowPos[1],nowPos[2]);
  354. HausDaten[fullid][ax] = nowPos[0];
  355. HausDaten[fullid][ay] = nowPos[1];
  356. HausDaten[fullid][az] = nowPos[2];
  357. HausDaten[fullid][play_time] = spielzeit;
  358. HausDaten[fullid][kosten] = hkosten;
  359. HausDaten[fullid][interior] = Typen[hhaus][interior];
  360. HausDaten[fullid][ix] = Typen[hhaus][haus_x];
  361. HausDaten[fullid][iy] = Typen[hhaus][haus_y];
  362. HausDaten[fullid][iz] = Typen[hhaus][haus_z];
  363. HausDaten[fullid][virtual_world] = hvw;
  364. HausDaten[fullid][verschlossen] = 1;
  365. HausDaten[fullid][nicht_zum_kauf] = 0;
  366. strmid(HausDaten[fullid][Besitzer],"Keiner",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
  367. HausDaten[fullid][pickid] = CreatePickup(1273,1,nowPos[0],nowPos[1],nowPos[2],0);
  368. format(cmd,sizeof cmd,"Besitzer : Keiner\nScore : %d\nKosten : %d$",spielzeit,hkosten);
  369. HausDaten[fullid][lbl_haus] = Create3DTextLabel(cmd,0x00FF00FF,nowPos[0],nowPos[1],nowPos[2],10.0,0,0);
  370. HausDaten[fullid][icon_id] = bCreateMapIcon(nowPos[0],nowPos[1],_,31,0);
  371. if(slotid==-1)_cache_haus++;
  372. SaveCache();
  373. return 1;
  374. }
  375. if(!strcmp(cmd,"/hvorschau",true))
  376. {
  377. if(!IsPlayerAdmin(playerid))return 1;
  378. if(Player[playerid][haus_schau])return SendClientMessage(playerid,0xFF0000FF,"Nutze vorher /evorschau um die derzeitige Vorschau zu beenden!");
  379. cmd = strtok(cmdtext,idx);
  380. if(!cmd[0])return SendClientMessage(playerid,0xFF0000FF,"Nutze /hvorschau [haustyp id]");
  381. new hhaus = strval(cmd);
  382. if(hhaus > sizeof(Typen) || hhaus < 0)return SendClientMessage(playerid,0xFF0000FF,"Ungültiges Haus!");
  383. GetPlayerPos(playerid,Player[playerid][h_schaux],Player[playerid][h_schauy],Player[playerid][h_schauz]);
  384. Player[playerid][last_int] = GetPlayerInterior(playerid);
  385. Player[playerid][last_vw] = GetPlayerVirtualWorld(playerid);
  386. SetPlayerInterior(playerid,Typen[hhaus][interior]);
  387. SetPlayerPos(playerid,Typen[hhaus][haus_x],Typen[hhaus][haus_y],Typen[hhaus][haus_z]);
  388. Player[playerid][haus_schau] = 1;
  389. return SendClientMessage(playerid,0x00FF00FF,"Nutze /evorschau um die Vorschau zu beenden.");
  390. }
  391. if(!strcmp(cmd,"/evorschau",true))
  392. {
  393. if(!IsPlayerAdmin(playerid))return 1;
  394. if(!Player[playerid][haus_schau])return SendClientMessage(playerid,0xFF0000FF,"Du bist derzeit in keinem Vorzeige Haus!");
  395. SetPlayerInterior(playerid,Player[playerid][last_int]);
  396. SetPlayerVirtualWorld(playerid,Player[playerid][last_vw]);
  397. SetPlayerPos(playerid,Player[playerid][h_schaux],Player[playerid][h_schauy],Player[playerid][h_schauz]);
  398. Player[playerid][h_schaux] = (0.0);
  399. Player[playerid][h_schauy] = (0.0);
  400. Player[playerid][h_schauz] = (0.0);
  401. Player[playerid][last_int] = 0;
  402. Player[playerid][last_vw] = 0;
  403. Player[playerid][haus_schau] = 0;
  404. return SendClientMessage(playerid,0x00FF00FF,"Vorschau wurde beendet.");
  405. }
  406. return 0;
  407. }
  408. strtok(const string[], &index, trenner = ' ')
  409. {
  410. new length = strlen(string);
  411. while ((index < length) && (string[index] <= trenner))
  412. {
  413. index++;
  414. }
  415.  
  416. new offset = index;
  417. new result[20];
  418. while ((index < length) && (string[index] > trenner) && ((index - offset) < (sizeof(result) - 1)))
  419. {
  420. result[index - offset] = string[index];
  421. index++;
  422. }
  423. result[index - offset] = EOS;
  424. return result;
  425. }
  426. public SaveCache()
  427. {
  428. new fm[255],File:hausx = fopen(HAUS_DATEI,io_write);
  429. for(new i = 0;i<_cache_haus;i++)
  430. {
  431. if(!HausDaten[i][interior])continue;
  432. format(fm,sizeof fm,"%s,%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d\r\n",
  433. HausDaten[i][Besitzer],
  434. HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az],
  435. HausDaten[i][ix],HausDaten[i][iy],HausDaten[i][iz],
  436. HausDaten[i][interior],HausDaten[i][virtual_world],
  437. HausDaten[i][kosten],HausDaten[i][play_time],
  438. HausDaten[i][nicht_zum_kauf],HausDaten[i][verschlossen]);
  439. fwrite(hausx,fm);
  440. }
  441. fclose(hausx);
  442. return 1;
  443. }
  444. public OnPlayerPickUpPickup(playerid, pickupid)
  445. {
  446. #if defined INFO_TAFEL
  447. new showme[128];
  448. for(new i = 0;i<_cache_haus;i++)
  449. {
  450. if(pickupid!=HausDaten[i][pickid])continue;
  451. format(showme,sizeof showme,
  452. (!HausDaten[i][nicht_zum_kauf]) ? ("~w~Besitzer : ~b~%s~n~~w~Kosten : ~b~%d$~n~~w~Score : ~b~%dh~n~~w~Nutze ~g~ /hkaufen ~w~um es zu erwerben") :
  453. ("~w~Besitzer : ~b~%s~n~~w~Kosten : ~b~%d$~n~~w~Score : ~b~%d~n~"),
  454. HausDaten[i][Besitzer],HausDaten[i][kosten],HausDaten[i][play_time]);
  455. GameTextForPlayer(playerid,showme,3000,3);
  456. break;
  457. }
  458. #endif
  459. return 1;
  460. }
  461. public initSlot()
  462. {
  463. new foundx = -1;
  464. for(new i = 0;i<_cache_haus;i++)
  465. {
  466. if(HausDaten[i][Besitzer] == '\0'){foundx = i;break;}
  467. }
  468. return foundx;
  469. }
  470. // EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement