Перейти к содержанию
Авторизация  
BlinkyLine

Система гаражей green tech

Рекомендуемые сообщения

BlinkyLine

Здравствуйте форумчане
выкладываю мануал который может быть полезен для каждого проекта
Для начала создадим define и enum

#define GARAGE_X  2315.6699//координаты появления в гаражей по оси X#define GARAGE_Y -198.7284//координаты появления в гаражей по оси Y
#define GARAGE_Z 2.0088//координаты появления в гаражей по оси Z
#define GARAGE_A 180.0000//координаты появления в гаражей по оси A
#define GARAGE_INT 15//интерьер в гараже,можете не менять
enum gInfo
{
gOwner[32],//владелец
gPrice,//цена
gLock,//открыть или закрыт
Float:gX,//координаты пикапа по оси X
Float:gY,//координаты пикапа по оси Y
Float:gZ,//координаты пикапа по оси Z
Float:gA//координаты пикапа по оси A
};
new Garage[200][gInfo];//200 максимальное кол-во гаражей
new AllGarage;//всего гаражей
new Text3D:Text3DCar[200];//3д текст над гаражами

далее в конце мода создадим 2 стока(загрузки и сохранение гаражей)

stock LoadGarage(){
new ids[32],str[64];
new iniOpens = ini_openFile("garage/garage.cfg");
ini_getInteger(iniOpens, "AllGarage", AllGarage);
ini_closeFile(iniOpens);
if(AllGarage != 0)
{
   for(new garage = 1; garage <= AllGarage; garage++)
   {
       format(ids,sizeof(ids),"garage/%d.ini",garage);
       new inigOpen = ini_openFile(ids);
ini_getFloat(inigOpen, "gX", Garage[garage][gX]);
ini_getFloat(inigOpen, "gY", Garage[garage][gY]);
ini_getFloat(inigOpen, "gZ", Garage[garage][gZ]);
ini_getFloat(inigOpen, "gA", Garage[garage][gA]);
ini_getString(inigOpen, "gOwner", str); format(Garage[garage][gOwner],24,"%s",str);
ini_getInteger(inigOpen, "gPrice", Garage[garage][gPrice]);
ini_getInteger(inigOpen, "gLock", Garage[garage][gLock]);
ini_closeFile(inigOpen);
if(!strcmp("None", Garage[garage][gOwner], true))
{
            format(str,sizeof(str),"Гараж номер %d]\nПродаётся цена %d]",garage,Garage[garage][gPrice]);
            CreatePickup(1274, 1, Garage[garage][gX], Garage[garage][gY], Garage[garage][gZ]);
}
            else
{
            format(str,sizeof(str),"Гараж номер %d]\nВладелец %s]",garage,Garage[garage][gOwner]);
            CreatePickup(1239, 1, Garage[garage][gX], Garage[garage][gY], Garage[garage][gZ]);
}
            Text3DCar[garage] = CreateDynamic3DTextLabel(str, 0xCE9A00FF, Garage[garage][gX], Garage[garage][gY], Garage[garage][gZ],15.0);
}
}
    return 1;
}
stock SaveGarage(garage)
{
new ids[32];
    format(ids,sizeof(ids),"garage/%d.ini",garage);
    new iniggOpen;
iniggOpen = ini_openFile(ids);
    if(iniggOpen == -1 || iniggOpen == -2) iniggOpen = ini_createFile(ids);
ini_setFloat(iniggOpen, "gZ", Garage[garage][gZ]);
ini_setFloat(iniggOpen, "gX", Garage[garage][gX]);
ini_setFloat(iniggOpen, "gY", Garage[garage][gY]);
ini_setFloat(iniggOpen, "gA", Garage[garage][gA]);
ini_setString(iniggOpen, "gOwner", Garage[garage][gOwner]);
ini_setInteger(iniggOpen, "gPrice", Garage[garage][gPrice]);
ini_setInteger(iniggOpen, "gLock", Garage[garage][gLock]);
ini_closeFile(iniggOpen);
return 1;
}

теперь в public OnGameModeInit()
LoadGarage();//загрузка гаражей
ну и осталось только команды,в public OnPlayerCommandText(playerid, cmdtext[])

if(strcmp(cmd,"/ga",true)==0){
new temp[256];
temp = strcharsplit(cmdtext, idx);
if(!strlen(temp)) return SendClientMessage(playerid,COLOR_WHITE," Используйте: /ga [buy(купить) sell(продать) lock(закрыть) enter(войти) exit(выйти)");
if(strcmp(temp,"buy",true)==0)
{
for(new gar = 1; gar <= AllGarage;gar++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]))
{
if(!strcmp("None", Garage[gar][gOwner], true))
{
if(GetPlayerMoney(playerid) > Garage[gar][gPrice])
{
strmid(Garage[gar][gOwner], GN(playerid), 0, strlen(GN(playerid)), 255);
GivePlayerMoney(playerid,-Garage[gar][gPrice]);
format(temp,sizeof(temp),"Гараж номер:[%d]\nВладелец:[%s]",gar,Garage[gar][gOwner]);
UpdateDynamic3DTextLabelText(Text3DCar[gar], 0xCE9A00FF, temp);
SaveGarage(gar);
return SendClientMessage(playerid,COLOR_WHITE," Вы успешно купили гараж");
}
else return SendClientMessage(playerid,COLOR_WHITE," У вас нету денег на покупку");
}
else return SendClientMessage(playerid,COLOR_WHITE," Гараж уже кем то куплен");
}
}
}
else if(strcmp(temp,"sell",true)==0)
{
for(new gar = 1; gar <= AllGarage;gar++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]))
{
if(!strcmp(GN(playerid), Garage[gar][gOwner], true))
{
strmid(Garage[gar][gOwner], "None", 0, strlen("None"), 255);
GivePlayerMoney(playerid,Garage[gar][gPrice]/2);
Garage[gar][gLock] = 1;
SaveGarage(gar);
format(temp,sizeof(temp),"Гараж номер:[%d]\nПродаеться Цена:[%d$]",gar,Garage[gar][gPrice]);
UpdateDynamic3DTextLabelText(Text3DCar[gar], 0xCE9A00FF, temp);
return SendClientMessage(playerid,COLOR_WHITE," Вы успешно продали свой гараж");
}
else return SendClientMessage(playerid,COLOR_WHITE," Гараж не принадледит вам");
}
}
}
else if(strcmp(temp,"lock",true)==0)
{
for(new gar = 1; gar <= AllGarage;gar++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]) || (IsPlayerInRangeOfPoint(playerid, 20.0,GARAGE_X,GARAGE_Y,GARAGE_Z) && gar == GetPlayerVirtualWorld(playerid)))
{
if(!strcmp(GN(playerid), Garage[gar][gOwner], true))
{
if(Garage[gar][gLock] == 1)
{
Garage[gar][gLock] = 0;
SaveGarage(gar);
return SendClientMessage(playerid,COLOR_WHITE," Гараж открыт");
}
else
{
Garage[gar][gLock] = 1;
SaveGarage(gar);
return SendClientMessage(playerid,COLOR_WHITE," Гараж закрыт");
}
}
else return SendClientMessage(playerid,COLOR_WHITE," Гараж не принадлежит вам");
}
}
}
else if(strcmp(temp,"enter",true)==0)
{
for(new gar = 1; gar <= AllGarage;gar++)
{
if(IsPlayerInRangeOfPoint(playerid, 2.5,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]))
{
if(Garage[gar][gLock] == 1) return SendClientMessage(playerid,COLOR_WHITE," Гараж закрыт");
if(IsPlayerInAnyVehicle(playerid))
{
new carid = GetPlayerVehicleID(playerid);
SetVehiclePos(carid, GARAGE_X,GARAGE_Y,GARAGE_Z+1.0);
SetPlayerPos(playerid,GARAGE_X,GARAGE_Y,GARAGE_Z+1.0);
LinkVehicleToInterior(carid, GARAGE_INT);
SetVehicleVirtualWorld(carid, gar);
SetVehicleZAngle(carid, GARAGE_A);
SetPlayerInterior(playerid,GARAGE_INT);
SetPlayerVirtualWorld(playerid,gar);
PutPlayerInVehicle(playerid,carid,0);
}
else
{
SetPlayerPos(playerid,GARAGE_X,GARAGE_Y,GARAGE_Z+1.0);
SetPlayerInterior(playerid,GARAGE_INT);
SetPlayerVirtualWorld(playerid,gar);
}
break;
}
}
}
else if(strcmp(temp,"exit",true)==0)
{
if(GetPlayerVirtualWorld(playerid) == 0) return SendClientMessage(playerid,COLOR_WHITE," Вы не находитесь в гараже ");
for(new gar = 1; gar <= AllGarage;gar++)
{
if(IsPlayerInRangeOfPoint(playerid, 20.0,GARAGE_X,GARAGE_Y,GARAGE_Z) && gar == GetPlayerVirtualWorld(playerid))
{
if(IsPlayerInAnyVehicle(playerid))
{
new carid = GetPlayerVehicleID(playerid);
LinkVehicleToInterior(carid, 0);
SetVehicleVirtualWorld(carid, 0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
SetVehiclePos(carid, Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]+5.0);
SetVehicleZAngle(carid, Garage[gar][gA]);
SetPlayerPos(playerid,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]+1.0);
PutPlayerInVehicle(playerid,carid,0);
}
else
{
SetPlayerPos(playerid,Garage[gar][gX],Garage[gar][gY],Garage[gar][gZ]+1.0);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
}
break;
}
}
}
return true;
}
   if(strcmp(cmd,"/newga",true)==0)
{
   if(Player[playerid][pAdmin] <= 4) return SendClientMessage(playerid, -1, "У вас нет прав на использование этой команды!");
   tmp = strcharsplit(cmdtext, idx);
   if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /newga [Сумма]");
   new money = strval(tmp);
   tmp = strcharsplit(cmdtext, idx);
   AllGarage++;
   new Float:X,Float:Y,Float:Z;
   GetPlayerPos(playerid, X,Y,Z);
   format(Garage[AllGarage][gOwner],24,"None");
   Garage[AllGarage][gPrice] = money;
   Garage[AllGarage][gLock] = 1;
   Garage[AllGarage][gX] = X;
   Garage[AllGarage][gY] = Y;
   Garage[AllGarage][gZ] = Z;
   Garage[AllGarage][gA] = 90;
   if(!strcmp("None", Garage[AllGarage][gOwner], true))
{
format(string,sizeof(string),"Гараж номер %d\nПродаеться цена %d]",AllGarage,Garage[AllGarage][gPrice]);
CreatePickup(1274, 1, Garage[AllGarage][gX], Garage[AllGarage][gY], Garage[AllGarage][gZ]);
}
   Text3DCar[AllGarage] = CreateDynamic3DTextLabel(string, 0xCE9A00FF, Garage[AllGarage][gX], Garage[AllGarage][gY], Garage[AllGarage][gZ],10.0);
   SaveGarage(AllGarage);
   return 1;
}

