ChangeVehiclePaintjob — различия между версиями

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск
(Новая страница: «{{Description | Управляет рисунком, нанесённым на транспортное средство. }} {{Params|vehicleid, paintjobid}} {{Pa…»)
 
 
(не показано 5 промежуточных версии 2 участников)
Строка 1: Строка 1:
 
{{Description
 
{{Description
| Управляет рисунком, нанесённым на транспортное средство.
+
| Изменяет рисунок, нанесённый на транспортное средство.
 
}}
 
}}
 
{{Params|vehicleid, paintjobid}}
 
{{Params|vehicleid, paintjobid}}
Строка 10: Строка 10:
 
{{Param
 
{{Param
 
| paintjobid
 
| paintjobid
|ID [[Покрасочные работы|рисунка]], который требуется нанести на авто. Значение '''3''' удалит нанесённый рисунок.  
+
|ID [[Покрасочные работы|рисунка]], который требуется нанести на авто. Значение <code>3</code> удалит текущий нанесённый рисунок.
 
}}
 
}}
 
{{Returns
 
{{Returns
| <code>1</code>, если транспорт с указанным ID существует на сервере, иначе <code>0</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> &rarr; <code>1</code>, <code>512</code> &rarr; <code>0</code>, <code>-256</code> &rarr; <code>0</code>, <code>-255</code> &rarr; <code>1</code> и т.д.
 
}}
 
}}
 
{{Example}}
 
{{Example}}
Строка 22: Строка 30:
 
if (vehicleid == 0)
 
if (vehicleid == 0)
 
return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства.");
 
return SendClientMessage(playerid, -1, "Ошибка: Вы не внутри транспортного средства.");
new count_paintjob = GetCountPaintjobForVehicle(GetVehicleModel(vehicleid));// Получим доступное количество раскрасок для текущего транспортного средства, используя самописную функцию.
+
 
if (count_paintjob == 0)
+
// Получим доступное количество раскрасок для текущего ТС, используя собственную функцию (см. ниже).
 +
new num_paintjobs = GetNumberOfPaintjobsForVehicle(GetVehicleModel(vehicleid));
 +
if (num_paintjobs == 0)
 
return SendClientMessage(playerid, -1, "Ошибка: Для текущего транспортного средства нет доступных раскрасок.");
 
return SendClientMessage(playerid, -1, "Ошибка: Для текущего транспортного средства нет доступных раскрасок.");
new rand_paintjob = random(count_paintjob);
+
 
 +
// Сменим раскраску и выведем сообщение.
 +
new rand_paintjob = random(num_paintjobs);
 
ChangeVehiclePaintjob(vehicleid, rand_paintjob);
 
ChangeVehiclePaintjob(vehicleid, rand_paintjob);
 
new string[128];
 
new string[128];
Строка 32: Строка 44:
 
}
 
}
  
stock GetCountPaintjobForVehicle(vehiclemodel)// Функция вернёт доступное количество раскрасок для транспортного средства (напр: если функция вернула "3", значит доступны раскраски от 0 до 2).
+
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 534, 535, 536, 558, 559, 560, 561, 562, 565, 567, 576:
 
{
 
return 3;
 
}
 
 
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.

Info rhombus.png
Примечание
Если в параметре paintjobid указан ID 1 или 2, но для транспорта не существует рисунка под этим ID, текущий рисунок будет удалён, как и при указании ID 3.
Если в параметре paintjobid указано значение меньше 0 или больше 3, функция ничего не делает.


Bug.png
Баг SA-MP
Функция всегда возвращает 1, даже когда указан неправильный ID рисунка (меньше 0 или больше 3) или несуществующий ID транспорта.
Значение параметра paintjobid урезается до 1 байта. Как результат, значение 256 трактуется как 0, 2571, 5120, -2560, -2551 и т.д.


Пример использования:

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;
}


См. также: