Команда /wbook

Бесплатная консультация юриста

+7 (800) 302-87-29

Реклама jurik.ru

Трудовая книжка (в ролевых серверах SA‑MP часто называют Labor Book или ТК) – один из ключевых документов персонажа. Она фиксирует историю трудоустройства‚ полученные навыки и стаж. На многих RP‑серверах игроки могут показать её другим персонажам‚ используя специальную команду. В этой статье мы разберём всё‚ что нужно знать о команде /wbook (или её аналогах) – от синтаксиса до типичных ошибок.


Содержание

  1. Что такое трудовая книжка в RP‑серверах
  2. Общая информация о команде /wbook
  3. Синтаксис и параметры
  4. Примеры использования
  5. Пример серверного скрипта (Pawn)
  6. Типичные ошибки и их исправление
  7. Связанные команды
  8. FAQ

Что такое трудовая книжка в RP‑серверах

Трудовая книжка – это виртуальный документ‚ в котором храниться:

  • Дата начала и окончания работы в каждом месте.
  • Должность и уровень квалификации.
  • Полученные навыки (например‚ владение оружием‚ медицинские навыки‚ водительские права).
  • Сведения о работодателе и рекомендациях.

На некоторых серверах (например‚ Diamond RP‚ Arizona RP) трудовая книжка уже полностью интегрирована в игровую экономику‚ а её просмотр/показ является частью «реального» взаимодействия между персонажами.


Общая информация о команде /wbook

Команда /wbook (иногда /laborbook или /showbook) позволяет игроку открыть свою трудовую книжку и показать её другому игроку. В большинстве реализаций команда имеет два режима:

  • Самостоятельный просмотр – игрок открывает книжку только для себя.
  • Показ другому игроку – игрок указывает ID персонажа‚ которому хочет показать книжку.

Внутри скриптов SA‑MP команда реализуется через обработчик CMD:wbook в файле script.pwn. Ниже – типичный шаблон‚ найденный в открытых репозиториях.


Синтаксис и параметры

Синтаксис Описание
/wbook Открывает собственную трудовую книжку (без указания получателя).
/wbook <ID_игрока> Показывает книжку игроку с указанным ID.

Важно: большинство серверов требуют‚ чтобы у вызывающего игрока был активный «предложенный» запрос (например‚ wbook_proposalid_player_wbook)‚ иначе команда вернёт сообщение «У вас нет активных предложений!». Это сделано для предотвращения спама.


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

Показать свою книжку самому себе

/wbook

После ввода команды игрок получит диалоговое окно с историей трудоустройства.

Показать книжку другому игроку

/wbook 12

Где 12 – ID игрока‚ которому вы хотите показать книжку. Если у вас нет активного предложения‚ вы увидите сообщение:

У вас нет активных предложений!

Пример «ролевой» сценария

Игрок John подходит к работодателю Mike и говорит:

/me достает из рюкзака трудовую книжку и протягивает её Mike

Затем вводит:

/wbook 5

где 5 – ID Mike. После подтверждения Mike увидит окно с вашими записями и сможет принять решение о найме.


Пример серверного скрипта (Pawn)

Ниже – минимальный рабочий пример реализации команды /wbook в стиле Advance Role Play. Вы можете адаптировать его под свой сервер.

/--------------------------------------------------------------
 CMD:wbook – показать трудовую книжку
--------------------------------------------------------------/
CMD:wbook(playerid‚ params[])
{
 // Если игрок нажал клавишу «Y» (KEY_YES) в диалоге
 if (newkeys == KEY_YES)
 {
 // Проверяем‚ что у игрока есть валидный ID
 if (id_player_wbook == INVALID_PLAYER_ID ||
 playerid_wbook == INVALID_PLAYER_ID ||
 playerid_wbook == playerid)
 {
 SendClientMessage(playerid‚ -1‚ "У вас нет активных предложений!");
 return 1;
 }

 // Проверяем‚ что у игрока действительно есть предложение
 if (!wbook_proposalid_player_wbook)
 {
 SendClientMessage(playerid‚ 0xFF6600AA‚ "У вас нет активных предложений!");
 return 1;
 }

 // Получаем имя игрока‚ которому показываем книжку
 new player_name[MAX_PLAYER_NAME];
 GetPlayerName(playerid_wbook‚ player_name‚ sizeof(player_name));

 // Формируем строку с датой и временем (пример)
 new str[128];
 format(str‚ sizeof(str)‚ "Трудовая книжка %s (ID: %d)"‚ player_name‚ playerid_wbook);
 // Открываем диалоговое окно (пример)
 ShowPlayerDialog(playerid‚ DIALOG_WBOOK‚ DIALOG_STYLE_MSGBOX‚
 "Трудовая книжка"‚ str‚ "OK"‚ "");

 // Логируем действие
 printf("[WBOOK] %s (ID %d) показал трудовую книжку игроку %s (ID %d)"‚
 GetPlayerName(playerid)‚ playerid‚
 player_name‚ playerid_wbook);
 }
 return 1;
}

Ключевые моменты:

  • Проверка INVALID_PLAYER_ID защищает от ошибок‚ когда ID не найден.
  • Переменная wbook_proposalid_player_wbook отвечает за «активность» предложения.
  • Функция ShowPlayerDialog выводит окно с данными книжки.

Типичные ошибки и их исправление

Ошибка Причина Решение
«У вас нет активных предложений!» Переменная wbook_proposalid_player_wbook равна false. Убедитесь‚ что перед вызовом /wbook вы создали предложение (обычно через /offer или аналог).
«Invalid player ID» (ID игрока не найден) В параметре указан неверный ID или игрок вышел из сервера. Проверьте‚ что игрок онлайн‚ используйте IsPlayerConnected(id) перед вызовом.
Команда не реагирует (ничего не происходит) Скрипт не зарегистрировал обработчик CMD:wbook или конфликтует с другими плагинами. Перепроверьте OnPlayerCommandText и порядок загрузки плагинов.
Окно не открывается‚ но в консоли есть сообщение об ошибке Недостаточно места в буфере str (переполнение). Увеличьте размер массива (например‚ str[256]).

  • /pass – показать паспорт.
  • /lic – показать лицензии и права.
  • /med – показать медицинскую карту.
  • /skill или /skil – показать навыки персонажа.
  • /pay – передать деньги (часто используется совместно с показом ТК при найме).
  • /hi – пожать руку (может использоваться как «приветствие» перед показом ТК).

Эти команды часто вызываются в цепочке ролевых действий: сначала игрок приветствует‚ потом показывает паспорт‚ затем трудовую книжку и‚ наконец‚ передаёт деньги за работу.


FAQ

  1. Можно ли открыть трудовую книжку без команды?
    Да‚ некоторые серверы позволяют открыть её через меню «Инвентарь» (обычно клавиша F2)‚ но команда /wbook остаётся самым быстрым способом.
  2. Почему на сервере Arizona RP команда не работает?
    На этом сервере трудовая книжка была перенесена в «электронный» формат и открывается только через лаунчер. Нужно обновить клиентскую часть до версии 2.0+ и использовать /wbook после перезапуска.
  3. Можно ли показать ТК нескольким игрокам одновременно?
    Стандартный скрипт поддерживает только одного получателя. Для массового показа требуется модификация: использовать цикл foreach по массиву ID и отправлять диалог каждому игроку.
  4. Как добавить в ТК новую запись (например‚ повышение квалификации)?
    На стороне сервера вызывается функция AddLaborBookEntry(playerid‚ "Название работы"‚ "Дата начала"‚ "Дата окончания"‚ "Навыки"). Реализацию ищите в файле laborbook.pwn вашего проекта.
  5. Что делать‚ если после обновления сервера команда выдает ошибку «undefined variable»?
    Проверьте‚ что в файле script.pwn объявлены все глобальные переменные: new wbook_proposalid_player_wbook[MAX_PLAYERS]; и new id_player_wbook[MAX_PLAYERS];. После добавления – перекомпилируйте скрипт.

Команда /wbook – один из базовых инструментов ролевого взаимодействия в SA‑MP. Правильное её использование делает процесс найма‚ проверки квалификации и обмена документами более реалистичным и удобным. Следуя рекомендациям из этой статьи‚ вы сможете:

  • Без ошибок показывать свою трудовую книжку другим игрокам.
  • Отлаживать серверный скрипт и устранять типичные проблемы.
  • Интегрировать ТК в более сложные ролевые сценарии (платёж‚ проверка навыков‚ увольнение).

Не забывайте поддерживать актуальность клиентской части (особенно после обновлений серверов типа Arizona RP) и проверять‚ что у вас есть активные предложения перед вызовом команды. Удачной игры и успешных карьерных ростов в мире San Andreas!