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

GM-Online w po stronie klienta (spolszczony)


robo112

Rekomendowane odpowiedzi

Opublikowano

Link do oryginału:

http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/1254020-release-tutorial-gm-online-board.html

 

W grze wygląda to tak:

5372315700_1308668415.jpg

 

Potrzebne nam pliki z klienta root oraz uiscript

 

Rozpakowujemy root

 

otwieramy gamy.py i szukamy linijek

 

	def __BuildKeyDict(self):
	onPressKeyDict = {}

	##PressKey ´Â ´©¸Ł°í ŔÖ´Â µżľČ °čĽÓ ŔűżëµÇ´Â ŰŔĚ´Ů.

	## ĽýŔÚ ´ÜĂŕŰ Äü˝˝·Ôżˇ ŔĚżëµČ´Ů.(ŔĚČÄ ĽýŔڵ鵵 Äü ˝˝·Ôżë żąľŕ)
	## F12 ´Â Ŭ¶ó µđąö±×żë ŰŔ̹ǷΠľ˛Áö ľĘ´Â °Ô ÁÁ´Ů.
	onPressKeyDict[app.DIK_1]	= lambda : self.__PressNumKey(1)
	onPressKeyDict[app.DIK_2]	= lambda : self.__PressNumKey(2)
	onPressKeyDict[app.DIK_3]	= lambda : self.__PressNumKey(3)
	onPressKeyDict[app.DIK_4]	= lambda : self.__PressNumKey(4)
	onPressKeyDict[app.DIK_5]	= lambda : self.__PressNumKey(5)
	onPressKeyDict[app.DIK_6]	= lambda : self.__PressNumKey(6)
	onPressKeyDict[app.DIK_7]	= lambda : self.__PressNumKey(7)
	onPressKeyDict[app.DIK_8]	= lambda : self.__PressNumKey(8)
	onPressKeyDict[app.DIK_9]	= lambda : self.__PressNumKey(9)
	onPressKeyDict[app.DIK_F1]	= lambda : self.__PressQuickSlot(4)
	onPressKeyDict[app.DIK_F2]	= lambda : self.__PressQuickSlot(5)
	onPressKeyDict[app.DIK_F3]	= lambda : self.__PressQuickSlot(6)
	onPressKeyDict[app.DIK_F4]	= lambda : self.__PressQuickSlot(7) 

dodajemy na koniec

 

onPressKeyDict[app.DIK_F5]	= lambda : self.__KontaktBoard()

powinno wyglądać to tak:

 

def __BuildKeyDict(self):
	onPressKeyDict = {}

	##PressKey ´Â ´©¸Ł°í ŔÖ´Â µżľČ °čĽÓ ŔűżëµÇ´Â ŰŔĚ´Ů.

	## ĽýŔÚ ´ÜĂŕŰ Äü˝˝·Ôżˇ ŔĚżëµČ´Ů.(ŔĚČÄ ĽýŔڵ鵵 Äü ˝˝·Ôżë żąľŕ)
	## F12 ´Â Ŭ¶ó µđąö±×żë ŰŔ̹ǷΠľ˛Áö ľĘ´Â °Ô ÁÁ´Ů.
	onPressKeyDict[app.DIK_1]	= lambda : self.__PressNumKey(1)
	onPressKeyDict[app.DIK_2]	= lambda : self.__PressNumKey(2)
	onPressKeyDict[app.DIK_3]	= lambda : self.__PressNumKey(3)
	onPressKeyDict[app.DIK_4]	= lambda : self.__PressNumKey(4)
	onPressKeyDict[app.DIK_5]	= lambda : self.__PressNumKey(5)
	onPressKeyDict[app.DIK_6]	= lambda : self.__PressNumKey(6)
	onPressKeyDict[app.DIK_7]	= lambda : self.__PressNumKey(7)
	onPressKeyDict[app.DIK_8]	= lambda : self.__PressNumKey(8)
	onPressKeyDict[app.DIK_9]	= lambda : self.__PressNumKey(9)
	onPressKeyDict[app.DIK_F1]	= lambda : self.__PressQuickSlot(4)
	onPressKeyDict[app.DIK_F2]	= lambda : self.__PressQuickSlot(5)
	onPressKeyDict[app.DIK_F3]	= lambda : self.__PressQuickSlot(6)
	onPressKeyDict[app.DIK_F4]	= lambda : self.__PressQuickSlot(7) 
	onPressKeyDict[app.DIK_F5]	= lambda : self.__KontaktBoard()

 

 

Teraz schodzimy na dól pod tym tekstem

	def __PlayMusic(self, flag, filename):
	flag = int(flag)
	if flag:
		snd.FadeOutAllMusic()
		musicInfo.SaveLastPlayFieldMusic()
		snd.FadeInMusic("BGM/" + filename)
	else:
		snd.FadeOutAllMusic()
		musicInfo.LoadLastPlayFieldMusic()
		snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

 

dodajemy ten tekst

 

	def __KontaktBoard(self):
	import uiEvo2Board

	self.evo2boardDlg = uiEvo2Board.MenuDialog()
	self.evo2boardDlg.Show()

 

Powinno wyglądać to tak:

	def __PlayMusic(self, flag, filename):
	flag = int(flag)
	if flag:
		snd.FadeOutAllMusic()
		musicInfo.SaveLastPlayFieldMusic()
		snd.FadeInMusic("BGM/" + filename)
	else:
		snd.FadeOutAllMusic()
		musicInfo.LoadLastPlayFieldMusic()
		snd.FadeInMusic("BGM/" + musicInfo.fieldMusic)

def __KontaktBoard(self):
	import uiEvo2Board

	self.evo2boardDlg = uiEvo2Board.MenuDialog()
	self.evo2boardDlg.Show()

 

Potem szukamy linijki odpowiadającej za czat:

def OnRecvWhisper(self, name, line):
		chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, name, line)
		self.interface.RecvWhisper(name)

 

I zmieniamy na:

def OnRecvWhisper(self, name, line):
	Gamemaster1 = constInfo.GM1Name
	Gamemaster2 = constInfo.GM2Name
	Gamemaster3 = constInfo.GM3Name
	Gamemaster4 = constInfo.GM4Name
	pname = player.GetName()

	if line[-21:] == "Hallo bist du online?" and (pname == (Gamemaster1) != -1 or pname == (Gamemaster2) != -1 or pname == (Gamemaster3) != -1 or pname == (Gamemaster4) != -1):
		net.SendWhisperPacket(name, "Yes I am online")
		return

	if line[-15:] == "Yes I am online" and name == (Gamemaster1) != -1:
		constInfo.GM1Online = 1
		chat.AppendChat(chat.CHAT_TYPE_NOTICE, " " + name + " jest dostępny")
		return

	if line[-15:] == "Yes I am online" and name == (Gamemaster2) != -1:
		constInfo.GM2Online = 1
		chat.AppendChat(chat.CHAT_TYPE_NOTICE, " " + name + " jest dostępny")
		return

	if line[-15:] == "Yes I am online" and name == (Gamemaster3) != -1:
		constInfo.GM3Online = 1
		chat.AppendChat(chat.CHAT_TYPE_NOTICE, " " + name + " jest dostępny")
		return

	if line[-15:] == "Yes I am online" and name == (Gamemaster4) != -1:
		constInfo.GM4Online = 1
		chat.AppendChat(chat.CHAT_TYPE_NOTICE, " " + name + " jest dostępny")
		return

	if line[-(12+len(name)+35):] == "Der Spieler " + name + " möchte Kontakt mit ihnen aufnehmen" and (pname == (Gamemaster1) != -1 or pname == (Gamemaster2) != -1 or pname == (Gamemaster3) != -1 or pname == (Gamemaster4) != -1):
		chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, name, line)
		self.interface.RecvWhisper(name)
		net.SendWhisperPacket(name, "Bitte warte einen Augenblick, ich bin gleich für Sie da!")
		return			
	else:
		chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, name, line)
		self.interface.RecvWhisper(name)

 

Potem szukamy odpowiadającej za wiadomość że gracz jest niedostępny czyli:

	def OnRecvWhisperError(self, mode, name, str):
	if locale.WHISPER_ERROR.has_key(mode):
		chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, locale.WHISPER_ERROR[mode](name))
	elif mode == 4:
		chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, str)
	else:
		chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))

	self.interface.RecvWhisper(name)

 

Zmieniamy na:

	def OnRecvWhisperError(self, mode, name, str):
	pname = player.GetName()
	Gamemaster1 = constInfo.GM1Name
	Gamemaster2 = constInfo.GM2Name
	Gamemaster3 = constInfo.GM3Name
	Gamemaster4 = constInfo.GM4Name
	if locale.WHISPER_ERROR.has_key(mode):
		if (name == (Gamemaster1) != -1) and pname != Gamemaster1 and constInfo.GM1Online == 0:
			constInfo.GM1Online = 0
			#chat.AppendChat(chat.CHAT_TYPE_NOTICE, "Das Teammitglied " + name + " jest niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		elif (name == (Gamemaster1) != -1) and pname != Gamemaster1 and constInfo.GM1Online == 1:
			constInfo.GM1Online = 0
			chat.AppendChat(chat.CHAT_TYPE_NOTICE, " " + name + " jest już niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		elif (name == (Gamemaster2) != -1) and pname != Gamemaster2 and constInfo.GM2Online == 0:
			constInfo.GM2Online = 0
			#chat.AppendChat(chat.CHAT_TYPE_NOTICE, "Das Teammitglied " + name + " jest niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		elif (name == (Gamemaster2) != -1) and pname != Gamemaster2 and constInfo.GM2Online == 1:
			constInfo.GM2Online = 0
			chat.AppendChat(chat.CHAT_TYPE_NOTICE, "" + name + " jest już niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		elif (name == (Gamemaster3) != -1) and pname != Gamemaster3 and constInfo.GM3Online == 0:
			constInfo.GM3Online = 0
			#chat.AppendChat(chat.CHAT_TYPE_NOTICE, "Das Teammitglied " + name + " jest niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		elif (name == (Gamemaster3) != -1) and pname != Gamemaster3 and constInfo.GM3Online == 1:
			constInfo.GM3Online = 0
			chat.AppendChat(chat.CHAT_TYPE_NOTICE, "" + name + " jest już niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		elif (name == (Gamemaster4) != -1) and pname != Gamemaster4 and constInfo.GM4Online == 0:
			constInfo.GM4Online = 0
			#chat.AppendChat(chat.CHAT_TYPE_NOTICE, "Das Teammitglied " + name + " jest niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		elif (name == (Gamemaster4) != -1) and pname != Gamemaster4 and constInfo.GM4Online == 1:
			constInfo.GM4Online = 0
			chat.AppendChat(chat.CHAT_TYPE_NOTICE, "" + name + " jest już niedostępny")
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "" + name + " jest niedostępny.")
			return
		else:
			chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, locale.WHISPER_ERROR[mode](name))
	elif mode == 4:
		chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, str)
	else:
		chat.AppendWhisper(chat.WHISPER_TYPE_INFO, name, "Whisper Unknown Error(mode=%d, name=%s)" % (mode, name))

	self.interface.RecvWhisper(name)

 

Zapisujemy game.py

 

Teraz wchodzimy do constinfo.py

 

Na na początku dodajemy wpisy

 

GM1Online = 0
GM2Online = 0
GM3Online = 0
GM4Online = 0

GM1Name = "[GA]robo112"
GM2Name = "[LOWBOB]RealFreak"
GM3Name = "[CRAZY]Passy305"
GM4Name = "[iMBA]Crank"

 

 

Tu znianiamy na nazwy swoich GA/GMów

GM1Name = "[GA]robo112"

 

Pobieramy pliki w załączniku

uievo2board.py 

dodajemy do root i pakujemy.

 

Rozpakowujemy uiscript

i dodajemy

evo2board.py

dodajemy do uiscript i pakujemy.

 

Pamiętaj o [TAB] edytując pliki .py

 

Download:

W załączniku

Skan:

http://www.virustotal.com/file-scan/report.html?id=c6d2c71ec3475cc6c3f95d601dde1fc249274a7788b300e317723610b083462b-1308668456

 

W paczce znajdują się wpisy do game.py i constinfo.py wraz z tabulatorami

 

PS. Aby odpalić to trzeba wcisnąć F5

GM.rar

Kończę z MPCforum!!!

 

 

BYroboMt2 DEDYK

Badar?? HaHa!!!!

Opublikowano

To chyba najlepszy sposób na sprawdzanie online teamu.

Widziałem go dziś na epvp :) Ale + za udostępnienie na mpc.

PS: Mogłeś dać spolszczoną wersję. Bo widzę, że spolszczyłeś ją już.

Opublikowano

Ciekawy i bardzo praktyczny sposób na sprawdzenie, czy jakiś Game Master jest online :) Masz plus za spolszczenie

Sygna max 800 x200

Opublikowano

Gm ją dostanie jeśli nie użyje tego w swoim kliencie. Chodzi tutaj o taką sytuacje, kiedy GM nie chce pokazywać swojej obecności, a ktoś chce tego używać jako alarm na gm czy coś w tym stylu.

sygna.png
Opublikowano

Widziałem na ePvP, ale oczywiście łap plusa za to, że chciało Ci się spolszczać i ogarnąć all.

 

Good Job!

Opublikowano

Gm ją dostanie jeśli nie użyje tego w swoim kliencie. Chodzi tutaj o taką sytuacje, kiedy GM nie chce pokazywać swojej obecności, a ktoś chce tego używać jako alarm na gm czy coś w tym stylu.

 

 

Tylko jak gm chce sie ukryc to robi nowa postac z prawami gm ;) i nie znajac nicku i nie wpisujac do tego skryptu ...gracze mysla ze go nie ma a on z partyzanta z innej postaci podglada;)

dobre i w ten sposób .Typek pewnien ze gm nie ma- uzywa cheata i wtopka ^^bo ten na innej postaci. Wiec i moze sie przydac przy wykrywaniu cheaterow pewnych nieobecnosci Admina;)

Sygna Poszla na spacer. wiosne mamy ;)

Opublikowano

Takie małe pytanie, próbowaliście wysłać wiadomość z innej postaci GM do tego, który jest na liście i wtedy po kliknięciu na tym, do kogo przysyła wiadomość wywala klienta?

Sygna max 800 x200

Opublikowano

@UP A nie masz tak ze wszystkimi wiadomościami prywatnymi? Ja tak miałem i wystarczyło, że podmieniłem uiscript z jakiegoś serwera na którym działa szept, albo z Pl'a.

 

@Top: Fajne, przyda się masz +sika rzecz jasna :D. Ja mam taki problem w root, że ładuje się do końca i nie wchodzi do gry, ale jakoś to rozkminie ;], lecz pomocą nie pogardzę :D

Poszukuje pluginu Gr2 do 3Ds max 2012.

haac.jpg

 

Jestem jaki jestem i tego NIE zmienię!

 

 

 

Moje Tut'y

 

Video tut jak dodać mapę na swój serwer:

http://www.mpcforum.pl/topic/416201-videotut-jak-dodac-mape-na-wlasny-serwer/page__gopid__2960589#entry2960589

Texture Mod:

http://www.mpcforum.pl/topic/406659-download-texture-mod/page__p__2892270__fromsearch__1#entry2892270

Znaczek GM:

http://www.mpcforum.pl/topic/367597-dl-znaczek-gm/page__p__2603024__fromsearch__1#entry2603024

Nowe Zbroje By Baso:

http://www.mpcforum.pl/topic/478940-dltutzbroje-by-baso/

 

Opublikowano

Jak dla mnie to lepszą sprawą jest quest wykorzystujący event flagi no ale co kto woli ;)

Koniec z MPCForum.pl i ogółem z metinem

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

No i o wiele praktyczniejszy do edycji, po co ktoś ma pobierać klienta skoro wystarczy 5 minut przerwy konserwacyjnej, edycja questa i już zaktualizowane.

Koniec z MPCForum.pl i ogółem z metinem

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

nie trzeba zamykać serwera ja zawsze wpisuje /reload q i questy działają

1/50 mi się wyłącza serwer ale tylko plik game więc nie traci nikt eq.

 

PS. ma ktoś tego questa na tych GMów online ??? Miałem ale skasował mi się

Kończę z MPCforum!!!

 

 

BYroboMt2 DEDYK

Badar?? HaHa!!!!

Opublikowano

quest gm_state begin
state start begin
	when login with pc.is_gm() begin
		game.set_event_flag(pc.get_name(), 1)
	end

	when logout with pc.is_gm() begin
		game.set_event_flag(pc.get_name(), 0)
	end

	when xxx.chat."Status GM" begin
		say_title("Status GM")
		if game.get_event_flag("nazwa_gm") == 0 then
			say_reward("GM nazwa_gm jest offline!")
		elseif game.get_event_flag("nazwa_gm") == 1 then
			say_title("GM nazwa_gm jest online!")
		end
		if game.get_event_flag("nazwa_gm2") == 0 then
			say_reward("GM nazwa_gm2 jest offline!")
		elseif game.get_event_flag("nazwa_gm2") == 1 then
			say_title("GM nazwa_gm2 jest online!")
		end
	end
end
end

 

Quest napisany w 5 minut :P W miejsce nazwa_gm i nazwa_gm2 wpisujemy nick GM'a (taki sam jaki by zwróciła funkcja pc.get_name()). W miejsce xxx wpisujemy id npc u którego ma być podgląd statusu.

Koniec z MPCForum.pl i ogółem z metinem

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

pytanie jak dodać więcej niż 4 gm ??;d

tylko w constinfo.py dodajemy więcej pozycji ??

http://www.youtube.com/user/JuriMasters

Opublikowano

Nie no trzeba edytować cały skrypt. Dodać nowe przyciski i takie tam ale nie jest aż tak dużo roboty. Tylko trzeba dobrze przekopiować.

Kończę z MPCforum!!!

 

 

BYroboMt2 DEDYK

Badar?? HaHa!!!!

  • 4 miesiące temu...

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...