You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

teurky-meurky99

User / Kunde

  • "teurky-meurky99" started this thread

Posts: 81

  • Send private message

1

Tuesday, November 18th 2014, 5:37pm

Kleines Random Plugin

Hallo, wie der Name bereits erwähnt geht es hier um ein Random Plugin.
Problembeschreibung: Es wird ein Random von allen Online Spielern berechnet, das funktioniert auch einwandfrei :) . Aber ich möchte es so haben, dass Spieler die Permission "XY" nicht haben, nur noch zur Auswahl der Online Spieler stehen und somit nur bei diesen ein Random errechnet wird. Ich hoffe es ist klar geworden was ich damit meine ;)


Der Code, den ich bis jetzt habe: http://hastebin.com/jehuxeciga.avrasm


So und nun hoffe ich, dass ihr mir helfen könnt....
Ich bedanke mich für jede Hilfe :thumbsup:


MfG

This post has been edited 2 times, last edit by "teurky-meurky99" (Nov 19th 2014, 7:37pm)


Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

2

Tuesday, November 18th 2014, 6:12pm

Musst du dann einfach "zu Fuss" in ner for-Schleife machen..:

Source code

1
2
3
4
5
6
7
8
Player[] psmp = new Player[Bukkit.getOnlinePlayers().length]; 
int i = 0;
for (Player p : Bukkit.getOnlinePlayers()) {
    if (p.hasPermission("deine.Permission") {
        psmp[i] = p;
        i++;
    }
}
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

teurky-meurky99

User / Kunde

  • "teurky-meurky99" started this thread

Posts: 81

  • Send private message

3

Tuesday, November 18th 2014, 7:11pm

Ich weiß nicht mehr weiter ?(
Ich habe das jetzt: http://hastebin.com/xanodoboce.avrasm

Ich weiß, dass ich mein Random zeugs noch "anpassen" muss, irgendwie. Aber immer mache ich das irgendwie falsch, bekomme NullPointerExceptions oder die Permission wird ignoriert. Gibt es denn vielleicht irgendwo ein gutes Tutorial? (Ich suche schon sehr lange nach einem Tut. dafür...)

MfG

Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

4

Tuesday, November 18th 2014, 7:35pm

Das passiert ja auch alles in der Schleife..

nee.. so in die Richtung:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public Player getRandomPlayerWithPermission(String deinePermission) {

    Player[] psmp = new Player[Bukkit.getOnlinePlayers().length]; 
    int i = 0;
    for (Player p : Bukkit.getOnlinePlayers()) {
        if (p.hasPermission(deinePermission) {
            psmp[i] = p;
            i++;
        }
    }
    Random r = new Random();
    int ri = r.nextInt(psmp.length);
    return psmp[ri];
}
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

teurky-meurky99

User / Kunde

  • "teurky-meurky99" started this thread

Posts: 81

  • Send private message

5

Tuesday, November 18th 2014, 8:10pm

OK, danke für den Code ;)

Ich hab das jetzt in meinem Befehl:

Player b = (Player) getRandomPlayerWithPermission ("some.some");
Bukkit.broadcastMessage ("Spieler:" + b);


Da gibt es noch 2 Probleme, also 1. es ist ein CraftPlayer und ich schaff es irgendwie nicht den in einen Player zu casten und 2. manchmal steht da auch einfach "null" bei der Textausgabe... :huh:


MfG

Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

6

Tuesday, November 18th 2014, 8:20pm

Achso.. jou, weil der psmp-Array länger ist, als die Liste der Leute mit der Permission..

Source code

1
2
3
4
5
6
7
8
9
10
int i2 = 0;
while (psmp[ri] == null && i2 < 100) { // abbruchbedingung, falls kein Spieler gefunden werden kann, damit der nicht endlos sucht 
    ri = r.nextInt(psmp.length);
    i2++;
}
if (i2>=100) {
    //kein Spieler gefunden
    return null;
}
return psmp[ri];


Ist jetz aber doof zusammengezimmert.. da gibts bestimmt viel effektivere Möglichkeiten..


//edit: Ich glaub, ich würd den Umweg über ne List machen.. in der Schleife würd ich die Spieler mit der Permission in ne Liste (zB ArrayList) schreiben, danach einen Array erstellen, der so lang ist wie die Liste. Dann hast du da kein null zwischen, keine Endlosschleife usw..

//edit die zweite: zum Craftplayer: Lösch mal ganz oben in der Klasse alle Imports und drück danach Strg-Shift-O.
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

teurky-meurky99

User / Kunde

  • "teurky-meurky99" started this thread

Posts: 81

  • Send private message

7

Wednesday, November 19th 2014, 7:33pm

:) :)

Danke für die kompetente, schnelle und professionelle Hilfe, ich hab's nun :D


MfG

BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

8

Wednesday, November 19th 2014, 7:48pm

Standard Standart eines Flamingos ist einbeinig.

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net