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.

BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

1

Wednesday, March 23rd 2016, 7:58pm

EDIT: Falsch gelesen, sry

McTechno

User / Kunde

Posts: 104

  • Send private message

2

Thursday, March 24th 2016, 2:23pm

PUSH D:

BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

3

Thursday, March 24th 2016, 5:25pm

Nur noch mal zusammengefasst:

Du hast in der TabListe einen Fake Spieler hinzugefügt.
Dieser ist in einem Scoreboard das mit Packets zu einem Wirklichen Spieler geschickt wurde.

Und was meinst du mit dem letzten? Aus dem Scoreboard raus ohne einen neuen FakePlayer zuerschaffen?

Hab ich das in etwa richtig verstanden?

McTechno

User / Kunde

Posts: 104

  • Send private message

4

Thursday, March 24th 2016, 5:44pm

Nee
ich habe nen Scoreboard (mit Packets gemacht) an der Sidebar, wo als FakePlayer z.b. Spieler> 7 mit nem Score von z.b. 1 steht. Wenn jetzt aber die Spieler auf 8 gehen sollen steht dan da zum einen immer noch Spieler>7 aber auch Spieler> 8 und der Fakeplayer Spieler>7 soll removt werden

This post has been edited 1 times, last edit by "McTechno" (Mar 24th 2016, 8:29pm)


BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

5

Thursday, March 24th 2016, 7:32pm

Ahhh okay das ist leichtxD

Java source code

1
board.resetScores(ALTER SCORE);

Das heißt du musst den Namen/Den String allg. davor abspeichern und dann kannst du sie so entfernen.

McTechno

User / Kunde

Posts: 104

  • Send private message

6

Thursday, March 24th 2016, 8:28pm

Hmm ist das nicht für normale Scoreboards ? Ich brauche was für nen Scoreboard was mit Packets gemacht wurde :/
Das hätte ich jz gedacht aber geht net (ist das Layout)

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public static List<String> layout(Player p) {
		 Scoreboard sb = Scoreboard_API.sb;
		 List<String> list = new ArrayList<String>();
		 int Anzahl = Bukkit.getOnlinePlayers().size();
		 int Coinsp = Coins.getSpiele(p.getUniqueId());
		 int Tokensp = Token.getSpiele(p.getUniqueId());
		 if(oldvalue.get(p) != null) {
			 if(getlastvalue(oldvalue.get(p), "Tokens") != Tokensp) {
				 p.sendMessage("Test1 | " + String.valueOf(getlastvalue(oldvalue.get(p), "Tokens")));
				 sb.resetPlayerScores("§5Tokens§7>§c "+ getlastvalue(oldvalue.get(p),"Tokens"), sb.getObjective("§cSkyShine.eu"));
			 }
			 if(getlastvalue(oldvalue.get(p), "Coins") != Coinsp) {
				 p.sendMessage("Test2");
				 sb.resetPlayerScores("§5Coins§7>§c "+ getlastvalue(oldvalue.get(p),"Coins"), sb.getObjective("§cSkyShine.eu"));
				 
			 }
			 List<String> newvalue = new ArrayList<String>();
			 newvalue.add("Tokens;" + Tokensp);
			 newvalue.add("Coins;" + Coinsp);
			 newvalue.add("Anzahl;" + Anzahl);
			 oldvalue.remove(p.getName());
			 oldvalue.put(p, newvalue);
		 } else {
			 List<String> newvalue = new ArrayList<String>();
			 newvalue.add("Tokens;" + Tokensp);
			 newvalue.add("Coins;" + Coinsp);
			 oldvalue.put(p, newvalue);
		 }
		 
		 list.add("§5Spieler§7>§c " + Bukkit.getOnlinePlayers().size() + ";7");
		 list.add(" ;6");
		 list.add("§5Tokens§7>§c " + Tokensp + ";5");
		 list.add("  ;4");
		 list.add("§5Coins§7>§c " + Coinsp + ";3");
		 list.add("   ;2");
		 list.add("§5TeamSpeak§7>§c ts.SkyShine.eu;1");
		 return list;
	 }


Das ist dann für lastvalue:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
private static Integer getlastvalue(List<String> list,String search) {
		 for(String s : list) {
	            String[] scores = s.split(";", 2);
	            String scorename = scores[0];
	            String scorevaule = scores[1];
	            if(scorename.equalsIgnoreCase(search)) {
	            	return Integer.valueOf(scorevaule);
	            }
		 }
		 
		 return 0; 
	 }

BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

7

Thursday, March 24th 2016, 8:30pm

Jaja stimmt, hab das vergessen^^ Wieso benutzt du ein FakeScoreboard? Und mhh ich schau es mir einfach mal an:)

Ich kenne deinen Code zwar nicht aber
PacketPlayOutScoreboardScore hab ich grad gefunden.

Erstell mal ein neues Objekt davon(ohne Parameter) und greif auf die Variable a zu (reflections) u. setz dort den alten namen, dann b mit dem Objective name, c den Score und d EnumScoreboardAction.(irgendwas :D)
Probier das mal zusenden..
du könntest auch ein Objekt mit parametern machen, aber da wird ein ScoreboardScore erwartet und der hängt mit einem Scoreboard zusammen.

This post has been edited 1 times, last edit by "BlackSarius" (Mar 24th 2016, 8:48pm)


McTechno

User / Kunde

Posts: 104

  • Send private message

8

Thursday, March 24th 2016, 9:06pm

Also wie jz kann noch nicht so mit Packets umgehen :/

BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

9

Thursday, March 24th 2016, 9:09pm

Ich mache dir gleich mal nen Code:)
Bin ich richtig, dass du PacketPlayOutScoreboardObjective verwendet hast?

Und ne Frage: Wieso brauchst du das/wieso machst du es mit Packets?

McTechno

User / Kunde

Posts: 104

  • Send private message

10

Thursday, March 24th 2016, 9:15pm

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
	static Scoreboard sb = new Scoreboard();
 
    @SuppressWarnings("rawtypes")
	public static void sendPacket(Player player, Packet packet) {
        ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
    }
    
    public static void Start_This_On_Start(List<String> list,String name) {
    	for(Player all : Bukkit.getOnlinePlayers()) {
			CreateSidebar(all, list, name);
		}
    }
 
    public static void CreateSidebar(Player p,List<String> list,String name){
        if(sb.getObjective(name) == null){
            sb.registerObjective(name, new ScoreboardBaseCriteria(name));   
        }
        PacketPlayOutScoreboardObjective packet = new PacketPlayOutScoreboardObjective(sb.getObjective(name), 0);
        PacketPlayOutScoreboardDisplayObjective display = new PacketPlayOutScoreboardDisplayObjective(1, sb.getObjective(name));
 
        sendPacket(p, packet);
        sendPacket(p, display);
        
        for(String score : list){
            String[] scores = score.split(";", 2);
            String scorename = scores[0];
            String scorevaule = scores[1];
            try{
            	int vaule = Integer.valueOf(scorevaule);
                ScoreboardScore scoreItem = sb.getPlayerScoreForObjective(scorename, sb.getObjective(name));
                scoreItem.setScore(vaule);
                PacketPlayOutScoreboardScore scoreItemP = new PacketPlayOutScoreboardScore(scoreItem);
                sendPacket(p, scoreItemP);
            }catch(NumberFormatException e){
            }
        }
    }
 
    public static void UpdateScore(final String name){
    	Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(main.getInstance(), new Runnable(){
            @Override
            public void run() {
                for (Player p : Bukkit.getOnlinePlayers()){
                    for(String score : main.layout(p)){
                        String[] scores = score.split(";", 2);
                        String scorename = scores[0];
                        String scorevaule = scores[1];
                        try{
                        	int vaule = Integer.valueOf(scorevaule);
                            ScoreboardScore scoreItem = sb.getPlayerScoreForObjective(scorename, sb.getObjective(name));
                            scoreItem.setScore(vaule);
                            PacketPlayOutScoreboardScore scoreItemP = new PacketPlayOutScoreboardScore(scoreItem);
                            sendPacket(p, scoreItemP);
                        }catch(NumberFormatException e){
                        }
                    }
                }
            }
        }, 0L, 10*20L);
 
    }


2Frage: Aus dem Grund weil manche Sachen durch das richtige Scoreboard verhindert worden sind (aufm Server).

BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

11

Thursday, March 24th 2016, 9:21pm

Okay, woran z.b. würde eher das fixxen, als Packets.. aber hier das vlt?:

Java source code

1
2
3
4
5
6
7
//Decompilt
public PacketPlayOutScoreboardScore(String paramString, ScoreboardObjective paramScoreboardObjective) {
    this.a = paramString;
    this.b = paramScoreboardObjective.getName();
    this.c = 0;
    this.d = EnumScoreboardAction.REMOVE;
  }

Heißt ein neues Objekt von PacketPlayOutScoreboardScore dort als ersten String einfach den ScoreName(also z.b. PLAYER-1) der zurückgesetzt werden soll, beim 2. wie gesagt dein ScoreboardObjective.
Das Objekt dann wieder an den Spieler senden:)

McTechno

User / Kunde

Posts: 104

  • Send private message

12

Thursday, March 24th 2016, 9:31pm

wo muss ich das den rein Packen, da der a und so nicht erkennt

BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

13

Thursday, March 24th 2016, 9:35pm

Gar nicht, das war nur ein Abschnitt aus PacketPlayOutScoreboardScore^^

Java source code

1
2
3
//Das einfügen:
PacketPlayOutScoreboardScore packet = new PacketPlayOutScoreboardScore("PLAYER ENTFERNEN", sb.getObjective(name));
((CraftPlayer)player).getHandle().playerConnection.sendPacket(packet);

Also dorthin wo du den Namen entfernen möchtest

McTechno

User / Kunde

Posts: 104

  • Send private message

14

Thursday, March 24th 2016, 9:39pm

DANKE Endlich wie lange ich danach auch so schon gesucht habe danke danke danke

BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

15

Thursday, March 24th 2016, 9:41pm

McTechno? Ne Frage, was geht bei deinem Scoreboard davor nicht?^^ + BITTEEE:D

McTechno

User / Kunde

Posts: 104

  • Send private message

16

Thursday, March 24th 2016, 10:38pm

Ansich ging da eig. alles hat nur nen anderes Plugin was mit Scoreboards arbeitet geblockt xD

