Skocz do zawartości
  • 0

Skonfigurowanie ramek


Cubixor

Pytanie

Hej,

Pomógłby mi ktoś z konfiguracją tych ramek które biorą informacje z api.skript.pl? Mam z nimi 2 problemy. Pierwszy jest taki że w ramce Gracze Online chciałbym aby obok główki był nick gracza. Drugi jest taki że to "ONLINE" na zielono to zwykły napis a ja chciałbym aby to było zgodne z prawdą czyli jeśli w api.skript.pl mam napisane:

"online": true,

To żeby tam było ONLINE na zielono a jeśli jest:

"online": false,

Aby było OFFLINE na czerwono.

Jeśli ktoś potrzebuje to tu jest kod do tych ramek:

    <div class="box"> <!-- BOX 1 - SERWER-->
        <h2>Serwer</h2>
        <p><font>AdresSerwera.pl</font><br/><br/>
        <font color="green">ONLINE</font><br/>
        (<span id='players-online'>...</span>/<span id='players-max'>...</span>)
        <br/><br/>
        </p>
        </div><!-- KONIEC BOX 1 -->
    
        <div class="box"> <!-- BOX 2-->
        <h2>Gracze Online</h2>
        <p>
        <!-- Tylko jeśli jQuery nie zostało wcześniej dołączone: !-->
<script src='https://code.jquery.com/jquery-3.1.1.min.js'></script>

<style>
    #players-list img {
        margin: 2px;
    }
</style>

 <div id='players-list'></div>

<script>
    $.ajax({
      url: 'https://api.skript.pl/server/n15.csrv.pl:11714/',
      success: function(response) {
        json = JSON.parse(response);
        
        $('#players-online').html(json.players.online);
        $('#players-max').html(json.players.max);

        for (var i = 0; i < json.players.list.length; i++) {
          var player = json.players.list;
          $('#players-list').append("<img src='https://minotar.net/helm/"+player+"/32.png' alt='"+player+"' title='"+player+"'>"); 
        }
      }
    });
</script>

        </p>
        
    </div><!-- KONIEC BOX 2 -->

 

Odnośnik do komentarza
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Godzinę temu, Cubixor napisał:

Pierwszy jest taki że w ramce Gracze Online chciałbym aby obok główki był nick gracza.

To możesz uzyskać dodając na końcu w linijce, w której ustawiasz głowy graczy, '+ player'. Czyli wyglądałaby ona tak:

$('#players-list').append("<img src='https://minotar.net/helm/"+player+"/32.png' alt='"+player+"' title='"+player+"'> " + player);

 

Godzinę temu, Cubixor napisał:

Drugi jest taki że to "ONLINE" na zielono to zwykły napis a ja chciałbym aby to było zgodne z prawdą [...]

Zmień ten napis na czerwone OFFLINE i dodaj do elementu, w którym się znajduje jakieś id np. status. W skrypcie dodaj jednego ifa:

if (json.online === true) {
	$("#status").text("ONLINE");
	$("#status").css("color","green");
}


Możesz  też skorzystać z kodu zawierającego te 2 poprawki i dodatkowo nie wymagającego jquery:

Spoiler

<div class="box"> <!-- BOX 1 - SERWER-->
    <h2>Serwer</h2>
    <p>AdresSerwera.pl<br/><br/>
       <span id='status' style="color:red">OFFLINE</span><br/>
       (<span id='players-online'>...</span>/<span id='players-max'>...</span>)
       <br/><br/>
    </p>
</div><!-- KONIEC BOX 1 -->

<div class="box"> <!-- BOX 2-->
    <h2>Gracze Online</h2>
    <p>
        <div id='players-list'></div>
    </p>
</div><!-- KONIEC BOX 2 -->

<style>
    #players-list img {
        margin: 2px;
        vertical-align: middle;
    }
</style>
<script>
    const xhr = new XMLHttpRequest();
    xhr.open('GET', 'https://api.skript.pl/server/n15.csrv.pl:11714/');
    xhr.send(null);
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
            const response = JSON.parse(xhr.responseText);
            if (response.online === true) {
                const status = document.getElementById("status");
                status.innerText = 'ONLINE';
                status.style.color = 'green';
                document.getElementById('players-online').innerHTML = response.players.online;
                document.getElementById('players-max').innerHTML = response.players.max;
                const list = document.getElementById('players-list');
                for (let player of response.players.list) {
                    const img = document.createElement('img');
                    list.innerHTML += `<img src='https://minotar.net/helm/${player}/32.png' alt='${player}' title='${player}'> ${player}<br>`;
                }
            }
        }
    };
    xhr.close();
</script>

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Wszystko spoko ale zapomniałem o pewnej sprawie :(. To jest serwer z craftserve a gdy go wyłączę on tak jakby tylko się "usypia" tak że nie można na niego wejść a możliwa liczba osób wynosi 1. Czy mógłbyś przerobić to jeszcze tak aby pokazywało OFFLINE wtedy kiedy jest 0/1 graczy? (musi być 0/1 aby pokazywało offline nie np. 0/100 tylko koniecznie 0/1). Przepraszam że o tym zapomniałem.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Jeśli korzystasz z mojego skryptu (tego bez jquery) to wystarczy, że zmienisz linijkę:

if (response.online === true) {
// na
if (response.online === true && !(response.players.online === 0 && response.players.max === 1) ) {

Jeśli korzystasz ze swojego kodu (z jquery) to zedytuj dodany warunek dodając do niego:

&& !(response.player.online === 0 && response.players.max === 1)
// czyli powinnien wyglądać tak:
if (json.online === true && !(json.players.online === 0 && json.players.max === 1)) {

 

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...