Modding Gothica > Skrypty

Rozwiązane problemy

(1/2) > >>

dr inż. Fenix:
reaktywacja tematu:

Pomyślałem, że dobrze będzie stworzyć coś w stylu FAQ skryptów.
By nie pisać kilku tematów o tym samym, będę tu zbierać odpowiedzi z topiców z tego działu. Tak więc każdy za nim coś napisze, niech najpierw zajrzy tutaj!

To zaczynamy:

1.Jak powiększyć potwora?

Funkcją:
Mdl_SetModelScale (self, x, y, z) ;
self- instancja zmienianej postaci
x,y,z -długość, wysokość i szerokość. Do każdego argumentu dajemy liczbę zmiennoprzecinkową. np, jeśli damy 0.5 postać będzie dwa razy mniejsza, a gdy 2.0, będzie dwa razy większa.

2.Jak zmienić wygląd postaci?

Funkcją Mdl_SetVisualBody (); Jej argumenty w kolejności to:
self, //instancja danej postaci
"hum_body_Naked0", //model postaci
2, //tekstura postaci
1, //kolor skóry
"Hum_Head_Pony", //model głowy
3, //tekstura głowy
2, //tekstura zębów
-1 //zbroja noszona, jeśli jest -1 to zbroi brak

3.Jak zrobić, żeby NPC (w Gothicu 1) Pojawił się na przykład od drugiego rozdziału? I czy tak się da? Jeśli się nie da, to czy można zrobić, żeby pojawiał się do/po jaimś queście??


Funkcją Wld_InsertNpc ();

OrcElita, //instancja istoty którą przywołujemy
"OW_PATH_ORCENTRANCE" //WayPoint w którym się pojawi

