Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Uproszczenie procesu tworzenia minimapy


Rekomendowane odpowiedzi

Opublikowano

Siema, wyskrobałem dla was coś takiego:

 

Myślę że będzie to dużym usprawnieniem dla tych co jeszcze ręcznie tworzą minimapy.

Ci co nie ogarniają to trudno ;) ale myślę że nie będzie takich osób.

 

 

 

To do dzieła!!

1. Rozpakuj archiwum root.epk/.eix

2. Notepad'em++ otwórz plik game.py

3. Odszukaj linijki:

 

player.SetGameWindow(self)

i pod nią wklej analogicznie do pozostałych to:

		##GENERATOR MINIMAPY
		self.RozmiarMapy_1 = 2      #Pierwsza liczba rozmiaru mapy
		self.RozmiarMapy_2 = 2      #Druga liczba rozmiaru mapy
		self.SkokSSow = 10          #Co ile koordów będą robione SS'y
		self.OddalenieKamery = 2299 #Wartość odległości kamery od podłoża
		self.Sprawdzenie = 0        #Stała (Nie zmieniaj nic) sprawdza czy nacisnęliśmy NUMEPAD 7
		#############################

4. Następnie wyszukaj:

 

onPressKeyDict[app.DIK_NUMPAD4]
 
onPressKeyDict[app.DIK_NUMPAD8]
 
onPressKeyDict[app.DIK_NUMPAD6]

i zakomentuj je stawiając znak "#" przed nimi, a za ich miejsce wklej:

		onPressKeyDict[app.DIK_NUMPAD5]		= lambda: self.__NUMEPAD5()
		onPressKeyDict[app.DIK_NUMPAD4]		= lambda: self.__NUMEPAD4()
		onPressKeyDict[app.DIK_NUMPAD8]		= lambda: self.__NUMEPAD8()
		onPressKeyDict[app.DIK_NUMPAD6]		= lambda: self.__NUMEPAD6()
		onPressKeyDict[app.DIK_NUMPAD7]		= lambda: self.__NUMEPAD7()	

5. Wyszukaj linikję:

 

self.ChangePKMode()

 

