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.

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

1

Friday, May 11th 2018, 9:37pm

Mini Klick Spiel Programmieren (1/3) | Spigot (ohne MySQL)

Mini Klick Spiel Programmieren (1/3) | Spigot
In diesem Tutorial (reihe) will ich euch erklären wie ihr ein einfaches klick-
spiel programmiert.
Was soll rauskommen: Wir wollen das wenn er z.B. auf ein Schild klickt, zu einen punkt teleportiert wird
wo er z.B. auf 10 unterschieldich farben klicken muss.
Dazu hat er 10 sekunden wenn er es nicht schaft wird zun einemweiterm punkt telportiert.
Wenn nicht wird ihm seine Zeit ausgegeben und gespeichert.
Was benötigt ihr(erfahrung): Mind. 3 Monat Kenntnise
1. Teil: Spawnpunkte | Start
2. Teil: Komplettes Spiel
3. Teil: Zeit Messen, festlegen, abspeichern
[Die 2 weiteren teile kommen später]
Teil 1. :
Zuerst erstellen wir unsere Spawnpunkt.
Wir machen das mit zwei methoden damit es leichter für zwei wird.
Zuerst die Methode zum setzen:

Source code

1
2
3
public void setSpawn(Location loc) {

	}
Wir übergeben der methode eine Location (namens loc).
Dann holen wir uns die Welt und X,Y und Zeit Koordiante:

Source code

1
2
3
4
5
6
7
8
9
10
public void setSpawn(Location loc) {
		
		
		String wName = loc.getWorld().getName();
		int x = loc.getBlockX();
		int y = loc.getBlockY();
		int z = loc.getBlockZ();
	   
		
	}
Diese Speichern wir dann einfach noch in unsere Config:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void setSpawn(Location loc) {
		
		
		String wName = loc.getWorld().getName();
		int x = loc.getBlockX();
		int y = loc.getBlockY();
		int z = loc.getBlockZ();
		getConfig().set("wName", wName);
		getConfig().set("x", x);
		getConfig().set("y", y);
		getConfig().set("z", z);
		
		
		saveConfig();
		
	}
Und NIEMALS saveConfig(); vergessen!
Jetzt noch die getspawn Methode:

Source code

1
2
3
public Location getSpawn() {
		
	}
Dieser Methode übergeben wir nichts!
Dann holen wir uns unsere Werte aus der Config(und geben ihnen eine Variable):

Source code

1
2
3
4
5
6
7
8
public Location getSpawn() {
		String wName = getConfig().getString("wName");
		int x = getConfig().getInt("x");
		int y = getConfig().getInt("y");
		int z = getConfig().getInt("z");
		

	}
Dann setzten wir das einfach noch als Location:

Source code

1
2
3
4
5
6
7
8
9
10
11
public Location getSpawn() {
		String wName = getConfig().getString("wName");
		int x = getConfig().getInt("x");
		int y = getConfig().getInt("y");
		int z = getConfig().getInt("z");
		
		
		
		Location loc = new Location(Bukkit.getWorld(wName), x, y, z);
		return loc;
	}
So das zweimal für beide Punkte(UNTERSCHIELDICHE Pfade zum Speichern verwenden!:

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
public void setSpawn(Location loc) {
		
		
		String wName = loc.getWorld().getName();
		int x = loc.getBlockX();
		int y = loc.getBlockY();
		int z = loc.getBlockZ();
		getConfig().set("wName", wName);
		getConfig().set("x", x);
		getConfig().set("y", y);
		getConfig().set("z", z);
		
		
		saveConfig();
		
	}

	
	public Location getSpawn() {
		String wName = getConfig().getString("wName");
		int x = getConfig().getInt("x");
		int y = getConfig().getInt("y");
		int z = getConfig().getInt("z");
		
		
		
		Location loc = new Location(Bukkit.getWorld(wName), x, y, z);
		return loc;
	}
public void setSpawn1(Location loc) {
		
		
		String wName = loc.getWorld().getName();
		int x = loc.getBlockX();
		int y = loc.getBlockY();
		int z = loc.getBlockZ();
		getConfig().set("back.wName", wName);
		getConfig().set("back.x", x);
		getConfig().set("back.y", y);
		getConfig().set("back.z", z);
		
		
		saveConfig();
		
	}

	
	public Location getSpawn1() {
		String wName = getConfig().getString("back.wName");
		int x = getConfig().getInt("back.x");
		int y = getConfig().getInt("back.y");
		int z = getConfig().getInt("back.z");
		
		
		
		Location loc = new Location(Bukkit.getWorld(wName), x, y, z);
		return loc;
	}
Jetzt erstellen wir uns einen Command zum Setzen:

Source code

1
2
 if (cmd.getName().equalsIgnoreCase("setspawnp"))
    	{}
Wir überprüfen die args(Argumente) und Permissions:

Source code

1
2
3
4
5
6
7
8
9
10
11
if (cmd.getName().equalsIgnoreCase("setspawnp"))
    	{
    		if(p.hasPermission("set.spawnpoint")) {
    			if(args.length == 1) {
    				
    				}
    			}else
    				p.sendMessage("§cBitte benutze /setspawnp <back|hin>");
    			
    		}
    	}
Jetzt setzen wir unsere beiden Argumente:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (cmd.getName().equalsIgnoreCase("setspawnp"))
    	{
    		if(p.hasPermission("set.spawnpoint")) {
    			if(args.length == 1) {
    				if(args[0].equalsIgnoreCase("hin")) {
    			  
    				}else if(args[0].equalsIgnoreCase("back")) {
    					
    				}
    			}else
    				p.sendMessage("§cBitte benutze /setspawnp <back|hin>");
    			
    		}
    	}
Jetzt schreiben wir einfach noch unsere Setter methoden rein:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (cmd.getName().equalsIgnoreCase("setspawnp"))
    	{
    		if(p.hasPermission("set.spawnpoint")) {
    			if(args.length == 1) {
    				if(args[0].equalsIgnoreCase("hin")) {
    					setSpawn(p.getLocation());
            			p.sendMessage("§6Du hast erfolgreich den Spawn-Punkt gesetzt!");
    				}else if(args[0].equalsIgnoreCase("back")) {
    					setSpawn1(p.getLocation());
    					p.sendMessage("§6Du hast erfolgreich den Spawn-Punkt gesetzt!");
    				}
    			}else
    				p.sendMessage("§cBitte benutze /setspawnp <back|hin>");
    			
    		}
    	}
(mit einem text um zu prüfen ob alles geklappt hat)
Jetzt mache ich den start über ein Kommando, man kann auch z.B. Schilder verwenden.

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
if (cmd.getName().equalsIgnoreCase("start"))
    	{
    		if(args.length == 1) {
    			 if(args[0].equalsIgnoreCase("game")) {
    				if(getConfig().getString("Lauf") == "Ja") {
    					p.sendMessage("§6Das Spiel wird gerade gespielt, gedult bitte.");
    					return true;
    				}
    				p.setGameMode(GameMode.ADVENTURE);
    				p.teleport(getSpawn());
    				
    				getConfig().set("Lauf", "Ja");
    				getConfig().set("Beginn."+p.getName(), "Nein");
    				saveConfig();
    				 Bukkit.getScheduler().runTaskLater((Plugin) this, new Runnable()
		            	{
		              	public void run()
		              	{
		            		 if(getConfig().getString("Beginn."+p.getName()) == "fertig") {
		            			 
		            		 }else
		            			 setTitle(p, "§cDeine Zeit ist abgelaufen", null, 15, 30, 20, null, Sound.AMBIENCE_RAIN);
		            		 getConfig().set("Beginn."+p.getName(), "fertig"); 
		            		 saveConfig();
		            		 p.teleport(getSpawn1());
		            		
		                	
		              	}
		            	}, 20 * 20L);
    			}
    		}else
    			p.sendMessage("§bBitte benutze /start <game>");
    		
    		
    		
    	}
Erklärt:
Wir überprüfen die Argumente.
Dann ob in der Config "Ja" bei lauf steht, also ob es gerade läuft.
Wenn ja sagen wir: "Sry läuft gerade". Dann returnen wir oder lösen das mit else if.
Wenn nicht setzten wir ihn Adventure und teleportieren ihn zu unserm gestzten spawn punkt(man kann noch einfugen wenn es null ist, das dann gesagt wird: "Sry kein punkt vorhanden".
Dann setzten wir Lauf auf Ja damit nur einer spielen kann (bei mehren muss man es halt mehrmals machen) und nicht hinterher zehn da rumrennen.
Dann noch Beginn auf Nein weil wir noch wollen das er kurz stehen bleibt am spawnpunkt
Dann nicht VERGESSEN zu speichern!
Dann starten wir ein Schedular der nach 20 (selbst aussuchend) überprüft ob Beginn fertig ist also gespielt
wenn ja dann passiert nichts, wenn aber nein sagen wir das seine zeit abgelaufen ist.
und setzten Lauf aus nein und beginn auf fertig und SPEICHERN!
und teleportieren in zum Spawn(anderer spawnpunkt)
["setTitle(p, "§cDeine Zeit ist abgelaufen", null, 15, 30, 20, null, Sound.AMBIENCE_RAIN);" kommt von:

Spoiler Spoiler

häääää.. ungewohlt, er erstellt irgendwie drei Spoiler... obwohl ich nur einen haben will

Spoiler Spoiler

https://board.nitrado.net/community-area/programmierung/releases/126816/title-actionbar-text/?

Spoiler Spoiler

also damit kann man das machen(normale Chat nachricht geht auch!]
So das war es jetzt für Teil 1.
Bei Fragen oder Fehlern bitte melden :thumbup:
MfG Marc :thumbsup:
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

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