Witaj gościu! Nie jesteś zalogowany na forum, więc możesz nie mieć dostępu do niektórych z jego funkcji! Aby rozwiązać ten problem
zaloguj się lub zarejestruj nowe konto.
Real Soccer Haxball League

Thread Closed
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Autosędzia - garść informacji i poradnik użytkowania
23-05-2018, 21:13 (This post was last modified: 24-05-2018, 13:34 by Alcazar.)
Post: #1
Autosędzia - garść informacji i poradnik użytkowania
Witam serdecznie!

edit. Skrót zawierający instrukcję i kod do Austosędziego dodaliśmy do zakładek (prawy górny róg na czerwonym pasku): http://rshl.eu/misc.php?page=auto

Na samym wstępie dwie bardzo istotne informacje:

  • Z usług Autosędziego będzie trzeba korzystać już od bieżącej edycji Pucharu RSHL, czyli od dnia 28 maja 2018 roku!
  • Autosędzia nie zastąpi w stu procentach zwykłego sędziego, a jedynie go wspomoże. Oznacza to tyle, że mecze w dalszym ciągu muszą odbywać się przy udziale tradycyjnego sędziego, którego obowiązki po prostu zostaną okrojone o pisanie "R", "B", "CK" i "B" na czacie. Wszystko inne pozostaje bez zmian.

Owszem, jest to znakomity program, który dzięki stuprocentowej skuteczności w odczytywaniu ostatniego kontaktu piłki z zawodnikiem jest w stanie bezbłędnie stwierdzić komu należy się aut, oraz czy drużynie należy się rzut rożny czy może jednak nastąpi wznowienie od bramki. Nie zastąpi on jednak sędziego w kwestii kontrolowania prawidłowości wykonania autu, przekraczania zielonej linii autowej, przeprowadzania zmian i używania pauz, a także dbania o fair play i porządek na serwerze. Niemniej jednak uważam, że dzięki tak dużemu ułatwieniu jak korzystanie z Autosędziego, sędziowanie nie będzie już tak absorbujące, trudne ani czasochłonne - wszak powinno to znacznie ograniczyć konieczność korzystania z Challenge'ów.



Oto krótki poradnik korzystania z Autosędziego za pomocą kodu napisanego przez Fresco (któremu serdecznie dziękuję) na podstawie przeglądarki Google Chrome (na innych przeglądarkach powinno być podobnie):


  1. Wchodzimy na stronę https://html5.haxball.com/headless edit: pojawiły się pytania więc uzupełniam: nie wchodzimy w "Documentation here" tylko robimy wszystko bezpośrednio na tej stronie, do której kieruje Was link.
  2. Wybieramy na klawiaturze F12
  3. W zakładce Console wklejamy niżej podany kod i naciskamy Enter
  4. Zaznaczamy "nie jestem robotem"
  5. Otwieramy link do rooma w nowej karcie (w innym wypadku wyskoczy nam błąd)
  6. Wpisujemy nick, wchodzimy na room... I to wszystko Smile


A oto wspomniany kod:
lub możecie go bezpośrednio skopiować stąd:
Code:
/* SETTINGS */

/* ROOM */

var roomName = "RSHL.eu";
var maxPlayers = 20;
var roomPublic = false;

/* STADIUM */

var stadiumWidth = 1150;
var stadiumHeight = 600;
var radiusBall = 9.8;

/* SETTINGS */

var lastScores = 0;
var lastTeamTouched = 0;
var triggerDistance = radiusBall + 15 + 0.01;
stadiumWidth += (radiusBall / 2) + 6;
stadiumHeight += (radiusBall / 2) + 6;
var Team = {
    SPECTATORS: 0,
    RED: 1,
    BLUE: 2
};
var room = HBInit({ roomName: roomName, maxPlayers: maxPlayers, public: roomPublic, playerName: "RSHL.eu" });
room.setScoreLimit(0);
room.setTimeLimit(0);

room.onTeamGoal = function(team) {
    setTimeout(function() {
        lastScores = room.getScores().red + room.getScores().blue;
    }, 1000);
}
room.onGameStart = function(player) {
    lastScores = room.getScores().red + room.getScores().blue;
}
room.onPlayerBallKick = function(player) {
    lastTeamTouched = player.team;
}
room.onGameTick = function() {
    getLastTouchTheBall();
    checkBallPosition();
}

room.onPlayerJoin = function(player) {
    if(player.id == 1) {
        room.setPlayerAdmin(player.id, true);
    }
}

function isOutsideStadium(ballPosition) {
    return ballPosition.x > stadiumWidth || ballPosition.x < -stadiumWidth || ballPosition.y > stadiumHeight || ballPosition.y < -stadiumHeight;
}

var isBallOutsideStadium = false;

function checkBallPosition() {
    var ballPosition = room.getBallPosition();
    if(isOutsideStadium(ballPosition)) {
        if(!isBallOutsideStadium) {
            isBallOutsideStadium = true;
            var totalScores = room.getScores().red + room.getScores().blue;
            if(lastScores != totalScores) {
                lastScores = totalScores;
                return false;
            }
            if(ballPosition.x > stadiumWidth && lastTeamTouched == Team.RED || ballPosition.x < -stadiumWidth && lastTeamTouched == Team.BLUE) {
                room.sendChat("GK");
            }
            else if(ballPosition.x > stadiumWidth && lastTeamTouched == Team.BLUE || ballPosition.x < -stadiumWidth && lastTeamTouched == Team.RED) {
                room.sendChat("CK");
            }
            else {
                room.sendChat(lastTeamTouched == Team.RED ? "B" : "R");
            }
        }
    }
    else {
        isBallOutsideStadium = false;
    }
    return true;
}

function getLastTouchTheBall() {
    var ballPosition = room.getBallPosition();
    var players = room.getPlayerList();
    for(var i = 0; i < players.length; i++) {
        if(players[i].position != null) {
            var distanceToBall = pointDistance(players[i].position, ballPosition);
            if(distanceToBall < triggerDistance) {
                lastTeamTouched = players[i].team;
            }
        }
    }
}

function pointDistance(p1, p2) {
    var d1 = p1.x - p2.x;
    var d2 = p1.y - p2.y;
    return Math.sqrt(d1 * d1 + d2 * d2);
}


Bystrzejsi użytkownicy na pewno zauważyli, że powyższy kod można w bardzo łatwy sposób edytować. Przykładowo, jeśli chcecie zmienić nazwę rooma z "RSHL.eu" na "Real Soccer 4vs4", to musicie zmienić pogrubiony fragment:

Quote:var roomName = "RSHL.eu";
na:
Quote:var roomName = "Real Soccer 4vs4";


Niemniej jednak ostrzegam, że jakakolwiek ingerencja w kod podczas meczu ligowego będzie bardzo surowo karana.
Być może podczas Summer Cupu zezwolimy na zmianę nazwy rooma bądź sędziego, jednak na początek wymagamy gry na "czystym" kodzie.


Trzeba sto razy przegrać, aby ten jeden raz wygrać

[Image: tumblr_msm702Ba8q1qh6h8bo1_250.gif]
Gadu Gadu
Find all posts by this user

Reklama
Thread Closed


Forum Jump:


Users browsing this thread: 1 Guest(s)