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.

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

1

Wednesday, November 19th 2014, 2:40pm

sichtbare Checkpoints (Partikel)

Hi,
ich arbeite für meinen Server gerade an einem Tutorial und dafür würde ich gerne Checkpoints verwenden. Die Checkpoints stelle ich mir ungefähr 3 Blöcke hoch und breit vor und sie sollten rot sein (Ich denke da an diese Redstone partikel). Meine Frage ist jetzt wie ich so sparsam wie möglich die Partikel dort erstellen kann (solange bis der Spieler den Checkpoint betritt) und wie ich überprüfen kann ob der Spieler in dem Checkpoint steht.

PS: Die ParticleEffect Library habe ich in meinem Plugin bereits wenn diese benötigt wird.

Vielen Dank :)

flugcraftFTB

User / Kunde

  • "flugcraftFTB" is male

Posts: 849

Location: Münster

Thanks: 1

  • Send private message

2

Wednesday, November 19th 2014, 3:19pm

Ich würde es so machen:
- ein boolean erstellen 'isPlayerInLoc' und auf 'false' stellen
- dann die Location's erstellen wo der CheckPoint ist
- dann im Scheduler abfragen ob der Spieler mit seiner Location(getLocation()) auf die CheckPoint Location übereinstimmt
- falls ja dann prüfen ob der boolean von oben schon auf 'true' ist
- Ist er auf 'true' dann nix mehr machen
- Ist er nicht auf 'true' dann ihn auf 'true' setzen und Partikel abspielen
- Beim Verlassen der Location bwz: Verlassen des Servers denn boolean wieder auf 'false' stellen

Achtung: Mit ein Scheduler musst du prüfen ob der boolean false ist falls ja dann nicht die effecte abspielen. Evtl. musst du mit HashMaps arbeiten für mehrere CheckPoints oder du machst es halt so wie du willst.

//EDIT:
Aso der Effect heißt: RED_DUST bei der Library
Fluglotsen Service auf IVAO an folgen Flughäfen: EDDM(München), EDDS(Stuttgart), EDDG(Münster/Osnabrück), EDDH(Hamburg), EDDN(Nürnberg), EDDT(Berlin-Tegel), EDDB(Berlin-Schönefeld), EDDL(Düsseldorf) EDDK(Köln-Bonn), EDDF(Frankfurt/Main) und EDDW(Bremen). Als Kontrollturm und Boden online!

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

3

Wednesday, November 19th 2014, 4:27pm

Also ich habe es jetzt so:

Java 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
@EventHandler
	public void onJoin(PlayerJoinEvent e){
		final Player p = e.getPlayer();
		if(plugin.register.containsKey(p.getUniqueId())){
			//bereits registriert
			Location spawn = new Location(p.getWorld(), 297, 5, -697);
			p.teleport(spawn);
			p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000000*20, 100));
			p.sendMessage("§6Bitte logge dich ein.");
			p.sendMessage("§6(/login <Passwort>)");
			
		}else{
			//tutorial
			tutorial.add(p.getName());
			Location spawnTut = new Location(p.getWorld(), 73, 5, 27);
			p.setBedSpawnLocation(spawnTut);
			p.teleport(spawnTut);
			
			/*final ItemStack buch = new ItemStack(Material.WRITTEN_BOOK);
			BookMeta meta = (BookMeta)buch.getItemMeta();
			meta.setTitle("§6Absturzbericht '139'");
			meta.setPage(1, "8:41pm: Kleines Transportflugzeug im Sturm  8:47pm: Triebwerkausfall  8:56pm: Absturz des Flugzeuges nahe Empire Bay");
			buch.setItemMeta(meta);
			
			p.getInventory().addItem(buch);*/
			
			p.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
				@Override
				public void run() {
					if(p.getLocation() != new Location(p.getWorld(), 69, 4, 53)){
						if(isPlayerInLoc == false){
							
							ParticleEffect.RED_DUST.display(1, 1, 1, 1, 10, new Location(p.getWorld(), 69, 4, 53), 3);
							isPlayerInLoc = true;
						}
					}
				}
			}, 10);
		}
	}


Das funktioniert soweit auch doch wie mache ich es das die partikel jetzt zB alle 0.5 Sekunden dort spawnen bis er halt in die Location geht?

flugcraftFTB

User / Kunde

  • "flugcraftFTB" is male

Posts: 849

Location: Münster

Thanks: 1

  • Send private message

4

Wednesday, November 19th 2014, 4:34pm

Ich verstehe deine Frage jetzt nicht so ganz.
Location vergleicht man mit .equals() und nehm dann BlockX und BlockY und BlockZ weil wenn du nur X und Y und Z verwendest muss der Spieler 100 % auf die Kommazahlen stehen damit die Location stimmt. Aber du musst dann auch die CheckPoint Location mit BlockXYZ machen
Falls du das meinst:Im Scheduler alle 0.5 Sekunden die Effecte an der Location abspielen?!
Fluglotsen Service auf IVAO an folgen Flughäfen: EDDM(München), EDDS(Stuttgart), EDDG(Münster/Osnabrück), EDDH(Hamburg), EDDN(Nürnberg), EDDT(Berlin-Tegel), EDDB(Berlin-Schönefeld), EDDL(Düsseldorf) EDDK(Köln-Bonn), EDDF(Frankfurt/Main) und EDDW(Bremen). Als Kontrollturm und Boden online!

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

5

Wednesday, November 19th 2014, 4:54pm

Vielen dank schonmal wegen den Locations aber ich meinte eigentlich das er die Partikel jetzt immer abspielt bis er dort steht da diese jetzt nur einmal nach 0.5 Sekunden nach Join entstehen.

(Und sry bin noch ein ziemlicher Anfänger in Java ;))

flugcraftFTB

User / Kunde

  • "flugcraftFTB" is male

Posts: 849

Location: Münster

Thanks: 1

  • Send private message

6

Wednesday, November 19th 2014, 5:36pm

Prüfen ob der Spieler in der Location ist falls ja denn Boolean auf true setzten. Falls er nicht mehr drin ist wieder auf false setzten. Ich würde ne HashMap empfehlen weil du mit ein boolean alles Global machst mit einer HashMap kannst du für jeden Spieler einzehlt machen. Und natürlich im Scheduler abfragen ob der Spieler in der Location steht und der Boolean true ist dann die Effecte abspielen und denn Scheduler machst du mit 10L also eine halb Sekunde
Fluglotsen Service auf IVAO an folgen Flughäfen: EDDM(München), EDDS(Stuttgart), EDDG(Münster/Osnabrück), EDDH(Hamburg), EDDN(Nürnberg), EDDT(Berlin-Tegel), EDDB(Berlin-Schönefeld), EDDL(Düsseldorf) EDDK(Köln-Bonn), EDDF(Frankfurt/Main) und EDDW(Bremen). Als Kontrollturm und Boden online!

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

7

Wednesday, November 19th 2014, 5:47pm

Mein Sheduler steht aber im playerJoinEvent wie kann ich das denn hier machen da er das angegebene ja dann nur einmal 10 ticks nach dem joinen ausführt

BtoBastian

Moderator

  • "BtoBastian" is male

Posts: 3,612

Occupation: Softwareentwickler

  • Send private message

8

Wednesday, November 19th 2014, 5:51pm

Es gibt auch einen Repeating Scheduler.
Standard Standart eines Flamingos ist einbeinig.

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

9

Wednesday, November 19th 2014, 6:29pm

Es funktioniert (wusste gar nicht das es so einen Sheduler gibt :thinking: ) vielen vielen dank aber eine frage habe ich noch (:)), kann es sein das man Partikel vom Client aus erst ab einer Bestimmten Reichweite sieht?

flugcraftFTB

User / Kunde

  • "flugcraftFTB" is male

Posts: 849

Location: Münster

Thanks: 1

  • Send private message

10

Wednesday, November 19th 2014, 6:53pm

Jap, ist so. Mit dem PacketPlayOutWorldParticel oder so habe keine ahnung wie das genau heißt kannst du das glaubig ändern bin mir da aber nicht sicher.
Fluglotsen Service auf IVAO an folgen Flughäfen: EDDM(München), EDDS(Stuttgart), EDDG(Münster/Osnabrück), EDDH(Hamburg), EDDN(Nürnberg), EDDT(Berlin-Tegel), EDDB(Berlin-Schönefeld), EDDL(Düsseldorf) EDDK(Köln-Bonn), EDDF(Frankfurt/Main) und EDDW(Bremen). Als Kontrollturm und Boden online!

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

11

Wednesday, November 19th 2014, 8:50pm

Okay vielen dank ich glaube jetzt sind alle Fragen geklärt :D

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