Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Создание сис-мы домов с добавление из игры

Статус
В этой теме нельзя размещать новые ответы.

wtf?

Ученик
Добавляем
PHP:
#define Player PlayerInfo
#include <streamer>
#include <zcmd>
Ко всем new
PHP:
new HOME = макс число домов;
К forward
PHP:
forward LoadHouses();
forward SaveHouses();
добавляем enum :

PHP:
enum hInfo
{
    hID,
    Float:hEnterX,
    Float:hEnterY,
    Float:hEnterZ,
    Float:hExitX,
    Float:hExitY,
    Float:hExitZ,
    hOwner[MAX_PLAYER_NAME],
    hPrice,
    hInt,
    hLock,
    hOwned,
    Text3D: hLabel,
    hPickup,
    hRentabil,
    hMIcon
};
new HouseInfo[макс число домов][hInfo];
в OnGameModeInit

PHP:
 for(new h = 0; h < sizeof(HouseInfo); h++)
    {
        new text[600];
        if(HouseInfo[h][hOwned] == 0)
        {
        format(text,sizeof(text),"{FF6347}* Дом *{FFFFFF}\nАдрес: {7CFC00}FT %d{FFFFFF}\nЦена: {7CFC00}$%d{FFFFFF}",h,HouseInfo[h][hPrice]);
        HouseInfo[h][hMIcon] = CreateMapIcon(31, COLOR_WHITE,HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]);
        HouseInfo[h][hPickup] = CreatePickup(1274, 23, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ],-1);
        }
        else if(HouseInfo[h][hOwned] == 1)
        {
            if(HouseInfo[h][hRentabil] == 1)
            {
            format(text,sizeof(text),"{FF6347}* Дом *{FFFFFF}\nАдрес: {7CFC00}FreeTime %d{FFFFFF}\nВладелец: {7CFC00}%s{FFFFFF}",h,HouseInfo[h][hOwner]);
               Update3DTextLabelText(HouseInfo[h][hLabel], 0xFFFFFFFF, text);
            HouseInfo[h][hMIcon] = CreateMapIcon(32, COLOR_WHITE,HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]);
            HouseInfo[h][hPickup] = CreatePickup(1272, 23, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ],-1);
            }
            else if(HouseInfo[h][hRentabil] == 0)
            {
            format(text,sizeof(text),"{FF6347}* Дом *{FFFFFF}\nАдрес: {7CFC00}%d{FFFFFF}\nВладелец: {7CFC00}%s{FFFFFF}",h,HouseInfo[h][hOwner]);
            Update3DTextLabelText(HouseInfo[h][hLabel], 0xFFFFFFFF, text);
            }
            HouseInfo[h][hMIcon] = CreateMapIcon(32, COLOR_WHITE,HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]);
            HouseInfo[h][hPickup] = CreatePickup(1272, 23, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ],-1);
        }
        HouseInfo[h][hLabel] = Create3DTextLabel(text,0xFFFFFFFF,HouseInfo[h][hEnterX],HouseInfo[h][hEnterY],HouseInfo[h][hEnterZ]+1,20.0,0,1);
    }
в public OnPlayerSpawn(или SetPlayerSpawn)
PHP:
if(PlayerInfo[playerid][pPhousekey] > 0)
{
SetPlayerPos(playerid,HouseInfo[Player[playerid][pPhousekey]-1][hExitX],HouseInfo[Player[playerid][pPhousekey]-1][hExitY],HouseInfo[Player[playerid][pPhousekey]-1][hExitZ]);
SetPlayerInterior(playerid,HouseInfo[Player[playerid][pPhousekey]-1][hInt]);
SetPlayerVirtualWorld(playerid,HouseInfo[Player[playerid][pPhousekey]-1][hID]);
SetCameraBehindPlayer(playerid);
}
КОМАНДЫ!
PHP:
CMD:hbuy(playerid, params[])
{
new playername[32];
new sendername[32];
new Float:oldposx, Float:oldposy, Float:oldposz;
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
for(new h = 0; h < HOME; h++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ]) && HouseInfo[h][hOwned] == 0)
{
if(Player[playerid][pPhousekey] != 0 && strcmp(playername, HouseInfo[Player[playerid][pPhousekey]-1][hOwner], true) == 0) return SendClientMessage(playerid, COLOR_WHITE, "У вас уже есть дом, используйте /sellhouse чтобы продать его!");
if(GetPlayerMoney(playerid) < HouseInfo[h][hPrice]) return SendClientMessage(playerid, COLOR_WHITE, "У вас не хватает денег для приобретение дома!");
Player[playerid][pPhousekey] = HouseInfo[h][hID];
HouseInfo[h][hOwned] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(HouseInfo[h][hOwner], sendername, 0, strlen(sendername), 255);
GivePlayerMoney(playerid,-HouseInfo[h][hPrice]);
SetPlayerInterior(playerid,HouseInfo[h][hInt]);
SetPlayerPos(playerid,HouseInfo[h][hExitX],HouseInfo[h][hExitY],HouseInfo[h][hExitZ]);
SetPlayerVirtualWorld(playerid,HouseInfo[h][hID]);
UpdateHouse(h);
SendClientMessage(playerid, COLOR_WHITE, "Поздравляю! Теперь этот дом принадлежит тебе!");
SaveHouses();
}
}
return 1;
}
CMD:hsell(playerid, params[])
{
new playername[32];
new sendername[32];
GetPlayerName(playerid, playername, sizeof(playername));
if(Player[playerid][pPhousekey] == 0) return SendClientMessage(playerid, COLOR_WHITE, "У тебя нет дома.");
if(Player[playerid][pPhousekey] != 0 && strcmp(playername, HouseInfo[Player[playerid][pPhousekey]-1][hOwner], true) == 0)
{
new house = Player[playerid][pPhousekey]-1;
HouseInfo[house][hLock] = 0;
HouseInfo[house][hOwned] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(HouseInfo[house][hOwner], "The State", 0, strlen("The State"), 255);
GivePlayerMoney(playerid,HouseInfo[house][hPrice]*4/5);
Player[playerid][pPhousekey] = 0;
if(GetPlayerInterior(playerid) == HouseInfo[house][hInt])
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,HouseInfo[house][hEnterX],HouseInfo[house][hEnterY],HouseInfo[house][hEnterZ]);
SetPlayerVirtualWorld(playerid,0);
}
UpdateHouse(house);
SaveHouses();
SendClientMessage(playerid, COLOR_WHITE, "Ты продал свой дом!");
}
return 1;
}
CMD:addhouse(playerid, params[])
{
        if ((Player[playerid][pAdmin] != 5 && Player[playerid][pAdmin] !=6)) return SendClientMessage(playerid,COLOR_GREY,"У вас не прав на использование даной команды");
        new string[256];
        new idx;
        new tmp[32];
        tmp = strtok(params, idx);
        if(!strlen(tmp))
        return    SendClientMessage(playerid, COLOR_WHITE, "ИНФО: /addhouse [Кол-во этажей] [id]");
        new level = strval(tmp);
        new cost;
        if(!strlen(tmp))
        return    SendClientMessage(playerid, COLOR_WHITE, "ИНФО: /addhouse [Кол-во этажей] [id]");
        new id = strval(tmp) -1;
        new inter;
        if(level == 0)
        {
            inter = 9;
            cost = 250000;
         }
        else if(level == 1)
        {
            inter = 2+random(6);
            if(inter == 2) cost = (10+random(3))*100000;
             if(inter == 3) cost = (5+random(2))*100000;
             if(inter == 4) cost = (7+random(3))*100000;
             if(inter == 5) cost = (6+random(2))*100000;
             if(inter == 6) cost = (5+random(2))*100000;
             if(inter == 7) cost = (6+random(2))*100000;
             if(inter == 8) cost = (6+random(2))*100000;
        }
        else if(level == 2)
        {
            inter = 0;
             cost = (12+random(3))*100000;
             if(inter == 1) cost = (13+random(4))*100000;
         }
         else if(level == 3)
        {
            inter = 1;
            cost = (13+random(4))*100000;
         }
        else return SendClientMessage(playerid, COLOR_GREY, "Количество этажей должно быть 0, 1, 2 или 3.");
        new Float:X,Float:Y,Float:Z;
        GetPlayerPos(playerid,X,Y,Z);
          if(id+1 > HOME) HOME += 1;
        HouseInfo[id][hEnterX] = X;
        HouseInfo[id][hEnterY] = Y;
        HouseInfo[id][hEnterZ] = Z;
        HouseInfo[id][hPrice] = cost;
        HouseInfo[id][hOwned] = 0;
        HouseInfo[id][hID] = id+1;
        HouseInfo[id][hOwner][0] = 0;
        HouseInfo[id][hExitX] = HouseExit[inter][0];
        HouseInfo[id][hExitY] = HouseExit[inter][1];
        HouseInfo[id][hExitZ] = HouseExit[inter][2];
        HouseInfo[id][hInt] = HouseInt[inter];
        HouseInfo[id][hLock] = 0;
        strmid(HouseInfo[id][hOwner], "The State", 0, strlen("The State"), 255);
        new text[600];
        format(text,sizeof(text),"{FF6347}* Дом *{FFFFFF}\nАдрес: {7CFC00}FreeTine %d{FFFFFF}\nЦена: {7CFC00}$%d{FFFFFF}",HouseInfo[id][hID],HouseInfo[id][hPrice]);
        HouseInfo[id][hLabel] = Create3DTextLabel(string,COLOR_GREEN,HouseInfo[id][hEnterX], HouseInfo[id][hEnterY], HouseInfo[id][hEnterZ]+1.2,15.0,0);
        HouseInfo[idx][hMIcon] = CreateMapIcon(31,COLOR_WHITE,HouseInfo[id][hEnterX], HouseInfo[id][hEnterY], HouseInfo[id][hEnterZ]);
        HouseInfo[id][hPickup] = CreatePickup(1274, 23, HouseInfo[id][hEnterX], HouseInfo[id][hEnterY], HouseInfo[id][hEnterZ],-1);
        SaveHouses();
        UpdateHouse(id);
        format(string,sizeof(string),"Создан дом [id]:%d [цена]:%d",HouseInfo[id][hID],HouseInfo[id][hPrice]);
        return    SendClientMessage(playerid, COLOR_GREY, string);
        }
в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

PHP:
if(newkeys == KEY_WALK)
{
for(new i = 0; i <  HOME; i++)
{
if (IsPlayerInRangeOfPoint(playerid,1,HouseInfo[i][hExitX], HouseInfo[i][hExitY], HouseInfo[i][hExitZ]) && GetPlayerVirtualWorld(playerid) == HouseInfo[i][hID])
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,HouseInfo[HouseInfo[i][hID]-1][hEnterX],HouseInfo[HouseInfo[i][hID]-1][hEnterY],HouseInfo[HouseInfo[i][hID]-1][hEnterZ]);
SetPlayerVirtualWorld(playerid,0);
if(Player[playerid][pPhousekey] == HouseInfo[i][hID])
{
new Float:tempheal;
GetPlayerHealth(playerid,tempheal);
if(tempheal < 100.0)
{
SetPlayerHealth(playerid,100.0);
}
}
}
}
}
for(new i = 0; i < HOME; i++)
{
if (IsPlayerInRangeOfPoint(playerid,1,HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ]))
{
if(Player[playerid][pPhousekey] == i+1 || HouseInfo[i][hLock] == 0)
{
SetPlayerInterior(playerid,HouseInfo[i][hInt]);
SetPlayerPos(playerid,HouseInfo[i][hExitX],HouseInfo[i][hExitY],HouseInfo[i][hExitZ]);
GameTextForPlayer(playerid, "~g~Home", 5000, 1);
SetPlayerVirtualWorld(playerid,HouseInfo[i][hID]);
}
else
{
GameTextForPlayer(playerid, "~r~Locked", 5000, 1);
}
}
}
return 1;
}
в конец мода суём

PHP:
stock UpdateHouse(idx)
{
    new text[600];
    DestroyMapIcon(HouseInfo[idx][hMIcon]);
    DestroyPickup(HouseInfo[idx][hPickup]);
    if(HouseInfo[idx][hOwned] == 0)
    {
        format(text,sizeof(text),"{FF6347}* Дом *{FFFFFF}\nАдрес: {7CFC00}FT %d{FFFFFF}\nЦена: {7CFC00}$%d{FFFFFF}",idx,HouseInfo[idx][hPrice]);
        HouseInfo[idx][hMIcon] = CreateMapIcon(31, COLOR_WHITE,HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ]);
        HouseInfo[idx][hPickup] = CreatePickup(1274, 23, HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ],-1);
    }
    else if(HouseInfo[idx][hOwned] == 1)
    {
        if(HouseInfo[idx][hRentabil] == 1)
        {
            format(text,sizeof(text),"{FF6347}* Дом *{FFFFFF}\nАдрес: {7CFC00}FT %d{FFFFFF}\nВладелец: {7CFC00}%s{FFFFFF}",idx,HouseInfo[idx][hOwner]);
            Update3DTextLabelText(HouseInfo[idx][hLabel], 0xFFFFFFFF, text);
            HouseInfo[idx][hMIcon] = CreateMapIcon(32, COLOR_WHITE,HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ]);
            HouseInfo[idx][hPickup] = CreatePickup(1272, 23, HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ],-1);
        }
        else if(HouseInfo[idx][hRentabil] == 0)
        {
        format(text,sizeof(text),"{FF6347}* Дом *{FFFFFF}\nАдрес: {7CFC00}%d{FFFFFF}\nВладелец: {7CFC00}%s{FFFFFF}",idx,HouseInfo[idx][hOwner]);
        Update3DTextLabelText(HouseInfo[idx][hLabel], 0xFFFFFFFF, text);
        }
        HouseInfo[idx][hMIcon] = CreateMapIcon(32, COLOR_WHITE,HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ]);
        HouseInfo[idx][hPickup] = CreatePickup(1272, 23, HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ],-1);
    }
    Update3DTextLabelText(HouseInfo[idx][hLabel], 0xFFFFFFFF, text);
}
public SaveHouses()
{
    new i;
    new File:houses;
    while(i < HOME)
    {
        new string[288];
        format(string, sizeof(string), "%d|%f|%f|%f|%f|%f|%f|%d|%d|%s|%d|%d|%d\r\n",
            HouseInfo[i][hID],
            HouseInfo[i][hEnterX],
            HouseInfo[i][hEnterY],
            HouseInfo[i][hEnterZ],
            HouseInfo[i][hExitX],
            HouseInfo[i][hExitY],
            HouseInfo[i][hExitZ],
            HouseInfo[i][hInt],
            HouseInfo[i][hOwned],
            HouseInfo[i][hOwner],
            HouseInfo[i][hPrice],
            HouseInfo[i][hLock]

            );
        if(i == 0)
        {
            houses = fopen("Houses.cfg", io_write);
        }
        else
        {
            houses = fopen("Houses.cfg", io_append);
        }
        fwrite(houses, string);
        i++;
        fclose(houses);
    }
    i = 0;
    return 1;
}

public LoadHouses()
{
    new string[288];
    new arrCoords[12][46];
    new File:houses = fopen("Houses.cfg", io_read);
    new i;
    if(houses)
    {
        while(i < HOME)
        {
            fread(houses, string);
            split(string, arrCoords, '|');
            HouseInfo[i][hID] = strval(arrCoords[0]);
            HouseInfo[i][hEnterX] = floatstr(arrCoords[1]);
            HouseInfo[i][hEnterY] = floatstr(arrCoords[2]);
            HouseInfo[i][hEnterZ] = floatstr(arrCoords[3]);
            HouseInfo[i][hExitX] = floatstr(arrCoords[4]);
            HouseInfo[i][hExitY] = floatstr(arrCoords[5]);
            HouseInfo[i][hExitZ] = floatstr(arrCoords[6]);
            HouseInfo[i][hInt] = strval(arrCoords[7]);
            HouseInfo[i][hOwned] = strval(arrCoords[8]);
            strmid(HouseInfo[i][hOwner], arrCoords[9], false, strlen(arrCoords[9]), MAX_PLAYER_NAME+1);
            HouseInfo[i][hPrice] = strval(arrCoords[10]);
            HouseInfo[i][hLock] = strval(arrCoords[11]);
            i++;
        }
    }
    fclose(houses);
    printf("|Дома: %d",i);
    return 1;
}
Все баги пишем сюда! :bn:

Еше вам понадобиться




Кстате АВТОР : skript47
Модернизировал/Кое-что исправлял я :)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу