house sistem
#10

now it's good?

Код:
#include 			<a_samp>
#include 			<a_npc>
#include 			<zcmd>
#include 			<foreach>
#include            <sscanf2>
#include 			<streamer>
#include 			<YSI\y_ini>

#define COLOR_GREY       0xAFAFAFAA
#define COLOR_BLUE2      0x4682B4FF
#define COLOR_RED        0xFF0000AA
#define COLOR_YELLOW     0xE9E312FF
#define COLOR_ORANGE     0xFF9900AA
#define COLOR_WHITE      0xFFFEFFFF
#define COLOR_GREEN      0x33AA33AA
#define COLOR_BLUE       0x0000FFFF
#define COLOR_LIGHTGREEN 0x90EE90FF
#define COLOR_OLIVE      0x808000FF
#define COLOR_SALAMON    0xFA8072FF
#define COLOR_BLACK      0x000000FF

enum
{
    HOUSE_MENU,
    HOUSE_LEVEL,
    HOUSE_INTERIOR,
    HOUSE_PRICE,
    HOUSE_BUY,
    HOUSE_ID
}

enum hInfo {
    bool:hOwned,
    hOwner[MAX_PLAYER_NAME],
    hID, //house id
    hLevel,
    Text3D:hLabel,
    Float:hEX, //house exterior X
    Float:hEY,
    Float:hEZ,
    Float:hIX, //house interior x
    Float:hIY,
    Float:hIZ,
    hInterior,
    hPickup,
    hPrice
};
new HouseInfo[MAX_PLAYERS][hInfo];
new HouseCount;
new houseid;

#define HousePATH "House/%d.ini"
#define MAX_HOUSES 100

forward LoadHouse_data(playerid, name[], value[]);
public LoadHouse_data(playerid, name[], value[])
{
	new Name[24], string[128];
	GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
	INI_String("Owner", Name, 48);
	INI_Float("HEX", HouseInfo[playerid][hEX]);
	INI_Float("HEY", HouseInfo[playerid][hEY]);
	INI_Float("HEZ", HouseInfo[playerid][hEZ]);
	INI_Float("HIX", HouseInfo[playerid][hIX]);
	INI_Float("HIY", HouseInfo[playerid][hIY]);
	INI_Float("HIZ", HouseInfo[playerid][hIZ]);
	INI_Int("hInterior", HouseInfo[playerid][hInterior]);
	INI_Int("hPick", HouseInfo[playerid][hPickup]);
	INI_Int("hPrice", HouseInfo[playerid][hPrice]);
	INI_Int("HouseID", HouseInfo[playerid][hID]);
	INI_Int("HouseLevel", HouseInfo[playerid][hLevel]);
	INI_Int("HousePrice", HouseInfo[playerid][hPrice]);

	if(HouseInfo[playerid][hOwner] == 1)
	{
    	format(string, sizeof string, "Owner : " "%s \n", Name);
    	HouseInfo[playerid][hLabel] = Create3DTextLabel(string, COLOR_RED, HouseInfo[playerid][hEX], HouseInfo[playerid][hEY], HouseInfo[playerid][hEZ], 7.0, 0);
    	HouseInfo[houseid][hPickup] = CreateDynamicCP(HouseInfo[playerid][hEX], HouseInfo[playerid][hEY], HouseInfo[playerid][hEZ], 2, 0, 0, 0, 20);
	}
	else
	{
    	format(string, sizeof string, "Owner : " "The State \n" "Pret : " "%d\n", HouseInfo[playerid][hPrice]);
    	HouseInfo[playerid][hLabel] = Create3DTextLabel(string, COLOR_RED, HouseInfo[playerid][hEX], HouseInfo[playerid][hEY], HouseInfo[playerid][hEZ], 7.0, 0);
    	HouseInfo[houseid][hPickup] = CreateDynamicCP(HouseInfo[playerid][hEX], HouseInfo[playerid][hEY], HouseInfo[playerid][hEZ], 2, 0, 0, 0, 20);
    }
	return 1;
}

CMD:givemoney(playerid, params[])
{
    new targetid, amount;
    if(sscanf(params, "ud", targetid, amount)) return SendClientMessage(playerid, -1, "usage - /givemoney <playerid/part of name> <amount>");
	if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "Player is not connected");
	GivePlayerMoney(targetid, amount);
	SetPlayerScore(targetid, GetPlayerScore(targetid) + 1);
	return 1;
}