6. I pod nią analogicznie do pozostałych "def'ów" xD Wklej to:

	def __NUMEPAD7(self):
		if self.Sprawdzenie == 1: #Warunek sprawdzający czy interface jest włączony (Po wartości zmiennej "self.Sprawdzenie")
			self.CheckGameButton()              #
			self.interface.ShowDefaultWindows() #Ogólnie pokazuje cały interface
			self.interface.wndChat.Show()       #
			self.Sprawdzenie = 0 #Do zmiennej sprawdzenie przypisuje wartość 0 żeby powyższy warunek nie został spełniony
			app.SetDefaultCamera() #Domyślna kamera
			app.SetCameraSpeed(100) #Domyślna prędkość obrotu kamery
			net.SendChatPacket("/go a1") #Teleport do M1
		else: #Jeśli warunek się nie spełni
			self.Sprawdzenie = 1 #Do zmiennej sprawdzenie przypisuje wartość 1 żeby powyższy warunek został spełniony
			self.interface.HideAllWindows() #Ogólnie ukrywa cały interface
			self.interface.wndChat.Hide()   #
			net.SendChatPacket("/go 0 0") #Teleport na koordy 0, 0
			app.SetCameraSetting(0, 0, 28532, self.OddalenieKamery, 90, 128, 0, 0, 0) #Ustawienia kamery na kordach 0, 0
			app.SetCameraSpeed(0) #Prędkość obrotu kamery ustawiona na 0
			
	def __NUMEPAD8(self):
		rozmiar_mapy1 = 256 * self.RozmiarMapy_1 #Maksymalny rozmiar mapy
		rozmiar_mapy2 = 256 * self.RozmiarMapy_2 #
		(x, y, z) = player.GetMainCharacterPosition() #Pobranie pozycji gracza
		y = int("%.0f" % (y/100)) #Odpowiednie sformatowanie pobranych wyżej danych do postaci
		x = int("%.0f" % (x/100)) #zaokrąglonej liczby do 0 miejsc po przecinku
		
		if x+self.SkokSSow > rozmiar_mapy1: #Warunek sprawdzający czy po nowym przeteleportowaniu nie wyjdziemy za granicę mapy (Jeśli wyjdziemy /"x+self.SkokSSow" będzie większy od rozmiaru mapy/ to wyświetli poniższe info)
			self.BoardMessage = uiTip.BigBoard()					  #
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi X") #Funkcja do wyświetlenia ramki
			self.BoardMessage.SetTop() 								  #
		else: #Jeśli będziemy się mogli przeteleportować
			net.SendChatPacket("/go "+str(x+self.SkokSSow)+" "+str(y)) #Wysyła komendę "/go x+skok_koordów, y+skok_koordów" skok koordów określamy w pierwszych linijkach skryptu
			app.SetCameraSetting((x+self.SkokSSow)*100, -(y*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0) #Ustawienie kamery nad postacią, wykokość kamery ustalamy w pierwszych linijkach
	
	def __NUMEPAD5(self):
		(x, y, z) = player.GetMainCharacterPosition()
		y = int("%.0f" % (y/100))
		x = int("%.0f" % (x/100))
		
		if x-self.SkokSSow < 0:
			self.BoardMessage = uiTip.BigBoard()
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi X")
			self.BoardMessage.SetTop()
		else:
			net.SendChatPacket("/go "+str(x-self.SkokSSow)+" "+str(y))
			app.SetCameraSetting((x-self.SkokSSow)*100, -(y*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0)
	
	
	
	def __NUMEPAD4(self):
		(x, y, z) = player.GetMainCharacterPosition()
		y = int("%.0f" % (y/100))
		x = int("%.0f" % (x/100))
		
		if y-self.SkokSSow < 0:
			self.BoardMessage = uiTip.BigBoard()
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi Y")
			self.BoardMessage.SetTop()
		else:
			net.SendChatPacket("/go "+str(x)+" "+str(y-self.SkokSSow))
			app.SetCameraSetting(x*100, -((y-self.SkokSSow)*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0)
			
	def __NUMEPAD6(self):
		rozmiar_mapy1 = 256 * self.RozmiarMapy_1
		rozmiar_mapy2 = 256 * self.RozmiarMapy_2
		(x, y, z) = player.GetMainCharacterPosition()
		y = int("%.0f" % (y/100))
		x = int("%.0f" % (x/100))
		
		if y+self.SkokSSow > rozmiar_mapy2:
			self.BoardMessage = uiTip.BigBoard()
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi Y")
			self.BoardMessage.SetTop()
		else:
			net.SendChatPacket("/go "+str(x)+" "+str(y+self.SkokSSow))
			app.SetCameraSetting(x*100, -((y+self.SkokSSow)*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0)

To jeszcze nie koniec! Zapisz plik game.py a otwórz constinfo.py

 

Odszukaj tam dwóch wartości przypisanych do zmiennych "CAMERA_MAX_DISTANCE_SHORT" oraz "CAMERA_MAX_DISTANCE_LONG" i zamień obydwa na zajebiście duże liczby xD np:

 

CAMERA_MAX_DISTANCE_SHORT = 25222222222222200.0
CAMERA_MAX_DISTANCE_LONG = 35022222222222220.0

W ten sposób zrobimy sobie baaardzo dużą możliwość oddalenia kamery! :D

Pakujemy root'y i GOTOWE! :D

 

FUNKCJE KLAWISZY:

Numepad 7 - Ustawia nas w początkowym położeniu mapy jednocześnie ustawiając kamerę nad nami po ponownym wciśnięciu ustawienia wracają do normalności a my zostajemy przeniesieni na mapę "a1"

 

Numepad 4 - Porusza kamerą i postacią w lewo

 

Numepad 6 - Porusza kamerą i postacią w prawo

 

Numepad 8 - Porusza kamerą i postacią do góry

 

Numepad 5 - Porusza kamerą i postacią na dół

 

 

UWAGA! Musimy być na postaci GM'a z prawami do komendy "/go"!

 

Co musicie edytować?
-Te linijki które dodaliście pod "player.SetGameWindow(self)"

 

Dlaczego nie opisałeś całego procesu tworzenia minimapy?
-Odpowiedź jest prosta, "Nic na gotowe" sami pomyślcie!

 

Po co mi to w ogóle?

-Ci co są w temacie będą wiedzieli po co.

 

Starałem się wytłumaczyć co robią poszczególne linijki kodu poprzez komentarze przy nich umieszczone tak abyście coś z tego wynieśli więc nie tylko Copy i Paste. Starajcie się chociaż zrozumieć w jaki sposób to działa!

 

Dla "hajterów" xD:

Wiem że można to było krócej i zwięźlej napisać ale chciałem żeby inni użytkownicy forum połapali się w kodzie!

8910814572903361049127.png

Opublikowano

Siema, wyskrobałem dla was coś takiego:

 

Myślę że będzie to dużym usprawnieniem dla tych co jeszcze ręcznie tworzą minimapy.

Ci co nie ogarniają to trudno ;) ale myślę że nie będzie takich osób.

 

 

 

To do dzieła!!

1. Rozpakuj archiwum root.epk/.eix

2. Notepad'em++ otwórz plik game.py

3. Odszukaj linijki:

player.SetGameWindow(self)

i pod nią wklej analogicznie do pozostałych to:

		##GENERATOR MINIMAPY
		self.RozmiarMapy_1 = 2      #Pierwsza liczba rozmiaru mapy
		self.RozmiarMapy_2 = 2      #Druga liczba rozmiaru mapy
		self.SkokSSow = 10          #Co ile koordów będą robione SS'y
		self.OddalenieKamery = 2299 #Wartość odległości kamery od podłoża
		self.Sprawdzenie = 0        #Stała (Nie zmieniaj nic) sprawdza czy nacisnęliśmy NUMEPAD 7
		#############################

4. Następnie wyszukaj:

onPressKeyDict[app.DIK_NUMPAD4]
 
onPressKeyDict[app.DIK_NUMPAD8]
 
onPressKeyDict[app.DIK_NUMPAD6]

i zakomentuj je stawiając znak "#" przed nimi, a za ich miejsce wklej:

		onPressKeyDict[app.DIK_NUMPAD5]		= lambda: self.__NUMEPAD5()
		onPressKeyDict[app.DIK_NUMPAD4]		= lambda: self.__NUMEPAD4()
		onPressKeyDict[app.DIK_NUMPAD8]		= lambda: self.__NUMEPAD8()
		onPressKeyDict[app.DIK_NUMPAD6]		= lambda: self.__NUMEPAD6()
		onPressKeyDict[app.DIK_NUMPAD7]		= lambda: self.__NUMEPAD7()	

5. Wyszukaj linikję:

self.ChangePKMode()

6. I pod nią analogicznie do pozostałych "def'ów" xD Wklej to:

	def __NUMEPAD7(self):
		if self.Sprawdzenie == 1: #Warunek sprawdzający czy interface jest włączony (Po wartości zmiennej "self.Sprawdzenie")
			self.CheckGameButton()              #
			self.interface.ShowDefaultWindows() #Ogólnie pokazuje cały interface
			self.interface.wndChat.Show()       #
			self.Sprawdzenie = 0 #Do zmiennej sprawdzenie przypisuje wartość 0 żeby powyższy warunek nie został spełniony
			app.SetDefaultCamera() #Domyślna kamera
			app.SetCameraSpeed(100) #Domyślna prędkość obrotu kamery
			net.SendChatPacket("/go a1") #Teleport do M1
		else: #Jeśli warunek się nie spełni
			self.Sprawdzenie = 1 #Do zmiennej sprawdzenie przypisuje wartość 1 żeby powyższy warunek został spełniony
			self.interface.HideAllWindows() #Ogólnie ukrywa cały interface
			self.interface.wndChat.Hide()   #
			net.SendChatPacket("/go 0 0") #Teleport na koordy 0, 0
			app.SetCameraSetting(0, 0, 28532, self.OddalenieKamery, 90, 128, 0, 0, 0) #Ustawienia kamery na kordach 0, 0
			app.SetCameraSpeed(0) #Prędkość obrotu kamery ustawiona na 0
			
	def __NUMEPAD8(self):
		rozmiar_mapy1 = 256 * self.RozmiarMapy_1 #Maksymalny rozmiar mapy
		rozmiar_mapy2 = 256 * self.RozmiarMapy_2 #
		(x, y, z) = player.GetMainCharacterPosition() #Pobranie pozycji gracza
		y = int("%.0f" % (y/100)) #Odpowiednie sformatowanie pobranych wyżej danych do postaci
		x = int("%.0f" % (x/100)) #zaokrąglonej liczby do 0 miejsc po przecinku
		
		if x+self.SkokSSow > rozmiar_mapy1: #Warunek sprawdzający czy po nowym przeteleportowaniu nie wyjdziemy za granicę mapy (Jeśli wyjdziemy /"x+self.SkokSSow" będzie większy od rozmiaru mapy/ to wyświetli poniższe info)
			self.BoardMessage = uiTip.BigBoard()					  #
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi X") #Funkcja do wyświetlenia ramki
			self.BoardMessage.SetTop() 								  #
		else: #Jeśli będziemy się mogli przeteleportować
			net.SendChatPacket("/go "+str(x+self.SkokSSow)+" "+str(y)) #Wysyła komendę "/go x+skok_koordów, y+skok_koordów" skok koordów określamy w pierwszych linijkach skryptu
			app.SetCameraSetting((x+self.SkokSSow)*100, -(y*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0) #Ustawienie kamery nad postacią, wykokość kamery ustalamy w pierwszych linijkach
	
	def __NUMEPAD5(self):
		(x, y, z) = player.GetMainCharacterPosition()
		y = int("%.0f" % (y/100))
		x = int("%.0f" % (x/100))
		
		if x-self.SkokSSow < 0:
			self.BoardMessage = uiTip.BigBoard()
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi X")
			self.BoardMessage.SetTop()
		else:
			net.SendChatPacket("/go "+str(x-self.SkokSSow)+" "+str(y))
			app.SetCameraSetting((x-self.SkokSSow)*100, -(y*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0)
	
	
	
	def __NUMEPAD4(self):
		(x, y, z) = player.GetMainCharacterPosition()
		y = int("%.0f" % (y/100))
		x = int("%.0f" % (x/100))
		
		if y-self.SkokSSow < 0:
			self.BoardMessage = uiTip.BigBoard()
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi Y")
			self.BoardMessage.SetTop()
		else:
			net.SendChatPacket("/go "+str(x)+" "+str(y-self.SkokSSow))
			app.SetCameraSetting(x*100, -((y-self.SkokSSow)*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0)
			
	def __NUMEPAD6(self):
		rozmiar_mapy1 = 256 * self.RozmiarMapy_1
		rozmiar_mapy2 = 256 * self.RozmiarMapy_2
		(x, y, z) = player.GetMainCharacterPosition()
		y = int("%.0f" % (y/100))
		x = int("%.0f" % (x/100))
		
		if y+self.SkokSSow > rozmiar_mapy2:
			self.BoardMessage = uiTip.BigBoard()
			self.BoardMessage.SetTip("Nie możesz iść dalej po osi Y")
			self.BoardMessage.SetTop()
		else:
			net.SendChatPacket("/go "+str(x)+" "+str(y+self.SkokSSow))
			app.SetCameraSetting(x*100, -((y+self.SkokSSow)*100), 28532, self.OddalenieKamery, 90, 128, 0, 0, 0)

To jeszcze nie koniec! Zapisz plik game.py a otwórz constinfo.py

 

Odszukaj tam dwóch wartości przypisanych do zmiennych "CAMERA_MAX_DISTANCE_SHORT" oraz "CAMERA_MAX_DISTANCE_LONG" i zamień obydwa na zajebiście duże liczby xD np:

CAMERA_MAX_DISTANCE_SHORT = 25222222222222200.0
CAMERA_MAX_DISTANCE_LONG = 35022222222222220.0

W ten sposób zrobimy sobie baaardzo dużą możliwość oddalenia kamery! :D

Pakujemy root'y i GOTOWE! :D

 

FUNKCJE KLAWISZY:

Numepad 7 - Ustawia nas w początkowym położeniu mapy jednocześnie ustawiając kamerę nad nami po ponownym wciśnięciu ustawienia wracają do normalności a my zostajemy przeniesieni na mapę "a1"

 

Numepad 4 - Porusza kamerą i postacią w lewo

 

Numepad 6 - Porusza kamerą i postacią w prawo

 

Numepad 8 - Porusza kamerą i postacią do góry

 

Numepad 5 - Porusza kamerą i postacią na dół

 

 

UWAGA! Musimy być na postaci GM'a z prawami do komendy "/go"!

 

Co musicie edytować?

-Te linijki które dodaliście pod "player.SetGameWindow(self)"

 

Dlaczego nie opisałeś całego procesu tworzenia minimapy?

-Odpowiedź jest prosta, "Nic na gotowe" sami pomyślcie!

 

Po co mi to w ogóle?

-Ci co są w temacie będą wiedzieli po co.

 

Starałem się wytłumaczyć co robią poszczególne linijki kodu poprzez komentarze przy nich umieszczone tak abyście coś z tego wynieśli więc nie tylko Copy i Paste. Starajcie się chociaż zrozumieć w jaki sposób to działa!

 

Dla "hajterów" xD:

Wiem że można to było krócej i zwięźlej napisać ale chciałem żeby inni użytkownicy forum połapali się w kodzie!

Bardzo dobre wykonanie i sposób ;) Ja mam jeszcze inny ale nie udostępnię ;c 

Opublikowano

Bardzo fajny sposób, ale regeny chwilowo aż się prosi wyłączyć :).

/private index_mapy i po kłopocie. :)

Specjalista
Opublikowano

Ciekawe ja to wyjdzie w praktyce,sposób wydaje się być dobry.

Plus za prace :P

Pomogłeś,pomogę kiedy tylko brachu mogę!

 

graphic.png

 

Opublikowano

Z tego co pamiętam, to ustawienie kamery na "90 stopni" w kliencie wcale nie ustawia kamery na 90 stopni. Jest to jakieś 80-85 stopni względem podłoża, przez co zrzuty nie są robione bezpośrednio z góry lecz z lekkiej perspektywy.

 

Pozostaje jeszcze kwestia wchodzenia na wzniesienia. Wysokość kamery nie jest ustawiona względem punktu 0 lecz względem wysokości podłoża, więc na szczycie kamera będzie miała szersze pole widzenia niż na równinie.

lrip.png
Panel administratora Metin2 specjalnie dla MPCForum.pl

Oceniajcie, dawajcie nowe pomysły i krytykujcie, wszystko po to, aby jak najszybciej pojawił się na MPC!

Opublikowano

W sumie to teraz już szkoda czasu na robienie Tak minimap ;)

Na epvp ktoś udostępnił WE na którym działa robienie minimap i można ro zrobić 1 kliknięciem ;)

PS: baran860

Upniesz mi skyboxa którego masz na filmiku?

Dzieki. 

Opublikowano

Z tego co pamiętam, to ustawienie kamery na "90 stopni" w kliencie wcale nie ustawia kamery na 90 stopni. Jest to jakieś 80-85 stopni względem podłoża, przez co zrzuty nie są robione bezpośrednio z góry lecz z lekkiej perspektywy.

 

Pozostaje jeszcze kwestia wchodzenia na wzniesienia. Wysokość kamery nie jest ustawiona względem punktu 0 lecz względem wysokości podłoża, więc na szczycie kamera będzie miała szersze pole widzenia niż na równinie.

Nie, nie będzie miała szerszego pola widzenia dzieje się tak iż z góry narzucamy wartość wysokości kamery

Nie jest w żaden sposób powiązana z osią "z" pobieraną z położenia postaci

 

Co do perspektywy, również została wyeliminowana spójrz:

 

 

1392727476-U81780.jpg

1392727622-U81780.jpg

 

 

Podobnie jest z osią X

 

To jest zrobione jak by to powiedzieć na tej drugiej kamerze metina (http://www.mpcforum.pl/topic/1119951-tutsystem-kamer)

 

 

 

 

W sumie to teraz już szkoda czasu na robienie Tak minimap ;)

Na epvp ktoś udostępnił WE na którym działa robienie minimap i można ro zrobić 1 kliknięciem ;)

PS: baran860

Upniesz mi skyboxa którego masz na filmiku?

Dzieki. 

Czy mógłbym prosić o linka? Bo jakoś nie mogę znaleźć a przydał by mi się.

Podeślij tutaj albo jak wolisz to na PW.

8910814572903361049127.png

Opublikowano

ja chce kurna tuta z pythona

 

top@

no ciekawe wiele użytkowników skorzysta z tego tak wiec + za wkład jaki poświeciłeś :D

Opublikowano

Nie prosciej uzyc worldeditora do tworzenia minimapy?


W sumie to teraz już szkoda czasu na robienie Tak minimap ;)

Na epvp ktoś udostępnił WE na którym działa robienie minimap i można ro zrobić 1 kliknięciem ;)

PS: baran860

Upniesz mi skyboxa którego masz na filmiku?

Dzieki. 

w tym na mpc tez dziala....


Nie, nie będzie miała szerszego pola widzenia dzieje się tak iż z góry narzucamy wartość wysokości kamery

Nie jest w żaden sposób powiązana z osią "z" pobieraną z położenia postaci

 

Co do perspektywy, również została wyeliminowana spójrz:

 

 

1392727476-U81780.jpg

1392727622-U81780.jpg

 

 

Podobnie jest z osią X

 

To jest zrobione jak by to powiedzieć na tej drugiej kamerze metina (http://www.mpcforum.pl/topic/1119951-tutsystem-kamer)

 

 

 

 

Czy mógłbym prosić o linka? Bo jakoś nie mogę znaleźć a przydał by mi się.
Podeślij tutaj albo jak wolisz to na PW.

http://www.mpcforum.pl/topic/1124335-world-editor-metin2/

Opublikowano

W zwykłym nie działa ;) nie wiem co jest zyebane ale na epvp było i śmiga bo testowałem. 

mam ten z mpc i dziala, wystarczy myslec

Opublikowano

mam ten z mpc i dziala, wystarczy myslec

Aż zaraz sprawdzę na zwykłym :D

@: rzeczywiście działa.. Wystarczy wyjebać wszystkie minimap.dds z folderu z mapą i gotowe :)

Opublikowano

Też bym to zobaczył jak masz, daj pw

 

Nie, nie będzie miała szerszego pola widzenia dzieje się tak iż z góry narzucamy wartość wysokości kamery

Nie jest w żaden sposób powiązana z osią "z" pobieraną z położenia postaci

 

 

 

Czy mógłbym prosić o linka? Bo jakoś nie mogę znaleźć a przydał by mi się.

Podeślij tutaj albo jak wolisz to na PW.

 

Bez niemieckiego. Tam tylko koleś button dał który odpowiadał za Insert.. 

http://www.mpcforum.pl/topic/1152163-jak-robic-minimapy-worldedytor/

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...