GunsTerS
Новичок
Система багажников? Думаю всем понятно что это такое и для чего это нужно, а для тех кто еще не въехал я объясняю, система представляет собой возможность хранения ну и собственно как вы поняли транспортировки определенных объектов/вещей/денег ну и что вашей душе угодно ограничивает вас только фантазия. Думаю я понятно ввел вас в суть и давайте уже начнем:
1) Для начала нам понадобятся Forward'ы
Farward'ы ставим в начало мода ко всем остальным Forward'ам
2) Создаем массив нужный нам для хранения
Желательно тоже ко всем Enum'ам
3) Создаем команду для вызова функций самого багажника
Добавляем в public OnPlayerCommandText
3) Напоследок создаем необходимые паблики для работы скрипта
Устанавливать мх можно хоть где но я предпочитаю сувать их в конец мода
3.1 Первый паблик
3.2 Второй паблик
3.3 Третий паблик
Вообщем то это все. Сохранения багажника нет в скром времени сделаю. Систему вырезал из какого-то неизвестного мода
С вами был GunsTerS
1) Для начала нам понадобятся Forward'ы
Farward'ы ставим в начало мода ко всем остальным Forward'ам
PHP:
forward SafeResetPlayerWeapons(plyid);
forward RemovePlayerWeapon(playerid, weaponid);
forward SafeGivePlayerWeapon(plyid, weaponid, ammo);
Желательно тоже ко всем Enum'ам
PHP:
enum tTrunkInfo
{
tMoney,
tDrugs,
tGun1,
tGun2,
tGun3,
tGun4,
tGun5,
tAmmo1,
tAmmo2,
tAmmo3,
tAmmo4,
tAmmo5,
tOpened,
} ;
new TrunkInfo[MAX_VEHICLES][tTrunkInfo];
Добавляем в public OnPlayerCommandText
PHP:
if(strcmp(cmd, "/trunkdrop", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new x_job[256];
x_job = strtok(cmdtext, idx);
if(!strlen(x_job)) {
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Положить в Багажник __________________|");
SendClientMessage(playerid, COLOR_WHITE, "*Используйте: /trunkdrop [имя] [кол-во] (для оружия кол-во = 1)");
SendClientMessage(playerid, COLOR_GREY, "*Имена: money, drugs");
SendClientMessage(playerid, COLOR_GREY, "*Имена: Gun1, Gun2, Gun3, Gun4, Gun5");
SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "*Используйте: /trunkdrop [имя] [кол-во] (для оружия кол-во = 1)");
return 1;
}
new kolvo = strval(tmp);
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Float:x,Float:y,Float:z;
GetVehiclePos(i,x,y,z);
if (PlayerToPoint(4, playerid,x,y,z))
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!");
return 1;
}
if(TrunkInfo[i][tOpened] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Багажник этого транспорта закрыт!");
return 1;
}
if(kolvo > 0)
{
new gunid = GetPlayerWeapon(playerid);
new ammo = GetPlayerAmmo(playerid);
if(strcmp(x_job,"money",true) == 0)
{
if(kolvo > PlayerInfo[playerid][pCash])
{
SendClientMessage(playerid,COLOR_GREY," У тебя нет такой суммы!");
return 1;
}
TrunkInfo[i][tMoney] += kolvo;
GivePlayerMoney(playerid,-kolvo);
SendClientMessage(playerid,COLOR_WHITE," Ты положил деньги в багажник");
}
else if(strcmp(x_job,"drugs",true) == 0)
{
if(kolvo > PlayerInfo[playerid][pDrugs])
{
SendClientMessage(playerid,COLOR_GREY," У тебя нет столько наркотиков!");
return 1;
}
TrunkInfo[i][tDrugs] += kolvo;
PlayerInfo[playerid][pDrugs] -= kolvo;
SendClientMessage(playerid,COLOR_WHITE," Ты положил наркотики в багажник");
}
else if(strcmp(x_job,"Gun1",true) == 0)
{
if(TrunkInfo[i][tGun1] != 0)
{
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!");
return 1;
}
if(gunid == 0)
{
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!");
return 1;
}
TrunkInfo[i][tGun1] = gunid;
TrunkInfo[i][tAmmo1] = ammo;
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник");
RemovePlayerWeapon(playerid,gunid);
}
else if(strcmp(x_job,"Gun2",true) == 0)
{
if(TrunkInfo[i][tGun2] != 0)
{
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!");
return 1;
}
if(gunid == 0)
{
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!");
return 1;
}
TrunkInfo[i][tGun2] = gunid;
TrunkInfo[i][tAmmo2] = ammo;
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник");
RemovePlayerWeapon(playerid,gunid);
}
else if(strcmp(x_job,"Gun3",true) == 0)
{
if(TrunkInfo[i][tGun3] != 0)
{
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!");
return 1;
}
if(gunid == 0)
{
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!");
return 1;
}
TrunkInfo[i][tGun3] = gunid;
TrunkInfo[i][tAmmo3] = ammo;
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник");
RemovePlayerWeapon(playerid,gunid);
}
else if(strcmp(x_job,"Gun4",true) == 0)
{
if(TrunkInfo[i][tGun4] != 0)
{
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!");
return 1;
}
if(gunid == 0)
{
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!");
return 1;
}
TrunkInfo[i][tGun4] = gunid;
TrunkInfo[i][tAmmo4] = ammo;
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник");
RemovePlayerWeapon(playerid,gunid);
}
else if(strcmp(x_job,"Gun5",true) == 0)
{
if(TrunkInfo[i][tGun5] != 0)
{
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!");
return 1;
}
if(gunid == 0)
{
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!");
return 1;
}
TrunkInfo[i][tGun5] = gunid;
TrunkInfo[i][tAmmo5] = ammo;
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник");
RemovePlayerWeapon(playerid,gunid);
}
}
}
}
}
return 1;
}
if(strcmp(cmd, "/trunktake", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new x_job[256];
x_job = strtok(cmdtext, idx);
if(!strlen(x_job)) {
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Взять из багажника __________________|");
SendClientMessage(playerid, COLOR_WHITE, "*Используйте: /trunktake [имя] [кол-во] (для оружия кол-во = 1)");
SendClientMessage(playerid, COLOR_GREY, "*Имена: money, drugs");
SendClientMessage(playerid, COLOR_GREY, "*Имена: Gun1, Gun2, Gun3, Gun4, Gun5");
SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "*Используйте: /trunktake [имя] [кол-во] (для оружия кол-во = 1)");
return 1;
}
new kolvo = strval(tmp);
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Float:x,Float:y,Float:z;
GetVehiclePos(i,x,y,z);
if (PlayerToPoint(4, playerid,x,y,z))
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!");
return 1;
}
if(TrunkInfo[i][tOpened] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Багажник этого транспорта закрыт!");
return 1;
}
if(kolvo > 0)
{
if(strcmp(x_job,"money",true) == 0)
{
if(kolvo > TrunkInfo[i][tMoney])
{
SendClientMessage(playerid,COLOR_GREY," У тебя в багажнике нет такой суммы!");
return 1;
}
TrunkInfo[i][tMoney] -= kolvo;
GivePlayerMoney(playerid,kolvo);
SendClientMessage(playerid,COLOR_WHITE," Ты берешь деньги из багажника");
}
else if(strcmp(x_job,"drugs",true) == 0)
{
if(kolvo >TrunkInfo[i][tDrugs])
{
SendClientMessage(playerid,COLOR_GREY," У тебя в багажнике нет столько наркотиков!");
return 1;
}
TrunkInfo[i][tDrugs] -= kolvo;
PlayerInfo[playerid][pDrugs] += kolvo;
SendClientMessage(playerid,COLOR_WHITE," Ты берешь наркотики из багажника");
}
else if(strcmp(x_job,"Gun1",true) == 0)
{
if(TrunkInfo[i][tGun1] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!");
return 1;
}
GivePlayerWeapon(playerid,TrunkInfo[i][tGun1],TrunkInfo[i][tAmmo1]);
TrunkInfo[i][tGun1] = 0;
TrunkInfo[i][tAmmo1] = 0;
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника");
}
else if(strcmp(x_job,"Gun2",true) == 0)
{
if(TrunkInfo[i][tGun2] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!");
return 1;
}
GivePlayerWeapon(playerid,TrunkInfo[i][tGun2],TrunkInfo[i][tAmmo2]);
TrunkInfo[i][tGun2] = 0;
TrunkInfo[i][tAmmo2] = 0;
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника");
}
else if(strcmp(x_job,"Gun3",true) == 0)
{
if(TrunkInfo[i][tGun3] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!");
return 1;
}
GivePlayerWeapon(playerid,TrunkInfo[i][tGun3],TrunkInfo[i][tAmmo3]);
TrunkInfo[i][tGun3] = 0;
TrunkInfo[i][tAmmo3] = 0;
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника");
}
else if(strcmp(x_job,"Gun4",true) == 0)
{
if(TrunkInfo[i][tGun4] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!");
return 1;
}
GivePlayerWeapon(playerid,TrunkInfo[i][tGun4],TrunkInfo[i][tAmmo4]);
TrunkInfo[i][tGun4] = 0;
TrunkInfo[i][tAmmo4] = 0;
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника");
}
else if(strcmp(x_job,"Gun5",true) == 0)
{
if(TrunkInfo[i][tGun5] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!");
return 1;
}
GivePlayerWeapon(playerid,TrunkInfo[i][tGun5],TrunkInfo[i][tAmmo5]);
TrunkInfo[i][tGun5] = 0;
TrunkInfo[i][tAmmo5] = 0;
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника");
}
}
}
}
}
return 1;
}
if(strcmp(cmd, "/trunkinfo", true) == 0)
{
if(IsPlayerConnected(playerid))
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Float:x,Float:y,Float:z;
GetVehiclePos(i,x,y,z);
if (PlayerToPoint(4, playerid,x,y,z))
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!");
return 1;
}
if(TrunkInfo[i][tOpened] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Багажник этого транспорта закрыт!");
return 1;
}
new gunname[32];
SendClientMessage(playerid,COLOR_YELLOW,"*** Багажник ***");
format(string,sizeof(string)," Деньги: $%d ",TrunkInfo[i][tMoney]);
SendClientMessage(playerid,COLOR_WHITE,string);
format(string,sizeof(string)," Наркотики: $%d ",TrunkInfo[i][tDrugs]);
SendClientMessage(playerid,COLOR_WHITE,string);
if(TrunkInfo[i][tGun1] != 0)
{
GetWeaponName(TrunkInfo[i][tGun1],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 1: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo1]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun2] != 0)
{
GetWeaponName(TrunkInfo[i][tGun2],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 2: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo2]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun3] != 0)
{
GetWeaponName(TrunkInfo[i][tGun3],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 3: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo3]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun4] != 0)
{
GetWeaponName(TrunkInfo[i][tGun4],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 4: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo4]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun5] != 0)
{
GetWeaponName(TrunkInfo[i][tGun5],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 5: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo5]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
}
}
}
return 1;
}[code]
---------------------------------------------
[code]if(strcmp(cmd, "/trunkfrisk", true) == 0)//Команда для копов
{
if(IsPlayerConnected(playerid))
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Float:x,Float:y,Float:z;
GetVehiclePos(i,x,y,z);
if (PlayerToPoint(4, playerid,x,y,z))
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!");
return 1;
}
if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1)
{
new gunname[32];
SendClientMessage(playerid,COLOR_YELLOW,"*** Багажник ***");
format(string,sizeof(string)," Деньги: $%d ",TrunkInfo[i][tMoney]);
SendClientMessage(playerid,COLOR_WHITE,string);
format(string,sizeof(string)," Наркотики: $%d ",TrunkInfo[i][tDrugs]);
SendClientMessage(playerid,COLOR_WHITE,string);
if(TrunkInfo[i][tGun1] != 0)
{
GetWeaponName(TrunkInfo[i][tGun1],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 1: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo1]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun2] != 0)
{
GetWeaponName(TrunkInfo[i][tGun2],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 2: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo2]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun3] != 0)
{
GetWeaponName(TrunkInfo[i][tGun3],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 3: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo3]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun4] != 0)
{
GetWeaponName(TrunkInfo[i][tGun4],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 4: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo4]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
if(TrunkInfo[i][tGun5] != 0)
{
GetWeaponName(TrunkInfo[i][tGun5],gunname,sizeof(gunname));
format(string,sizeof(string)," Слот 5: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo5]);
SendClientMessage(playerid,COLOR_WHITE,string);
}
}
else
{
SendClientMessage(playerid,COLOR_GREY," Ты не полицейский!");
}
}
}
}
return 1;
}
if(strcmp(cmd, "/trunkopen", true) == 0)//Открыть багажник
{
if(IsPlayerConnected(playerid))
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new Float:x,Float:y,Float:z;
GetVehiclePos(i,x,y,z);
if (PlayerToPoint(4, playerid,x,y,z))
{
if(!IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,COLOR_GREY," Ты не в транспорте!");
return 1;
}
if(TrunkInfo[i][tOpened] == 1)
{
SendClientMessage(playerid,COLOR_GREY," Ты закрыл багажник!");
TrunkInfo[i][tOpened] = 0;
return 1;
}
if(TrunkInfo[i][tOpened] == 0)
{
SendClientMessage(playerid,COLOR_GREY," Ты открыл багажник!");
TrunkInfo[i][tOpened] = 1;
return 1;
}
}
}
}
return 1;
}
Устанавливать мх можно хоть где но я предпочитаю сувать их в конец мода
3.1 Первый паблик
PHP:
public RemovePlayerWeapon(playerid, weaponid)
{
new plyWeapons[12] = 0;
new plyAmmo[12] = 0;
for(new slot = 0; slot != 12; slot++)
{
new wep, ammo;
GetPlayerWeaponData(playerid, slot, wep, ammo);
if(wep != weaponid && ammo != 0)
{
GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
}
}
SafeResetPlayerWeapons(playerid);
for(new slot = 0; slot != 12; slot++)
{
if(plyAmmo[slot] != 0)
{
SafeGivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
}
}
return 1;
}
PHP:
public SafeGivePlayerWeapon(plyid, weaponid, ammo)
{
GivePlayerWeapon(plyid, weaponid, ammo);
return 1;
}
PHP:
public SafeResetPlayerWeapons(plyid)
{
ResetPlayerWeapons(plyid);
return 1;
}
С вами был GunsTerS
