PL/Resource:scoreboard
Scoreboard (lista graczy) oparty o DirectX wyświetla dostępnych graczy na serwerze oraz drużyny (teamy). Na liście graczy znajdziemy informacje o nich takie jak nick, drużyna czy ping. Scoreboard posiada także wbudowany oparty o javascript interfejs web, dzięki czemu scoreboard dostępny jest także z poziomu przeglądarki. Zasób ten powstał jako lepsza alternatywa dla starego scoreboard'u stworzonego przez jbeta.
Główna różnica względem starego scoreboard'u polega na tym, że ten został w pełni oparty o funkcje rysowania DirectX dostępne w MTA.
Gdy dodajesz kolumnę do scoreboardu to jako jej treść będzie pobierana element data o takiej samej nazwie jak nazwa kolumny. Czyli jeśli dodasz kolumnę "punkty" to w jej treści wyświetlana będzie wartość elementdaty o nazwie "punkty".
Dostępny do pobrania na stronie MTA community.
Kolory poszczególnych komórek
Obsługiwane są niestandardowe kolory w postaci #RRGGBB w komórkach z nazwami drużyny czy graczy. Należy to najpierw włączyć w konfiguracji zasobu w polu allowColorcodedNames. Pozostałe komórki nie wspierają niestandardowych kolorów, ale zamiast tego w ustawieniach XML dostępna jest opcja content_color, która pozwala ustalić kolor wszystkich innych komórek niż te zawierające nazwy. Ustawienia mogą być zmieniane przez użytkownika za pomocą przycisku settings.... W pliku dxscoreboard_clientsettings.lua znajdziesz też inne ustawienia.
Eksportowane funkcje i zdarzenia
Funkcje
bool scoreboardAddColumn ( string name, [ element forElement = getRootElement(), int width = 70, string friendlyName = name, int priority = slot after "name" column ] )
- name: Nazwa kolumny, która musi być jednocześnie nazwą elementdaty z której pobrane zostaną dane do wyświetlenia. Nie jest to wyświetlana nazwa.
- forElement: Gracz dla którego ma zostać dodana kolumna.
- width: Szerokość kolumny w pikselach.
- friendlyName: Nazwa kolumny, która będzie wyświetlana na liście.
- priority: Slot kolumny po kolumnie "name" (1-500). Jeśli dany slot nie jest wolny to kolumna z tego slotu zostanie przesunięta dalej.
bool scoreboardRemoveColumn ( string name, [ element forElement = getRootElement() ] )
- name: Nazwa kolumny.
- forElement: Gracz dla którego kolumna ma zostać usunięta.
bool scoreboardClearColumns ( [ element forElement = getRootElement() ] )
- forElement: Gracz, dla którego kolumna ma zostać wyczyszczona.
bool scoreboardResetColumns ( [ element forElement = getRootElement() ] )
- forElement: Gracz dla którego kolumny powinny zostać zresetowane (zostaje tylko nick i ping)
bool scoreboardSetForced ( bool forced, [ element forElement = getRootElement() ] )
- forced: Wartość określająca czy scoreboard ma zostać wymuszony.
- forElement: Gracz dla którego scoreboard ma zostać wymuszony lub nie.
bool scoreboardSetSortBy ( string name, [ bool descending = true, element forElement = getRootElement() ] )
- name: Nazwa kolumny, można też podać nil aby wyłączyć sortowanie.
- descending: Wartość określająca czy sortowanie ma być malejące.
- forElement: Gracz dla którego ma zostać zastosowane sortowanie.
int scoreboardGetColumnPriority ( string name )
- name: Nazwa kolumny.
Zwraca priorytet (slot) kolumny (1-500).
bool scoreboardSetColumnPriority ( string name, int priority, [ element forElement = getRootElement() ] )
- name: Nazwa kolumny.
- priority: Slot kolumny po kolumnie "name" (1-500). Jeśli dany slot nie jest wolny to kolumna z tego slotu zostanie przesunięta dalej.
- forElement: Gracz dla którego ma zostać ustawiony
int scoreboardGetColumnCount ()
- Brak argumentów.
Zwraca liczbę kolumn.
bool scoreboardForceTeamsVisible( bool enabled )
- enabled: Wartość określająca czy nagłówek/kolumna drużyny powinien być zawsze widoczny (ustawienia klienta są ignorowane).
bool scoreboardForceTeamsHidden( bool enabled )
- enabled: Wartość określająca czy nagłówek/kolumna drużyny powinien być zawsze ukryty (ustawienia klienta są ignorowane).
bool isPrioritySlotFree( int slot )
- slot: Slot, który ma zostać sprawdzony.
Sprawdza czy podany slot jest wolny.
int getNextFreePrioritySlot( [ int startAt = 1 ] )
- startAt: Od której kolumny mamy zacząć szukać wolnego slotu.
Znajduje najbliższy wolny slot.
Notatka: Funkcje ze starego zasobu scoreboard są dostępne także w tym zasobie
bool addScoreboardColumn ( string columnName, element visibleToElement, int columnPosition, float columnSize ) bool removeScoreboardColumn ( string columnName ) bool setPlayerScoreboardForced ( player thePlayer, bool forced ) bool resetScoreboardColumns ()
Funkcje
bool scoreboardAddColumn ( string name, [ int width = 70, string friendlyName = name, int priority = slot after "name" column, function textFunction = nil ] )
- name: Nazwa kolumny, która musi być jednocześnie nazwą elementdaty z której pobrane zostaną dane do wyświetlenia. Nie jest to wyświetlana nazwa.
- width: Szerokość kolumny w pikselach.
- friendlyName: Nazwa kolumny, która będzie wyświetlana na liście.
- priority: Slot kolumny po kolumnie "name" (1-500). Jeśli dany slot nie jest wolny to kolumna z tego slotu zostanie przesunięta dalej.
- textFunction: Funkcja w postaci tekstu, która zostanie wykonana przed wyświetleniem zawartości kolumny. Przykładowo ta funkcja zamieni znak "_" na spację w kolumnie z nickami graczy jeśli dodamy ją do kolumny "name".
function fixName( playerName ) return playerName:gsub( "_", " " ) end
bool scoreboardRemoveColumn ( string name )
- name: Nazwa kolumny.
bool scoreboardClearColumns ()
- Brak argumentów.
bool scoreboardResetColumns ()
- Brak argumentów.
bool scoreboardSetForced ( bool forced )
- forced: Wartość określająca czy scoreboard ma zostać wymuszony.
bool scoreboardSetColumnTextFunction ( string name, function textFunction )
- name: Nazwa kolumny.
- textFunction: Funkcja w postaci tekstu, która zostanie wykonana przed wyświetleniem zawartości kolumny. Przykładowo ta funkcja zamieni znak "_" na spację w kolumnie z nickami graczy jeśli dodamy ją do kolumny "name".
function fixName( playerName ) return playerName:gsub( "_", " " ) end
bool scoreboardSetSortBy ( string name, [ bool descending = true ] )
- name: Nazwa kolumny, można podać nil, aby wyłączyć sortowanie.
- descending: Wartość określająca czy sortowanie ma być malejące.
int scoreboardGetColumnPriority ( string name )
- name: Nazwa kolumny.
Zwraca priorytet (slot) kolumny (1-500)
bool scoreboardSetColumnPriority ( string name, int priority )
- name: Nazwa kolumy
- priority: Slot kolumny po kolumnie "name" (1-500). Jeśli dany slot nie jest wolny to kolumna z tego slotu zostanie przesunięta dalej.
int scoreboardGetColumnCount ()
- Brak argumentów.
Zwraca ilość kolumn.
bool isPrioritySlotFree( int slot )
- slot: Slot który chcemy sprawdzić.
Sprawdza czy podany slot jest wolny.
int getNextFreePrioritySlot( [ int startAt = 1 ] )
- startAt: Od której kolumny mamy zacząć szukać wolnego slotu.
'Znajduje najbliższy wolny slot.
int, int scoreboardGetTopCornerPosition ()
Zwraca pozycję absolutną lewego górnego rogu scoreboard. Jeśli nie jest rysowany na ekranie zwraca false.
int, int scoreboardGetSize ()
Zwraca absolutny rozmiar (szerokość, wysokość) scoreboardu. Jeśli nie jest rysowany na ekranie zwraca false.
table scoreboardGetSelectedRows ()
'Zwraca tabelę zawierającą wszystkie wybrane wiersze (element, którym może być drużyna lub gracz). Może również zwrócić pustą tabelę, jeśli nie wybrano wierszy.
Notatka: Funkcje ze starego zasobu scoreboard są dostępne także w tym zasobie
bool setScoreboardForced ( bool forced )
Zdarzenia
onClientPlayerScoreboardClick
bool selected, int cursorX, int cursorY
- selected: Określa czy wiersz został zaznaczony (true) czy nie (false).
- cursorX: Pozycja absolutna kursora w osi X.
- cursorY: Pozycja absolutna kursora w osi Y.
Wywoływany kiedy gracz kliknie LPM na wiersz z kolumny graczy lub drużyn
source to element, który został kliknięty. Może to być player lub team.
Funkcje te możesz także wywołać z poziomu innego zasobu używając funkcji call lub wskazanych tam metod.
call ( getResourceFromName ( "dxscoreboard" ), "scoreboardAddColumn", "Wanted level" ) -- Taka składnia jest także poprawna. Po więcej informacji sprawdź artykuł o funkcji call. exports.dxscoreboard:scoreboardAddColumn( "Wanted level" )
Wartości w kolumnach wyświetlane są na podstawie elementdaty o tej samej nazwie. Możesz użyć setElementData, aby zmienić wyświetlaną wartość u danego gracza:
-- 3 zostanie wyświetlona w kolumnie "wanted level" u danego gracza -- Pod warunkiem, że kolumna o takiej nazwie została dodana do scoreboard'u setElementData ( player, "Wanted level", 3 )