dead__

Untitled

Apr 14th, 2011
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 10.91 KB | None | 0 0
  1. /*
  2.  
  3.     SHS - Simple House System 0.1
  4.     Copyright:
  5.     SHS -  dead
  6.     dini - DracoBlue (Download: http://dracoblue.net/download/dini-16/35/)
  7.  
  8.     Installation:
  9.     Erstelle in den Scriptfiles einen Ordner mit dem Namen "Houses".
  10.     Nun kannst du IG (= InGame) als RCON-Admin kaufbare Häuser mit /hinzufügen erstellen.
  11.  
  12. */
  13.  
  14. #include <a_samp>
  15. #include <dini>
  16.  
  17. #define MAX_HOUSES 100
  18.  
  19. #define COLOR_ORANGE 0xf39200FF
  20.  
  21. enum hData
  22. {
  23.     Float:ePos[3],
  24.     Float:iPos[3],
  25.     InterID,
  26.     VirWorld,
  27.     Locked,
  28.     Owner[MAX_PLAYER_NAME],
  29.     Price,
  30.     Rent,
  31.     Text3D:Label,
  32.     PickUp
  33. }
  34.  
  35. new hInfo[MAX_HOUSES][hData];
  36. new path[21], str[128], name[MAX_PLAYER_NAME], Float:pPos[3], bool:bHouse[MAX_PLAYERS];
  37.  
  38. public OnFilterScriptInit()
  39. {
  40.     for(new i=0; i<MAX_HOUSES; i++)
  41.     {
  42.         if(dini_Exists(path))
  43.         {
  44.             LoadHouse(0);
  45.         }
  46.     }
  47.     return 1;
  48. }
  49.  
  50. public OnFilterScriptExit()
  51. {
  52.     for(new i=0; i<MAX_HOUSES; i++)
  53.     {
  54.         format(path, 21, "houses/%d.ini", i);
  55.         if(dini_Exists(path))
  56.         {
  57.             SaveHouse(i);
  58.             UnLoadHouse(i);
  59.         }
  60.     }
  61.     return 1;
  62. }
  63.  
  64. public OnPlayerConnect(playerid)
  65. {
  66.     return 1;
  67. }
  68.  
  69. public OnPlayerDisconnect(playerid, reason)
  70. {
  71.     return 1;
  72. }
  73.  
  74. public OnPlayerSpawn(playerid)
  75. {
  76.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  77.     for(new i=0; i<MAX_HOUSES; i++)
  78.     {
  79.         print(hInfo[i][Owner]);
  80.         if(strcmp(name, hInfo[i][Owner], true) == 0) return SetPlayerPos(playerid, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]); bHouse[playerid] = true;
  81.         break;
  82.     }
  83.     return 1;
  84. }
  85.  
  86. public OnPlayerDeath(playerid, killerid, reason)
  87. {
  88.     return 1;
  89. }
  90.  
  91. public OnVehicleSpawn(vehicleid)
  92. {
  93.     return 1;
  94. }
  95.  
  96. public OnVehicleDeath(vehicleid, killerid)
  97. {
  98.     return 1;
  99. }
  100.  
  101. public OnPlayerText(playerid, text[])
  102. {
  103.     return 1;
  104. }
  105.  
  106. public OnPlayerCommandText(playerid, cmdtext[])
  107. {
  108.     if(strcmp("/kill", cmdtext, true) == 0) return SetPlayerHealth(playerid, 0);
  109.     if(strcmp("/haushilfe", cmdtext, true) == 0)
  110.     {
  111.         if(IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_ORANGE, "Haushilfe: {FFFFFF}/hinzufügen - Haus erstellen (Admin)");
  112.         SendClientMessage(playerid, COLOR_ORANGE, "Haushilfe: {FFFFFF}/kaufen - Haus kaufen | /verkaufen - Haus verkaufen | /tür - Tür öffnen/schließen");
  113.         return SendClientMessage(playerid, COLOR_ORANGE, "Haushilfe: {FFFFFF}/mieten - Wohnung mieten | /miete - Miete ändern");
  114.     }
  115.    
  116.     if(strcmp("/tür", cmdtext, true) == 0)
  117.     {
  118.         for(new i=0; i<MAX_HOUSES; i++)
  119.         {
  120.             if(IsPlayerInRangeOfPoint(playerid, 1.5, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]) || IsPlayerInRangeOfPoint(playerid, 2.5, hInfo[i][iPos][0], hInfo[i][iPos][1], hInfo[i][iPos][2]))
  121.             {
  122.                 GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  123.                 if(strcmp(name, hInfo[i][Owner], true)) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du bist nicht der Besitzer dieses Hauses.");
  124.                 if(hInfo[i][Locked]) hInfo[i][Locked] = 0;
  125.                 else hInfo[i][Locked] = 1;
  126.             }
  127.         }
  128.         return 1;
  129.     }
  130.    
  131.     if(strcmp("/kaufen", cmdtext, true) == 0)
  132.     {
  133.         if(bHouse[playerid]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du besitzt bereits ein Haus.");
  134.         GivePlayerMoney(playerid, 500000);
  135.         GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  136.         for(new i=0; i<MAX_HOUSES; i++)
  137.         {
  138.             if(IsPlayerInRangeOfPoint(playerid, 1.5, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]))
  139.             {
  140.                 format(path, 21, "houses/%d.ini", i);
  141.                 if(hInfo[i][Price] == -1 || dini_Isset(path, "Renters")) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Das Haus kann nicht gekauft werden.");
  142.                 if(GetPlayerMoney(playerid) < hInfo[i][Price]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du hast nicht genug Geld.");
  143.                 format(hInfo[i][Owner], MAX_PLAYER_NAME, "%s", name);
  144.                 format(str, 64, "Haus\nBesitzer: %s\nMiete: %d$\nTippe /mieten", name, hInfo[i][Rent]);
  145.                 Update3DTextLabelText(hInfo[i][Label], COLOR_ORANGE, str);
  146.                 GivePlayerMoney(playerid, -hInfo[i][Price]);
  147.                 hInfo[i][Price] = -1;
  148.                 return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du hast dir ein Haus gekauft, du kannst es nun mit ENTER betreten.");
  149.             }
  150.             else return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du kannst dir hier kein Haus kaufen.");
  151.         }
  152.         return 1;
  153.     }
  154.    
  155.     if(strcmp("/hinzufügen", cmdtext, true) == 0)
  156.     {
  157.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_ORANGE, "Information: {FFFFFF}Du bist kein RCON-Admin.");
  158.         for(new i=0; i<MAX_HOUSES; i++)
  159.         {
  160.             format(path, 21, "houses/%d.ini", i);
  161.             if(!dini_Exists(path))
  162.             {
  163.                 GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
  164.                 AddHouse(i, pPos[0], pPos[1], pPos[2], 12345, 3, 32453);
  165.                 printf("%d", i);
  166.                 break;
  167.             }
  168.         }
  169.         return 1;
  170.     }
  171.     return 0;
  172. }
  173.  
  174. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  175. {
  176.     return 1;
  177. }
  178.  
  179. public OnPlayerExitVehicle(playerid, vehicleid)
  180. {
  181.     return 1;
  182. }
  183.  
  184. public OnPlayerStateChange(playerid, newstate, oldstate)
  185. {
  186.     return 1;
  187. }
  188.  
  189. public OnPlayerEnterCheckpoint(playerid)
  190. {
  191.     return 1;
  192. }
  193.  
  194. public OnPlayerLeaveCheckpoint(playerid)
  195. {
  196.     return 1;
  197. }
  198.  
  199. public OnPlayerEnterRaceCheckpoint(playerid)
  200. {
  201.     return 1;
  202. }
  203.  
  204. public OnPlayerLeaveRaceCheckpoint(playerid)
  205. {
  206.     return 1;
  207. }
  208.  
  209. public OnRconCommand(cmd[])
  210. {
  211.     return 1;
  212. }
  213.  
  214. public OnPlayerRequestSpawn(playerid)
  215. {
  216.     return 1;
  217. }
  218.  
  219. public OnObjectMoved(objectid)
  220. {
  221.     return 1;
  222. }
  223.  
  224. public OnPlayerObjectMoved(playerid, objectid)
  225. {
  226.     return 1;
  227. }
  228.  
  229. public OnPlayerPickUpPickup(playerid, pickupid)
  230. {
  231.     return 1;
  232. }
  233.  
  234. public OnVehicleMod(playerid, vehicleid, componentid)
  235. {
  236.     return 1;
  237. }
  238.  
  239. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  240. {
  241.     return 1;
  242. }
  243.  
  244. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  245. {
  246.     return 1;
  247. }
  248.  
  249. public OnPlayerSelectedMenuRow(playerid, row)
  250. {
  251.     return 1;
  252. }
  253.  
  254. public OnPlayerExitedMenu(playerid)
  255. {
  256.     return 1;
  257. }
  258.  
  259. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  260. {
  261.     return 1;
  262. }
  263.  
  264. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  265. {
  266.     if(newkeys & KEY_SECONDARY_ATTACK)
  267.     {
  268.         for(new i=0; i<MAX_HOUSES; i++)
  269.         {
  270.             if(IsPlayerInRangeOfPoint(playerid, 1.5, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]))
  271.             {
  272.                 if(hInfo[i][Locked]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Das Haus ist abgeschlossen.");
  273.                 SetPlayerInterior(playerid, hInfo[i][InterID]);
  274.                 SetPlayerPos(playerid, hInfo[i][iPos][0], hInfo[i][iPos][1], hInfo[i][iPos][2]);
  275.                 return SetPlayerVirtualWorld(playerid, hInfo[i][VirWorld]);
  276.             }
  277.             if(IsPlayerInRangeOfPoint(playerid, 2.5, hInfo[i][iPos][0], hInfo[i][iPos][1], hInfo[i][iPos][2]))
  278.             {
  279.                 if(hInfo[i][Locked]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Das Haus ist abgeschlossen.");
  280.                 SetPlayerInterior(playerid, 0);
  281.                 SetPlayerPos(playerid, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]);
  282.                 return SetPlayerVirtualWorld(playerid, 0);
  283.             }
  284.         }
  285.     }
  286.     return 1;
  287. }
  288.  
  289. public OnRconLoginAttempt(ip[], password[], success)
  290. {
  291.     return 1;
  292. }
  293.  
  294. public OnPlayerUpdate(playerid)
  295. {
  296.     return 1;
  297. }
  298.  
  299. public OnPlayerStreamIn(playerid, forplayerid)
  300. {
  301.     return 1;
  302. }
  303.  
  304. public OnPlayerStreamOut(playerid, forplayerid)
  305. {
  306.     return 1;
  307. }
  308.  
  309. public OnVehicleStreamIn(vehicleid, forplayerid)
  310. {
  311.     return 1;
  312. }
  313.  
  314. public OnVehicleStreamOut(vehicleid, forplayerid)
  315. {
  316.     return 1;
  317. }
  318.  
  319. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  320. {
  321.     return 1;
  322. }
  323.  
  324. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  325. {
  326.     return 1;
  327. }
  328.  
  329. stock LoadHouse(ID)
  330. {
  331.     format(path, 21, "houses/%d.ini", ID);
  332.    
  333.     hInfo[ID][Price] = dini_Int(path, "Price");
  334.     hInfo[ID][Rent] = dini_Int(path, "Rent");
  335.     hInfo[ID][ePos][0] = dini_Float(path, "PosX");
  336.     hInfo[ID][ePos][1] = dini_Float(path, "PosY");
  337.     hInfo[ID][ePos][2] = dini_Float(path, "PosZ");
  338.     hInfo[ID][VirWorld] = dini_Int(path, "VirWorld");
  339.     hInfo[ID][InterID] = dini_Int(path, "InterID");
  340.     hInfo[ID][iPos][0] = dini_Float(path, "InterX");
  341.     hInfo[ID][iPos][1] = dini_Float(path, "InterY");
  342.     hInfo[ID][iPos][2] = dini_Float(path, "InterZ");
  343.     hInfo[ID][Locked] = dini_Int(path, "Locked");
  344.    
  345.     format(hInfo[ID][Owner], MAX_PLAYER_NAME, "%s", dini_Get(path, "Owner"));
  346.    
  347.     if(hInfo[ID][Price] == -1) format(str, 128, "Haus\nBesitzer: %s\nMiete: %d$\nTippe /mieten", hInfo[ID][Owner], hInfo[ID][Rent]);
  348.     else format(str, 64, "Haus\nZu Verkaufen\nPreis: %d$\nTippe /kaufen", hInfo[ID][Price]);
  349.    
  350.     hInfo[ID][Label] = Create3DTextLabel(str, COLOR_ORANGE, hInfo[ID][ePos][0], hInfo[ID][ePos][1], hInfo[ID][ePos][2]+0.6, 30.0, 0, 1);
  351.     hInfo[ID][PickUp] = CreatePickup(1273, 1, hInfo[ID][ePos][0], hInfo[ID][ePos][1], hInfo[ID][ePos][2]);
  352. }
  353.  
  354. stock UnLoadHouse(ID)
  355. {
  356.     hInfo[ID][Price] = 0;
  357.     hInfo[ID][Rent] = 0;
  358.     hInfo[ID][ePos][0] = 0;
  359.     hInfo[ID][ePos][1] = 0;
  360.     hInfo[ID][ePos][2] = 0;
  361.     hInfo[ID][VirWorld] = 0;
  362.     hInfo[ID][InterID] = 0;
  363.     hInfo[ID][iPos][0] = 0;
  364.     hInfo[ID][iPos][1] = 0;
  365.     hInfo[ID][iPos][2] = 0;
  366.     hInfo[ID][Owner] = 0;
  367.     Delete3DTextLabel(hInfo[ID][Label]);
  368.     DestroyPickup(hInfo[ID][PickUp]);
  369. }
  370.  
  371. stock AddHouse(ID, Float:X, Float:Y, Float:Z, price, inter, world)
  372. {
  373.     format(path, 21, "houses/%d.ini", ID);
  374.     dini_Create(path);
  375.     switch (inter)
  376.     {
  377.         case 3: { hInfo[ID][iPos][0] = 235.508994; hInfo[ID][iPos][1] = 1189.169897; hInfo[ID][iPos][2] = 1080.339966; }
  378.         case 2: { hInfo[ID][iPos][0] = 225.756989; hInfo[ID][iPos][1] = 1240.000000; hInfo[ID][iPos][2] = 1082.149902; }
  379.         case 1: { hInfo[ID][iPos][0] = 223.043991; hInfo[ID][iPos][1] = 1289.259888; hInfo[ID][iPos][2] = 1082.199951; }
  380.     }
  381.     hInfo[ID][ePos][0] = X;
  382.     hInfo[ID][ePos][1] = Y;
  383.     hInfo[ID][ePos][2] = Z;
  384.     hInfo[ID][Price] = price;
  385.     hInfo[ID][InterID] = inter;
  386.     hInfo[ID][VirWorld] = world;
  387.     hInfo[ID][Locked] = 1;
  388.     hInfo[ID][Owner] = 0;
  389.     hInfo[ID][Rent] = 0;
  390.     format(str, 64, "Haus\nZu Verkaufen\nPreis: %d$\nTippe /kaufen", hInfo[ID][Price]);
  391.  
  392.     hInfo[ID][Label] = Create3DTextLabel(str, COLOR_ORANGE, hInfo[ID][ePos][0], hInfo[ID][ePos][1], hInfo[ID][ePos][2]+0.6, 30.0, 0, 1);
  393.     hInfo[ID][PickUp] = CreatePickup(1273, 1, hInfo[ID][ePos][0], hInfo[ID][ePos][1], hInfo[ID][ePos][2]);
  394.     printf("i[0]=%f | i[1]=%f | i[2]=%f || e[0]=%f | e[1]=%f | e[2]=%f", hInfo[ID][iPos][0], hInfo[ID][iPos][1], hInfo[ID][iPos][2], hInfo[ID][ePos][0], hInfo[ID][ePos][1], hInfo[ID][ePos][2]);
  395. }
  396.  
  397. stock SaveHouse(ID)
  398. {
  399.     format(path, 21, "houses/%d.ini", ID);
  400.     dini_Set(path, "Owner", hInfo[ID][Owner]);
  401.     dini_IntSet(path, "Price", hInfo[ID][Price]);
  402.     dini_IntSet(path, "Rent", hInfo[ID][Rent]);
  403.     dini_FloatSet(path, "PosX", hInfo[ID][ePos][0]);
  404.     dini_FloatSet(path, "PosY", hInfo[ID][ePos][1]);
  405.     dini_FloatSet(path, "PosZ", hInfo[ID][ePos][2]);
  406.     dini_IntSet(path, "InterID", hInfo[ID][InterID]);
  407.     dini_IntSet(path, "VirWorld", hInfo[ID][VirWorld]);
  408.     dini_FloatSet(path, "InterX", hInfo[ID][iPos][0]);
  409.     dini_FloatSet(path, "InterY", hInfo[ID][iPos][1]);
  410.     dini_FloatSet(path, "InterZ", hInfo[ID][iPos][2]);
  411.     dini_IntSet(path, "Locked", hInfo[ID][Locked]);
  412. }
Advertisement
Add Comment
Please, Sign In to add comment