Тузик
Новичок
Итак, я опять от нечего делать решил написать команду связанную с транспортом. Ну и немного "поплагиатить" 
При вводе команды вы сохраняете позицию транспорта. Предупреждаю: если вы не замените "-1,-1" в файле Vehicles.txt (папка scriptfiles), то у транспорта будут случайные цвета.
При вводе команды вы сохраняете позицию транспорта. Предупреждаю: если вы не замените "-1,-1" в файле Vehicles.txt (папка scriptfiles), то у транспорта будут случайные цвета.
PHP:
CMD:savecarpos(playerid) // Стяжкин рекомендует использовать CMD:savecarpos(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Для начала сядьте в машину");
new File:file_ptr, string[52], vehiclemodel, Float:X,Float:Y,Float:Z, Float:R;
vehiclemodel = GetVehicleModel(GetPlayerVehicleID(playerid));
GetVehiclePos(GetPlayerVehicleID(playerid), X,Y,Z);
GetVehicleZAngle(GetPlayerVehicleID(playerid), R);
file_ptr = fopen("Vehicles.txt",filemode:io_append);
if(file_ptr != File:0)
{
format(string, sizeof(string), "%d,%.4f,%.4f,%.4f,%.4f,-1,-1; \r\n", vehiclemodel, X,Y,Z, R);
fwrite(file_ptr, string);
}
fclose(file_ptr);
SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Vehicles.txt)");
return 1;
}
PHP:
public OnGameModeInit()
{ // Но я советую это перенести в FilterScript, чтобы при перезагрузки FS (/rcon reload addstatic, где addstatic ваш фильтрскрипт) **
new vehicle_load;
vehicle_load = LoadStaticVehiclesFromFile("Vehicles.txt");
printf("Загружено: %d транспорта", vehicle_load);
return 1;
} // ** он сразу появлялся, без перезаходов на сервер/перезапуска основного мода (сервера через /rcon gmx и т.п.).
stock LoadStaticVehiclesFromFile(const filename[])
{
new File:file_ptr, loadinfo[52], var_from_line[10], index, vehicle_load;
new vehiclemodel, Float:X,Float:Y,Float:Z, Float:R, color1,color2;
file_ptr = fopen(filename,filemode:io_read);
if(!file_ptr) return 0;
while(fread(file_ptr, loadinfo, sizeof(loadinfo)) > 0)
{
index = 0;
index = token_by_delim(loadinfo,var_from_line,',',index); // vehicleid
if(index == (-1)) continue;
vehiclemodel = strval(var_from_line);
if(vehiclemodel < 400 || vehiclemodel > 611) continue;
index = token_by_delim(loadinfo,var_from_line,',',index+1); // X
if(index == (-1)) continue;
X = floatstr(var_from_line);
index = token_by_delim(loadinfo,var_from_line,',',index+1); // Y
if(index == (-1)) continue;
Y = floatstr(var_from_line);
index = token_by_delim(loadinfo,var_from_line,',',index+1); // Z
if(index == (-1)) continue;
Z = floatstr(var_from_line);
index = token_by_delim(loadinfo,var_from_line,',',index+1); // R
if(index == (-1)) continue;
R = floatstr(var_from_line);
index = token_by_delim(loadinfo,var_from_line,',',index+1); // color1
if(index == (-1)) continue;
color1 = strval(var_from_line);
if(color1 == -1) color1 = random(366);
index = token_by_delim(loadinfo,var_from_line,';',index+1); // color2
if(index == (-1)) continue;
color2 = strval(var_from_line);
if(color2 == -1) color2 = random(366);
AddStaticVehicleEx(vehiclemodel, X,Y,Z, R, color1, color2, 3000);
vehicle_load++;
}
return vehicle_load;
}
stock token_by_delim(const string[], return_str[], delim, start_index)
{
new x=0;
while(string[start_index] != EOS && string[start_index] != delim)
{
return_str[x] = string[start_index];
x++;
start_index++;
}
return_str[x] = EOS;
if(string[start_index] == EOS) start_index = (-1);
return start_index;
}
Последнее редактирование:
