Barni
Компетентный
И так по прозьбе одного из форумчан я решил выложит авторынок из мода PremiumGame.
В начало мода, модно даже сразу после PlayerInfo[MAX_PLAYERS][pinfo];
В OnPlayerStateChange вставляем:
Ну и конечно же добавим загрузку авто на сервер.В самый конеч public'a OnGameModeInit:
Ну и сами команды,я думаю не надо объяснять как и куда их вставлять 
В OnDialogResponse:
Ну вот и всё!Писал на ходу.
Автор мануала: Barni, вырезано из мода PremiumGame.
Обязательно нужен инклуд Dini,Функцию oGivePlayerMoney замените на свою.
В начало мода, модно даже сразу после PlayerInfo[MAX_PLAYERS][pinfo];
PHP:
#define MAX_xCARS 106 //Максимальное количиство персональных авто (ну и продажных)
//параметры авто
enum xCar
{
cModel,
Float:xcx,
Float:xcy,
Float:xcz,
Float:xcrot,
aOwner[MAX_PLAYER_NAME],//владелец
cCoast,
cOwner[60],
cColor1,
cColor2,
cValue,
cCarID
}
new cInfo[MAX_xCARS][xCar]; //переменная с параметрами авто
enum xCarToSell
{
sCarid,
sCoast,
sOwnerid,
sSellToid
}
new csInfo[500][xCarToSell];
PHP:
if(newstate == 2)
{
new Car = GetPlayerVehicleID(playerid);
new result;
new cid;
new pName[24];
for(new i;i<MAX_xCARS;i++)
{
if(Car == cInfo[i][cCarID])
{
result = 1;
cid = i;
break;
}
else result = 0;
}
if(result)
{
GetPlayerName(playerid,pName,24);
if(strcmp(cInfo[cid][cOwner],pName,false,24))
{
if(!strcmp(cInfo[cid][cOwner],"sell",true,24))
{
new str[256];
format(str,256,"Данная машина выставлена на продажу\nЦена: %i\nВы хотите ее купить?",cInfo[cid][cCoast]);
ShowPlayerDialog(playerid,3500,0,"Рынок авто",str,"купить","выйти");
}
else
{
new str[256];
format(str,256,"Это авто принадлежит %s",cInfo[cid][cOwner]);
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,0xffffffaa,str);
}
}
}
}
PHP:
for(new i;i<MAX_xCARS;i++)
{
new input[256];
new str[50];
new data[9][60];
new Text3D:fdtextid;
new strfd[124];
new fdtextnumber = i+1000;
format(str,10,"%i",i);
input = dini_Get("PrivCars.ini",str);
split(input,data,',');
cInfo[i][cModel] = strval(data[0]);
cInfo[i][xcx] = floatstr(data[1]);
cInfo[i][xcy] = floatstr(data[2]);
cInfo[i][xcz] = floatstr(data[3]);
cInfo[i][xcrot] = floatstr(data[4]);
cInfo[i][cCoast] = strval(data[5]);
cInfo[i][cOwner] = data[6];
cInfo[i][cColor1] = strval(data[7]);
cInfo[i][cColor2] = strval(data[8]);
cInfo[i][cCarID] = CreateVehicle(cInfo[i][cModel],cInfo[i][xcx],cInfo[i][xcy],cInfo[i][xcz],cInfo[i][xcrot],cInfo[i][cColor1],cInfo[i][cColor2],-1);
format(strfd,124,"LS %i BG\n %s",fdtextnumber ,cInfo[i][aOwner]);
fdtextid = Create3DTextLabel(strfd,0xFFFF00AA,0.0,0.0,0.0,100.0,0);
Attach3DTextLabelToVehicle(fdtextid,cInfo[i][cCarID],0.0,0.0,1.8);
}
PHP:
if(!strcmp(cmd,"/v",true))
{
tmp = strtok(cmdtext, idx);
if(!strcmp(tmp,"buy",true))
{
if(GetPlayerMoney(playerid) >= csInfo[playerid][sCoast])
{
if(csInfo[playerid][sCoast] != 0)
{
new pName[60];
new str[256];
new str2[60];
new cid = csInfo[playerid][sCarid];
GetPlayerName(playerid,pName,24);
oGivePlayerMoney(playerid,-csInfo[playerid][sCoast]);
oGivePlayerMoney(csInfo[playerid][sOwnerid],-csInfo[playerid][sCoast]);
cInfo[csInfo[playerid][sCarid]][cOwner] = pName;
SendClientMessage(playerid,0xffffffaa,"Вы купили авто");
SendClientMessage(csInfo[playerid][sOwnerid],0xffffffaa,"Вы продали авто");
RemovePlayerFromVehicle(csInfo[playerid][sOwnerid]);
format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy],cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid][cColor1],cInfo[cid][cColor2]);
format(str2,60,"%i",cid);
dini_Set("PrivCars.ini",str2,str);
}
}
}
if(!strcmp(tmp,"Sellto",true))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Car = GetPlayerVehicleID(playerid);
new result;
new cid;
new pName[60];
new str[256];
GetPlayerName(playerid,pName,60);
for(new i;i<MAX_xCARS;i++)
{
if(Car == cInfo[i][cCarID])
{
result = 1;
cid = i;
break;
}
else result = 0;
}
if(result)
{
if(!strcmp(pName,cInfo[cid][cOwner]))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xffffffaa,"/v SellTo [id] [coast]");
return 1;
}
new spid = strval(tmp);
csInfo[spid][sSellToid] = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xffffffaa,"/v SellTo [id] [coast]");
return 1;
}
csInfo[spid][sCoast] = strval(tmp);
csInfo[spid][sCarid] = cid;
csInfo[spid][sOwnerid] = playerid;
format(str,256,"Игрок %s хочет продать вам свое авто за %d, введите /v buy чтобы купить ее",pName,csInfo[spid][sCoast]);
SendClientMessage(spid,0xffffff,str);
return 1;
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее");
return 1;
}
}
if(!strcmp(tmp,"Sell",true))
{
if(IsPlayerInAnyVehicle(playerid))
{
new Car = GetPlayerVehicleID(playerid);
new result;
new cid;
new pName[60];
new m;
new str[256];
new str2[60];
GetPlayerName(playerid,pName,60);
for(new i;i<MAX_xCARS;i++)
{
if(Car == cInfo[i][cCarID])
{
result = 1;
cid = i;
break;
}
else result = 0;
}
if(result == 1)
{
if(!strcmp(pName,cInfo[cid][cOwner]))
{
m = cInfo[cid][cCoast];
m /= 2;
oGivePlayerMoney(playerid,m);
SendClientMessage(playerid,0xffffffaa,"Ты продал свою машину");
format(cInfo[cid][cOwner],60,"Sell");
RemovePlayerFromVehicle(playerid);
format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy],cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid][cColor1],cInfo[cid][cColor2]);
format(str2,60,"%i",cid);
dini_Set("PrivCars.ini",str2,str);
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее");
return 1;
}
}
if(!strcmp(tmp,"Park",true))
{
if(IsPlayerInAnyVehicle(playerid) == 1)
{
new Car = GetPlayerVehicleID(playerid);
new result;
new cid;
new pName[24];
for(new i;i<MAX_xCARS;i++)
{
if(Car == cInfo[i][cCarID])
{
result = 1;
cid = i;
break;
}
else result = 0;
}
if(result && GetPlayerState(playerid) == 2)
{
if(!strcmp(pName,cInfo[cid][cOwner],false))
{
new Float:x,Float:y,Float:z,Float:rot;
new str[60];
new str2[256];
GetVehicleZAngle(Car,rot);
GetVehiclePos(Car,x,y,z);
cInfo[cid][xcx] = x;
cInfo[cid][xcy] = y;
cInfo[cid][xcz] = z;
cInfo[cid][xcrot] = rot;
format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy],cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid][cColor1],cInfo[cid][cColor2]);
format(str2,60,"%i",cid);
dini_Set("PrivCars.ini",str2,str);
RemovePlayerFromVehicle(playerid);
DestroyVehicle(Car);
cInfo[cid][cCarID] = CreateVehicle(cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy],cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cColor1],cInfo[cid][cColor2],-1);
SendClientMessage(playerid,0xffffffaa,"Авто припарковано");
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы припорковать ее");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы припорковать ее");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы припорковать ее");
return 1;
}
}
if(!strcmp(tmp,"Color",true))
{
if(IsPlayerInAnyVehicle(playerid) == 1)
{
new Car = GetPlayerVehicleID(playerid);
new result;
new cid;
new pName[24];
new str[256];
new str2[60];
for(new i;i<MAX_xCARS;i++)
{
if(Car == cInfo[i][cCarID])
{
result = 1;
cid = i;
break;
}
else result = 0;
}
if(result && GetPlayerState(playerid) == 2)
{
if(!strcmp(pName,cInfo[cid][cOwner],false))
{
new c1,c2;
tmp = strtok(cmdtext, idx);
c1 = strval(tmp);
tmp = strtok(cmdtext, idx);
c2 = strval(tmp);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xffffffaa,"/v color [цвет1] [цвет2]");
return 1;
}
ChangeVehicleColor(Car,c1,c2);
cInfo[cid][cColor1] = c1;
cInfo[cid][cColor2] = c2;
format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy],cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid][cColor1],cInfo[cid][cColor2]);
format(str2,60,"%i",cid);
dini_Set("PrivCars.ini",str2,str);
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы сменить ей цвет");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы сменить ей цвет");
return 1;
}
}
else
{
SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы сменить ей цвет");
return 1;
}
}
return 1;
}
PHP:
if(dialogid == 3500)
{
if(response)
{
new Car = GetPlayerVehicleID(playerid);
new cid;
for(new i;i<MAX_xCARS;i++)
{
if(Car == cInfo[i][cCarID])
{
cid = i;
break;
}
}
if(GetPlayerMoney(playerid) >= cInfo[cid][cCoast])
{
new str[256];
new str2[60];
new pName[60];
oGivePlayerMoney(playerid,-cInfo[cid][cCoast]);
GetPlayerName(playerid,pName,60);
cInfo[cid][cOwner] = pName;
format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy],cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid][cColor1],cInfo[cid][cColor2]);
format(str2,60,"%i",cid);
dini_Set("PrivCars.ini",str2,str);
}
else RemovePlayerFromVehicle(playerid);
}
else RemovePlayerFromVehicle(playerid);
}
Автор мануала: Barni, вырезано из мода PremiumGame.
Обязательно нужен инклуд Dini,Функцию oGivePlayerMoney замените на свою.
Последнее редактирование:
