Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
31 lines (24 sloc) 4.08 KB

pc.send_block_mode()

Функция pc.send_block_mode блокирует определенные опции игрока.

Параметры функции

options

Тип number. Обязательный параметр. Битовая маска, образованная из сложения кодов опций. Если передать число 0, то все опции будут разблокированы.

Примечания

Функция не может быть вызвана анонимно.

Битовая маска получается путем сложения всех кодов опций, которые необходимо заблокировать:

Код Название флага Название опции
1 block_exchange Блокировка приема предложения торговли
2 block_party_invite Блокировка приема приглашений в группу
4 block_guild_invite Блокировка приема приглашений в гильдию
8 block_whisper Блокировка приема и отправки личных сообщений
16 block_messenger_invite Блокировка приема приглашений стать друзьями
32 block_party_request Блокировка приема просьб впустить в группу, где состоит игрок

На самом деле эта функция не блокирует опции. Она лишь изменяет положение кнопочек (нажата или не нажата) в окне настроек. Блокировкой занимаются квестовые флаги. Изменение опций происходит, когда игрок нажимает в клиенте кнопки опций. После каждого нажатия они отправляют на сервер команду /setblockmode options Python-функцией net.SendChatPacket(). Также блокировать опции можно и через квест, изменяя необходимые системные флаги с помощью функции pc.setqf(). Проще говоря, вызвав только эту функцию, опции у игрока не изменятся. Изменится лишь положение кнопочек в окне настроек, но по факту настройки изменены не будут. Чтобы настройки были изменены, вместе с этой функцией надо вызвать функцию pc.setqf() (если вызывается внутри квеста game_option) или pc.setf(), в качестве параметра flag_name передать значение из столбца «Название флага», а в качестве параметра value передать 1, чтобы заблокировать опцию и 0, чтобы разблокировать. Значения квестовых флагов привязаны к квесту game_options.

Объяснения на пальцах: битовая маска, равная 1, заблокирует опцию торговли. Если маска равна, допустим, 3, то заблокируется и торговля (+1), и приглашения в группу (+2). Если маска равна 25, то заблокируются предложения дружбы (+16), личные сообщения (+8) и торговля (+1). Пример кода, блокирующий только приглашения в группу и торговлю:

pc.send_block_mode(3)
pc.setf("game_options", "block_exchange", 1) -- блокируем торговлю
pc.setf("game_options", "block_party_invite", 1) -- блокируем приглашения в группу