CMD:createhouse(playerid,params[])
{
 	ShowPlayerDialog(playerid, HOUSE_LEVEL, DIALOG_STYLE_INPUT, "House ID", "ID-ul casei.\n" , "Set", "Cancel");
	return 1;
}
CMD:buyhouse(playerid,params[])
{
	for(new h = 0; h < MAX_HOUSES; h++)
    {
		if(!fexist(HousePath()))
		{
			INI_ParseFile(HousePath(), "LoadHouse_%d", .bExtra = true, .extra = playerid);
  			ShowPlayerDialog(playerid, 5000, DIALOG_STYLE_MSGBOX, "House Sistem", "Asta este casa ta ,vrei sa intri in ea? ", "Da", "Nu");
		}
 		else
		{
 			ShowPlayerDialog(playerid, HOUSE_BUY, DIALOG_STYLE_MSGBOX, "House Sistem", "Vrei sa cumperi aceasta casa? ", "Da", "Nu");
		}
    }
   	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	if(dialogid == HOUSE_BUY)
	{
		if(response)
		{
            if(GetPlayerMoney(playerid) > HouseInfo[playerid][hPrice])
	    	{
            	SendClientMessage(playerid, COLOR_GREEN, "House created ");

            	new string[128];
            	format(string, sizeof string, "House ID : %d" "Owner: %s \n",HouseInfo[playerid][hID], PlayerName(playerid));
             	Update3DTextLabelText(HouseInfo[playerid][hLabel], COLOR_RED, string);

            	new INI:File = INI_Open(HousePath());
				INI_WriteString(File, "Owned", PlayerName(playerid));
				INI_WriteInt(File, "HouseID", HouseInfo[playerid][hID]);
				INI_WriteInt(File, "HouseLevel", HouseInfo[playerid][hLevel]);
				INI_WriteInt(File, "HousePrice", HouseInfo[playerid][hPrice]);
				INI_WriteFloat(File, "HEX", HouseInfo[playerid][hEX]);
				INI_WriteFloat(File, "HEY", HouseInfo[playerid][hEY]);
				INI_WriteFloat(File, "HEZ", HouseInfo[playerid][hEZ]);
				INI_WriteFloat(File, "HIZ", HouseInfo[playerid][hIX]);
				INI_WriteFloat(File, "HIY", HouseInfo[playerid][hIY]);
				INI_WriteFloat(File, "HIZ", HouseInfo[playerid][hIZ]);
				INI_WriteInt(File, "HInt", HouseInfo[playerid][hInterior]);
            	INI_Close(File);
		    }
		    else SendClientMessage(playerid, COLOR_LIGHTGREEN, "You can not afford this house! ");
    	}
	}
	if(dialogid == HOUSE_ID && response)
	{
	   new str[120];
	   if(!strlen(inputtext)) return ShowPlayerDialog(playerid, HOUSE_LEVEL, DIALOG_STYLE_INPUT, "House ID", "ID-ul casei.\n" , "Set", "Cancel");
	   format(str, sizeof str, "ID-ul casei este %d casei tale", strval(inputtext));
	   HouseInfo[playerid][hID] = strval(inputtext);
       new INI:File = INI_Open(HousePath());
       INI_WriteInt(File, "HouseID", HouseInfo[playerid][hID]);
       INI_Close(File);
	   ShowPlayerDialog(playerid, HOUSE_LEVEL, DIALOG_STYLE_INPUT, "House Level", "Alege un level care vrei sa il aiba casa ta.\n" , "Set", "Cancel");
	}
	if(dialogid == HOUSE_LEVEL && response)
	{
	   new str[120];
	   if(!strlen(inputtext)) return ShowPlayerDialog(playerid, HOUSE_LEVEL, DIALOG_STYLE_INPUT, "House Level", "Alege un level care vrei sa il aiba casa ta.\n" , "Set", "Cancel");
	   format(str, sizeof str, "Ai setat level %d casei tale", strval(inputtext));
	   HouseInfo[playerid][hLevel] = strval(inputtext);
       new INI:File = INI_Open(HousePath());
       INI_WriteInt(File, "HouseLevel", HouseInfo[playerid][hLevel]);
       INI_Close(File);
	   ShowPlayerDialog(playerid,HOUSE_INTERIOR, DIALOG_STYLE_INPUT, "House INT", "Alege interiorul casei:", "Set", "Cancel");
	}
	if(dialogid == HOUSE_INTERIOR && response)
	{
       new str[120];
	   if(!strlen(inputtext)) return ShowPlayerDialog(playerid, HOUSE_INTERIOR, DIALOG_STYLE_INPUT, "House Interior", "Alege un level care vrei sa il aiba casa ta.\n" , "Set", "Cancel");
	   format(str, sizeof str, "Ai setat interiorul %d", strval(inputtext));
	   HouseInfo[playerid][hInterior] = strval(inputtext);
	   ShowPlayerDialog(playerid, HOUSE_PRICE, DIALOG_STYLE_INPUT, "House Price", "Alege pretul casei.\n" , "Set", "Cancel");
	}
	if(dialogid == HOUSE_PRICE && response)
	{
	   new str[120],hprice, Float:X, Float:Y, Float:Z;
	   GetPlayerPos(playerid, X, Y, Z);
	   HouseInfo[playerid][hPrice] = hprice;
	   if(!strlen(inputtext)) return ShowPlayerDialog(playerid, HOUSE_PRICE, DIALOG_STYLE_INPUT, "House Price", "Alege pretul casei.\n" , "Set", "Cancel");
	   format(str, sizeof str, "Casa costa %d$", strval(inputtext));
	   HouseInfo[playerid][hPrice] = strval(inputtext);
       new INI:File = INI_Open(HousePath());
       INI_WriteInt(File, "HousePrice", HouseInfo[playerid][hPrice]);
       INI_Close(File);
   	   new string[128];
	   format(string, sizeof string, "Owner : brak \n" "Pret : %d\n", hprice);
	   HouseInfo[playerid][hLabel] = Create3DTextLabel(string, COLOR_RED, X, Y, Z, 7.0, 0);
	   HouseInfo[playerid][hPickup] = CreateDynamicPickup(1273, 1, X, Y, X, -1, -1, -1, 100.0);
	}
	return 1;
}


public OnPlayerDisconnect(playerid, reason)
{
	new INI:File = INI_Open(HousePath());
	INI_SetTag(File,"data");
	INI_WriteString(File, "Owned", HouseInfo[playerid][hOwner]);
	INI_WriteInt(File, "HouseID", HouseInfo[playerid][hID]);
	INI_WriteInt(File, "HouseLevel", HouseInfo[playerid][hLevel]);
	INI_WriteInt(File, "HousePrice", HouseInfo[playerid][hPrice]);
	INI_WriteFloat(File, "HEX", HouseInfo[playerid][hEX]);
	INI_WriteFloat(File, "HEY", HouseInfo[playerid][hEY]);
	INI_WriteFloat(File, "HEZ", HouseInfo[playerid][hEZ]);
	INI_WriteFloat(File, "HIZ", HouseInfo[playerid][hIX]);
	INI_WriteFloat(File, "HIY", HouseInfo[playerid][hIY]);
	INI_WriteFloat(File, "HIZ", HouseInfo[playerid][hIZ]);
	INI_WriteInt(File, "HInt", HouseInfo[playerid][hInterior]);
	INI_Close(File);
    return 1;
 }
main()
{
	print("\n----------------------------------");
	print("  Bare Script\n");
	print("----------------------------------\n");
}

public OnPlayerConnect(playerid)
{
	GameTextForPlayer(playerid,"~w~SA-MP: ~r~Bare Script",5000,5);
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	new idx;
	new cmd[256];
	
	cmd = strtok(cmdtext, idx);

	if(strcmp(cmd, "/yadayada", true) == 0) {
    	return 1;
	}

	return 0;
}

public OnPlayerSpawn(playerid)
{
	SetPlayerInterior(playerid,0);
	TogglePlayerClock(playerid,0);
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
   	return 1;
}

SetupPlayerForClassSelection(playerid)
{
 	SetPlayerInterior(playerid,14);
	SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
	SetPlayerFacingAngle(playerid, 270.0);
	SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
	SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
}

public OnPlayerRequestClass(playerid, classid)
{
	SetupPlayerForClassSelection(playerid);
	return 1;
}

public OnGameModeInit()
{
	SetGameModeText("Bare Script");
	ShowPlayerMarkers(1);
	ShowNameTags(1);
	AllowAdminTeleport(1);

	AddPlayerClass(265,1958.3783,1343.1572,15.3746,270.1425,0,0,0,0,-1,-1);

	return 1;
}

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}
stock HousePath()
{
	new string[256];
	format(string, sizeof string, HousePATH, HouseCount);
	return string;
}
stock PlayerName(playerid)
{
	new name[24];
	GetPlayerName(playerid, name, MAX_PLAYER_NAME);
	return name;
}
Reply


Messages In This Thread
house sistem - by xAlecsu - 17.08.2017, 20:36
Re: house sistem - by JasonRiggs - 17.08.2017, 23:13
Re: house sistem - by xLucy - 18.08.2017, 09:34
Re: house sistem - by Misiur - 18.08.2017, 09:38
Re: house sistem - by Immortal99 - 18.08.2017, 11:41
Re: house sistem - by Misiur - 18.08.2017, 11:46
Re: house sistem - by Immortal99 - 18.08.2017, 11:54
Re: house sistem - by xAlecsu - 19.08.2017, 17:44
Re: house sistem - by TheCman - 19.08.2017, 18:56
Re: house sistem - by xAlecsu - 19.08.2017, 19:56

Forum Jump:


Users browsing this thread: 1 Guest(s)