поясню по командам,чтобы создать гараж введите /newga цена,все действия с гаражом проходят через команду /ga
то есть если мы хотим купить гараж вводим /ga buy и т.д.
Координаты появления в гараже меняйте на свои,так как они поставлены под мой маппинг гаража

Осталось только в папке  scriptfiles создать папку и в папке файлик,ссылку я оставлю ниже

garage.rar

 

Автор вырезки : Basis

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
reduz

Копипаст с другого форума.Автор не ты,хотя написал другого,короче запутано и скопировано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
BlinkyLine

Копипаст с другого форума.Автор не ты,хотя написал другого,короче запутано и скопировано.

Мда, я где то говорил про то что я автор? Я написал автора того кто слил это с мода, причем не с своего и сделать это мог каждый, так что разницы между сливом с других форумах нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
meL

Копипаст с другого форума.Автор не ты,хотя написал другого,короче запутано и скопировано.

 

Человек старается для форума, у нас украли все, что возможно было, даже если скопировано, этого у нас нету и многим будет полезно.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
BlinkyLine

 

Копипаст с другого форума.Автор не ты,хотя написал другого,короче запутано и скопировано.

 

Человек старается для форума, у нас украли все, что возможно было, даже если скопировано, этого у нас нету и многим будет полезно.

 

вот вот

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
reduz

Сделай что-то своими руками,квадратно-головый...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Komaroff 71

Сделай что-то своими руками,квадратно-головый...

 

C нетерпением жду Ваших работ

По теме:система старая,но возможно кому-либо пригодится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
reduz

 

Сделай что-то своими руками,квадратно-головый...

 

C нетерпением жду Ваших работ

По теме:система старая,но возможно кому-либо пригодится

 

А чего ждать?Я пишу и пишу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.