Vova_Jonson#
Умник
После #include <a_samp>
PHP код:
В public OnGameModeInit()
PHP код:
В public OnPlayerCommandText(playerid, cmdtext[])
PHP код:
В конец мода
PHP код:
В папке scriptfiles создайте файл vehicle.ini
PHP код:
Код:
new LastCar;// Максимальное колличество авто
enum vInfo
{
vAdd,// Проверка на созданную машину
vID,// Ид Машины
vModel,// Модель Машины
Float:vVx,// Позиция X
Float:vVy,// Позиция Y
Float:vVz,// Позиция Z
Float:vVa,// Позиция A
vColor,// Цвет 1
vColor2,// Цвет 2
}
new Veh[MAX_VEHICLES][vInfo];
PHP код:
Код:
LoadVeh();// Загрузка Машин
PHP код:
Код:
new veh = GetPlayerVehicleID(playerid);
new string[256];
new cmd[128], tmp[128], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd,"/addveh",true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,0xB4B5B7FF, "ПОМОЩЬ: /addveh [Модель Машины]");
return 1;
}
new addveh = strval(tmp);// Узнаём введёный ID машины
if(addveh < 400 || addveh > 610)// Делаем ограничение на доступные машины
{
SendClientMessage(playerid,0xB4B5B7FF, "ПОМОЩЬ: /addveh [Модель Машины]");
SendClientMessage(playerid,0xB4B5B7FF, "ПОМОЩЬ: Ид должен быть больше 400, и меньше 610");
return 1;
}
new Float:x,Float:y,Float:z,Float:a;// Массив для позиции
GetPlayerPos(playerid,x,y,z);// Узнаём позицию игрока
GetPlayerFacingAngle(playerid,a);// Узнаём угол поворота игрока
LastCar++;// Прибавляем к последней добавленной машине одну
Veh[LastCar][vAdd] = 1;// Устанавливаем проверку на созданную машину
Veh[LastCar][vModel] = addveh;// Устанавливаем модель машине
Veh[LastCar][vVx] = x;// Устанавливаем позицию
Veh[LastCar][vVy] = y;// Устанавливаем позицию
Veh[LastCar][vVz] = z;// Устанавливаем позицию
Veh[LastCar][vVa] = a;// Устанавливаем позицию
CreateVehicle(Veh[LastCar][vModel],Veh[LastCar][vVx],Veh[LastCar][vVy],Veh[LastCar][vVz],Veh[LastCar][vVa],1,1,6000000000);// Создаём машину на координатах
SaveVeh();// Сохраняем
format(string,sizeof(string),"* Вы создали машину %d, ид на сервере %d",addveh,LastCar);// Вывод
SendClientMessage(playerid,0xB4B5B7FF,string);// Выводим Текст
return 1;
}
if(strcmp(cmd,"/parkveh",true) == 0)
{
new Float:x,Float:y,Float:z;// Массив для позиции
new Float:a;// Массив для позиции
if(IsPlayerInVehicle(playerid, veh))// Если игрок в машине
{
GetVehiclePos(veh,x,y,z);// Узнаём позицию
GetVehicleZAngle(veh,a);// Узнаём угол поворота
}
else// Если нет
{
SendClientMessage(playerid,0xB4B5B7FF,"* Вы не в транспортном средстве.");
return 1;
}
Veh[veh][vVx] = x;// Устанавливаем позицию
Veh[veh][vVy] = y;// Устанавливаем позицию
Veh[veh][vVz] = z;// Устанавливаем позицию
Veh[veh][vVa] = a;// Устанавливаем позицию
SaveVeh();// Сохраненяем машину
return 1;
}
if(strcmp(cmd, "/avehcolor", true) == 0)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(Player[playerid][pAdmin] > 0)// Если Игрок админ, то..
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))// Если не указали ид цвета
{
SendClientMessage(playerid,0xB4B5B7FF,"ПОМОЩЬ: /avehcolor [Цвет 1] [Цвет 2]");
return 1;
}
new color1;// Массив с цветом
color1 = strval(tmp);// Читаем введёный цвет
if(color1 < 0 && color1 > 126)// Если ид цвета недоступен
{
SendClientMessage(playerid,0xB4B5B7FF,"* Неверный ID Цвета!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))// Если введён один цвет
{
SendClientMessage(playerid,0xB4B5B7FF,"ПОМОЩЬ: /vehcolor [Цвет 1] [Цвет 2]");
return 1;
}
new color2;// Массив со вторым цветом
color2 = strval(tmp);// Читаем второй цвет
if(color2 < 0 && color2 > 126)// Если ид цвета недоступен
{
SendClientMessage(playerid,0xB4B5B7FF,"* Неверный ID Цвета");
return 1;
}
Veh[veh][vColor] = color1;// Устанавливаем машине цвет
Veh[veh][vColor2] = color2;// Устанавливаем машине второй цвет
ChangeVehicleColor(veh,color1, color2);// Красим машину
SaveVeh();// Сохраняем
return 1;
}
else// Если не админ..
{
SendClientMessage(playerid,0xB4B5B7FF,"* Вы не админ");//Выводим сообщение
}
}
return 1;
}
PHP код:
Код:
stock LoadVeh()
{
new string[256],str[16],arrCoords[8][128];// Необходимые массивы
new iniFile = ini_openFile("vehicle.ini");// Выбираем файл для загрузки, и открываем
{
for(new v = 1; v < MAX_VEHICLES; v++)// Цикл Авто
{
format(str,sizeof(str),"vID %d",v);// Выбираем какой ид загружать
ini_getString(iniFile,str,string);// Загружаем ид
split(string,arrCoords,',');// Разделяем загруженные числа запятой
Veh[v][vAdd] = strval(arrCoords[0]);// Загружаем проверку на созданую машину
if(Veh[v][vAdd] != 0)// Если машина создана, то..
{
Veh[v][vModel] = strval(arrCoords[1]);// Загружаем модель
Veh[v][vVx] = floatstr(arrCoords[2]);// Загружаем позицию
Veh[v][vVy] = floatstr(arrCoords[3]);// Загружаем позицию
Veh[v][vVz] = floatstr(arrCoords[4]);// Загружаем позицию
Veh[v][vVa] = floatstr(arrCoords[5]);// Загружаем угол поворота
Veh[v][vColor] = strval(arrCoords[6]);// Загружаем цвет
Veh[v][vColor2] = strval(arrCoords[7]);// Загружаем второй цвет
LastCar++;// Прибавляем машину к общему колличеству
}
}
ini_closeFile(iniFile);// Закрываем файл
}
}
stock SaveVeh()
{
new string[256],str[16];// Необходимые массивы
new iniFile = ini_openFile("vehicle.ini");// Выбираем файл для записи, и открываем
for(new v = 1; v < MAX_VEHICLES; v++)// Цикл авто
{
format(string,sizeof(string),"%d,%d,%f,%f,%f,%f,%d,%d",// Выбираем что записывать..
Veh[v][vAdd],// Проверка на созданную машину
Veh[v][vModel],// Модель машины
Veh[v][vVx],// Позиция x
Veh[v][vVy],// Позиция y
Veh[v][vVz],// Позиция z
Veh[v][vVa],// Угол поворота
Veh[v][vColor],// Цвет 1
Veh[v][vColor2]// Цвет 2
);
format(str,sizeof(str),"vID %d",v);// записываем ид машины
ini_setString(iniFile,str,string);// записываем ид машины
}
ini_closeFile(iniFile);// Закрываем файл
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
Последнее редактирование модератором:
