ChangeVehiclePaintjob — различия между версиями
Материал из Pro-Pawn Wiki
DeimoS (обсуждение | вклад) (Новая страница: «{{Description | Управляет рисунком, нанесённым на транспортное средство. }} {{Params|vehicleid, paintjobid}} {{Pa…») |
|||
(не показано 5 промежуточных версии 2 участников) | |||
Строка 1: | Строка 1: | ||
{{Description | {{Description | ||
− | | | + | | Изменяет рисунок, нанесённый на транспортное средство. |
}} | }} | ||
{{Params|vehicleid, paintjobid}} | {{Params|vehicleid, paintjobid}} | ||
Строка 10: | Строка 10: | ||
{{Param | {{Param | ||
| paintjobid | | paintjobid | ||
− | |ID [[Покрасочные работы|рисунка]], который требуется нанести на авто. Значение | + | |ID [[Покрасочные работы|рисунка]], который требуется нанести на авто. Значение <code>3</code> удалит текущий нанесённый рисунок. |
}} | }} | ||
{{Returns | {{Returns | ||
− | | <code>1</code> | + | | Всегда возвращает <code>1</code>. |
+ | }} | ||
+ | {{NoteInfo | ||
+ | | Если в параметре <code>paintjobid</code> указан ID <code>1</code> или <code>2</code>, но для транспорта не существует рисунка под этим ID, текущий рисунок будет удалён, как и при указании ID <code>3</code>. | ||
+ | | Если в параметре <code>paintjobid</code> указано значение меньше <code>0</code> или больше <code>3</code>, функция ничего не делает. | ||
+ | }} | ||
+ | {{NoteSAMPBug | ||
+ | | Функция всегда возвращает <code>1</code>, даже когда указан неправильный ID рисунка (меньше <code>0</code> или больше <code>3</code>) или несуществующий ID транспорта. | ||
+ | | Значение параметра <code>paintjobid</code> урезается до 1 байта. Как результат, значение <code>256</code> трактуется как <code>0</code>, <code>257</code> → <code>1</code>, <code>512</code> → <code>0</code>, <code>-256</code> → <code>0</code>, <code>-255</code> → <code>1</code> и т.д. | ||
}} | }} | ||
{{Example}} | {{Example}} | ||
Строка 22: | Строка 30: | ||
if (vehicleid == 0) | if (vehicleid == 0) | ||
return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства."); | return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства."); | ||
− | + | ||
− | if ( | + | // Получим доступное количество раскрасок для текущего ТС, используя собственную функцию (см. ниже). |
+ | new num_paintjobs = GetNumberOfPaintjobsForVehicle(GetVehicleModel(vehicleid)); | ||
+ | if (num_paintjobs == 0) | ||
return SendClientMessage(playerid, -1, "Ошибка: Для текущего транспортного средства нет доступных раскрасок."); | return SendClientMessage(playerid, -1, "Ошибка: Для текущего транспортного средства нет доступных раскрасок."); | ||
− | new rand_paintjob = random( | + | |
+ | // Сменим раскраску и выведем сообщение. | ||
+ | new rand_paintjob = random(num_paintjobs); | ||
ChangeVehiclePaintjob(vehicleid, rand_paintjob); | ChangeVehiclePaintjob(vehicleid, rand_paintjob); | ||
new string[128]; | new string[128]; | ||
Строка 32: | Строка 44: | ||
} | } | ||
− | + | CMD:removepaintjob(playerid, params[]) | |
+ | { | ||
+ | new vehicleid = GetPlayerVehicleID(playerid); | ||
+ | if (vehicleid == 0) | ||
+ | return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства."); | ||
+ | ChangeVehiclePaintjob(vehicleid, 3); | ||
+ | return SendClientMessage(playerid, -1, "Раскраска успешно удалена."); | ||
+ | } | ||
+ | |||
+ | // Функция возвращает доступное количество раскрасок для транспортного средства | ||
+ | // (например, если функция вернула "3", значит доступны раскраски под ID от 0 до 2). | ||
+ | stock GetNumberOfPaintjobsForVehicle(vehiclemodel) | ||
{ | { | ||
switch(vehiclemodel) | switch(vehiclemodel) | ||
{ | { | ||
case 483: | case 483: | ||
− | |||
return 1; | return 1; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
case 575: | case 575: | ||
− | |||
return 2; | return 2; | ||
− | + | case 534, 535, 536, 558, 559, 560, 561, 562, 565, 567, 576: | |
+ | return 3; | ||
} | } | ||
return 0; | return 0; | ||
Строка 54: | Строка 71: | ||
{{SeeAlso}} | {{SeeAlso}} | ||
* [[ChangeVehicleColor]] | * [[ChangeVehicleColor]] | ||
+ | * [[OnVehiclePaintjob]] | ||
[[Категория:Функции SA-MP]] | [[Категория:Функции SA-MP]] |
Текущая версия на 15:57, 5 марта 2019
Описание:
Изменяет рисунок, нанесённый на транспортное средство.
Параметры:
(vehicleid, paintjobid) |
Параметры:
(vehicleid) |
vehicleid | ID транспортного средства. |
paintjobid | ID рисунка, который требуется нанести на авто. Значение 3 удалит текущий нанесённый рисунок.
|
Возвращаемое значение:
Всегда возвращает
1
.
Пример использования:
CMD:randpaintjob(playerid, params[])
{
new vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 0)
return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства.");
// Получим доступное количество раскрасок для текущего ТС, используя собственную функцию (см. ниже).
new num_paintjobs = GetNumberOfPaintjobsForVehicle(GetVehicleModel(vehicleid));
if (num_paintjobs == 0)
return SendClientMessage(playerid, -1, "Ошибка: Для текущего транспортного средства нет доступных раскрасок.");
// Сменим раскраску и выведем сообщение.
new rand_paintjob = random(num_paintjobs);
ChangeVehiclePaintjob(vehicleid, rand_paintjob);
new string[128];
format(string, sizeof(string), "Вы сменили раскраску транспорта на %d.", rand_paintjob);
return SendClientMessage(playerid, -1, string);
}
CMD:removepaintjob(playerid, params[])
{
new vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 0)
return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства.");
ChangeVehiclePaintjob(vehicleid, 3);
return SendClientMessage(playerid, -1, "Раскраска успешно удалена.");
}
// Функция возвращает доступное количество раскрасок для транспортного средства
// (например, если функция вернула "3", значит доступны раскраски под ID от 0 до 2).
stock GetNumberOfPaintjobsForVehicle(vehiclemodel)
{
switch(vehiclemodel)
{
case 483:
return 1;
case 575:
return 2;
case 534, 535, 536, 558, 559, 560, 561, 562, 565, 567, 576:
return 3;
}
return 0;
}
{
new vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 0)
return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства.");
// Получим доступное количество раскрасок для текущего ТС, используя собственную функцию (см. ниже).
new num_paintjobs = GetNumberOfPaintjobsForVehicle(GetVehicleModel(vehicleid));
if (num_paintjobs == 0)
return SendClientMessage(playerid, -1, "Ошибка: Для текущего транспортного средства нет доступных раскрасок.");
// Сменим раскраску и выведем сообщение.
new rand_paintjob = random(num_paintjobs);
ChangeVehiclePaintjob(vehicleid, rand_paintjob);
new string[128];
format(string, sizeof(string), "Вы сменили раскраску транспорта на %d.", rand_paintjob);
return SendClientMessage(playerid, -1, string);
}
CMD:removepaintjob(playerid, params[])
{
new vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 0)
return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства.");
ChangeVehiclePaintjob(vehicleid, 3);
return SendClientMessage(playerid, -1, "Раскраска успешно удалена.");
}
// Функция возвращает доступное количество раскрасок для транспортного средства
// (например, если функция вернула "3", значит доступны раскраски под ID от 0 до 2).
stock GetNumberOfPaintjobsForVehicle(vehiclemodel)
{
switch(vehiclemodel)
{
case 483:
return 1;
case 575:
return 2;
case 534, 535, 536, 558, 559, 560, 561, 562, 565, 567, 576:
return 3;
}
return 0;
}
См. также: