PDA

Просмотр полной версии : [Include] Изменение цвета автомобиля через сервер



KrutoyKrosch
09.12.2016, 20:38
Описание:

Этот код позволит вам изменять и сохранять цвет автомобиля через сервер. Многие сталкивались с проблемой что МТА не правильно записывает номер цвета автомобиля. После чего очень нудно сидеть и в ручную через мод искать нужный автомобиль и ставить ему цвет. Тут же вы можете сделать это через сервер и сохранить результат. Может и есть для этого какие ни будь сервисы, но я не нашел.

Функционал:


RESPAWN_VEHICLE_TIME - время респавна автомобиля (в млс)
ADD_SIREN_FOR_VEHICLE - создать сирену на авто (0 - нет / 1 - да)
TYPE_VEHICLE_SAVE - как сохранить автомобиль (0 - CreateVehicle | 1 - AddStaticVehicle | 2 - AddStaticVehicleEx)

/osvc - запустить редактор цвета
/ucv [vehicldeid][color1][color2] - изменить цвет
/suvc - сохранить изменения в папку ../scriptfiles, файл будет называться updatecolorvehicle

Код:



#include <a_samp> //SA-MP 0.3.7
#include <dc_cmd> // Плагин DC_CMD желательно последней версии, возможно в будущем, когда ни будь, сделаю для стандартного движка
#include <sscanf2> // Плагин sscanf желательно последней версии

#define RESPAWN_VEHICLE_TIME -1
#define ADD_SIREN_FOR_VEHICLE 0
#define TYPE_VEHICLE_SAVE 1

static
S_V_C_U[MAX_PLAYERS char],
S_V_C_U_N[MAX_VEHICLES char],
VehicleColor1[MAX_VEHICLES],
VehicleColor2[MAX_VEHICLES];

CMD:osvc(playerid)
{
if(S_V_C_U{playerid}) return
SendClientMessage(playerid, -1, !"Вы уже запустили скрипт изменения цвета автомобиля.");

new
string[15],
Text3D:SVC_Text3D;

S_V_C_U{playerid} = 1;

for(new i = 1, a = GetVehiclePoolSize(); i <= a; i++)
{
string[0] = EOS;
valstr(string, i);
strcat(string, !" - vehicleid");

#if defined streamer
SVC_Text3D = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, 0.0, 0.0, 0.0, 25.0, INVALID_PLAYER_ID, i);
#else
SVC_Text3D = Create3DTextLabel(string, 0xFFFFFFFF, 0.0, 0.0, 0.0, 25.0, 1);
Attach3DTextLabelToVehicle(SVC_Text3D, i, 0.0, 0.0, 0.0);
#endif
}

SendClientMessage(playerid, -1, !"Около автомобиля стал показываться 3D текст с его ID.");
SendClientMessage(playerid, -1, !"Для изменения цвета - /ucv [vehicleid][color1][color2]");
SendClientMessage(playerid, -1, !"Сохранить изменения в папку ../scriptfiles/updatecolorvehicle - /suvc");

return 1;
}

CMD:ucv(playerid, params[], vehicleid, color1, color2)
{
if(!S_V_C_U{playerid}) return
SendClientMessage(playerid, -1, !"Вы не запустили скрипт изменения цвета автомобиля.");

if(sscanf(params, "ddd", vehicleid, color1, color2)) return
SendClientMessage(playerid, -1, !"Используйте - /ucv [vehicleid][color1][color2]");

if(!GetVehicleModel(vehicleid)) return
SendClientMessage(playerid, -1, !"Такого авто не существует.");

S_V_C_U_N{vehicleid} = 1;
ChangeVehicleColor(vehicleid, color1, color2);

VehicleColor1[vehicleid] = color1;
VehicleColor2[vehicleid] = color2;

SendClientMessage(playerid, -1, !"Цвет автомобиля изменен. Для сохранения - /suvc");

return 1;
}

CMD:suvc(playerid)
{
if(!S_V_C_U{playerid}) return
SendClientMessage(playerid, -1, !"Вы не запустили скрипт изменения цвета автомобиля.");

new
File:OpenFileId = fopen("updatecolorvehicle.txt", io_append),
string[120],
Float:x,
Float:y,
Float:z,
Float:a,
modelid;

for(new i = 1, b = GetVehiclePoolSize(); i <= b; i++)
{
if(!S_V_C_U_N{i})
continue;

GetVehiclePos(i, x, y, z);
GetVehicleZAngle(i, a);

modelid = GetVehicleModel(i);

switch(TYPE_VEHICLE_SAVE)
{
case 0:
format(string, sizeof(string), "CreateVehicle(%d, %f, %f, %f, %f, %d, %d, %d, %d);\r\n", modelid, x, y, z, a, VehicleColor1[i], VehicleColor2[i], RESPAWN_VEHICLE_TIME, ADD_SIREN_FOR_VEHICLE);
case 1:
format(string, sizeof(string), "AddStaticVehicle(%d, %f, %f, %f, %f, %d, %d);\r\n", modelid, x, y, z, a, VehicleColor1[i], VehicleColor2[i]);
case 2:
format(string, sizeof(string), "AddStaticVehicleEx(%d, %f, %f, %f, %f, %d, %d, %d, %d);\r\n", modelid, x, y, z, a, VehicleColor1[i], VehicleColor2[i], RESPAWN_VEHICLE_TIME, ADD_SIREN_FOR_VEHICLE);
}

fwrite(OpenFileId, string);
}

fclose(OpenFileId);

SendClientMessage(playerid, -1, !"Автомобили сохранены.");

return 1;
}


Автор: _KROSCH

Авторские права: делайте что хотите