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

[Quest] Zmiana piosenek u npc.


Rekomendowane odpowiedzi

Opublikowano

Witam,

Przedstawiam wam quest dzięki któremu będziecie mogli zmieniać piosenki które będą słyszeć wszyscy gracze.

To jedziemy:]

 

Na sam początek quest.

 

 

quest zmiana_piosenki begin
state start begin
when xx.chat."Zmień piosenkę " with pc.is_gm() begin
local piosenki = {"Nazwa pierwszej", "Nazwa drugiej", "Nazwa trzeciej", "Nazwa czwartej", "Nazwa piątej"}
say("Wybierz piosenkę:")
local s = select(piosenki[1], piosenki[2], piosenki[3], piosenki[4], piosenki[5], "Anuluj")
if s == 6 then
return
end
game.set_event_flag("piosenka", s)
say("Wybrana piosenka to "..piosenki[s]..".")
end

when xx.chat."Wyłącz specjalną piosenkę " with pc.is_gm() and game.get_event_flag("piosenka") != 0 begin
say("Chcesz wyłączyć specjalną piosenkę?")
local a = select("Tak", "Anuluj")
if a == 1 then
game.set_event_flag("piosenka", 0)
end
end

when login with game.get_event_flag("piosenka") != 0 begin
local nazwa = "piosenka"..game.get_event_flag("piosenka")..".mp3" -- np piosenka2.mp3
cmdchat("muzyka ", nazwa)
end
end
end

Z Tabami

http://wklej.to/AJZGj

 

 

 

Należy go wkleić do notatnika.

Gdy już to zrobimy to zamieniamy w nim dwa słowa "xx" na ID naszego NPC u którego

chcemy mieć opcję zmiany piosenki.

Np.

when 20016.chat."Zmień piosenkę " with pc.is_gm() begin

when 20016.chat."Wyłącz specjalną piosenkę " with pc.is_gm() and game.get_event_flag("piosenka") != 0 begin

I teraz ta opcja będzie dostępna u kowala gdyż kowal ma ID 20016.

 

 

Teraz zapisujemy. Plik--> Zapisz Jako-->Nazwa_Questa.quest

Zapisz jako typ: Wszystkie pliki.

i kodowanie ANSI

 

Teraz musimy wgrać nasz quest na serwer.Jeśli nie wiesz jak to zrobić odsyłam Cię do lekturki

http://www.mpcforum.pl/topic/163124-tutwgrywanie-questow-na-serwer/

 

Teraz przejdźmy do plików root.

Należy je rozpakować.Jeśli nie wiesz jak to zrobić to kolejna lektura

http://www.mpcforum.pl/topic/193085-tutsprawny-paker-do-plikw-eix-i-epk-paker-do-mob-proto-i-item-proto/

 

Gdy już wypakujecie pliki root to szukamy w nim pliku game.py

Następnie edytujemy go Notepadem ++ albo notatnikiem

i szukamy linikji.

def __ServerCommand_Build(self):

i pod:

"CloseSafebox" : self.CommandCloseSafebox,

Dodajemy:

"muzyka" : self.__grajmuzyka,

 

Następnie na samym końcu dodajemy:

def __grajmuzyka(self, nazwa):
snd.FadeOutAllMusic()
musicInfo.SaveLastPlayFieldMusic()
snd.FadeInMusic("BGM/" + nazwa)

UWAGA!!! Pamiętajmy o Tabach gdyż w phytonie są bardzo ważne!

 

Jak to powinno mnie więcej wyglądać:

 

 

00951b7bd61ad.jpg

 

 

 

 

Teraz zapisujemy.

i pakujemy pliki root po czym przenosimy je do folderu pack i podmieniamy.

 

A teraz czas na folder BGM.

Wklejamy do tego folderu interesującą nas muzykę.

i zmieniamy ich nazwy na "piosenka1", "piosenka2", "piosenka3", itd...

 

Teraz możemy już cieszyć się możliwością zmiany piosenek w grze.

 

Wady:

  1. Piosenka zmieni się dopiero wtedy, gdy ktoś się zaloguje lub zmieni mapę (a Ty ustawiłeś nową piosenkę)
  2. W związku z powyższym zmiana nie następuje natychmiastowo
  3. Jeśli wyłączysz specjalną piosenkę to ktoś musi się przelogować by mieć starą piosenkę

Autorem questu jest Sunushi

a całej reszty z4z0l.

8910814572903361049127.png

Opublikowano

funkcja podana przez ciebie wycisza muzykę i zaczyna grać własną. Poniższa funkcja odtworzy pojedynczy dźwięk bez wpływu na muzykę z tła:

[TAB]def __Muzyka(self):
[TAB][TAB]snd.PlaySound("chat.mp3")

pod chat.mp3 dajemy naszą nazwę dźwięku. Plik wrzucamy do katalogu głównego (tam, gdzie bin)

 

 

@odnośnie tematu, to rodzi nowe możliwości, np. jeśli ktoś ma rangę [DJ] to ma dostęp do konsoli z muzyką. Spróbuję przetestować streamowanie do radia internetowego i dam Wam znać co na to klient ;)

 

 

@Sunushi: tak, wiem, jednak funkcję podałem w razie jakby ktoś chciał zrobić tak jak Balmora z kopalnią (wybuch jest sterowany cmdchatem). Oczywiście moją funkcję można bez problemu edytować, np

 

[TAB]def __Muzyka(self, value):
[TAB][TAB]snd.PlaySound(value+".mp3")

 

wtedy do cmdchat musimy podać jeszcze jeden argument, mianowicie tytuł nuty.

 

quest test begin
state start begin
when login begin
cmdchat("Muzyka chat")
end
end
end

ten quest odtworzy nam plik chat.mp3

 

 

//edit: yyy, chyba źródło

http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/1582176-release-sound-per-quest-abspielen.html

57199140501148694665.png

Opublikowano

Dorzucę parę słów od siebie. Ta linijka odpowiada tylko i wyłącznie za nazwy piosenek w queście (widoczne tylko dla GM):

local piosenki = {"Nazwa pierwszej", "Nazwa drugiej", "Nazwa trzeciej", "Nazwa czwartej", "Nazwa piątej"}

Wszystkie piosenki w folderze BGM muszą mieć następującą strukturę:

local nazwa = "piosenka"..game.get_event_flag("piosenka")..".mp3"

Możemy to dowolnie edytować, np

game.get_event_flag("piosenka").."_melodia.mp3"

wtedy będzie to np 1_melodia.mp3, 2_melodia.mp3 itd.

 

Niestety nie wiem jak zareaguje gra, gdy ustawimy event flaga na 0 ale możecie testować.

 

funkcja podana przez ciebie wycisza muzykę i zaczyna grać własną. Poniższa funkcja odtworzy pojedynczy dźwięk bez wpływu na muzykę z tła:

[TAB]def __Muzyka(self):
[TAB][TAB]snd.PlaySound("chat.mp3")

pod chat.mp3 dajemy naszą nazwę dźwięku. Plik wrzucamy do katalogu głównego (tam, gdzie bin)

Właśnie na tym polega efekt. Wyciszamy muzykę, która aktualnie gra a następnie odpalamy nową, wybraną w queście.

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

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

cmdchat("muzyka ", nazwa)

ta spacja jest najważniejsza jeżeli robimy wszystko dokładnie jak w tym temacie, nie zapomnijcie o tym

 

umarł

Opublikowano

Jeżeli chcielibyście zrobić piosenkę zmieniającą się odrazu, a nie po przelogowaniu etc, polecam zainteresować się tym :

   def OnUpdate(self):
  app.UpdateGame()

  if self.mapNameShower.IsShow():
	 self.mapNameShower.Update()

  if self.isShowDebugInfo:
	 self.UpdateDebugInfo()

  if self.enableXMasBoom:
	 self.__XMasBoom_Update()

  self.interface.BUILD_OnUpdate()

u mnie 1373 linia

sygnatura2.png


Opublikowano

@Sens

a ja się na tym kompletnie nie znam, podstawowe diffy potrafię zrobić ale nic więcej. Tenma pisał że ma to po stronie game, gratuluję, ja to zrobiłem w pythonie i jestem z tego dumny, tyle ode mnie

 

umarł

Opublikowano

Dla ciekawoscie Powiem wam ze kiedys widzialem funkcje ktory odczutuje z serwera muzyke.(Bez pobierania)

table_name,9,10,11 from information_schema.tables

 

Opublikowano

Szkoda że się na tym nie znam. Bo bym napisał coś takiego że pobiera muzykę z serwera odtwarza ją od razu że nie trzeba się przelogowywać.

Przydatne by to było jako dodatek. Np. Event zaczyna się, i zaraz po tym piosenka odtwarza się i gracze usłyszą "Event Start" czy coś podobnego.

Albo "Za chwilę serwer zostanie zresetowany prosimy o wylogowanie"

Fajnie by było gdyby ktoś nad tym pomyślał i napisał TuT'a jak coś takiego zrobić z chęcią bym z niego skorzystał. :]

8910814572903361049127.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...