PDA

Просмотр полной версии : [Native] AttachObjectToPlayer



Daniel_Cortez
25.09.2015, 20:39
Описание:

Прикрепляет к игроку объект, созданный с помощью CreateObject.

Параметры:

objectid - ID созданного ранее объекта.
playerid - ID игрока.
Float:OffsetX - смещение по оси X.
Float:OffsetY - смещение по оси Y.
Float:OffsetZ - смещение по оси Z.
Float:RotX - поворот по оси X.
Float:RotY - поворот по оси Y.
Float:RotZ - поворот по оси Z.


Возвращаемое значение:

Функция всегда возвращает 0.

Примечания:
Не путайте эту функцию с SetPlayerAttachedObject.
В AttachObjectToPlayer используется ID объекта, созданного с помощью CreateObject, в SetPlayerAttachedObject - ID модели объекта.
Функция возвращает 0 во всех случаях, поэтому нельзя определить успех её выполнения.
По той же причине, что и выше, нельзя сделать с этой функцией оптимизацию возвращаемых значений.
Рассмотрим такую оптимизацию на примере SendClientMessage.
Без оптимизации:

if(strcmp(cmdtext, "/sampletext", true) == 0)
{
SendClientMessage(playerid, -1, "Sample text");
return 1;
}

С оптимизацией возвращаемого значения (к тому же, там всего 1 предложение и можно убрать фигурные скобки):

if(strcmp(cmdtext, "/sampletext", true) == 0)
return SendClientMessage(playerid, -1, "Sample text");

SendClientMessage в любом случае вернёт 1 (игрок подключен, раз это он вызвал команду).
С функцией AttachObjectToPlayer такой оптимизации проделать не получится, т.к. функция никогда не возвращает 1.

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

// Простой редактор прикрепляемых объектов.
// Используйте /attachtest для создания объекта на вашем персонаже.
// Чтобы удалить прикреплённый объект, введите /attachtest ещё раз.
// Для работы требуются sscanf2 и DC_CMD (либо ZCMD).
CMD:attachtest(playerid, params[])
{ // by Daniel_Cortez \\ pro-pawn.ru
if(IsPlayerAdmin(playerid)) // Проверку на админа замените на свою.
return 1;
static objectid = 0;
if(objectid != 0) // Если объект уже создан - удалить его и вернуть управление.
{
DestroyObject(objectid);
objectid = 0;
return SendClientMessage(playerid, -1, !"Прикреплённый объект удалён.");
}
static const usage_msg[] =
!"Использование: /attachtest [ID модели] "\
"[смещение по осям (X, Y, Z)] [поворот по осям]";
extract params -> new modelid, Float:ox, Float:oy, Float:oz, Float:rx=0.00, Float:ry=0.00, Float:rz=0.00;else
return SendClientMessage(playerid, -1, usage_msg);
objectid = CreateObject(modelid, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00);
AttachObjectToPlayer(objectid, playerid, ox, oy, oz, rx, ry, rz);
return SendClientMessage(playerid, -1, !"Объект прикреплён.");
}



Статью подготовил: Daniel_Cortez (http://pro-pawn.ru/member.php?100-Daniel_Cortez)


Специально для Pro-Pawn.ru (http://www.pro-pawn.ru)
Копирование данной статьи на других ресурсах без разрешения автора запрещено.