Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //House System by VicetoN/SyntricT/Roee ReaZoN
- #include <a_samp>
- #include <YSI\y_va>
- #include <YSI\y_ini>
- #include <YSI\y_inline>
- #include <sscanf2>
- #include <zcmd>
- #define function%0(%1) forward %0(%1); public %0(%1)
- #define MAX_HOUSES 500
- enum HouseInfo
- {
- HouseID,
- HousePickup,
- Text3D:HouseText,
- HousePrice,
- HouseWorld,
- HouseInt,
- HouseOwned,
- HouseOwner[128],
- Float:HX,
- Float:HY,
- Float:HZ,
- Float:EHX,
- Float:EHY,
- Float:EHZ
- };
- new hInfo[MAX_HOUSES][HouseInfo], PickHouse[MAX_PLAYERS], WorldH=0, IDH=0;
- public OnFilterScriptInit()
- {
- new str[128];
- if(!fexist("Houses/Houses.ini"))
- {
- new INI:File = INI_Open("Houses/Houses.ini");
- INI_WriteInt(File, "ID", 0);
- INI_WriteInt(File, "World", 0);
- INI_Close(File);
- }
- for(new i=1; i<=MAX_HOUSES; i++)
- {
- if(!fexist(hFile(i)))
- {
- new INI:File = INI_Open(hFile(i));
- INI_WriteInt(File, "HouseID", 0);
- INI_WriteInt(File, "HousePrice", 0);
- INI_WriteInt(File, "HouseWorld", 0);
- INI_WriteInt(File, "HouseInt", 0);
- INI_WriteInt(File, "HouseOwned", 0);
- INI_WriteString(File, "HouseOwner", "(null)");
- INI_WriteFloat(File, "HX", 0);
- INI_WriteFloat(File, "HY", 0);
- INI_WriteFloat(File, "HZ", 0);
- INI_WriteFloat(File, "EHX", 0);
- INI_WriteFloat(File, "EHY", 0);
- INI_WriteFloat(File, "EHZ", 0);
- INI_Close(File);
- }
- inline LoadHouse(string:name[], string:value[])
- {
- INI_Int("HouseID", hInfo[i][HouseID]);
- INI_Int("HousePrice", hInfo[i][HousePrice]);
- INI_Int("HouseWorld", hInfo[i][HouseWorld]);
- INI_Int("HouseInt", hInfo[i][HouseInt]);
- INI_Int("HouseOwned", hInfo[i][HouseOwned]);
- INI_String("HouseOwner", hInfo[i][HouseOwner], 25);
- INI_Float("HX", hInfo[i][HX]);
- INI_Float("HY", hInfo[i][HY]);
- INI_Float("HZ", hInfo[i][HZ]);
- INI_Float("EHX", hInfo[i][EHX]);
- INI_Float("EHY", hInfo[i][EHY]);
- INI_Float("EHZ", hInfo[i][EHZ]);
- }
- INI_ParseFile(hFile(i), using inline "LoadHouse");
- hInfo[i][HousePickup] = CreatePickup(1273, 1, hInfo[i][HX], hInfo[i][HY], hInfo[i][HZ], 0);
- format(str, sizeof(str), "%d :îñôø áéú\n%d$ :îçéø\nôðåé ìøëéùä", i, hInfo[i][HousePrice]);
- hInfo[i][HouseText] = Create3DTextLabel(str, -1, hInfo[i][HX], hInfo[i][HY], hInfo[i][HZ], 50, 0, 0);
- if(hInfo[i][HouseOwned] == 1)
- {
- format(str, sizeof(str), "%d :îñôø áéú\n%s :áòìéí", i, hInfo[i][HouseOwner]);
- Update3DTextLabelText(hInfo[i][HouseText], -1, str);
- }
- }
- inline LoadHouseData(string:name[], string:value[])
- {
- INI_Int("ID", IDH);
- INI_Int("World", WorldH);
- }
- INI_ParseFile("Houses/Houses.ini", using inline "LoadHouseData");
- return 1;
- }
- public OnFilterScriptExit()
- {
- new INI:_File = INI_Open("Houses/Houses.ini");
- INI_WriteInt(_File, "ID", IDH);
- INI_WriteInt(_File, "World", WorldH);
- INI_Close(_File);
- for(new i=1; i<=MAX_HOUSES; i++)
- {
- new INI:File = INI_Open(hFile(i));
- INI_WriteInt(File, "HouseID", hInfo[i][HouseID]);
- INI_WriteInt(File, "HousePrice", hInfo[i][HousePrice]);
- INI_WriteInt(File, "HouseWorld", hInfo[i][HouseWorld]);
- INI_WriteInt(File, "HouseInt", hInfo[i][HouseInt]);
- INI_WriteInt(File, "HouseOwned", hInfo[i][HouseOwned]);
- INI_WriteString(File, "HouseOwner", hInfo[i][HouseOwner]);
- INI_WriteFloat(File, "HX", hInfo[i][HX]);
- INI_WriteFloat(File, "HY", hInfo[i][HY]);
- INI_WriteFloat(File, "HZ", hInfo[i][HZ]);
- INI_WriteFloat(File, "EHX", hInfo[i][EHX]);
- INI_WriteFloat(File, "EHY", hInfo[i][EHY]);
- INI_WriteFloat(File, "EHZ", hInfo[i][EHZ]);
- INI_Close(File);
- Delete3DTextLabel(hInfo[i][HouseText]);
- DestroyPickup(hInfo[i][HousePickup]);
- }
- return 1;
- }
- CMD:addhouse(playerid, params[])
- {
- if(!IsPlayerAdmin(playerid)) return 0;
- if(sscanf(params, "dd", params[0], params[1])) return SendClientMessage (playerid, -1, "/addhouse price <12/2/8/3/7/5>");
- //if(params[1] != 12 || params[1] != 2 || params[1] != 8 || params[1] != 3 || params[1] != 7 || params[1] != 5) return SendClientMessage(playerid, 0xFF0000FF, ".ñåâ áéú ùâåé");
- new Float:Pos[3], str[70];
- GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
- IDH++;
- WorldH++;
- hInfo[IDH+1][HX] = Pos[0];
- hInfo[IDH][HY] = Pos[1];
- hInfo[IDH][HZ] = Pos[2];
- hInfo[IDH][HouseOwned] = 0;
- hInfo[IDH][HouseOwner] = EOS;
- hInfo[IDH][HouseInt] = params[1];
- hInfo[IDH][HouseWorld] = WorldH;
- hInfo[IDH][HousePrice] = params[0];
- hInfo[IDH][HouseID] = IDH;
- switch(params[1])
- {
- case 12:
- {
- hInfo[IDH][EHX] = 444.646911,
- hInfo[IDH][EHY] = 508.239044,
- hInfo[IDH][EHZ] = 1001.419494;
- }
- case 2:
- {
- hInfo[IDH][EHX] = 225.756989,
- hInfo[IDH][EHY] = 1240.000000,
- hInfo[IDH][EHZ] = 1082.149902;
- }
- case 8:
- {
- hInfo[IDH][EHX] = 2365.3000,
- hInfo[IDH][EHY] = -1132.9200,
- hInfo[IDH][EHZ] = 1050.8750;
- }
- case 3:
- {
- hInfo[IDH][EHX] = 235.508994,
- hInfo[IDH][EHY] = 1189.169897,
- hInfo[IDH][EHZ] = 1080.339966;
- }
- case 7:
- {
- hInfo[IDH][EHX] = 225.630997,
- hInfo[IDH][EHY] = 1022.479980,
- hInfo[IDH][EHZ] = 1084.069946;
- }
- case 5:
- {
- hInfo[IDH][EHX] = 1263.0800,
- hInfo[IDH][EHY] = -785.3090,
- hInfo[IDH][EHZ] = 1091.9063;
- }
- }
- hInfo[IDH][HousePickup] = CreatePickup(1273, 1, Pos[0], Pos[1], Pos[2], 0);
- format(str, sizeof(str), "%d :îñôø áéú\n%d$ :îçéø\nôðåé ìøëéùä", IDH, params[0]);
- hInfo[IDH][HouseText] = Create3DTextLabel(str, -1, Pos[0], Pos[1], Pos[2], 50, 0, 0);
- return 1;
- }
- CMD:worldh(playerid, params[])
- {
- SendFormatMessage(playerid, -1, "WORLD: %d | HID: %d", WorldH, IDH);
- return 1;
- }
- CMD:exithouse(playerid, params[])
- {
- if(GetPlayerInterior(playerid) != hInfo[PickHouse[playerid]][HouseInt]) return SendClientMessage(playerid, -1, ".àéðê ðîöà ááéúê");
- SetPlayerVirtualWorld(playerid, 0);
- SetPlayerInterior(playerid, 0);
- SpawnPlayer(playerid);
- SendClientMessage(playerid, -1, ".éöàú îáéúê áäöìçä");
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- for(new i=1; i<=MAX_HOUSES; i++)
- {
- if(pickupid == hInfo[i][HousePickup])
- {
- ShowPlayerDialog(playerid, 28, DIALOG_STYLE_LIST, "HOUSE BY SYNTRICT WWW.GTA-IL.NET", "÷ðééú äáéú\nîëéøú äáéú\nëðéñú äáéú", "àéùåø", "áéèåì");
- PickHouse[playerid] = i;
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == 28)
- {
- if(!response) return true;
- new str[100];
- switch(listitem)
- {
- case 0:
- {
- if(hInfo[PickHouse[playerid]][HouseOwned] == 1) return SendFormatMessage(playerid, -1, ".%s áéú æä ëáø ááòìåúå ùì äùç÷ï", hInfo[PickHouse[playerid]][HouseOwner]);
- if(GetPlayerMoney(playerid) < hInfo[PickHouse[playerid]][HousePrice]) return SendFormatMessage(playerid, -1, ".[%d$] àéï áøùåúê àú ñëåí äëñó äðãøù", hInfo[PickHouse[playerid]][HousePrice]);
- GivePlayerMoney(playerid, -hInfo[PickHouse[playerid]][HousePrice]);
- hInfo[PickHouse[playerid]][HouseOwner] = GetName(playerid);
- hInfo[PickHouse[playerid]][HouseOwned] = 1;
- format(str, sizeof(str), "%d :îñôø áéú\n%s :áòìéí", PickHouse[playerid], hInfo[PickHouse[playerid]][HouseOwner]);
- Update3DTextLabelText(hInfo[PickHouse[playerid]][HouseText], -1, str);
- SendFormatMessage(-1, -1, ".÷ðä áéú %s äùç÷ï", hInfo[PickHouse[playerid]][HouseOwner]);
- }
- case 1:
- {
- if(strcmp(GetName(playerid), hInfo[PickHouse[playerid]][HouseOwner], false)) return SendClientMessage(playerid, -1, ".áéú æä àéðå ááòìåúê");
- if(hInfo[PickHouse[playerid]][HouseOwned] == 0) return SendClientMessage(playerid, -1, ".àéï àôùøåú ìîëåø áéú æä");
- GivePlayerMoney(playerid, hInfo[PickHouse[playerid]][HousePrice]/2);
- SendClientMessage(playerid, -1, ".îëøú àú áéúê å÷éáìú îçöéú îòøëå");
- hInfo[PickHouse[playerid]][HouseOwner] = EOS;
- hInfo[PickHouse[playerid]][HouseOwned] = 0;
- format(str, sizeof(str), "%d :îñôø áéú\n%d$ :îçéø\nôðåé ìøëéùä", PickHouse[playerid], hInfo[PickHouse[playerid]][HousePrice]);
- Update3DTextLabelText(hInfo[PickHouse[playerid]][HouseText], -1, str);
- }
- case 2:
- {
- if(strcmp(GetName(playerid), hInfo[PickHouse[playerid]][HouseOwner], false)) return SendClientMessage(playerid, 0xFF0000FF, ".áéú æä àéðå ááòìåúê");
- SetPlayerVirtualWorld(playerid, hInfo[PickHouse[playerid]][HouseWorld]);
- SetPlayerInterior(playerid, hInfo[PickHouse[playerid]][HouseInt]);
- SetPlayerPos(playerid, hInfo[PickHouse[playerid]][EHX], hInfo[PickHouse[playerid]][EHY], hInfo[PickHouse[playerid]][EHZ]);
- SendClientMessage(playerid, -1, ".ðëðñú áäöìçä ìáéúê");
- SendClientMessage(playerid, -1, "./ExitHouse - ìéöéàä îäáéú ä÷ù/é");
- }
- }
- }
- return 1;
- }
- stock hFile(houseid)
- {
- new file[15];
- format(file, sizeof(file), "Houses/%d.ini", houseid);
- return file;
- }
- stock GetName(playerid)
- {
- new name[128];
- GetPlayerName(playerid, name, sizeof(name));
- return name;
- }
- stock SendFormatMessage ( playerid, color, const format [ ], va_args<> ) return ( playerid == -1 )? SendClientMessageToAll ( color, va_return ( format, va_start<3> ) ) : SendClientMessage ( playerid, color, va_return ( format, va_start<3> ) );
Advertisement
Add Comment
Please, Sign In to add comment