Jeff_Hardy
Компетентный
Здравствуйте сегодня я вас научу Стаить в мод Систему Трейлеров!
И так начьнём,
вверх мода
в enum pInfo
в public OnPlayerConnect
в public SetPlayerSpawn
ищем
там будет вот такая функция
ниже добавим
в public OnGameModeInit
в public OnPlayerRegister
в public OnPlayerUpDate
теперь в OnPlayerLogin добавим
в public OnPlayerCommandText
теперь добавим
в низ мода
ко всем forward
добавить public
в начало мода
Трейлеры находятса возле Отеля Джефферсон
Вот файлик с Трейлепами Это нужно положить в папку Skriptfiles
Автор:
И так начьнём,
вверх мода
PHP:
forward LoadTrailer();
forward SaveTrailer();
enum TrailerInfo
{
tOwned,
tOwner[64],
Float:tPosX,
Float:tPosY,
Float:tPosZ,
Float:tPosA,
tCol,
tLvl,
tExit,
tCost,
tLock,
};
new Trailer[27][TrailerInfo];
new buytrailer[sizeof(Trailer)];
new Text3D:TrailerLabel[sizeof(Trailer)];
new trailercheck[MAX_PLAYERS];//
forward IsATrailer(carid);
PHP:
pTrailer,
PHP:
PlayerInfo[playerid][pTrailer] = 255;
PHP:
new newveh=GetPlayerVehicleID(playerid);
new trailer = PlayerInfo[playerid][pTrailer];
for(new i;i<sizeof(Trailer);++i)
{
if(newstate==2&&newveh==buytrailer[i])
{
if(Trailer[i][tOwned]==0)
{
TogglePlayerControllable(playerid,0);
format(string, sizeof(string), "{FFFFFF}Вы действительно собираетесь приобрести данный {FFA500}трейлер{FFFFFF} за ${FFA500}%d?",Trailer[i][tCost]);
ShowPlayerDialog(playerid,817,DIALOG_STYLE_MSGBOX,"{FFA500}Покупка трейлера",string," [Да] "," [Нет] ");
}
if(Trailer[i][tOwned]==1)
{
if(trailer != i )
{
RemovePlayerFromVehicle(playerid),SendClientMessage(playerid,COLOR_GREY,"{FFA500}*{FFFFFF} У вас нет ключей от этого трейлера");
}
}
}
PHP:
public OnPlayerStateChange(playerid, newstate, oldstate)
PHP:
PLAYER_STATE_DRIVER
PHP:
new newveh=GetPlayerVehicleID(playerid);
new trailer = PlayerInfo[playerid][pTrailer];
for(new i;i<sizeof(Trailer);++i)
{
if(newstate==2&&newveh==buytrailer[i])
{
if(Trailer[i][tOwned]==0)
{
TogglePlayerControllable(playerid,0);
format(string, sizeof(string), "{FFFFFF}Вы действительно собираетесь приобрести данный {FFA500}трейлер{FFFFFF} за ${FFA500}%d?",Trailer[i][tCost]);
ShowPlayerDialog(playerid,817,DIALOG_STYLE_MSGBOX,"{FFA500}Покупка трейлера",string," [Да] "," [Нет] ");
}
if(Trailer[i][tOwned]==1)
{
if(trailer != i )
{
RemovePlayerFromVehicle(playerid),SendClientMessage(playerid,COLOR_GREY,"{FFA500}*{FFFFFF} У вас нет ключей от этого трейлера");
}
}
}
в public OnGameModeInit
PHP:
LoadTrailer();
for(new h = 0; h < sizeof(Trailer); h++)
{
buytrailer[h] = CreateVehicle(508, Trailer[h][tPosX], Trailer[h][tPosY], Trailer[h][tPosZ], Trailer[h][tPosA], Trailer[h][tCol], 1, -1);
}
for(new h = 0; h < sizeof(Trailer); h++)
{
if(Trailer[h][tOwned] == 1)
{
new temp[MAX_STRING];
format(temp, sizeof(temp), "{FFA500}Владелей трейлера: {ffffff}%s ", Trailer[h][tOwner]);
TrailerLabel[h] = Create3DTextLabel(temp,0xFF0000FF,Trailer[h][tPosX], Trailer[h][tPosY], Trailer[h][tPosZ]+1.5,40.0,0,1);
Attach3DTextLabelToVehicle(TrailerLabel[h] , buytrailer[h] , 0.0, 0.0, 1.5);
}
if(Trailer[h][tOwned] == 0)
{
new temp[MAX_STRING];
format(temp, sizeof(temp), "{FFA500}Трейлер: {ffffff}продается{FFA500} \n{FFA500}Цена: %d", Trailer[h][tCost]);
TrailerLabel[h] = Create3DTextLabel(temp,0xFF0000FF,Trailer[h][tPosX], Trailer[h][tPosY], Trailer[h][tPosZ]+1.5,40.0,0,1);
Attach3DTextLabelToVehicle(TrailerLabel[h] , buytrailer[h] , 0.0, 0.0, 1.5);
}
}
PHP:
format(var, 32, "Trailer=%d\n",PlayerInfo[playerid][pTrailer]);fwrite(hFile, var);
PHP:
format(var, 32, "Trailer=%d\n",PlayerInfo[playerid][pTrailer]);fwrite(hFile, var);
PHP:
if( strcmp( key , "Trailer" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pTrailer] = strval( val ); }
PHP:
if(strcmp(cmd,"/t",true)==0)
{
new temp[256];
new house = PlayerInfo[playerid][pTrailer];
temp = strtok(cmdtext, idx);
if(!strlen(temp))
{
SendClientMessage(playerid,COLOR_WHITE," Используйте: /t (sell buy park lock color gps) ");
return 1;
}
if(strcmp(temp,"sell",true)==0)
{
if(strcmp(playername, Trailer[house][tOwner], true) == 0)
{
PlayerInfo[playerid][pTrailer] = 255;
Trailer[house][tOwned] = 0;
Trailer[house][tLock] = 0;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(Trailer[house][tOwner], "The State", 0, strlen("The State"), 255);
GivePlayerMoney(playerid,Trailer[house][tCost]);
SendClientMessage(playerid,COLOR_WHITE,"Поздравляю, Вы продали трейлер ");
RemovePlayerFromVehicle(playerid);
SaveTrailer();
OnPlayerUpdate(playerid);
TrailerUpdate();
return 1;
}
else
{
SendClientMessage(playerid, COLOR_WHITE, " Вы не владеете трейлером. ");
return 1;
}
}
if(strcmp(temp,"buy",true)==0)
{
for(new b;b<sizeof(Trailer);b++)
{
if(IsPlayerInVehicle(playerid,buytrailer[b]))
{
if(Trailer[b][tOwned]!=0) return SendClientMessage(playerid,COLOR_WHITE," Этот трейлер уже куплен! ");
if(PlayerInfo[playerid][pTrailer]!= 255 || PlayerInfo[playerid][pPhousekey] != 255)
{
SendClientMessage(playerid,COLOR_WHITE," У вас уже есть дом/трейлер ");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
return 1;
}
if(Trailer[b][tLvl] > PlayerInfo[playerid][pLevel])
{
SendClientMessage(playerid, COLOR_WHITE, "У вас нехватает уровня.");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
return 1;
}
if(GetPlayerMoney(playerid) > Trailer[b][tCost])
{
PlayerInfo[playerid][pTrailer] = b;
Trailer[b][tOwned] = 1;
Trailer[b][tLock] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
strmid(Trailer[b][tOwner], sendername, 0, strlen(sendername), 255);
SendClientMessage(playerid, COLOR_WHITE, "Поздравляем с покупкой трейлера.");
GivePlayerMoney(playerid,-Trailer[b][tCost]);
// PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
TogglePlayerControllable(playerid, 1);
SaveTrailer();
OnPlayerUpdate(playerid);
TrailerUpdate();
return 1;
}
else
{
// strmid(Trailer[b][tOwner], sendername, 0, strlen(sendername), 255);
SendClientMessage(playerid, COLOR_WHITE, "У вас не хватает денег .");
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
}
}
}
if(strcmp(temp,"gps",true)==0)
{
if(house==255)return SendClientMessage(playerid,COLOR_WHITE,"У Вас нету техники ");
new Float:vx,Float:vy,Float:vz;
GetVehiclePos(buytrailer[house],vx,vy,vz);
SetPlayerCheckpoint(playerid,vx,vy,vz,5.0);
trailercheck[playerid]=1;
SendClientMessage(playerid,COLOR_WHITE,"Ваш трейлер отмечен маркером на карте");
return 1;
}
if(strcmp(temp,"lock",true)==0)
{
for(new u;u<sizeof(Trailer);u++)
{
if(house==255)return SendClientMessage(playerid,COLOR_WHITE," У Вас нету машины! ");
if(Trailer[u][tLock] == 0)
{
if(house==u)
{
Trailer[u][tLock]=1;
SendClientMessage(playerid,COLOR_WHITE,"Трейлер закрыт ");
SaveTrailer();
LockCar(buytrailer[u]);
return 1;
}
}
else if(Trailer[u][tLock] == 1)
{
if(house==u)
{
Trailer[u][tLock]=0;
UnLockCar(buytrailer[u]);
SendClientMessage(playerid,COLOR_WHITE,"Трейлер открыт ");
SaveTrailer();
return 1;
}
}
}
}
if(strcmp(temp,"park",true)==0)
{
if(house==255)return SendClientMessage(playerid,COLOR_WHITE,"У вас нету трейлера");
for(new u;u<sizeof(Trailer);u++)
{
if(IsPlayerInVehicle(playerid,buytrailer[u]))
{
new Float:vx,Float:vy,Float:vz,Float:vfa;
// CarInfo[house][vehmodel]=GetVehicleModel(buytrailer[u]);
GetVehiclePos(buytrailer[u],vx,vy,vz);
GetVehicleZAngle(buytrailer[u],vfa);
Trailer[u][tPosX]=vx;
Trailer[u][tPosY]=vy;
Trailer[u][tPosZ]=vz;
Trailer[u][tPosA]=vfa;
SendClientMessage(playerid,COLOR_WHITE,"Вы припарковали свою технику ");
DestroyVehicle(buytrailer[u]);
buytrailer[u] = CreateVehicle(508, Trailer[u][tPosX], Trailer[u][tPosY], Trailer[u][tPosZ], Trailer[u][tPosA], Trailer[u][tCol], 1, -1);
// Attach3DTextLabelToVehicle(CarLabel[u] , buyveh[u] , 0.0, 0.0, 1.0);
SaveTrailer();
return 1;
}
}
}
if(strcmp(temp,"color",true)==0)
{
// new house = PlayerInfo[playerid][pVeh];
GetPlayerName(playerid, playername, sizeof(playername));
if (house != 255 && strcmp(playername, Trailer[PlayerInfo[playerid][pTrailer]][tOwner], true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD3," ИСПОЛЬЗУЙТЕ: /t color [color number]");
}
new color = strval(tmp);
if(color > 800)
{
SendClientMessage(playerid, COLOR_GRAD3," Максимум 126");
return 1;
}
if (GetPlayerMoney(playerid) < SBizzInfo[5][sbEntranceCost])
{
SendClientMessage(playerid, COLOR_GRAD3," Вы не можете позволить себе это");
}
Trailer[house][tCol] = color;
format(string, sizeof(string), " Цвет установлен %d -$%d",color,SBizzInfo[5][sbEntranceCost]);
SendClientMessage(playerid, COLOR_GRAD3,string);
DestroyVehicle(buytrailer[house]);
buytrailer[house] = CreateVehicle(508, Trailer[house][tPosX], Trailer[house][tPosY], Trailer[house][tPosZ], Trailer[house][tPosA], Trailer[house][tCol], 1, -1);
SendClientMessage(playerid, COLOR_GRAD6, " Покрасочные работы заказаны");
GivePlayerMoney(playerid,-SBizzInfo[5][sbEntranceCost]);
SBizzInfo[5][sbTill] += SBizzInfo[5][sbEntranceCost];
SBizzInfo[5][sbProducts] -= 1;
ExtortionSBiz(5, 5000);
new Float:X,Float:Y,Float:Z;GetPlayerPos(playerid, X,Y,Z);//координаты и угол поворота игрока
PlayerPlaySound(giveplayerid, 1134, 0.0, 0.0, 0.0);
OnPropUpdate();
SaveTrailer();
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, "Вы не владеете трейлером");
return 1;
}
}
return 1;
}
PHP:
stock IsVehicleAttachedToTrailer(vehicleid)
{ //получить ID тачки прицепленной к чему либо
for(new car = 1; car<(MAX_VEHICLES-1); car++)
{
if(IsTrailerAttachedToVehicle(car))
{ //работает правильно толко тогда когда в тягаче сидит человек
if( vehicleid == GetVehicleTrailer(car) )
{
//ИНФОРМИРОВАНИЕ
//new string[MAX_STRING];
//format(string, sizeof(string), "IsVehicleAttachedToTrailer(%d) - %d", vehicleid, car);
//ABroadCast(COLOR_MAROON, string, 9);
return car;//если данная тачка к чему то прицеплена то вернуть верно
}
}
}
return 0;
}
в низ мода
PHP:
public LoadTrailer()
{
new arrCoords[11][64];
new strFromFile2[256];
new File: file = fopen("trailer.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(Trailer))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, '|');
Trailer[idx][tOwned] = strval(arrCoords[0]);
strmid(Trailer[idx][tOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
Trailer[idx][tPosX] = floatstr(arrCoords[2]);
Trailer[idx][tPosY] = floatstr(arrCoords[3]);
Trailer[idx][tPosZ] = floatstr(arrCoords[4]);
Trailer[idx][tPosA] = floatstr(arrCoords[5]);
Trailer[idx][tCol] = strval(arrCoords[6]);
Trailer[idx][tLvl] = strval(arrCoords[7]);
Trailer[idx][tExit] = strval(arrCoords[8]);
Trailer[idx][tCost] = strval(arrCoords[9]);
Trailer[idx][tLock] = strval(arrCoords[10]);
idx++;
}
fclose(file);
}
return 1;
}
public SaveTrailer()
{
new idx;
new File: file2;
while (idx < sizeof(Trailer))
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d|%s|%f|%f|%f|%f|%d|%d|%d|%d|%d\n",
Trailer[idx][tOwned],
Trailer[idx][tOwner],
Trailer[idx][tPosX],
Trailer[idx][tPosY],
Trailer[idx][tPosZ],
Trailer[idx][tPosA],
Trailer[idx][tCol],
Trailer[idx][tLvl],
Trailer[idx][tExit],
Trailer[idx][tCost],
Trailer[idx][tLock]);
if(idx == 0)
{
file2 = fopen("trailer.cfg", io_write);
}
else
{
file2 = fopen("trailer.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}
stock TrailerUpdate()
{
for(new h = 0; h < sizeof(Trailer); h++)
{
if(Trailer[h][tOwned] == 1)
{
Delete3DTextLabel(TrailerLabel[h]);
new temp[MAX_STRING];
format(temp, sizeof(temp), "{FFA500}Трейлер:{FFFFFF} %s ", Trailer[h][tOwner]);
TrailerLabel[h] = Create3DTextLabel(temp,0xFF0000FF,Trailer[h][tPosX], Trailer[h][tPosY], Trailer[h][tPosZ]+1.5,40.0,0,1);
Attach3DTextLabelToVehicle(TrailerLabel[h] , buytrailer[h] , 0.0, 0.0, 3.0);
}
if(Trailer[h][tOwned] == 0)
{
Delete3DTextLabel(TrailerLabel[h]);
new temp[MAX_STRING];
format(temp, sizeof(temp), "{FFA500}Трейлер: {FFFFFF}%s{FFA500} \nЦена: %d", Trailer[h][tOwner], Trailer[h][tCost]);
TrailerLabel[h] = Create3DTextLabel(temp,0xFF0000FF,Trailer[h][tPosX], Trailer[h][tPosY], Trailer[h][tPosZ]+1.5,40.0,0,1);
Attach3DTextLabelToVehicle(TrailerLabel[h] , buytrailer[h] , 0.0, 0.0, 3.0);
}
}
}
PHP:
forward IsATrailer(carid);
PHP:
public IsATrailer(carid)
{
if(carid >= truck[0] && carid <= truck[2])
{
return 1;
}
return 0;
}
PHP:
new truck[3];
Вот файлик с Трейлепами Это нужно положить в папку Skriptfiles
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Автор:
Jeff_Hardy & Mr_Dave
Кому не жалко ставьте
+Ну вот и всё!! Спасибо за внимание с вами был Jeff_Hardy ..
Последнее редактирование:
