RU/Resource:Scoreboard: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(new page)
 
m (Reverted edits by Bonzo (talk) to last revision by Vincent)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:RU/Resource]]
{{RU/Resource page}}
__NOTOC__
__NOTOC__
The scoreboard displays connected players, teams, pings and other data in a gridlist for players ingame. It also has a javascript-enabled web interface, so it can be viewed from a browser.
DirectX scoreboard (панель игроков) отображает ники, команды, пинги и другие данные подключенных к серверу игроков. У нее также имеется веб-интерфейс на javascript, что позволяет пользоваться ею из браузера. Создана как замена старой [[Resource:oldScoreboard|scoreboard]], созданной [[User:jbeta|jbeta]].


When you add a column to the scoreboard, it's linked to the element data field of the same name, so if you add the "score" column, element data in the field "score" will be shown for all players and teams.
Наиболее веское различие по сравнению со старым ресурсом - то, что новая панель просмотра игроков создана с полным использованием доустпных в MTA функций прорисовки DirectX.
При добавлении в нее столбца, для него создается соответсвующее поле element data, так что при добавлении столбца "score", содержимое поля "score" из element data и будет показываться в самой панели для всех игроков и команд.


==Exported serverside functions==
Панель игроков входит в стандартный пакет поставки сервера.
You can call them from another resource using call():
<syntaxhighlight lang="lua">call(getResourceFromName("scoreboard"), "addScoreboardColumn", "wanted level")</syntaxhighlight>


