Автор: Mike™
Описание:
Простая система транспорта, предназначена для игровых режимов с 0. Система подойдет отлично для DM,TDM режимов, а может и для RPG.
Возможности администратора:
- Добавление транспорта из игры (при добавлении транспорта если указать цену равную 0, то транспорт будет доступен всем) = /acreateveh;
- Припарковать любой транспорт = /avpark;
Возможности игроков:
- Управление транспортом: завести / заглушить, включить / выключить фары, открыть / закрыть багаж, капот = /eng, /lights, /bonnet, /boot;
- Продажа транспорта = /vsell;
- Продажа транспорта другому игроку = /vsellto;
- Закрывать /открывать замки транспорта = /vlock;
- Парковка транспорта = /vpark;
- Возможность иметь неограниченное кол-во личного транспорта;
- Скриншоты
Установка:
• Шаг 1: ко всем define's добавляем:
Code: Select all
#define MAX_VEH 100 // макс кол-во транспорта
#define D_V_CREATE_MODEL 5
#define D_V_CREATE_PRICE 6
#define D_V_CREATE_COLOR 7
#define D_V_CREATE_CONF 8
#define D_V_BUY 9
#define D_V_SELL_TO_ID 10
#define D_V_SELL_TO_PRICE 11
#define D_V_SELL_TO_CONF 12
• Шаг 2: в начало мода, ко всем переменным (new's) добавляем:
Code: Select all
enum vInfo
{
vModel,
vOwner[MAX_PLAYER_NAME],
Float:vX,Float:vY,Float:vZ,
vPrice,
vLock,
vColor1,vColor2
};
new Veh[MAX_VEH][vInfo];
new m_v;
new engine, lights, alarm, doors, bonnet, boot, objective;
• Шаг 3: в конец мода добавьте функции:
Code: Select all
Name(playerid)
{
new Nm[MAX_PLAYER_NAME];
GetPlayerName(playerid,Nm,24);
return Nm;
}
LoadVehicles()
{
if(!fexist("vehicles/m_v.ini"))return print("[Ошибка] Файл vehicles/m_v.ini не найден");
new f=ini_openFile("vehicles/m_v.ini");
ini_getInteger(f,"Amount",m_v);
ini_closeFile(f);
if(!fexist("vehicles/vehicles.ini"))return print("[Ошибка] Файл vehicles/vehicles.ini не найден");
f=ini_openFile("vehicles/vehicles.ini");
new str[8];
for(new v=1;v<=m_v;v++)
{
format(str,sizeof(str),"ID %d",v);
ini_getString(f,str,STR);
sscanf(STR,"p<|>is[24]fffiiii",Veh[v][vModel],Veh[v][vOwner],Veh[v][vX],Veh[v][vY],Veh[v][vZ],Veh[v][vPrice],Veh[v][vLock],Veh[v][vColor1],Veh[v][vColor2]);
CreateVehicle(Veh[v][vModel],Veh[v][vX],Veh[v][vY],Veh[v][vZ],0.0,Veh[v][vColor1],Veh[v][vColor2],0);
}
ini_closeFile(f);
return printf("Loaded %d vehicles",m_v);
}
SaveVehiclesAmount()
{
new f=ini_openFile("vehicles/m_v.ini");
ini_setInteger(f,"Amount",m_v);
return ini_closeFile(f);
}
SaveVehicle(v)
{
if(!fexist("vehicles/vehicles.ini"))return print("[Ошибка] Файл vehicles/vehicles.ini не найден");
new f=ini_openFile("vehicles/vehicles.ini");
new str[8];
format(str,sizeof(str),"ID %d",v);
format(STR,100,"%d|%s|%f|%f|%f|%d|%d|%d|%d",Veh[v][vModel],Veh[v][vOwner],Veh[v][vX],Veh[v][vY],Veh[v][vZ],Veh[v][vPrice],Veh[v][vLock],Veh[v][vColor1],Veh[v][vColor2]);
ini_setString(f,str,STR);
return ini_closeFile(f);
}
stock split(const strsrc[], strdest[][], delimiter = '|')
{
new i, li, aNum, len, srclen = strlen(strsrc);
while(i <= srclen)
{
if (strsrc[i] == delimiter || i == srclen)
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i + 1;
aNum++;
}
i++;
}
}
IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
• Шаг 4: в OnPlayerCommandText:
Code: Select all
if(strcmp("/acreateveh", cmdtext, true, 11) == 0)
{
// Проверка на администратора
ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть");
return 1;
}
else if(strcmp("/vlock", cmdtext, true, 6) == 0)
{
if(IsPlayerInAnyVehicle(playerid))
{
new v=GetPlayerVehicleID(playerid);
if(strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!");
if(Veh[v][vLock]==1)
{
Veh[v][vLock]=0,GameTextForPlayer(playerid,"~g~Vehicle unlocked",1000,1);
for(new i=GetMaxPlayers();i!=-1;--i)
{
if(!IsPlayerConnected(i))continue;
SetVehicleParamsForPlayer(v,i,0,0);
}
}
else
{
Veh[v][vLock]=1,GameTextForPlayer(playerid,"~r~Vehicle locked",1000,1);
for(new i=GetMaxPlayers();i!=-1;--i)
{
if(!IsPlayerConnected(i))continue;
SetVehicleParamsForPlayer(v,i,0,1);
}
}
SaveVehicle(v);
return 1;
}
else
{
new Float:c[3];
for(new v=1;v<=m_v;v++)
{
GetVehiclePos(v,c[0],c[1],c[2]);
if(!IsPlayerInRangeOfPoint(playerid,2,c[0],c[1],c[2]))continue;
if(strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!");
if(Veh[v][vLock]==1)
{
Veh[v][vLock]=0,GameTextForPlayer(playerid,"~g~Vehicle unlocked",1000,1);
for(new i=GetMaxPlayers();i!=-1;--i)
{
if(!IsPlayerConnected(i))continue;
SetVehicleParamsForPlayer(v,i,0,0);
}
}
else
{
Veh[v][vLock]=1,GameTextForPlayer(playerid,"~r~Vehicle locked",1000,1);
for(new i=GetMaxPlayers();i!=-1;--i)
{
if(!IsPlayerConnected(i))continue;
SetVehicleParamsForPlayer(v,i,0,1);
}
}
SaveVehicle(v);
return 1;
}
SendClientMessage(playerid,-1,"Вы должны быть рядом с транспортом!");
}
return 1;
}
else if(strcmp("/vpark", cmdtext, true, 6) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
if(strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"Этот транспорт не принадлежит вам!");
DestroyVehicle(v);
new Float:x,Float:y,Float:z;
Veh[v][vX]=x,Veh[v][vY]=y,Veh[v][vZ]=z,SaveVehicle(v);
GetPlayerPos(playerid,x,y,z);
CreateVehicle(Veh[v][vModel],x,y,z,0.0,Veh[v][vColor1],Veh[v][vColor2],0);
PutPlayerInVehicle(playerid,v,0);
SendClientMessage(playerid,-1,"Ваш транспорт успешно припаркован!");
return 1;
}
else if(strcmp("/avpark", cmdtext, true, 7) == 0)
{
// Проверка на администратора
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
DestroyVehicle(v);
new Float:x,Float:y,Float:z;
Veh[v][vX]=x,Veh[v][vY]=y,Veh[v][vZ]=z,SaveVehicle(v);
GetPlayerPos(playerid,x,y,z);
CreateVehicle(Veh[v][vModel],x,y,z,0.0,Veh[v][vColor1],Veh[v][vColor2],0);
PutPlayerInVehicle(playerid,v,0);
SendClientMessage(playerid,-1,"Транспорт успешно припаркован!");
return 1;
}
else if(strcmp("/vsell", cmdtext, true, 6) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
if(strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"Этот транспорт не принадлежит вам!");
strmid(Veh[v][vOwner],"None",0,5,5);
GivePlayerMoney(playerid,Veh[v][vPrice]/2);
RemovePlayerFromVehicle(playerid);
SaveVehicle(v);
SendClientMessage(playerid,-1,"Вы продали свой транспорт!");
return 1;
}
else if(strcmp("/eng", cmdtext, true, 4) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
GetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, boot, objective);
if(Veh[v][vPrice]!=0)
{
if(strcmp(Veh[v][vOwner],"None",true)!=0)
{
if(strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!");
if(engine!=1)SetVehicleParamsEx(v, 1, lights, alarm, doors, bonnet, boot, objective);
else SetVehicleParamsEx(v, 0, lights, alarm, doors, bonnet, boot, objective);
}
else{SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!");return 1;}
}
else
{
if(engine!=1)SetVehicleParamsEx(v, 1, lights, alarm, doors, bonnet, boot, objective);
else SetVehicleParamsEx(v, 0, lights, alarm, doors, bonnet, boot, objective);
}
return 1;
}
else if(strcmp("/lights", cmdtext, true, 7) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
GetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, boot, objective);
if(lights!=1)SetVehicleParamsEx(v, engine, 1, alarm, doors, bonnet, boot, objective);
else SetVehicleParamsEx(v, engine, 0, alarm, doors, bonnet, boot, objective);
return 1;
}
else if(strcmp("/bonnet", cmdtext, true, 7) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
GetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, boot, objective);
if(bonnet!=1)SetVehicleParamsEx(v, engine, lights, alarm, doors, 1, boot, objective);
else SetVehicleParamsEx(v, engine, lights, alarm, doors, 0, boot, objective);
return 1;
}
else if(strcmp("/boot", cmdtext, true, 5) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
GetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, boot, objective);
if(boot!=1)SetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, 1, objective);
else SetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, 0, objective);
return 1;
}
else if(strcmp("/vsellto", cmdtext, true, 8) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!");
new v=GetPlayerVehicleID(playerid);
if(strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"Этот транспорт не принадлежит вам!");
ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена");
SetPVarInt(playerid,"v_sellto_vid",v);
return 1;
}
• Шаг 5: в OnPlayerDialogResponse:
Code: Select all
case D_V_CREATE_MODEL:
{
if(response)
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть");
if(400 < strval(inputtext) > 611)return SendClientMessage(playerid,-1,"Invalid vehicle model"),ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть");
SetPVarInt(playerid,"v_model",strval(inputtext));
ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад");
}
}
case D_V_CREATE_PRICE:
{
if(response)
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад");
if(strval(inputtext)<0)return ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад");
SetPVarInt(playerid,"v_price",strval(inputtext));
ShowPlayerDialog(playerid,D_V_CREATE_COLOR,DIALOG_STYLE_INPUT,"Создание транспорта","Введите цвета через запятую, пример: 1,6","Далее","Назад");
}
else DeletePVar(playerid,"v_model"),ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть");
}
case D_V_CREATE_COLOR:
{
if(response)
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,D_V_CREATE_COLOR,DIALOG_STYLE_INPUT,"Создание транспорта","Введите цвета через запятую, пример: 1,6","Далее","Назад");
new razd[2][4];
split(inputtext,razd,',');
if(0<strval(razd[0])>255 || 0<strval(razd[1])>255)return SendClientMessage(playerid,-1,"Invalid vehicle colors"),ShowPlayerDialog(playerid,D_V_CREATE_COLOR,DIALOG_STYLE_INPUT,"Создание транспорта","Введите цвета через запятую, пример: 1,6","Далее","Назад");
SetPVarInt(playerid,"v_c1",strval(razd[0])),SetPVarInt(playerid,"v_c2",strval(razd[1]));
format(STR,128,"Вы действительно хотите создать транспорт?\n* Модель: %d\n* Цена: %d\n* Цвета: %d,%d",
GetPVarInt(playerid,"v_model"),GetPVarInt(playerid,"v_price"),strval(razd[0]),strval(razd[1]));
ShowPlayerDialog(playerid,D_V_CREATE_CONF,DIALOG_STYLE_MSGBOX,"Создание транспорта - подтверждение",STR,"Создать","Отмена");
}
else DeletePVar(playerid,"v_price"),ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад");
}
case D_V_CREATE_CONF:
{
if(response)
{
m_v++,SaveVehiclesAmount();
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
Veh[m_v][vModel]=GetPVarInt(playerid,"v_model"),Veh[m_v][vPrice]=GetPVarInt(playerid,"v_price"),
Veh[m_v][vX]=x+0.5,Veh[m_v][vY]=y,Veh[m_v][vZ]=z,Veh[m_v][vColor1]=GetPVarInt(playerid,"v_c1"),
Veh[m_v][vColor2]=GetPVarInt(playerid,"v_c2"),strmid(Veh[m_v][vOwner],"None",0,5,5);
SaveVehicle(m_v);
CreateVehicle(GetPVarInt(playerid,"v_model"),x+0.5,y,z,0.0,GetPVarInt(playerid,"v_c1"),GetPVarInt(playerid,"v_c2"),0);
DeletePVar(playerid,"v_model"),DeletePVar(playerid,"v_price"),DeletePVar(playerid,"v_c1"),DeletePVar(playerid,"v_c2");
}
else DeletePVar(playerid,"v_model"),DeletePVar(playerid,"v_price"),DeletePVar(playerid,"v_c1"),DeletePVar(playerid,"v_c2");
}
case D_V_BUY:
{
if(response)
{
new v=GetPlayerVehicleID(playerid);
if(GetPlayerMoney(playerid)<Veh[v][vPrice])return SendClientMessage(playerid,-1,"У вас не хватает денег!"),RemovePlayerFromVehicle(playerid);
GivePlayerMoney(playerid,-Veh[v][vPrice]);
SendClientMessage(playerid,-1,"Поздравляем с новым приобретением!");
strmid(Veh[v][vOwner],Name(playerid),0,24,24);
SaveVehicle(v);
}
else RemovePlayerFromVehicle(playerid);
}
case D_V_SELL_TO_ID:
{
if(response)
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена");
if(!IsPlayerConnected(strval(inputtext)))return SendClientMessage(playerid,-1,"Неверный id!"),ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена");
if(playerid==strval(inputtext))return SendClientMessage(playerid,-1,"Вы не можете продавать транспорт самому себе!"),ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена");
if(!IsNumeric(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена");
SetPVarInt(playerid,"v_sellto_id",strval(inputtext)),SetPVarInt(strval(inputtext),"v_sellto_id",playerid);
ShowPlayerDialog(playerid,D_V_SELL_TO_PRICE,DIALOG_STYLE_INPUT,"Продажа транспорта - цена","Введите цену.","Далее","Назад");
}
else DeletePVar(playerid,"v_sellto_vid");
}
case D_V_SELL_TO_PRICE:
{
if(response)
{
if(!strlen(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_PRICE,DIALOG_STYLE_INPUT,"Продажа транспорта - цена","Введите цену.","Далее","Назад");
if(!IsNumeric(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_PRICE,DIALOG_STYLE_INPUT,"Продажа транспорта - цена","Введите цену.","Далее","Назад");
if(!IsPlayerConnected(GetPVarInt(playerid,"v_sellto_id")))
{
SendClientMessage(playerid,-1,"Игрок которому вы хотите продать транспорт не в сети!");
DeletePVar(GetPVarInt(playerid,"v_sellto_id"),"v_sellto_id");
DeletePVar(playerid,"d_sellto_id"),DeletePVar(playerid,"v_sellto_vid");
return 1;
}
SetPVarInt(playerid,"v_sellto_price",strval(inputtext));
format(STR,128,"Игрок %s предлагает вам купить свой транспорт за $%d, вы согласны?",Name(playerid),strval(inputtext));
ShowPlayerDialog(GetPVarInt(playerid,"v_sellto_id"),D_V_SELL_TO_CONF,DIALOG_STYLE_MSGBOX,"Покупка транспорта",STR,"Купить","Отмена");
}
else DeletePVar(GetPVarInt(playerid,"v_sellto_id"),"v_sellto_id"),DeletePVar(playerid,"v_sellto_id"),ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена");
}
case D_V_SELL_TO_CONF:
{
new gid=GetPVarInt(playerid,"v_sellto_id");
if(response)
{
if(!IsPlayerConnected(gid))
{
SendClientMessage(playerid,-1,"Продавец транспорта не в сети!");
}
else
{
new vid=GetPVarInt(gid,"v_sellto_vid");
strmid(Veh[vid][vOwner],Name(playerid),0,24,24),SaveVehicle(vid);
GivePlayerMoney(playerid,-GetPVarInt(gid,"v_sellto_price"));
GivePlayerMoney(gid,GetPVarInt(gid,"v_sellto_price"));
SendClientMessage(GetPVarInt(playerid,"v_sellto_id"),-1,"Игрок купил ваш транспорт!");
SendClientMessage(playerid,-1,"Поздравляем с покупкой!");
if(IsPlayerInVehicle(gid,vid))RemovePlayerFromVehicle(gid);
}
DeletePVar(gid,"v_sellto_id");
DeletePVar(playerid,"d_sellto_id"),DeletePVar(gid,"v_sellto_vid"),DeletePVar(gid,"v_sellto_price");
}
else
{
SendClientMessage(GetPVarInt(playerid,"v_sellto_id"),-1,"Игрок отказался покупать ваш транспорт!");
SendClientMessage(playerid,-1,"Вы отказалить от покупки транспорта!");
DeletePVar(gid,"v_sellto_id");
DeletePVar(playerid,"d_sellto_id"),DeletePVar(gid,"v_sellto_vid"),DeletePVar(gid,"v_sellto_price");
}
}
• Шаг 6: в OnPlayerStateChange добавляем:
Code: Select all
if(newstate == PLAYER_STATE_DRIVER)
{
new vh = GetPlayerVehicleID(playerid);
if(Veh[vh][vPrice]!=0 && !strcmp(Veh[vh][vOwner],"None",true))
{
format(STR,128,"Данный транспорт продаётся за $%d.\nВы хотите его купить?",Veh[vh][vPrice]);
ShowPlayerDialog(playerid,D_V_BUY,DIALOG_STYLE_MSGBOX,"Покупка транспорта",STR,"Купить","Отмена");
}
}
• Шаг 7: в OnGameModeInit:
Code: Select all
LoadVehicles();
ManualVehicleEngineAndLights();
• Шаг 8: в OnPlayerSpawn:
Code: Select all
for(new v=1;v<=m_v;v++)
{
if(Veh[v][vLock]==0)continue;
SetVehicleParamsForPlayer(v,playerid,0,0);
}
• Шаг 9: все необходимое для работы скрипта:
Для корректной работы скрипта вам понадобится плагин sscanf и библиотека mxINI:
mxINI: mxINI.inc
sscanf: sscanf
Так же, в папку scriptfiles поставьте это (папку vehicles): vehicles.rar
ПАРОЛЬ ДЛЯ СКАЧИВАНИЯ: Pawno-Info
Не забудьте поставить проверки на администратора в нужных местах (я отметил комментарие), и, в OnDialogResponse используется switch, поэтому вместо if(dialogid==D_V_SELL_TO) стоит case D_V_SELL_TO. Возможно, что ид диалогов которые я указал в константах уже будут заняты в вашем моде, в этом случаи стоит их изменить.