EDIT: Neuer Fehler :/

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
[18:52:02 WARN]: [ScoreStatsTask #18 for ScoreStats v1 generated an exception
java.lang.NullPointerException
        at net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardScore.<init>(SourceFile:23) ~[craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
        at me.Mc_Techno.ScoreStats.Scoreboard_API$1.run(Scoreboard_API.java:70) ~[?:?]
        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:722) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
        at java.lang.Thread.run(Thread.java:745) [?:1.7.0_91]


Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package me.Mc_Techno.ScoreStats;

import java.util.List;

import net.minecraft.server.v1_8_R3.Packet;
import net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardDisplayObjective;
import net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardObjective;
import net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardScore;
import net.minecraft.server.v1_8_R3.Scoreboard;
import net.minecraft.server.v1_8_R3.ScoreboardBaseCriteria;
import net.minecraft.server.v1_8_R3.ScoreboardScore;

import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Player;

public class Scoreboard_API {
	
	static Scoreboard sb = new Scoreboard();
 
    @SuppressWarnings("rawtypes")
	public static void sendPacket(Player player, Packet packet) {
        ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
    }
    
    public static void Start_This_On_Start(List<String> list,String name) {
    	for(Player all : Bukkit.getOnlinePlayers()) {
			CreateSidebar(all, list, name);
		}
    }
 
    public static void CreateSidebar(Player p,List<String> list,String name){
        if(sb.getObjective(name) == null){
            sb.registerObjective(name, new ScoreboardBaseCriteria(name));   
        }
        PacketPlayOutScoreboardObjective packet = new PacketPlayOutScoreboardObjective(sb.getObjective(name), 0);
        PacketPlayOutScoreboardDisplayObjective display = new PacketPlayOutScoreboardDisplayObjective(1, sb.getObjective(name));
 
        sendPacket(p, packet);
        sendPacket(p, display);
        
        for(String score : list){
            String[] scores = score.split(";", 2);
            String scorename = scores[0];
            String scorevaule = scores[1];
            try{
            	int vaule = Integer.valueOf(scorevaule);
                ScoreboardScore scoreItem = sb.getPlayerScoreForObjective(scorename, sb.getObjective(name));
                scoreItem.setScore(vaule);
                PacketPlayOutScoreboardScore scoreItemP = new PacketPlayOutScoreboardScore(scoreItem);
                sendPacket(p, scoreItemP);
            }catch(NumberFormatException e){
            }
        }
    }
 
    public static void UpdateScore(final String name){
    	Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(main.getInstance(), new Runnable(){
            @Override
            public void run() {
                for (Player p : Bukkit.getOnlinePlayers()){
                    for(String score : main.layout(p)){
                        String[] scores = score.split(";", 2);
                        String scorename = scores[0];
                        String scorevaule = scores[1];
                        try{
                        	int vaule = Integer.valueOf(scorevaule);
                            ScoreboardScore scoreItem = sb.getPlayerScoreForObjective(scorename, sb.getObjective(name));
                            scoreItem.setScore(vaule);
                            PacketPlayOutScoreboardScore scoreItemP = new PacketPlayOutScoreboardScore(scoreItem);
                            sendPacket(p, scoreItemP);
                        }catch(NumberFormatException e){
                        }
                    }
                }
            }
        }, 0L, 10*20L);
 
    }
	
}

This post has been edited 2 times, last edit by "McTechno" (Mar 24th 2016, 11:54pm)


BlackSarius

User / Kunde

  • "BlackSarius" is male
  • "BlackSarius" started this thread

Posts: 745

Location: Baden-Württemberg

Occupation: Abiturient

  • Send private message

17

Friday, March 25th 2016, 9:14am

Hmm.. nach meiner Anzeige ist Zeile 70:

Java source code

1
PacketPlayOutScoreboardScore scoreItemP = new PacketPlayOutScoreboardScore(scoreItem);

null, aber das würde bedeuten das das scoreItem davor schon null ist, dann dürfte die Methode:

Java source code

1
scoreItem.setScore(vaule);

aber nicht gehen.. :/

Ist Zeile 70 womöglich eine andere in Wirklichkeit?
Ansonsten lass dir mal scoreItem in der Konsole ausgeben um zusehen ob das null ist, ansonsten ist sb.getPlayerScoreForObjective(scorename, sb.getObjective(name)); null.. also hat der Spieler vermutlich noch kein Objective(Nach nem reload zufälligerweise?)

McTechno

User / Kunde

Posts: 104

  • Send private message

18

Friday, March 25th 2016, 10:24am

Also das ist schön die richtige Zeile ich guck einfach gleich mal wenn ich am PC bin :)

//Edit : Bin jz am Pc und der bigt mir immer den Score mit dem hösten Wert aus / Bzw. den ersten Score

//Edit2.0 : Hab meinen Fehler gefunden .... hatte den Obj-Namen geändert und einmal vergessen :/ Trotzdem Danke @BlackSarius

This post has been edited 5 times, last edit by "McTechno" (Mar 25th 2016, 12:51pm)


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