dalej w pliku B_Kapitelwechsel.d odnajdujemy linijkę:
"else if (neues_Kapitel == 2)
{"

Poniżej wpisujemy funkcję przywołującą.
Co do pojawienia się po jakimś zadaniu/dialogu. Znajdujemy odpowiedni dialog postaci i wpisujemy funkcję w części "Condition".

6.12.2007

4. W czasie reparse'owania skryptów pojawia się błąd "Syntax Error".
Jest to błąd składniowy. Oznacza to, że w funkcji użyliśmy nieodpowiedniego argumentu.

Na przykład w funkcji Wld_InsertNpc (); mamy 2 argumenty, jeden typu C_NPC (instancja NPCa), a drugi typu String (ciąg znaków w nawiasie). Błędy pojawią się, jeśli użyjemy innych typów. Na przykład w miejsce instancji NPCa damy instancję przedmiotu (gdyż są to dwa różne typy). Podobnie jest w przypadku argumentu String, tu również nie możemy dać innego typu (np int), gdyż wywoła to błąd.

Kolejnym powodem dla którego wyświetla nam się wyżej wymieniony błąd jest, kolokwialnie mówiąc, "zjedzenie" przecinka. Na przykład:

Wld_InsertNpc (ItAt_Meatbug_01 "OW_PATH_ORCENTRANCE");

wyświetli nam błąd, gdyż komputer będzie próbował, do jednego argumentu przypisać dwa typy (i w dodatku niepasujące do argumentu), ponieważ każdy argument musi być oddzielony "," od innych.



Na razie wiem, że mało tego, ale mam nadzieję, iż w czasie, się zapełni. W razie niejasności, proszę kontaktować się ze mną na PW.

Buła:
27.03.08

5. Jak zrobić żeby NPC nas atakował (jak np. bandyta)

Do tego służy Npctype_ROGUE; w skrypcie NPC:


--- Cytuj ---instance ORG_858_Quentin (Npc_Default)
{
   //-------- primary data --------
   
   name =               "Quentin";
   Npctype =            Npctype_ROGUE;
   guild =               GIL_NONE;    
   level =               12;
   
   voice =               7;
   id =               858;
--- Koniec cytatu ---

Dodatkowo w G1 musimy w pliku B_SetRoguesToHostile.d dopisać linijkę:

--- Kod: ---var C_NPC Bandyta; Bandyta = Hlp_GetNpc(instance bandyty); Npc_SetTempAttitude(Bandyta,ATT_HOSTILE); Npc_SetAttitude(Bandyta,ATT_HOSTILE);
--- Koniec kodu ---

6. Jak zrobić w skrypcie wymianę towarów z NPC (kupowanie i sprzedawanie)

Musimy dopisać    trade = 1;:


--- Cytuj ---instance  Stt_311_Fisk_Trade (C_INFO)
{
   npc         = Stt_311_Fisk;
   nr         = 800;
   condition   = Stt_311_Fisk_Trade_Condition;
   information   = Stt_311_Fisk_Trade_Info;
   permanent   = 1;
   description = "Pokaż mi swoje towary.";
   trade      = 1;
};
--- Koniec cytatu ---

Towary jakie posiada NPC musimy mu wpisać do ekwipunku.


28.03.08

7. Jak zrobić żeby podczas dialogu NPC odwrócił się do nas tyłem?

Musimy użyć funkcji:

--- Cytuj ---AI_TurnAway        (hero, self);
--- Koniec cytatu ---

Jeśli chcemy żeby odwrócił się do innego NPC przodem musimy użyć:

--- Cytuj ---AI_TurnToNpc(self, INSTANCJA_NPC);
--- Koniec cytatu ---

01.04.08

8. Jak zrobić żeby NPC w trakcie dialogu wyciągnął lub schował broń?
Musimy wstawić w dialog funkcje:


--- Cytuj ---AI_DrawWeapon (self);
AI_RemoveWeapon (self);
--- Koniec cytatu ---

18.05.08

9. Czy orkowie mogą używać łuków i kusz?
Orkowie nie mogą używać łuków, ale mogą kusz.

10. Co oznacza błąd Redefined identifier
Ten błąd oznacza, że w skryptach istnieje już taki instance np.


--- Cytuj ---PAR:Redefined identifier: DIA_MELVIN_EXIT(LINE 5)
--- Koniec cytatu ---

29.05.08

10. Jak zrobić żeby NPC był martwy?

Wystarczy dopisać kilka linijek do startup.d. Przykład NPCa o instance FRI_90005_Roger:


--- Cytuj ---Wld_InsertNpc (FRI_90005_Roger,"ROGER");

var C_NPC Roger;
Roger = Hlp_GetNpc(FRI_90005_Roger);
Npc_ChangeAttribute (Roger, ATR_HITPOINTS, -Roger.attribute[ATR_HITPOINTS_MAX]);
--- Koniec cytatu ---

29.06.08

11. Co zrobić by opcja "KONIEC" w dialogu była na końcu?

Wystarczy ustawić jej numer 999:


--- Cytuj ---///////////////////////////////////////////////////////////////////////
// Info EXIT
///////////////////////////////////////////////////////////////////////
INSTANCE DIA_Gerder_EXIT (C_INFO)
{
npc = VLK_999999_Gerder;
nr = 999;
condition = DIA_Gerder_EXIT_Condition;
information = DIA_Gerder_EXIT_Info;
permanent = TRUE;
description = DIALOG_ENDE;
};
--- Koniec cytatu ---

17.07.08

12. Czemu nie działają dodane do moda dialogi?

To częsty problem wśród nowych modderów.
Polecam zastosować się do TEGO tutoriala.
Jeśli jednak nadal nie widać waszych dialogów w modzie usuńcie pliki GOTHIC.DAT, OU.BIN i OU.CSL, po czym skompilować skrypty i dialogi ponownie.
U mnie to zawsze pomaga.

Polecam też poczytać o kompilacji TUTAJ.

23.08.08

13. Jak zrobić nową gildię??

Jak na razie próby tworzenia nowych gildi kończyły się tylko masą błędów. Więc na razie nie da się utworzyć całkiem nowej gildi, ale dobrym sposobem jest użycie tych, do których nie można dołączyć, np. w G1: Guru, Magnaci...
Żeby ich użyć wystarczy zmienić ich nazwę w pliku _Work\Data\Scripts\Content\Story\Text.d

26 listopada 2008

14. Jak podczas dialogu zmienić imię NPC'owi?

Można zastosować:

--- Cytuj ---var C_NPC ZMIENNA_NPC;
ZMIENNA_NPC = Hlp_GetNpc (INSTANCE_NASZEGO_NPC);
ZMIENNA_NPC.name = "Imię";
--- Koniec cytatu ---

majaczek:
15. zdekompilowałem skrypty moda GothicSourcerem i nie chcą się skompilować ponownie, co mam robić?
ODP: GothicSourcerowi  zdarzają się błędy i jednym z njabardziej uciążliwych jest podmienianie dużych liczb na losowe identyfikatory (ale jeden dla jednej liczby). Więc jeśli pojawia ci się błąd w stylu "Unknown Identifier" a nie zmieniałeś skryptów, to wyślij kawałek skryptu autorowi modu - on ci powie jaką liczbą zamienić
UWAGA: zamień identyfikator na liczbę tylko w tych liniach gdzie są błędy, w pozostałych identyfikator jestużyty poprawnie!

16. zdekompilowałem skrypty moda rosyjskiego/greckiego/[w innym języku nie używającym łacińskich liter] i pojawiają się dziwne znaki zamiast liter danego języka w plikach *.d, co robić?
ODP: skrypty gothica jak większość programów pisane są w ascii, więc zdefiniowanych na stałe jest tylko 127 pierwszych znaków, pozostałe zależą od kodowania, aby otworzyć plik w innym kodowaniu niż te którego używa twój komputer zapisz plik jako plik tekstowy i otwórz w internet eksplorerze i wybierz z listy odpowiednie kodowanie (sprawdź kilka które są związane z danym językiem) i violla voila! wyświetlą ci się poprawne litery tego języka, jednak tekst skopiowany z eksplorera w tym formacie nie nadaje się do włożenia spowrotem w plikach *.d, ale możesz sobie dowolnie przetłumaczyć na polski/angielski/niemiecki/hiszpański itp.
PORADA: aby zająć się większymi plikami z rosyjskich modów wystarczy edytor BRED, a takźe pozwala on zapisać poprawnie skrypty rosyjskie

17. wreszcie udało mi się przetłumaczyć moda o którym mowa w punkcie 16, ale nie mogę uzyskać polskich liter w grze! co robić?
ODP: do pliku przetłumaczonego moda (archiwum *.mod) dodaj czcionki wypakowane z polskiej wersji gothica (pliki zawierające "FONT" w nazwie). po tym zabiegu i dodaniu moda do gry polskie znaki zaczną działać

18. zrobiłem moda w którym skompilowałem własne skrypty, jednak nie działają one w grze, co mam robić?
ODP: dodaj skompilowane pliki *.DAT i plik ou.bin do archiwum moda. w tym pomoże ci program GothicVDFS

19. chcę przetłumaczyć moda, ale nie znam się na skryptach... co robić?
ODP: zdekompiluj skrypty Gothic sourcerem i wyeksportuj teksty deadalus translator-em, uzyskasz tabelę tekstów do przetłumaczenia, którą możesz od razu poprawić na twoje tłumaczenie lub wyeksportować do pliku i plik przetłumaczyć. następnie gdy mamy tłumaczenie w tym programie, używamy "apply to SRC"
i uzyskamy skrypty które można skompilować zawierające nasze tłumaczenie, potem wystarczy dodać skompilowane pliki *.dat i plik ou.bin do pliku paczki *.mod programem Gothic VDFS
UWAGA: jeśli tłumaczysz translatorem a nie ręcznie, mogą ci się pozamieniać apostrofy na cudzysłowy, co zepsułoby skrypty po włączeniu tłumaczenia do nich więc powinieneś w odpowiednich miejscach pozamieniać je spowrotem na takie jak w oryginalnym tekście

Goran:
20. Co zrobić, aby NPC szedł za nami?
odp. Trzeba podczas dialogu napisać:
--- Cytuj ---NPC_Exchangeroutine (self , ''FOLLOW'');
--- Koniec cytatu ---
A potem w skrypcie NPC'a należy napisać:

--- Cytuj ---FUNC VOID Rtn_FOLLOW_id npc'a ()
{   
   TA_Follow_Player      (06,00,22,00,"WP");
   TA_Follow_Player      (22,00,06,00,"WP");
};
--- Koniec cytatu ---

21. Jak zmienić typ obrażeń broni?
Wystarczy w skrypcie broni napisać:

--- Cytuj ---damagetype             =    DAM_EDGE;
--- Koniec cytatu ---
I tutaj mamy do wyboru:


--- Cytuj ---CONST INT DAM_INVALID    
CONST INT DAM_BARRIER
CONST INT DAM_BLUNT
CONST INT DAM_EDGE
CONST INT DAM_FIRE    
CONST INT DAM_FLY    
CONST INT DAM_MAGIC    
CONST INT DAM_POINT
--- Koniec cytatu ---
z G1.


22. Co zrobić, aby po dialogu NPC biegł do waypointu?

Trzeba zmienić mu rutynę, a w skrypcie napisać:

--- Cytuj ---FUNC VOID Rtn_RunsToPass_713 ()
{
   TA_RunToWP               (08,00,23,00,"START");
    TA_RunToWP               (23,00,08,00,"START");
};
--- Koniec cytatu ---

gothic1210:
Wiele osób ma problemy z rosnącymi plikami skompilowanych dialogów (OU.bin i ten drugi). Można to łatwo naprawić. Po aktualizacji dialogów w Spacerze (jeszcze przed zapisaniem) należy kilka razy je odświeżyć (Przycisk "odśwież" lub "refesh" obok aktualizacji). Kilka powtórzeń tego zabiegu i pliki OU mają realne wartośći (w g1 jest to około 2,8 i 3MB zależnie od pliku). 

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej