Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- SHS - Simple House System 0.1
- Copyright:
- SHS - dead
- dini - DracoBlue (Download: http://dracoblue.net/download/dini-16/35/)
- Installation:
- Erstelle in den Scriptfiles einen Ordner mit dem Namen "Houses".
- Nun kannst du IG (= InGame) als RCON-Admin kaufbare Häuser mit /hinzufügen erstellen.
- */
- #include <a_samp>
- #include <dini>
- #define MAX_HOUSES 100
- #define COLOR_ORANGE 0xf39200FF
- enum hData
- {
- Float:ePos[3],
- Float:iPos[3],
- InterID,
- VirWorld,
- Locked,
- Owner[MAX_PLAYER_NAME],
- Price,
- Rent,
- Text3D:Label,
- PickUp
- }
- new hInfo[MAX_HOUSES][hData];
- new path[21], str[128], name[MAX_PLAYER_NAME], Float:pPos[3], bool:bHouse[MAX_PLAYERS];
- public OnFilterScriptInit()
- {
- for(new i=0; i<MAX_HOUSES; i++)
- {
- if(dini_Exists(path))
- {
- LoadHouse(0);
- }
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i=0; i<MAX_HOUSES; i++)
- {
- format(path, 21, "houses/%d.ini", i);
- if(dini_Exists(path))
- {
- SaveHouse(i);
- UnLoadHouse(i);
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- for(new i=0; i<MAX_HOUSES; i++)
- {
- print(hInfo[i][Owner]);
- 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;
- break;
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(strcmp("/kill", cmdtext, true) == 0) return SetPlayerHealth(playerid, 0);
- if(strcmp("/haushilfe", cmdtext, true) == 0)
- {
- if(IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_ORANGE, "Haushilfe: {FFFFFF}/hinzufügen - Haus erstellen (Admin)");
- SendClientMessage(playerid, COLOR_ORANGE, "Haushilfe: {FFFFFF}/kaufen - Haus kaufen | /verkaufen - Haus verkaufen | /tür - Tür öffnen/schließen");
- return SendClientMessage(playerid, COLOR_ORANGE, "Haushilfe: {FFFFFF}/mieten - Wohnung mieten | /miete - Miete ändern");
- }
- if(strcmp("/tür", cmdtext, true) == 0)
- {
- for(new i=0; i<MAX_HOUSES; i++)
- {
- 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]))
- {
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- if(strcmp(name, hInfo[i][Owner], true)) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du bist nicht der Besitzer dieses Hauses.");
- if(hInfo[i][Locked]) hInfo[i][Locked] = 0;
- else hInfo[i][Locked] = 1;
- }
- }
- return 1;
- }
- if(strcmp("/kaufen", cmdtext, true) == 0)
- {
- if(bHouse[playerid]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du besitzt bereits ein Haus.");
- GivePlayerMoney(playerid, 500000);
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- for(new i=0; i<MAX_HOUSES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.5, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]))
- {
- format(path, 21, "houses/%d.ini", i);
- if(hInfo[i][Price] == -1 || dini_Isset(path, "Renters")) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Das Haus kann nicht gekauft werden.");
- if(GetPlayerMoney(playerid) < hInfo[i][Price]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du hast nicht genug Geld.");
- format(hInfo[i][Owner], MAX_PLAYER_NAME, "%s", name);
- format(str, 64, "Haus\nBesitzer: %s\nMiete: %d$\nTippe /mieten", name, hInfo[i][Rent]);
- Update3DTextLabelText(hInfo[i][Label], COLOR_ORANGE, str);
- GivePlayerMoney(playerid, -hInfo[i][Price]);
- hInfo[i][Price] = -1;
- return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du hast dir ein Haus gekauft, du kannst es nun mit ENTER betreten.");
- }
- else return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Du kannst dir hier kein Haus kaufen.");
- }
- return 1;
- }
- if(strcmp("/hinzufügen", cmdtext, true) == 0)
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_ORANGE, "Information: {FFFFFF}Du bist kein RCON-Admin.");
- for(new i=0; i<MAX_HOUSES; i++)
- {
- format(path, 21, "houses/%d.ini", i);
- if(!dini_Exists(path))
- {
- GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
- AddHouse(i, pPos[0], pPos[1], pPos[2], 12345, 3, 32453);
- printf("%d", i);
- break;
- }
- }
- return 1;
- }
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_SECONDARY_ATTACK)
- {
- for(new i=0; i<MAX_HOUSES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 1.5, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]))
- {
- if(hInfo[i][Locked]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Das Haus ist abgeschlossen.");
- SetPlayerInterior(playerid, hInfo[i][InterID]);
- SetPlayerPos(playerid, hInfo[i][iPos][0], hInfo[i][iPos][1], hInfo[i][iPos][2]);
- return SetPlayerVirtualWorld(playerid, hInfo[i][VirWorld]);
- }
- if(IsPlayerInRangeOfPoint(playerid, 2.5, hInfo[i][iPos][0], hInfo[i][iPos][1], hInfo[i][iPos][2]))
- {
- if(hInfo[i][Locked]) return SendClientMessage(playerid, COLOR_ORANGE, "Haus: {FFFFFF}Das Haus ist abgeschlossen.");
- SetPlayerInterior(playerid, 0);
- SetPlayerPos(playerid, hInfo[i][ePos][0], hInfo[i][ePos][1], hInfo[i][ePos][2]);
- return SetPlayerVirtualWorld(playerid, 0);
- }
- }
- }
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- stock LoadHouse(ID)
- {
- format(path, 21, "houses/%d.ini", ID);
- hInfo[ID][Price] = dini_Int(path, "Price");
- hInfo[ID][Rent] = dini_Int(path, "Rent");
- hInfo[ID][ePos][0] = dini_Float(path, "PosX");
- hInfo[ID][ePos][1] = dini_Float(path, "PosY");
- hInfo[ID][ePos][2] = dini_Float(path, "PosZ");
- hInfo[ID][VirWorld] = dini_Int(path, "VirWorld");
- hInfo[ID][InterID] = dini_Int(path, "InterID");
- hInfo[ID][iPos][0] = dini_Float(path, "InterX");
- hInfo[ID][iPos][1] = dini_Float(path, "InterY");
- hInfo[ID][iPos][2] = dini_Float(path, "InterZ");
- hInfo[ID][Locked] = dini_Int(path, "Locked");
- format(hInfo[ID][Owner], MAX_PLAYER_NAME, "%s", dini_Get(path, "Owner"));
- if(hInfo[ID][Price] == -1) format(str, 128, "Haus\nBesitzer: %s\nMiete: %d$\nTippe /mieten", hInfo[ID][Owner], hInfo[ID][Rent]);
- else format(str, 64, "Haus\nZu Verkaufen\nPreis: %d$\nTippe /kaufen", hInfo[ID][Price]);
- 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);
- hInfo[ID][PickUp] = CreatePickup(1273, 1, hInfo[ID][ePos][0], hInfo[ID][ePos][1], hInfo[ID][ePos][2]);
- }
- stock UnLoadHouse(ID)
- {
- hInfo[ID][Price] = 0;
- hInfo[ID][Rent] = 0;
- hInfo[ID][ePos][0] = 0;
- hInfo[ID][ePos][1] = 0;
- hInfo[ID][ePos][2] = 0;
- hInfo[ID][VirWorld] = 0;
- hInfo[ID][InterID] = 0;
- hInfo[ID][iPos][0] = 0;
- hInfo[ID][iPos][1] = 0;
- hInfo[ID][iPos][2] = 0;
- hInfo[ID][Owner] = 0;
- Delete3DTextLabel(hInfo[ID][Label]);
- DestroyPickup(hInfo[ID][PickUp]);
- }
- stock AddHouse(ID, Float:X, Float:Y, Float:Z, price, inter, world)
- {
- format(path, 21, "houses/%d.ini", ID);
- dini_Create(path);
- switch (inter)
- {
- case 3: { hInfo[ID][iPos][0] = 235.508994; hInfo[ID][iPos][1] = 1189.169897; hInfo[ID][iPos][2] = 1080.339966; }
- case 2: { hInfo[ID][iPos][0] = 225.756989; hInfo[ID][iPos][1] = 1240.000000; hInfo[ID][iPos][2] = 1082.149902; }
- case 1: { hInfo[ID][iPos][0] = 223.043991; hInfo[ID][iPos][1] = 1289.259888; hInfo[ID][iPos][2] = 1082.199951; }
- }
- hInfo[ID][ePos][0] = X;
- hInfo[ID][ePos][1] = Y;
- hInfo[ID][ePos][2] = Z;
- hInfo[ID][Price] = price;
- hInfo[ID][InterID] = inter;
- hInfo[ID][VirWorld] = world;
- hInfo[ID][Locked] = 1;
- hInfo[ID][Owner] = 0;
- hInfo[ID][Rent] = 0;
- format(str, 64, "Haus\nZu Verkaufen\nPreis: %d$\nTippe /kaufen", hInfo[ID][Price]);
- 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);
- hInfo[ID][PickUp] = CreatePickup(1273, 1, hInfo[ID][ePos][0], hInfo[ID][ePos][1], hInfo[ID][ePos][2]);
- 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]);
- }
- stock SaveHouse(ID)
- {
- format(path, 21, "houses/%d.ini", ID);
- dini_Set(path, "Owner", hInfo[ID][Owner]);
- dini_IntSet(path, "Price", hInfo[ID][Price]);
- dini_IntSet(path, "Rent", hInfo[ID][Rent]);
- dini_FloatSet(path, "PosX", hInfo[ID][ePos][0]);
- dini_FloatSet(path, "PosY", hInfo[ID][ePos][1]);
- dini_FloatSet(path, "PosZ", hInfo[ID][ePos][2]);
- dini_IntSet(path, "InterID", hInfo[ID][InterID]);
- dini_IntSet(path, "VirWorld", hInfo[ID][VirWorld]);
- dini_FloatSet(path, "InterX", hInfo[ID][iPos][0]);
- dini_FloatSet(path, "InterY", hInfo[ID][iPos][1]);
- dini_FloatSet(path, "InterZ", hInfo[ID][iPos][2]);
- dini_IntSet(path, "Locked", hInfo[ID][Locked]);
- }
Advertisement
Add Comment
Please, Sign In to add comment