==Экспортированные функции/события==
<section name="Server" class="server" show="true">
===Функции===
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool addScoreboardColumn( string columnName, [ element visibleToElement = getRootElement(), int columnPosition = #columns - 1, float columnSize = 0.1 ] )
bool scoreboardAddColumn ( string name, [ element forElement = getRootElement(), int width = 70, string friendlyName = name, int priority = slot after "name" column ] )
bool removeScoreboardColumn( string columnName )
bool setPlayerScoreboardForced( player thePlayer, bool forced )
table getScoreboardColumns( ) --returns an ordered array of {name=columnName,size=columnSize} entries
bool resetScoreboardColumns( ) --leaves only "name, ping"
</syntaxhighlight>
</syntaxhighlight>
*'''name:''' Имя столбца (также является и именем поля в element data, из которого будет браться информация).
*'''forElement:''' Игрок, для которого создается столбец.
*'''width:''' Ширина столбца в пикселях.
*'''friendlyName:''' Дружелюбное имя столбца (отображается непосредственно в самой панели).
*'''priority:''' Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.
<br>


You can set the scoreboard data with setElementData:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">setElementData ( thePlayer, "wanted level", 3 ) --3 is inserted in the player's wanted level column</syntaxhighlight>
bool scoreboardRemoveColumn ( string name, [ element forElement = getRootElement() ] )
</syntaxhighlight>
*'''name:''' Имя столбца.
*'''forElement:''' Игрок, для которого убирается столбец.
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardClearColumns ( [ element forElement = getRootElement() ] )
</syntaxhighlight>
*'''forElement:''' Игрок, чьи столбцы в scoreboard будут очищены.
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardResetColumns ( [ element forElement = getRootElement() ] )
</syntaxhighlight>
*'''forElement:''' Игрок, чьи столбцы в scoreboard будут сброшены (останутся только ник и пинг).
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardSetForced ( bool forced, [ element forElement = getRootElement() ] )
</syntaxhighlight>
*'''forced:''' Будет ли scoreboard принудительно открыта.
*'''forElement:''' Игрок, чья scoreboard будет принудительно открыта.
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardSetSortBy ( string name, [ bool descending = true, element forElement = getRootElement() ] )
</syntaxhighlight>
*'''name:''' Имя столбца. Может быть установлено на ''nil'' для отключения сортировки.
*'''descending:''' Использовать порядок сортировки по убыванию.
*'''forElement:''' Игрок, чья scoreboard будет отсортирована.
<br>
 
<syntaxhighlight lang="lua">
int scoreboardGetColumnPriority ( string name )
</syntaxhighlight>
*'''name:''' Имя столбца.
'''Возвращает приоритетный порядок столбца (1-500).'''
<br>
 
 
<syntaxhighlight lang="lua">
bool scoreboardSetColumnPriority ( string name, int priority, [ element forElement = getRootElement() ] )
</syntaxhighlight>
*'''name:''' Имя столбца.
*'''priority:''' Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.
*'''forElement:''' Игрок, для которого создается столбец.
<br>
 
<syntaxhighlight lang="lua">
int scoreboardGetColumnCount ()
</syntaxhighlight>
*''Аргументов нет.''
'''Возвращает количество столбцов в scoreboard.'''
<br>
 
 
<syntaxhighlight lang="lua">
bool scoreboardForceTeamsVisible( bool enabled )
</syntaxhighlight>
*'''enabled:''' Будут ли имена команд всегда видны в scoreboard (настройки пользователя - проигнорированы)?
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardForceTeamsHidden( bool enabled )
</syntaxhighlight>
*'''enabled:''' Будут ли имена команд всегда скрыты в scoreboard (настройки пользователя - проигнорированы)?
<br>
 
<syntaxhighlight lang="lua">
bool isPrioritySlotFree( int slot )
</syntaxhighlight>
*'''slot:''' Приоритетный порядок столбца, который будет проверен.
'''Проверяет, свободен ли приоритетный порядок столбца по данному номеру.'''
<br>
 
 
<syntaxhighlight lang="lua">
int getNextFreePrioritySlot( [ int startAt = 1 ] )
</syntaxhighlight>
*'''startAt:''' С какой позиции начинать искать свободные места.
'''Находит следующий свободный приоритетный порядок столбца.'''
<br>
 
 
'''Заметка:''' Функции из спика ниже, использующиеся также в ресурсе [[Resource:OldScoreboard|oldScoreboard]], работают и в этом тоже.
<syntaxhighlight lang="lua">
bool addScoreboardColumn ( string columnName, element visibleToElement, int columnPosition, float columnSize )
bool removeScoreboardColumn ( string columnName )
bool setPlayerScoreboardForced ( player thePlayer, bool forced )
bool resetScoreboardColumns ()
</syntaxhighlight>
</section>
<section name="Client" class="client" show="true">
===Функции===
<syntaxhighlight lang="lua">
bool scoreboardAddColumn ( string name, [ int width = 70, string friendlyName = name, int priority = slot after "name" column, function textFunction = nil ] )
</syntaxhighlight>
*'''name:''' Имя столбца (также является и именем поля в element data, из которого будет браться информация).
*'''width:''' Ширина столбца в пикселях.
*'''friendlyName:''' Дружелюбное имя столбца (отображается непосредственно в самой панели).
*'''priority:''' Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.
*'''textFunction:''' Текст функции, которая будет использоваться для обработки содержания столбца перед его показом. Например, эта функция будет заменять "_" в никах игроков пробелом, если она применена к столбцу "name".
<syntaxhighlight lang="lua">
function fixName( playerName )
    return playerName:gsub( "_", " " )
end
</syntaxhighlight>
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardRemoveColumn ( string name )
</syntaxhighlight>
*'''name:''' Имя столбца.
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardClearColumns ()
</syntaxhighlight>
*''Аргументов нет.''
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardResetColumns ()
</syntaxhighlight>
*''Аргументов нет.''
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardSetForced ( bool forced )
</syntaxhighlight>
*'''forced:''' Будет ли scoreboard принудительно открыта.
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardSetColumnTextFunction ( string name, function textFunction )
</syntaxhighlight>
*'''name:''' Имя столбца.
*'''textFunction:''' Текст функции, которая будет использоваться для обработки содержания столбца перед его показом. Например, эта функция будет заменять "_" в никах игроков пробелом, если она применена к столбцу "name".
<syntaxhighlight lang="lua">
function fixName( playerName )
    return playerName:gsub( "_", " " )
end
</syntaxhighlight>
<br>
 
<syntaxhighlight lang="lua">
bool scoreboardSetSortBy ( string name, [ bool descending = true ] )
</syntaxhighlight>
*'''name:''' Имя столбца. Может быть установлено на ''nil'' для отключения сортировки.
*'''descending:''' Использовать порядок сортировки по убыванию.
<br>
 
<syntaxhighlight lang="lua">
int scoreboardGetColumnPriority ( string name )
</syntaxhighlight>
*'''name:''' Имя столбца.
'''Возвращает приоритетный порядок столбца (1-500).'''
<br>
 
 
<syntaxhighlight lang="lua">
bool scoreboardSetColumnPriority ( string name, int priority )
</syntaxhighlight>
*'''name:''' Имя столбца.
*'''priority:''' Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.
*'''forElement:''' Игрок, для которого создается столбец.
<br>
 
<syntaxhighlight lang="lua">
int scoreboardGetColumnCount ()
</syntaxhighlight>
*''Аргументов нет.''
'''Возвращает количество столбцов в scoreboard.'''
<br>
 
 
<syntaxhighlight lang="lua">
bool isPrioritySlotFree( int slot )
</syntaxhighlight>
*'''slot:''' Приоритетный порядок столбца, который будет проверен.
'''Проверяет, свободен ли приоритетный порядок столбца по данному номеру.'''
<br>
 
 
<syntaxhighlight lang="lua">
int getNextFreePrioritySlot( [ int startAt = 1 ] )
</syntaxhighlight>
*'''startAt:''' С какой позиции начинать искать свободные места.
'''Находит следующий свободный приоритетный порядок столбца.'''
<br>
 
 
<syntaxhighlight lang="lua">
int, int scoreboardGetTopCornerPosition ()
</syntaxhighlight>
'''Возвращает абсолютную позицию верхнего угла scoreboard, если она на экране, в противном случае - ''false''.'''
<br>
 
 
<syntaxhighlight lang="lua">
int, int scoreboardGetSize ()
</syntaxhighlight>
'''Возвращает абсолютный размер (ширина, высота) the scoreboard, если она на экране, в противном случае - ''false''.'''
<br>
 
 
<syntaxhighlight lang="lua">
table scoreboardGetSelectedRows ()
</syntaxhighlight>
''Возвращает таблицу со всеми выделенными полями (элемент, который может оказаться либо игроком, либо командой). Может также вернуть пустую таблицу, если таковых нет.''
<br>
 
 
 
'''Заметка:''' Функции из спика ниже, использующиеся также в ресурсе [[oldScoreboard]], работают и в этом тоже.
<syntaxhighlight lang="lua">
bool setScoreboardForced ( bool forced )
</syntaxhighlight>
 
===События===
====onClientPlayerScoreboardClick====
<syntaxhighlight lang="lua">
bool selected, int cursorX, int cursorY
</syntaxhighlight>
*'''selected:''' Было ли слудующее поле выделено (''true'') или нет (''false'').
*'''cursorX:''' Абсолютная позиция курсора по оси X.
*'''cursorY:''' Абсолютная позиция курсора по оси Y.
'''Срабатывает, когда игрок кликает по полю с командой/игроком левой кнопкой мыши.'''<br>
'''''Source'' события - элемент, по которому кликнули, может оказаться либо [[player|игроком]], либо [[team|командой]].'''
</section>
 
Вы можете вызывать их и из других ресурсов, используя call()
<syntaxhighlight lang="lua">
call ( getResourceFromName ( "dxscoreboard" ), "scoreboardAddColumn", "Wanted level" )
 
-- Заметьте, что синтаксис ниже - тоже правильный
exports.dxscoreboard:scoreboardAddColumn( "Wanted level" )
</syntaxhighlight>
 
Вы можете задавать данные в scoreboard через функцию setElementData:
<syntaxhighlight lang="lua">
-- 3 вставляется в столбец wanted level игрока, если столбец,
-- названный "Wanted level" был добавлен в scoreboard
setElementData ( player, "Wanted level", 3 )
</syntaxhighlight>


==Issues/TODO==
[[en:Resource:Scoreboard]]
*Columns name must be unique, you can't add a column with the same name to different elements yet
*Scoreboard data for web listing is being sent all at once, should allow sending of separate chunks

Latest revision as of 03:05, 1 April 2016

DirectX scoreboard (панель игроков) отображает ники, команды, пинги и другие данные подключенных к серверу игроков. У нее также имеется веб-интерфейс на javascript, что позволяет пользоваться ею из браузера. Создана как замена старой scoreboard, созданной jbeta.

Наиболее веское различие по сравнению со старым ресурсом - то, что новая панель просмотра игроков создана с полным использованием доустпных в MTA функций прорисовки DirectX. При добавлении в нее столбца, для него создается соответсвующее поле element data, так что при добавлении столбца "score", содержимое поля "score" из element data и будет показываться в самой панели для всех игроков и команд.

Панель игроков входит в стандартный пакет поставки сервера.

Экспортированные функции/события

Click to collapse [-]
Server

Функции

bool scoreboardAddColumn ( string name, [ element forElement = getRootElement(), int width = 70, string friendlyName = name, int priority = slot after "name" column ] )
  • name: Имя столбца (также является и именем поля в element data, из которого будет браться информация).
  • forElement: Игрок, для которого создается столбец.
  • width: Ширина столбца в пикселях.
  • friendlyName: Дружелюбное имя столбца (отображается непосредственно в самой панели).
  • priority: Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.


bool scoreboardRemoveColumn ( string name, [ element forElement = getRootElement() ] )
  • name: Имя столбца.
  • forElement: Игрок, для которого убирается столбец.


bool scoreboardClearColumns ( [ element forElement = getRootElement() ] )
  • forElement: Игрок, чьи столбцы в scoreboard будут очищены.


bool scoreboardResetColumns ( [ element forElement = getRootElement() ] )
  • forElement: Игрок, чьи столбцы в scoreboard будут сброшены (останутся только ник и пинг).


bool scoreboardSetForced ( bool forced, [ element forElement = getRootElement() ] )
  • forced: Будет ли scoreboard принудительно открыта.
  • forElement: Игрок, чья scoreboard будет принудительно открыта.


bool scoreboardSetSortBy ( string name, [ bool descending = true, element forElement = getRootElement() ] )
  • name: Имя столбца. Может быть установлено на nil для отключения сортировки.
  • descending: Использовать порядок сортировки по убыванию.
  • forElement: Игрок, чья scoreboard будет отсортирована.


int scoreboardGetColumnPriority ( string name )
  • name: Имя столбца.

Возвращает приоритетный порядок столбца (1-500).


bool scoreboardSetColumnPriority ( string name, int priority, [ element forElement = getRootElement() ] )
  • name: Имя столбца.
  • priority: Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.
  • forElement: Игрок, для которого создается столбец.


int scoreboardGetColumnCount ()
  • Аргументов нет.

Возвращает количество столбцов в scoreboard.


bool scoreboardForceTeamsVisible( bool enabled )
  • enabled: Будут ли имена команд всегда видны в scoreboard (настройки пользователя - проигнорированы)?


bool scoreboardForceTeamsHidden( bool enabled )
  • enabled: Будут ли имена команд всегда скрыты в scoreboard (настройки пользователя - проигнорированы)?


bool isPrioritySlotFree( int slot )
  • slot: Приоритетный порядок столбца, который будет проверен.

Проверяет, свободен ли приоритетный порядок столбца по данному номеру.


int getNextFreePrioritySlot( [ int startAt = 1 ] )
  • startAt: С какой позиции начинать искать свободные места.

Находит следующий свободный приоритетный порядок столбца.


Заметка: Функции из спика ниже, использующиеся также в ресурсе oldScoreboard, работают и в этом тоже.

bool addScoreboardColumn ( string columnName, element visibleToElement, int columnPosition, float columnSize )
bool removeScoreboardColumn ( string columnName )
bool setPlayerScoreboardForced ( player thePlayer, bool forced )
bool resetScoreboardColumns ()
Click to collapse [-]
Client

Функции

bool scoreboardAddColumn ( string name, [ int width = 70, string friendlyName = name, int priority = slot after "name" column, function textFunction = nil ] )
  • name: Имя столбца (также является и именем поля в element data, из которого будет браться информация).
  • width: Ширина столбца в пикселях.
  • friendlyName: Дружелюбное имя столбца (отображается непосредственно в самой панели).
  • priority: Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.
  • textFunction: Текст функции, которая будет использоваться для обработки содержания столбца перед его показом. Например, эта функция будет заменять "_" в никах игроков пробелом, если она применена к столбцу "name".
function fixName( playerName )
    return playerName:gsub( "_", " " )
end


bool scoreboardRemoveColumn ( string name )
  • name: Имя столбца.


bool scoreboardClearColumns ()
  • Аргументов нет.


bool scoreboardResetColumns ()
  • Аргументов нет.


bool scoreboardSetForced ( bool forced )
  • forced: Будет ли scoreboard принудительно открыта.


bool scoreboardSetColumnTextFunction ( string name, function textFunction )
  • name: Имя столбца.
  • textFunction: Текст функции, которая будет использоваться для обработки содержания столбца перед его показом. Например, эта функция будет заменять "_" в никах игроков пробелом, если она применена к столбцу "name".
function fixName( playerName )
    return playerName:gsub( "_", " " )
end


bool scoreboardSetSortBy ( string name, [ bool descending = true ] )
  • name: Имя столбца. Может быть установлено на nil для отключения сортировки.
  • descending: Использовать порядок сортировки по убыванию.


int scoreboardGetColumnPriority ( string name )
  • name: Имя столбца.

Возвращает приоритетный порядок столбца (1-500).


bool scoreboardSetColumnPriority ( string name, int priority )
  • name: Имя столбца.
  • priority: Приоритетный порядок столбца (1-500). Если данный номер по порядку занят, то располагающийся по нему столбец будет сдвинут вперед.
  • forElement: Игрок, для которого создается столбец.


int scoreboardGetColumnCount ()
  • Аргументов нет.

Возвращает количество столбцов в scoreboard.


bool isPrioritySlotFree( int slot )
  • slot: Приоритетный порядок столбца, который будет проверен.

Проверяет, свободен ли приоритетный порядок столбца по данному номеру.


int getNextFreePrioritySlot( [ int startAt = 1 ] )
  • startAt: С какой позиции начинать искать свободные места.

Находит следующий свободный приоритетный порядок столбца.


int, int scoreboardGetTopCornerPosition ()

Возвращает абсолютную позицию верхнего угла scoreboard, если она на экране, в противном случае - false.


int, int scoreboardGetSize ()

Возвращает абсолютный размер (ширина, высота) the scoreboard, если она на экране, в противном случае - false.


table scoreboardGetSelectedRows ()

Возвращает таблицу со всеми выделенными полями (элемент, который может оказаться либо игроком, либо командой). Может также вернуть пустую таблицу, если таковых нет.


Заметка: Функции из спика ниже, использующиеся также в ресурсе oldScoreboard, работают и в этом тоже.

bool setScoreboardForced ( bool forced )

События

onClientPlayerScoreboardClick

bool selected, int cursorX, int cursorY
  • selected: Было ли слудующее поле выделено (true) или нет (false).
  • cursorX: Абсолютная позиция курсора по оси X.
  • cursorY: Абсолютная позиция курсора по оси Y.

Срабатывает, когда игрок кликает по полю с командой/игроком левой кнопкой мыши.
Source события - элемент, по которому кликнули, может оказаться либо игроком, либо командой.

Вы можете вызывать их и из других ресурсов, используя call()

call ( getResourceFromName ( "dxscoreboard" ), "scoreboardAddColumn", "Wanted level" )

-- Заметьте, что синтаксис ниже - тоже правильный
exports.dxscoreboard:scoreboardAddColumn( "Wanted level" )

Вы можете задавать данные в scoreboard через функцию setElementData:

-- 3 вставляется в столбец wanted level игрока, если столбец,
-- названный "Wanted level" был добавлен в scoreboard
setElementData ( player, "Wanted level", 3 )