Код:
#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;
}