Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1
  1. #1
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±

    AttachObjectToPlayer

    Описание:
    Прикрепляет к игроку объект, созданный с помощью 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.
      Без оптимизации:
      1. if(strcmp(cmdtext, "/sampletext", true) == 0)
      2. {
      3. SendClientMessage(playerid, -1, "Sample text");
      4. return 1;
      5. }

      С оптимизацией возвращаемого значения (к тому же, там всего 1 предложение и можно убрать фигурные скобки):
      1. if(strcmp(cmdtext, "/sampletext", true) == 0)
      2. return SendClientMessage(playerid, -1, "Sample text");

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

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



    Статью подготовил: Daniel_Cortez

    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 4 пользователя(ей) сказали cпасибо:
    $continue$ (25.09.2015) gangzone.ini (25.09.2015) L0ndl3m (25.09.2015) Nurick (26.09.2015)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •