Mr_Dave
Новичок
Сегодня я расскажу как зделать систему квартир на сервере
ищем в моде
и выше встовляем
Потом идём в public SetPlayerSpawn и ищем там
после этого вставляем
в этомже паблике немного ниже встовляем
теперь создадим stock
теперь ищем public LoadProperty
и после встовляем
После,в public OnGameModeInit после всех машин и т.д вы увидите вот такую надпись
у всех по разному,ну что в этом духе,ну так вот после этого встовляем
в public DateProp добавить сразу после }
потом идём в public OnPropUpdate()
и в конце будет Sbizz.cfg или Bizz.cfg
у всех по разному,после этого встовляем
Далее добавим команды в public OnPlayerCommandText:
После ищем команду /enter и встовляем в неё
После ищем команду /exit и встовляем туда
Потом в public OnDialogResponse добавим
Потом в public OnPlayerPickUpPickup(playerid, pickupid) добавить
Потом добавим пикапы:
Чуть не забыл ко всем форвардам добавить
и в Public OnGameModeInit добавить
После в enum pInfo добавить
Потом в public OnPlayerRegister(playerid, password[])
После в public OnPlayerLogin
немного ниже в этомже паблике добавить
и под конец в public OnPlayerConnect добавить
вот и всё ))
Автор Вырезки: Mr_Dave
Вырезано из мода Diamond_City
Может кому пригодится
И вот сам файл с квартирками =)
Ссылка:
ищем в моде
PHP:
enum pInfo
PHP:
enum fInfo
{
fOwned,
fOwner[MAX_PLAYER_NAME],
Float:fEntrancex,
Float:fEntrancey,
Float:fEntrancez,
Float:fExitx,
Float:fExity,
Float:fExitz,
fInt,
fVirtWorld,
fValue,
fLock,
fRent,
fRentabil,
fTakings,
fDate,
fLevel
};
new FlatsInfo[27][fInfo];
new FlatPickup[sizeof(FlatsInfo)];
new Text3D: Flat3D[sizeof(FlatsInfo)];
new flathouse1[2];
new flathouse2[2];
new flathouse3[2];
PHP:
new house = PlayerInfo[playerid][pPhousekey];
PHP:
new flat = PlayerInfo[playerid][pFlatKey];
PHP:
if(flat != 255)
{
if(SpawnChange[playerid]) //If 1, then you get to your house, else spawn somewhere else
{
SetPlayerToTeamColor(playerid);
SetPlayerInterior(playerid,FlatsInfo[flat][fInt]);
SetPlayerPos(playerid, FlatsInfo[flat][fExitx], FlatsInfo[flat][fExity],FlatsInfo[flat][fExitz]); // Warp the player
SetPlayerVirtualWorld(playerid,flat+9999);
return 1;
}
}
PHP:
stock UpdateFlat(idx)
{
new text[600];
if(FlatsInfo[idx][fOwned] == 0)
{
format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nЦена: {7CFC00}%d{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\n\nЧтобы купить квартиру, введите {7CFC00}/buyflat{FFFFFF}",idx,FlatsInfo[idx][fValue],FlatsInfo[idx][fLevel]);
Update3DTextLabelText(Flat3D[idx], 0xFFFFFFFF, text);
DestroyPickup(FlatPickup[idx]);
FlatPickup[idx] = CreatePickup(1273, 23, FlatsInfo[idx][fEntrancex], FlatsInfo[idx][fEntrancey], FlatsInfo[idx][fEntrancez], FlatsInfo[idx][fVirtWorld]);
}
else if(FlatsInfo[idx][fOwned] == 1)
{
format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nВладелец: {7CFC00}%s",idx,FlatsInfo[idx][fOwner]);
Update3DTextLabelText(Flat3D[idx], 0xFFFFFFFF, text);
DestroyPickup(FlatPickup[idx]);
FlatPickup[idx] = CreatePickup(1272, 23, FlatsInfo[idx][fEntrancex], FlatsInfo[idx][fEntrancey], FlatsInfo[idx][fEntrancez], FlatsInfo[idx][fVirtWorld]);
}
}
и после встовляем
PHP:
public LoadFlats()
{
new arrCoords[17][64];
new strFromFile2[256];
new File: file = fopen("flats.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(FlatsInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
FlatsInfo[idx][fOwned] = strval(arrCoords[0]);
strmid(FlatsInfo[idx][fOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
FlatsInfo[idx][fEntrancex] = floatstr(arrCoords[2]);
FlatsInfo[idx][fEntrancey] = floatstr(arrCoords[3]);
FlatsInfo[idx][fEntrancez] = floatstr(arrCoords[4]);
FlatsInfo[idx][fExitx] = floatstr(arrCoords[5]);
FlatsInfo[idx][fExity] = floatstr(arrCoords[6]);
FlatsInfo[idx][fExitz] = floatstr(arrCoords[7]);
FlatsInfo[idx][fInt] = strval(arrCoords[8]);
FlatsInfo[idx][fVirtWorld] = strval(arrCoords[9]);
FlatsInfo[idx][fValue] = strval(arrCoords[10]);
FlatsInfo[idx][fLock] = strval(arrCoords[11]);
FlatsInfo[idx][fRent] = strval(arrCoords[12]);
FlatsInfo[idx][fRentabil] = strval(arrCoords[13]);
FlatsInfo[idx][fTakings] = strval(arrCoords[14]);
FlatsInfo[idx][fDate] = strval(arrCoords[15]);
FlatsInfo[idx][fLevel] = strval(arrCoords[16]);
printf("Квартира: [%d] | Владелец: [%s]",idx,FlatsInfo[idx][fOwner]);
idx++;
}
fclose(file);
}
return 1;
}
PHP:
Дом продаётся
PHP:
for(new f = 0; f < sizeof(FlatsInfo); f++)
{
new text[600];
if(FlatsInfo[f][fOwned] == 0)
{
format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nЦена: {7CFC00}%d{FFFFFF}\nУровень: {7CFC00}%d{FFFFFF}\n\nЧтобы купить квартиру, введите {7CFC00}/buyflat{FFFFFF}",f,FlatsInfo[f][fValue],FlatsInfo[f][fLevel]);
Flat3D[f] = Create3DTextLabel(text,0xFFFFFFFF,FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez]+1,10,FlatsInfo[f][fVirtWorld],1);
FlatPickup[f] = CreatePickup(1272, 23, FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez], FlatsInfo[f][fVirtWorld]); pickups++;
}
else if(FlatsInfo[f][fOwned] == 1)
{
format(text,sizeof(text),"{FF6347} * Квартира * {FFFFFF}\nНомер: {7CFC00}%d{FFFFFF}\nВладелец: {7CFC00}%s",f,FlatsInfo[f][fOwner]);
Flat3D[f] = Create3DTextLabel(text,0xFFFFFFFF,FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez]+1,10,FlatsInfo[f][fVirtWorld],1);
FlatPickup[f] = CreatePickup(1272, 23, FlatsInfo[f][fEntrancex], FlatsInfo[f][fEntrancey], FlatsInfo[f][fEntrancez], FlatsInfo[f][fVirtWorld]); pickups++;
}
}
PHP:
for(new h = 0; h < sizeof(FlatsInfo); h++)
{
if (strcmp(playername, FlatsInfo[h][fOwner], true) == 0)
{
FlatsInfo[h][fDate] = curdate;
OnPropUpdate();
}
}
и в конце будет Sbizz.cfg или Bizz.cfg
у всех по разному,после этого встовляем
PHP:
idx = 0;
while (idx < sizeof(FlatsInfo))
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d,%s,%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
FlatsInfo[idx][fOwned],
FlatsInfo[idx][fOwner],
FlatsInfo[idx][fEntrancex],
FlatsInfo[idx][fEntrancey],
FlatsInfo[idx][fEntrancez],
FlatsInfo[idx][fExitx],
FlatsInfo[idx][fExity],
FlatsInfo[idx][fExitz],
FlatsInfo[idx][fInt],
FlatsInfo[idx][fVirtWorld],
FlatsInfo[idx][fValue],
FlatsInfo[idx][fLock],
FlatsInfo[idx][fRent],
FlatsInfo[idx][fRentabil],
FlatsInfo[idx][fTakings],
FlatsInfo[idx][fDate],
FlatsInfo[idx][fLevel]);
if(idx == 0)
{
file2 = fopen("flats.cfg", io_write);
}
else
{
file2 = fopen("flats.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
PHP:
if(strcmp(cmd, "/flat", true) == 0)
{
GetPlayerName(playerid, playername, sizeof(playername));
if(PlayerInfo[playerid][pFlatKey] != 255 && strcmp(playername, FlatsInfo[PlayerInfo[playerid][pFlatKey]][fOwner], true) == 0)
{
ShowPlayerDialog(playerid,50,DIALOG_STYLE_LIST,"Квартира"," - Открыть/Закрыть\n - Продать","Далее","Выход");
}
else
{
SendClientMessage(playerid,COLOR_GREY, "Ошибка: У вас нет квартиры.");
return 1;
}
}
if(strcmp(cmd, "/sellflat", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GetPlayerName(playerid, playername, sizeof(playername));
if(PlayerInfo[playerid][pFlatKey] == 255)
{
SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас нет квартиры.");
return 1;
}
if(PlayerInfo[playerid][pFlatKey] != 255 && strcmp(playername, FlatsInfo[PlayerInfo[playerid][pFlatKey]][fOwner], true) == 0)
{
new flat = PlayerInfo[playerid][pFlatKey];
FlatsInfo[flat][fLock] = 1;
FlatsInfo[flat][fOwned] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(FlatsInfo[flat][fOwner], "-", 0, strlen("-"), 255);
GivePlayerMoney(playerid,FlatsInfo[flat][fValue]);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
format(string, sizeof(string), "~w~Congratulations~n~ You have sold your property for ~n~~g~$%d", FlatsInfo[flat][fValue]);
GameTextForPlayer(playerid, string, 10000, 3);
PlayerInfo[playerid][pFlatKey] = 255;
//OnPlayerSave(playerid);
UpdateFlat(flat);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас нет квартиры.");
return 1;
}
}
return 1;
}
if(strcmp(cmd, "/buyflat", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new h = 0; h < sizeof(FlatsInfo); h++)
{
if(PlayerToPoint(2.0, playerid, FlatsInfo[h][fEntrancex], FlatsInfo[h][fEntrancey], FlatsInfo[h][fEntrancez]) && FlatsInfo[h][fOwned] == 0 && GetPlayerVirtualWorld(playerid) == FlatsInfo[h][fVirtWorld])
{
if(PlayerInfo[playerid][pLevel] < FlatsInfo[h][fLevel])
{
format(string, sizeof(string), "Ошибка: Вам нужен %d уровень, чтобы купить эту квартиру.", FlatsInfo[h][fLevel]);
SendClientMessage(playerid, COLOR_GRAD5, string);
return 1;
}
if((PlayerInfo[playerid][pPhousekey] != 255 && strcmp(playername, HouseInfo[PlayerInfo[playerid][pPhousekey]][hOwner], true) == 0) || (PlayerInfo[playerid][pFlatKey] != 255 && strcmp(playername, FlatsInfo[PlayerInfo[playerid][pFlatKey]][fOwner], true) == 0))
{
SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас уже есть дом / квартира.");
return 1;
}
if(GetPlayerMoney(playerid) > FlatsInfo[h][fValue])
{
PlayerInfo[playerid][pFlatKey] = h;
FlatsInfo[h][fOwned] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(FlatsInfo[h][fOwner], sendername, 0, strlen(sendername), 255);
GivePlayerMoney(playerid,-FlatsInfo[h][fValue]);
PlayerPlayMusic(playerid);
SetPlayerInterior(playerid,FlatsInfo[h][fInt]);
SetPlayerVirtualWorld(playerid,h+9999);
SetPlayerPos(playerid,FlatsInfo[h][fExitx],FlatsInfo[h][fExity],FlatsInfo[h][fExitz]);
GameTextForPlayer(playerid, "~w~Welcome Flat~n~You can exit at any time by moving to this door and typing /exit", 5000, 3);
PlayerInfo[playerid][pInt] = FlatsInfo[h][fInt];
SendClientMessage(playerid, COLOR_WHITE, "Вы купили квартиру!");
SendClientMessage(playerid, COLOR_WHITE, "Используйте /flat для управления ею!");
DateProp(playerid);
//OnPlayerSave(playerid);
UpdateFlat(h);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Ошибка: У вас не хватает денег!");
return 1;
}
}
}
}
return 1;
}
PHP:
for(new i = 0; i < sizeof(FlatsInfo); i++)
{
if (PlayerToPoint(3, playerid,FlatsInfo[i][fEntrancex], FlatsInfo[i][fEntrancey], FlatsInfo[i][fEntrancez]) && GetPlayerVirtualWorld(playerid) == FlatsInfo[i][fVirtWorld])
{
//printf("Found House :%d",i);
if(PlayerInfo[playerid][pFlatKey] == i || FlatsInfo[i][fLock] == 0)
{
SetPlayerVirtualWorld(playerid,i+9999);
SetPlayerInterior(playerid,FlatsInfo[i][fInt]);
SetPlayerPos(playerid,FlatsInfo[i][fExitx],FlatsInfo[i][fExity],FlatsInfo[i][fExitz]);
GameTextForPlayer(playerid, "~w~Welcome Kvartira", 5000, 1);
PlayerInfo[playerid][pInt] = FlatsInfo[i][fInt];
}
else
{
GameTextForPlayer(playerid, "~r~Locked", 5000, 1);
}
}
}
PHP:
for(new i = 0; i < sizeof(FlatsInfo); i++)
{
if(GetPlayerVirtualWorld(playerid) == i+9999)
{
if (PlayerToPoint(3, playerid,FlatsInfo[i][fExitx], FlatsInfo[i][fExity], FlatsInfo[i][fExitz]))
{
SetPlayerInterior(playerid,3);
SetPlayerVirtualWorld(playerid,FlatsInfo[i][fVirtWorld]);
SetPlayerPos(playerid,FlatsInfo[i][fEntrancex],FlatsInfo[i][fEntrancey],FlatsInfo[i][fEntrancez]);
}
}
}
PHP:
if(dialogid == 50)
{
if(response)
{
if(listitem == 0)
{
for(new i = 0; i < sizeof(FlatsInfo); i++)
{
if ((PlayerToPoint(3, playerid,FlatsInfo[i][fEntrancex], FlatsInfo[i][fEntrancey], FlatsInfo[i][fEntrancez]) && GetPlayerVirtualWorld(playerid) == FlatsInfo[i][fVirtWorld]) || (PlayerToPoint(3, playerid,FlatsInfo[i][fExitx], FlatsInfo[i][fExity], FlatsInfo[i][fExitz]) && GetPlayerVirtualWorld(playerid) == i+9999))
{
if(PlayerInfo[playerid][pFlatKey] == i)
{
if(FlatsInfo[i][fLock] == 1)
{
FlatsInfo[i][fLock] = 0;
SendClientMessage(playerid, COLOR_WHITE, "Квартира открыта");
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
return 1;
}
if(FlatsInfo[i][fLock] == 0)
{
FlatsInfo[i][fLock] = 1;
SendClientMessage(playerid, COLOR_WHITE, "Квартира закрыта");
PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Это не ваша квартира.");
return 1;
}
}
}
}
else if(listitem == 1)
{
OnPlayerCommandText(playerid, "/sellflat");
}
}
else { return 1; }
}
PHP:
if(pickupid == flathouse1[0]) // Квартирный Дом напротив Репортеров (Вход)
{
SetPlayerPos(playerid, 972.3107,-8.6146,1001.1484);
SetPlayerInterior(playerid, 3);
PlayerInfo[playerid][pInt] = 3;
SetPlayerVirtualWorld(playerid,1);
}
else if(pickupid == flathouse1[1]) // Квартирный Дом напротив Репортеров (Выход)
{
SetPlayerPos(playerid, -1966.0192,434.3174,35.1719);
SetPlayerInterior(playerid, 0);
PlayerInfo[playerid][pInt] = 0;
SetPlayerVirtualWorld(playerid,0);
}
else if(pickupid == flathouse2[0]) // Квартирный Дом напротив Небоскрёпа ЛС (Вход)
{
SetPlayerPos(playerid, 972.3107,-8.6146,1001.1484);
SetPlayerInterior(playerid, 3);
PlayerInfo[playerid][pInt] = 3;
SetPlayerVirtualWorld(playerid,2);
}
else if(pickupid == flathouse2[1]) // Квартирный Дом напротив Небоскрёпа ЛС (Выход)
{
SetPlayerPos(playerid, 329.7834,-1513.7047,36.0391);
SetPlayerInterior(playerid, 0);
PlayerInfo[playerid][pInt] = 0;
SetPlayerVirtualWorld(playerid,0);
}
else if(pickupid == flathouse3[0]) // Квартирный Дом у Банка ЛС (Вход)
{
SetPlayerPos(playerid, 972.3107,-8.6146,1001.1484);
SetPlayerInterior(playerid, 3);
PlayerInfo[playerid][pInt] = 3;
SetPlayerVirtualWorld(playerid,3);
}
else if(pickupid == flathouse3[1]) // Квартирный Дом у Банка ЛС (Выход)
{
SetPlayerPos(playerid, 1378.8137,-1088.7667,27.0466);
SetPlayerInterior(playerid, 0);
PlayerInfo[playerid][pInt] = 0;
SetPlayerVirtualWorld(playerid,0);
}
PHP:
flathouse1[0] = CreatePickup(1318, 2, -1962.0586,434.1953,35.1719, 0); pickups++; // Квартирный Дом напротив Репортеров (Вход)
flathouse1[1] = CreatePickup(1318, 2, 975.1188,-8.6426,1001.1484, 1); pickups++; // Квартирный Дом напротив Репортеров (Выход)
flathouse2[0] = CreatePickup(1318, 2, 328.1443,-1512.3280,36.0325, 0); pickups++; // Квартирный Дом напротив Небоскрёпа ЛС (Вход)
flathouse2[1] = CreatePickup(1318, 2, 975.1188,-8.6426,1001.1484, 2); pickups++; // Квартирный Дом напротив Небоскрёпа ЛС (Выход)
flathouse3[0] = CreatePickup(1318, 2, 1382.1489,-1088.8043,28.2124, 0); pickups++; // Квартирный Дом у Банка ЛС (Вход)
flathouse3[1] = CreatePickup(1318, 2, 975.1188,-8.6426,1001.1484, 3); pickups++; // Квартирный Дом у Банка ЛС (Выход)
PHP:
forward LoadFlats();
PHP:
LoadFlats();
PHP:
pFlatKey,
PHP:
dini_IntSet(string, "Flatkey", PlayerInfo[playerid][pFlatKey]);
PHP:
PlayerInfo[playerid][pFlatKey] = dini_Int(string2,"Flatkey");
PHP:
PlayerInfo[playerid][pFlatKey] = 255;
PHP:
PlayerInfo[playerid][pFlatKey] = 255;
вот и всё ))
Автор Вырезки: Mr_Dave
Вырезано из мода Diamond_City
Может кому пригодится
И вот сам файл с квартирками =)
Ссылка:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Последнее редактирование:
