Intro, Outro itp. 5107 14

O temacie

Autor Antitraxx

Zaczęty 11.12.2010 roku

Wyświetleń 5107

Odpowiedzi 14

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
Witam, przeglądałem pliki skryptów i tego nie znalazłem więc się pytam :
- Jaki plik odpowiada z intro, outro itp? Czy starczy tylko zwykła podmiana?
- Czy da się zrobić takie zakończenie, by postać została przez kogoś zabita, a potem pojawiło się outro i koniec gry?

Będę wdzięczny ;)

Magier

Magier

White&Red
posty112
Propsy240
ProfesjaTłumacz
  • White&Red

Magier
White&Red

Intro, Outro itp.
#1 2010-12-11, 18:33(Ostatnia zmiana: 2010-12-11, 18:37)
1. Intro i Outro są w folderze:

C:\Program Files\JoWood\Gothic II\_Work\Data\Video2. Można tak zrobić. Po zabiciu postaci dajesz coś takiego:

PlayVideo ("Outro.bik");
ExitGame();

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
Nie tworzę w G2NK więc edycja ścieżki była raczej zbędna. No a nie ma jakiegoś żadnego pliku który wywołuje intro na samym początku rozgrywki czy jak?

Magier

Magier

White&Red
posty112
Propsy240
ProfesjaTłumacz
  • White&Red

Magier
White&Red

Intro, Outro itp.
#3 2010-12-11, 18:54(Ostatnia zmiana: 2010-12-11, 21:31)
Napisz następnym razem, której części Gothica dotyczy problem. Intro możesz zmienić w plikach menu i w pliku Startup.d, a za outro odpowiada plik DIA_EXTRO_AVI.d.

EDIT:
W pliku Startup.d masz taką linijkę:
PlayVideo ("INTRO.BIK");To właśnie ona odpowiada za wywoływanie intra.

kamiloops

kamiloops

Użytkownicy
posty161
Propsy11
ProfesjaProgramista
  • Użytkownicy

kamiloops

Intro, Outro itp.
#4 2010-12-11, 21:51(Ostatnia zmiana: 2010-12-11, 21:52)
Cytat: Antitraxx link=topic=12299.msg123033#msg123033#msg123033#msg123033 date=1292089244
Nie tworzę w G2NK więc edycja ścieżki była raczej zbędna. No a nie ma jakiegoś żadnego pliku który wywołuje intro na samym początku rozgrywki czy jak?

if (Npc_IsDead(Thorus))
PlayVideo ("Outro.bik");
ExitGame();

Pisałem z pamięci, jak zrobić całość zapewne wiesz : P
 
Nie mam polskich znakow

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
Dzięki chłopcy za pomoc ;)


Magier

Magier

White&Red
posty112
Propsy240
ProfesjaTłumacz
  • White&Red
Antitraxx
Chcesz, żeby gra się kończyła po śmierci naszej postaci czy po śmierci jakiegoś NPCa?

Antitraxx

Antitraxx

Użytkownicy
posty70
Propsy18
  • Użytkownicy
Konkretnie to postaci którą gramy, ale to chyba nie ma większej różnicy no nie?

Magier

Magier

White&Red
posty112
Propsy240
ProfesjaTłumacz
  • White&Red

Magier
White&Red

Intro, Outro itp.
#9 2010-12-12, 13:47(Ostatnia zmiana: 2010-12-12, 13:48)
Jest różnica, bo ważne jest, kogo zabijasz. Więc w tym wypadku skrypt powinien wyglądać mniej więcej tak:

if (koniec == 1) //Czynności będą wykonane, jeśli zmienna "koniec" będzie równa 1.
{
hero.attribute[ATR_HITPOINTS] =0; //Zabijamy naszego bohatera.
PlayVideo ("Outro.bik"); //Uruchamiamy outro.
ExitGame(); //Wyłączamy grę.
};
Zmienną "koniec" będziesz musiał wcześniej zainicjować. Gdy będziesz chciał rozpocząć proces wyłączania gry, nadaj zmiennej wartość 1.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Intro, Outro itp.
#10 2010-12-12, 14:14(Ostatnia zmiana: 2010-12-12, 14:18)
Też źle. Oto jedyna dobra metoda, możesz sobie wszystkie przetestować.

W pliku _Work\Data\Scripts\Content\AI\ZS_Human\ZS_Dead.d w funkcji ZS_Dead dopisujesz
if (self==hero) { PlayVideo ("Outro.bik"); ExitGame(); };Jako że nie pamiętam na 100% czy można tak sobie porównywać bezpośrednio zmienne c_npc, gdyby nie działało spróbuj
if (self.id==hero.id) { PlayVideo ("Outro.bik"); ExitGame(); };
Aha, to w każdym razie wywołuje outro po śmierci bohatera. Jeśli chcesz żeby został zabity bez względu na to jak by nie walczył, i musiał go zabić konkretny npc to napisz, trzeba wtedy dodatkowy skrypt (mam tu na myśli coś takiego jak w CZ: Prolog).

Magier

Magier

White&Red
posty112
Propsy240
ProfesjaTłumacz
  • White&Red
Cytat: Avallach link=topic=12299.msg123166#msg123166#msg123166#msg123166 date=1292159653
Też źle.
Dlaczego jest źle? Przed chwilą sprawdzałem u mnie skrypt i wszystko działało.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Twój warunek nie jest w żadnej sytuacji sprawdzany, chyba że o tym nie napisałeś. Gracz musi w jakiś sposób załączyć funkcję z nim, przy czym zdecydowanie najlepszą metodą jest właśnie zs_dead o którym na razie tylko ja wspomniałem. W ostateczności, chociaż to zdecydowanie na około, można by użyć reakcji na trafienie bronią i sprawdzać dodatkowo we wszystkich jej funkcjach czy było śmiertelne a ofiarą jest bohater.

Magier

Magier

White&Red
posty112
Propsy240
ProfesjaTłumacz
  • White&Red
Rzeczywiście mój warunek musi być zawarty w jakieś funkcji, jednak myślałem, że Antitraxxowi chodziło o zabicie naszego bohatera po dialogu, w którym np. jakaś postać mówi naszemu bohaterowi, że go zabije, po czym on umiera, a w tym wypadku warunek byłby sprawdzany, bo znajdowałby się w funkcji dialogu. Tym samym kod staje się uniwersalny, bo wtedy nie trzeba sprawdzać, przez jaką osobę nasz bohater został zabity, iloma ciosami został uderzony i czy w ogóle został zabity podczas walki, wystarczyłoby tylko napisać odpowiedni dialog i dodać do niego mój kod. Jednak wszystko zależy od tego, w jaki sposób ma być zabita postać. Dlatego też mam prośbę do Antitraxxa:
Żebyśmy mogli Ci lepiej pomóc, napisz dokładnie, w jakich okolicznościach i w jaki sposób nasz bohater ma zostać zabity, bo może być on zabity po walce, może zginąć od jednego ciosu przeciwnika albo umrzeć właśnie po dialogu.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Intro, Outro itp.
#14 2010-12-12, 20:39(Ostatnia zmiana: 2010-12-12, 20:42)
Jeśli chcesz aby zabić musiała konkretna osoba, użyj:
if (self==hero)&&(other==instance_mordercy) { PlayVideo ("Outro.bik"); ExitGame(); };Jeśli chcesz żeby zabójstwo było 100% skuteczne, dodaj np w dialogu przed walką:
var c_item bron_mordercy; bron_mordercy = Npc_GetEquippedMeleeWeapon(instance_mordercy);
bron_mordercy.damageTotal = 9999;
bron_mordercy.damagetype = DAM_POINT;
instance_mordercy.flags = 2;
hero.flags = 0;
hero.attribute[0] = 1;
hero.attribute[1] = 1;
hero.protection[PROT_POINT] = - hero.protection[PROT_POINT];


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry