diff --git a/src/killer_sokoban/Main.java b/src/killer_sokoban/Main.java
index e48d9cb4e3516bfd7fdc1ced0094e79dbc7528d8..925aa9cedc507330f33690f5d17b7673641d2bdf 100644
--- a/src/killer_sokoban/Main.java
+++ b/src/killer_sokoban/Main.java
@@ -1,5 +1,8 @@
 package killer_sokoban;
 import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.HashMap;
@@ -15,11 +18,13 @@ public class Main {
 	private static HashMap<String, Crate> crates = new HashMap<>(); //a ládák - azért szedtem így külön mindent, hogy a játék vége detektálásánál végig lehessen kérdezgetni csak a ládákat - comment by SF
 	private static boolean gameRunning;
 	
+	//A beolvasáshoz kellenek. Azért tettem ide őket, hogy a parseMap függvény is lássa őket.
+	private static InputStreamReader isr =	new InputStreamReader(System.in);
+	private static BufferedReader br = new BufferedReader(isr);
+	
 	public static void main(String[] args) throws IOException {
-		System.out.println("Üdv a protóban! Kilépés EOF-fal\n\n");
+		System.out.println("Üdv a protóban! Kilépés EOF-fal");
 		
-		InputStreamReader isr =	new InputStreamReader(System.in);
-		BufferedReader br = new BufferedReader(isr);
 		
 		while (true) {
 			String line;
@@ -68,37 +73,50 @@ public class Main {
 		}
 		gameRunning=false;
 	}
-	private static void runCommand(String cmdline)
+	private static void runCommand(String cmdline) throws NumberFormatException, IOException
 	{
+		//Ha üres sort kaptunk, ignoráljuk
+		//Emiatt áttekinthetőbb bemeneteket lehet csinálni
+		if (cmdline.equals("")) return;
+		
+		
 		//Parancs részekgre tördelése
 		String cmd[];
 		cmd = cmdline.split(" ");
 		
 		
 		//Parancs értelmezés, és a szükséges függvény meghívása
-		if (cmd[0].equals("parseMap")) {			
+		if (cmd[0].equals("parsemap")) {			
 			parseMap(Integer.parseInt(cmd[1]), Integer.parseInt(cmd[2]));
+			System.out.println("OK");
 		}
 		else if (cmd[0].equals("worker")) {
 			spawnWorker(cmd[1],Double.parseDouble(cmd[2]),cmd[3]);
+			System.out.println("OK");
 		}
 		else if (cmd[0].equals("crate")) {
 			spawnCrate(cmd[1],cmd[2]);
+			System.out.println("OK");
 		}
 		else if (cmd[0].equals("setswitch")) {
 			setSwitch(cmd[1], cmd[2]);
+			System.out.println("OK");
 		}
 		else if (cmd[0].equals("putfluid")) {
 			putFluid(cmd[1], cmd[2].charAt(0));
+			System.out.println("OK");
 		}
 		else if (cmd[0].equals("step")) {
 			step(cmd[1],cmd[2]);
+			System.out.println("OK");
 		}
 		else if (cmd[0].equals("stat")) {
 			stat(cmd[1]);
+			System.out.println("OK");
 		}
 		else if (cmd[0].equals("script")) {
-			stat(cmd[1]);
+			script(cmd[1]);
+			System.out.println("OK");
 		}
 		else 
 		{
@@ -107,9 +125,66 @@ public class Main {
 		
 	}
 	
-	private static void parseMap(int parseInt, int parseInt2) {
-		// TODO implement
-		throw new UnsupportedOperationException("Not implemented yet");
+	private static void parseMap(int lines, int columns) throws IOException {
+		//Tisztítás
+		map.clear();
+		workers.clear();
+		crates.clear();
+		
+		//Feldolgozás
+		//Mezők létrehozása
+		for (int i=0; i<lines; i++)
+		{
+			String line= br.readLine();
+			for (int j=0; j<columns; j++)
+			{
+				String name="f_"+i+"_"+j; //név generálása
+				switch (line.charAt(j)) {
+					case 'w' :
+						map.put(name, new Wall());
+						break;
+					case 'm' :
+						map.put(name, new SimpleField());
+						break;
+					case 'h' :
+						map.put(name, new Hole());
+						break;
+					case 'k' :
+						map.put(name, new SwitchField());
+						break;
+					case 's' :
+						map.put(name, new SwitchableHole());
+						break;
+					case 't' :
+						map.put(name, new TargetField());
+						break;
+				}
+			}
+		}
+		
+		
+		//Szomszédságok beállítása
+		//Minden mezőn végigmegyünk. Ha létezik a megfelelő irányú szomszédja, beállítjuk.
+		for (int i=0; i<lines; i++)
+		{
+			for (int j=0; j<columns; j++)
+			{
+				String name="f_"+i+"_"+j; //név generálása
+				String nameUp="f_"+(i-1)+"_"+j; //név generálása
+				String nameRight="f_"+i+"_"+(j+1); //név generálása
+				String nameDown="f_"+(i+1)+"_"+j; //név generálása
+				String nameLeft="f_"+i+"_"+(j-1); //név generálása
+				
+				if (map.containsKey(nameUp))
+					map.get(name).setNeighbour(Direction.UP, map.get(nameUp));
+				if (map.containsKey(nameRight))
+					map.get(name).setNeighbour(Direction.RIGHT, map.get(nameRight));
+				if (map.containsKey(nameDown))
+					map.get(name).setNeighbour(Direction.DOWN, map.get(nameDown));
+				if (map.containsKey(nameLeft))
+					map.get(name).setNeighbour(Direction.LEFT, map.get(nameLeft));
+			}
+		}
 	}
 	
 	private static void spawnWorker(String name, double force, String field)
@@ -166,10 +241,25 @@ public class Main {
 		}
 	}
 	
-	private static void script(String file)
+	private static void script(String file) throws IOException
 	{
-		// TODO implement
-		throw new UnsupportedOperationException("Not implemented yet");
+		//Maybe this works...
+		File scriptFile=new File(file);
+		FileInputStream fis=new FileInputStream(scriptFile);
+		InputStreamReader isr =	new InputStreamReader(fis);
+		BufferedReader br = new BufferedReader(isr);
+		
+		while (true) {
+			String line;
+			line = br.readLine();
+
+			if (line == null) break;
+			
+			runCommand(line);			
+		}
+		
+		br.close();
+		  
 	}
 	
 	//code copied from StackOverFlow