Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - StarFighter

Strony: [1] 2 3 4
1
Skrypty / Stary problem w nowym przebraniu
« dnia: 2010-08-02, 14:09 »
Jest też inny sposób: tam, gdzie masz to asc, wyszukujesz w gothicu takie (jak nie masz, wypakowujesz gothic vdfs), kopiujesz to .asc, otwierasz notatnikiem, podmieniasz nazwę tekstury, zapisujesz i w visual change dajesz tą kopię asc.
Metodą powyżej możesz przekopiować tylko pancerze z Gothic2NK i G1 i odwrotnie. A jak masz własną teksturę to robisz tak jak napisałem.
Też miałem problemy z tym visual change. Nie załapałem, że ten asc trzeba otworzyć notatnikiem i tam dopiero dodać teksturę.
edit: ale do tego sposobu musi mieć oba gothici oraz vdfs

2
Skrypty / Problemy postaci z zagadywaniem
« dnia: 2010-08-02, 09:23 »
Mam taki bardzo dziwny problem.
Robię skrypt dialogu - postać ma sama zagadywać (i warunek dla tego żaden czyli return 1). I postać pięknie zagaduje. Tyle, że po jakimś czasie, gdy wrzucam inne dialogi innych npc ta postać nie chce już zagadywać. Jak sami podejdziemy i na nią klikniemy to jasne, zaczyna mówić swoją kwestię: ale nigdy sama z siebie. Zdarzyło mi się to już z drugim npc. (pierwszy nie zagadywał w trakcie używania kowadła więc pomyślałem, że to dlatego.)
Co robić? Ze skryptem jest wszystko w porządku.  Błąd? A może dodałem za dużo dialogów? (rzeczywiście nieźle nawrzucałem, ale bez przesady). Są jakieś limity?
Co mam zrobić?

3
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-08-01, 21:53 »
Dzięki. :)
AI_Wait odpada, ale jeśli po fullstop można biegać, bić się itp to jest to czego szukałem.
Jeśli chodzi o regenerację: no faktycznie napisałem dosyć chaotycznie i można nie zrozumieć, co chciałem zrobić..
Miałem na myśli taką regenerację u innych npc, która jest w Gothic 2 NK. Uniemożliwia ona na przykład atakowanie silnego npc z łuku, uciekanie, powrót i tak w kółko: wystarczy wyjść poza pewien zasięg i już npc jest odregenerowany i z cheaterskiego nabijania doświadczenia nici. Tak samo z pobitymi npc.
Inny mój problem: jak zmienić czas np w dialogu, albo w b_. To, co na kodach robi się set time xx,xx
I jeszcze kilka:
-postać wroga można bić i dawać się pobić a po jakimś czasie wróg sam padnie. Nie dałoby się zrobić tak, aby npc po pokonaniu nas też się regenerował? Gdzie szukać plików, które za to odpowiadają? Ja bym spróbował w skrypcie zabieraniu bryłek rudy, ale nie wiem za bardzo gdzie szukać.
a, jeszcze jedno! Da się jakoś wyłączyć cheaty w modzie?

4
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-08-01, 18:13 »
Dzięki za odpowiedź.  :)  
A w Gothicu 2 można było porozmawiać z owcą.. Pytanie jak oni to zrobili. Chyba dali npctype friend? Bo przy orkach takie coś działa, ale ma pewien istotny błąd: taki ork nie chce odpowiadać na ciosy, a sam broni bohatera gdy ktoś go zaatakuje. (to ciekawe, bo Diego nas nie broni na przykład: on nie jest orkiem - nie wiem co to miałoby mieć do rzeczy - ale też ma friend)
Nazbierało się nowych pytań:
-jak można zrobić, by postać (chodzi o naszego dzielnego beziego) miała zablokowaną możliwość otwierania własnego ekwipunku (na jakiś czas albo do odblokowania)?
Wiem, że takie coś jest możliwe. Czar kontrola. Przejmujemy sterowanie nad npc, ale nie nad jego itemami. Później jak czar się skończy i nawet kodami wejdziemy w tego npc to ekwipunek jest zablokowany.

oto skrypt czaru z folderu magic
func int Spell_Logic_Control(var int manaInvested)
{
PrintDebugNpc (PD_MAGIC, "Spell_Logic_Control");

if (!Npc_IsInState(other, ZS_Controlled))
{
PrintDebugNpc (PD_MAGIC, "npc is valid...");

PrintDebugNpc (PD_MAGIC, "manainvested 0...starting ZS_PsiDefense on npc");
if (!Npc_IsInState(other, ZS_PsiDefense))
{
B_FullStop (other);
AI_StartState (other, ZS_PsiDefense,1,"" );
};
 
  if (other.flags != NPC_FLAG_IMMORTAL)
  {
  PrintDebugNpc (PD_MAGIC, "npc is not immortal, sub mana");

// überschreiten die investierten manapunkte level*4, so ist sein wille gebrochen
  if ( manaInvested >= other.level*4 )
{
PrintDebugNpc(PD_MAGIC, "controlled success, starting states");

AI_StartState ( self ,ZS_PC_CONTROLLING ,0,"" );
Npc_SetActiveSpellInfo ( self,1 ); // übernommen

return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
  }
  else
  {
  PrintDebugNpc (PD_MAGIC, "npc is immortal");
  return SPL_NEXTLEVEL;
  };
 
  return SPL_NEXTLEVEL;
}
else
{
PrintDebugNpc (PD_MAGIC, "npc is not valid...");
// other ist kein npc
return SPL_SENDSTOP;
};

return SPL_DONTINVEST;
};


a oto dwa ZSy (controlled i controlling)

// original spieler
func void ZS_PC_Controlling()
{
PrintDebugNpc (PD_ZS_FRAME, "ZS_PC_Controlling");

Npc_PercEnable  ( self, PERC_ASSESSMAGIC , B_AssessMagic );
Npc_PercEnable  ( self, PERC_ASSESSDAMAGE , ZS_ReactToDamage );

Npc_PlayAni (self, "T_CONSHOOT_2_CONACTIVE" );
};


func void ZS_PC_Controlling_Loop()
{
PrintDebugNpc (PD_ZS_LOOP, "ZS_PC_Controlling_Loop" );
// Npc_PlayAni (self, "S_CONACTIVE" );
};


func void ZS_PC_Controlling_End()
{
PrintDebugNpc( PD_ZS_FRAME, "ZS_PC_Controlling_End" );

Npc_ClearAIQueue ( self ); // alle AI Befehle entfernen
AI_StandUp ( self ); // normale Ani wieder abspielen
AI_ContinueRoutine ( self );
};


// übernommener nsc, den man dann steuert
// zustand wird von programmlogik beendet
// Befehle, die hier stehen werden ignoriert, da der Spieler entweder nur Tastatur- oder Zustandsgesteuert sein kann
// andere NSCs können aber den Zustand des Spielers abfragen

func void ZS_Controlled()
{
PrintDebugNpc (PD_ZS_FRAME, "ZS_Controlled");
};


func void ZS_Controlled_Loop()
{
PrintDebugNpc (PD_ZS_LOOP, "ZS_Controlled_Loop" );
};


func void ZS_Controlled_End()
{
PrintDebugNpc (PD_ZS_FRAME, "ZS_Controlled_End" );

//-------- zu Boden fallen ! --------
B_FullStop (self);
AI_PlayAni (self, "T_PSI_VICTIM");
AI_Wait (self, 3.5);

//-------- fallgelassene Waffe aufheben ! --------
B_RegainDroppedWeapon (self); // Check ob Waffe/Rüstung herumliegt ist leider vom Stand vor der Ani T_PSI_VICTIM und könnte veraltet sein!!!
B_RegainDroppedArmor (self); // dito

//-------- Gegner behandeln ! --------
Npc_SetTarget (self, hero);
Npc_GetTarget (self);
AI_StartState (self, ZS_AssessEnemy, 1, "");
};
Jest tu coś o blokadzie ekwipunku? Powinno być, a jednak ja nic nie widzę...
a i jeszcze inny problem
B_RegainDroppedWeapon   (self);   ??? To jest podnoszenie broni czy jak? Nie mam tego w skryptach, mimo iż mam gmdk.
A B_RegainDroppedArmor   ?
-jak sprawić, by npc w trakcie dialogu wyjął łuk/kuszę/runę? (trochę głupio by wyglądało, gdyby mag groził bohaterowi swoim małym sztyletem...)
-jest jakaś możliwość usunięcia tego, że postać, która nas okradnie ma dwa razy więcej rudy niż nam zabrała?
-jest jakaś możliwość stworzenia npc regeneracji, gdy zaczyna się nowy dzień, lub wyjdziemy poza zasięg widzenia? (tak jak w Gothic 2)

5
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-07-31, 16:49 »
Cholera, właśnie to zauważyłem... I niestety nie zdążyłem wyedytować posta....
Hmm... ja próbowałem dawać ich w startup a rutynę dawałem w nieistniejącym waypoincie "nowhere"  no i zmieniałem później w dialogu rutynę na normalną, ale zmiana rutyny dla postaci w innym zenie oczywiście nie poskutkowała...
Ale zastanawia mnie jedna rzecz. Jakby tak dać nowe B_ do startupa? (takie B_ jest w świątyni orków - odpowiada za wpis w dzienniku tuż po wejściu do świątyni). I w tym B_ dam if (warunek) insertuj tego, else if (warunek) insertuj tamtego itp. Tylko czy ta funkcja tak dodana będzie działać zawsze po wejściu, czy jednorazowo? Bo jak zawsze to daję zmienną jako jeden z warunków i ustawiam ją na true po zainsertowaniu i po sprawie. A jak jednorazowo, to głupio: nie spełnię warunku, wejdę, a później już nie przywoła mi.
Muszę to wypróbować.
A inne pytanko: niby nie można tworzyć nowych gildii. A gildie potworów? Można podopisywać, nie będzie błędów?
Dałoby się tak przemycić nowe gildie? Tylko jak z nią rozmawiać? (nie atakowanie jest chyba proste)
Można dać w startupie na różnych zenach różne nastawienia dla gildii?
PS. Jakbym chciał dołączyć nowy zen (tzn dodać do niego npc), o nazwie, np. nowyzen.zen to wystarczy, że w startup daję

FUNC VOID STARTUP_NOWYZEN ()
{
[lista npc itd]
};
FUNC VOID INIT_NOWYZEN ()
{
[cała reszta , B itp]
};
??
Nie próbowałem tego jeszcze bo zeny mam jeszcze niegotowe.

6
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-07-30, 21:27 »
Wielkie dzięki!
Spacer nie wykrywa błędów. Na oko też wszystko wygląda dobrze, chociaż jeszcze nie sprawdzałem (muszę pododawać potwory i bandytów żeby wypróbować jak działa)
A nie wiesz, jak zainsertować lub zmienić rutynę npc podczas dialogu, kiedy npc jest w innym zenie niż postać, z którą rozmawiamy?
Bo mi niestety nic nie wychodzi :/

Przeglądając ZS dead zwróciłem uwagę na pewien interesujący fragment
if C_NpcIsMonster(self)
{
B_GiveDeathInv (); // für Monster
};

Wygląda to jak śmierć bez dobijania. Da się to jakoś podczepić pod zwykłą postać? (bandyta na przykład, albo ork, z którym można zamienić kilka słów przez zabiciem go)

7
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-07-30, 14:59 »
Jak próbuję to dać (albo w klamrze, albo pod) są błędy...
Aż tak zaawansowany nie jestem, w edytowanie tych ZSów jeszcze się nie bawiłem.
Ale w skryptach wygrzebałem coś takiego

func void B_CheckDeadMissionNPCs ()
//Diese Funktion checkt im ZS_Dead, ob eine Mission durch den Tot eines NSCs obsolet geworden ist.
{
if (Hlp_GetInstanceID(Org_844_Lefty) ==  Hlp_GetInstanceID(self))
{
if (Lefty_Mission == LOG_RUNNING)
{
B_LogEntry (CH1_CarryWater, "Po śmierci Lewusa problem wody chyba sam się rozwiązał. Nigdy nie lubiłem tego człowieka.");
Log_SetTopicStatus (CH1_CarryWater, LOG_SUCCESS);
LeftyDead = TRUE;
};
};

Udało mi się przerabiać to tak, jak chciałem (dodać do tego własne postacie i własne skutki, warunki.)
Nie wiem tylko, czy to zadziała, jak postać zostanie zabita przez kogoś innego?
Czasami by się przydało, innym razem nie.

8
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-07-29, 21:00 »
Nie o to chodzi, że nie ma dialogów, tylko że jak chcę zagadać to słyszę "nie możesz ze mną rozmawiać"...
Cytuj
A skompilowałeś je? Bo jak je dodałęś, to główna wada jest zawsze w tym, że ich nie widać, to brak kompilowania.

No jasne, że tak. Najpierw napraw skrypty, potem aktualizuję i zapisuję (a wcześniej usuwam stare pliki z dialogami, bo jak się nadpisują to czasem są problemy)! To nie jest mój pierwszy dialog! W swoim tworzonym modzie dodałem już kilkadziesiąt npc i każdemu dałem przynajmniej koniec, nie mam z tym problemu!
Problem mam, bo robiąc moda, mając naprawdę niezłe pomysły zablokowałem się przy tworzeniu i nie wiem, jak z tego wybrnąć.
A później ktoś kto wie wpadnie na taki sam pomysł i zrobi takiego moda  :[  


Mam jeszcze nowy problem, nie chce mi się zainsertować npc w trakcie dialogu w innym zenie. Próbowalem wld_insertnpc, próbowałem też insertować przez B_...... i dać to B w dialogu. Ale mam kilka pomysłów, które muszę jeszcze wypróbować. Oraz jeden plan awaryjny, ale wtedy to już nie będzie to samo...

9
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-07-28, 22:14 »
Dodałem dialogi i nic.
To jak? Pomoże ktoś? (także z innymi wymienionymi problemami)?
I jeszcze jedno pytanie: da się jakoś odróżnić czy npc został zabity przez gracza? Chodzi mi o to, że np. jeśli zabijemy npc to ktoś nam będzie gratulował, itp. ale jeśli sam zginie, np. w walce z jakimś potworem - to już nie.

10
MDS i animacje / Problem z kobietą
« dnia: 2010-07-27, 19:47 »
Cytat: ArcymagCienia link=topic=10916.msg104765#msg104765#msg104765#msg104765 date=1280177126

podpiąłem kobietę pod humans.mds i wszystko działa... oprócz animacji
jak to zrobiłeś??
normalnie podmieniłeś skryptami? I nie jest powykręcana, nie unosi się w powietrzu itp?

11
MDS i animacje / Problem z kobietą
« dnia: 2010-07-26, 22:35 »
Jak umiesz w blenderze robić, to naprawdę niezły jesteś. Ja sobie dałem spokój z tym programem po kilku godzinach przekleństw i tłuczenia pięścią w klawiaturę. Nic mi nie wychodziło (albo inaczej: wychodziło mi gówno)

Kiedyś założyłem orkowi pancerz, wyglądał koszmarnie (coś jak velaya przebrana w humans.mds) niezłe straszydło.
Ale może zrobisz zbroję, która będzie działać,  kto wie? To by było coś, choć chyba prościej jest zmienić teksturę orka?

Jeśli chodzi o strzelanie to naprawdę nieźle to wygląda. Fajne by były dualne kusze dla takiego orka, hehe. Może za 20 lat doczekamy się tutoriala :lol:

Cytuj
w g1 babki nie mają chyba animek wymienionych czynności, ale w g2 powinny być - skopiuj.
skopiowanie to dopiero połowa drogi, trzeba jeszcze wkleić!  :lol:

12
MDS i animacje / Problem z kobietą
« dnia: 2010-07-26, 21:55 »
Cytuj
A da się jakoś, zachowując ciało kobiety z G1(bardziej rozbudowane piersi :lol:  ) podpiąć pod Humans.MDS?
Na przykład zapisać ciało kobiety w 3ds, wczytać ciało z humans.mds, usunąć ciało zachowując jednak kości i jakoś je podłączyć z ciałem kobiety? Możliwe jest takie coś?
Wszystko jest możliwe.
To już pytanie do ekspertów, ja się do nich nie zaliczam. Jestem bardziej niż początkujący.
Pewnie (tak jak często jest w moim przypadku) będziesz musiał sam wszystko rozgryźć, albo dać sobie spokój. Na forum z problemami eksperci odpowiadają od przypadku.
Jak znam życie odeślą Cię do tutoriali, z których nic nie będziesz rozumiał, albo będą wyskakiwać Ci same błędy.
Ech, ja mam ten sam problem z orkami: co prawda można im dać gil none ale wtedy nie da się ich dobić bo w głupim mdsie orka tego nie ma. (chciałem zrobić orków najemników z którymi da się gadać i takich, którzy nie atakują gracza)

Właśnie podmieniłem mdsa velayi na humans i dalem jej applyoverlaya z kopacza, żeby sprawdzić czy Ci kitu nie załadowałem (dawno się bawiłem kobietami) - wychodzi coś, co po podrasowaniu mogłoby być jakimś latającym potworem  :lol:

Aha, jak Ci się postać zawiesza przy podnoszeniu itemu na przykład (to tak na marginesie) to daj F8 i po krzyku (zakładam, że używasz marvina do sprawdzania moda).

13
MDS i animacje / Problem z kobietą
« dnia: 2010-07-26, 21:27 »
Z tego co wiem kobiety w Gothicu I nie umieją i nigdy nie będą umiały robić wymienionych przez ciebie czynności. Wiem, bo sam próbowałem kiedyś (nawet ustawiałem im na setvisual zamias babe.mds humans.mds i wychodził mi syf). Co więcej, ich się nawet dobić nie da (jak życie zejdzie do zera stają jak zamurowane, dlatego są nieśmiertelne)
Tu by musiał Ci pomóc jakiś ekspert.
Ja Ci mogę co najwyżej doradzić, żebyś zobaczył jak mają kobiety w GothicII iewentualnie wypakował vdfsem potrzebne pliki i wrzucił do odpowiednich katalogów. Kobiety w GII robią wszystko zwyczajnie więc postaraj się zrobić analogicznie w GI
Zobacz sobie na kod kobiety GI ona nie ma nawet mdsa odpowiadającego za styl chodzenia

Mdl_SetVisual (self,"BABE.MDS");
// Body-Mesh Body-Tex Skin-Color Head-MMS Head-Tex Teeth-Tex ARMOR
Mdl_SetVisualBody (self, " BAB_ARMOR", 0, 1, "Bab_Head_Hair1", 0, DEFAULT, -1);

a oto skrypt "normalnej" postaci.

// animations
Mdl_SetVisual (self,"HUMANS.MDS");
Mdl_ApplyOverlayMds (self,"Humans_Tired.mds");
// body mesh     ,bdytex,skin,head mesh     ,headtex,teethtex,ruestung
Mdl_SetVisualBody (self,"hum_body_Naked0",2,1,"Hum_Head_Pony", 3,  2,-1);

PS. Gość ma poważny problem (sam się kiedyś nadenerwowałem z tego samego powodu) a ci sobie jaja robią  :[  Gratulacje panowie

PS2.
A oto kawałek skryptu z G2 z postaci BAU_910_MARIA

B_SetNpcVisual       (self, FEMALE, "Hum_Head_Babe8", FaceBabe_N_MidBauBlonde, BodyTexBabe_N, ITAR_BauBabe_M);      
   Mdl_SetModelFatness   (self, 0);
   Mdl_ApplyOverlayMds   (self, "Humans_Babe.mds");

tu jak widzisz mają już applyoverlaymds'y

14
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-07-26, 10:50 »
1. Tam jest tylko o tym jak zrobić, by npc nas atakował. Mi chodziło o to, by npc ginął tak jak np kretoszczur czy inny pełzacz (albo ork), ale żeby był normalnym npc, nie atakował sam z siebie.
2.Zmieniłem gildię i dalej to samo, a dialogów nie dodałem żadnych, ale wtedy normalnie pokazałoby się okno dialogów gdzie jest ENDE kończące dialog (jak dodamy koniec albo jakiś dialog to znika) - a w tym przypadku nie.
3.Znalazłem. Dzięki.

15
Skrypty / Kilka problemów ze skryptami
« dnia: 2010-07-26, 08:38 »
-Jak zrobić, by postać zginęła od razu, bez dobijania (tak jak ork, czy jakiś potwór albo bandyci w Gothic 2)? Tylko nie chcę jej ustawiać gildii ork wojownik albo jakiś potwór (nie wiem czy to coś da), ani nic z tych rzeczy, chciałbym, żeby to była normalna postać, tyle tylko, że zginie bez dobijania.
-I drugie pytanie: co muszę zrobić by np. z Velayą lub innymi dziewczynami z zamku Gomeza dało się rozmawiać?
-Jaką rutynę mam dać npc by poruszał się za innym npc? Mam z tym problem.
-Nie ma żadnych tutoriali o edycji czarów?
-Gdzie są pliki odpowiadające za respawn potworów?


Na razie to tyle, chociaż mam jeszcze dużo pytań.
Bardzo proszę o pomoc. Przez tego typu błędy nie mogę sobie spokojnie robić moda.

16
Skrypty / Edycja czarów
« dnia: 2010-07-24, 19:59 »
Nie widziałem jeszcze żadnego takiego tutoriala.
A edycja czarów jest mi koniecznie potrzebna do mojego moda.
O ile chyba w przypadku prostego zwoju teleportacji dałbym sobie radę (myślę) bo wystarczy skopiować i podmienić nazwę waypointa to już inne rzeczy mnie przerastają..
Na przykład chciałbym przedłużyć czas trwania zaklęcia kontrola.

Instance przedmiotu:

INSTANCE ItArScrollControl (C_Item)
{
name = NAME_Spruchrolle;

mainflag = ITEM_KAT_RUNE;
flags = ITEM_MULTI;

value = 90;

visual = "ItAr_Scroll_08.3DS";
material = MAT_STONE;

spell = SPL_CONTROL;
cond_atr[2]   = ATR_MANA_MAX;
cond_value[2]   = 30;

description = "Kontrola";
//TEXT [0] = NAME_Mag_Circle; COUNT [0] = mag_circle;
//TEXT [1] = NAME_Manakosten; COUNT [1] = ;
//TEXT [2] = ""; COUNT [2] = ;
//TEXT [3] = ""; COUNT [3] = ;
//TEXT [4] = ""; COUNT [4] = ;
TEXT [5] = NAME_Value; COUNT [5] = value;
};

Spodziewałem się, że tutaj wszystko będzie, a tu taka niemiła niespodzianka.

W folderze MAGIC - spell controll

//-------- Spell Commands --------
// SPL_DONTINVEST = 0; // Es können keine weiteren Manapunkte investiert werden. Erst durch CTRL loslassen geht der Spell ab
// SPL_RECEIVEINVEST = 1; // Wirkung durchgeführt, es können weitere Invest kommen, zB.bei Heal nach jedem Pöppel
// SPL_SENDCAST = 2; // Starte den Zauber-Effekt (wie CTRL loslassen), automatischer Abbruch
// SPL_SENDSTOP = 3; // Beende Zauber ohne Effekt
// SPL_NEXTLEVEL = 4; // setze den Spruch auf den nächsten Level

func int Spell_Logic_Control(var int manaInvested)
{
PrintDebugNpc (PD_MAGIC, "Spell_Logic_Control");

if (!Npc_IsInState(other, ZS_Controlled))
{
PrintDebugNpc (PD_MAGIC, "npc is valid...");

PrintDebugNpc (PD_MAGIC, "manainvested 0...starting ZS_PsiDefense on npc");
if (!Npc_IsInState(other, ZS_PsiDefense))
{
B_FullStop (other);
AI_StartState (other, ZS_PsiDefense,1,"" );
};
 
  if (other.flags != NPC_FLAG_IMMORTAL)
  {
  PrintDebugNpc (PD_MAGIC, "npc is not immortal, sub mana");

// überschreiten die investierten manapunkte level*4, so ist sein wille gebrochen
  if ( manaInvested >= other.level*4 )
{
PrintDebugNpc(PD_MAGIC, "controlled success, starting states");

AI_StartState ( self ,ZS_PC_CONTROLLING ,0,"" );
Npc_SetActiveSpellInfo ( self,1 ); // übernommen

return SPL_SENDCAST;
};
return SPL_NEXTLEVEL;
  }
  else
  {
  PrintDebugNpc (PD_MAGIC, "npc is immortal");
  return SPL_NEXTLEVEL;
  };
 
  return SPL_NEXTLEVEL;
}
else
{
PrintDebugNpc (PD_MAGIC, "npc is not valid...");
// other ist kein npc
return SPL_SENDSTOP;
};

return SPL_DONTINVEST;
};

Mógłby ktoś wytłumaczyć mi, co oznaczają poniższe komendy??
//-------- Spell Commands --------
// SPL_DONTINVEST       =    0;      // Es können keine weiteren Manapunkte investiert werden. Erst durch CTRL loslassen geht der Spell ab
// SPL_RECEIVEINVEST   =    1;      // Wirkung durchgeführt, es können weitere Invest kommen, zB.bei Heal nach jedem Pöppel
// SPL_SENDCAST         =    2;      // Starte den Zauber-Effekt (wie CTRL loslassen), automatischer Abbruch
// SPL_SENDSTOP         =    3;      // Beende Zauber ohne Effekt
// SPL_NEXTLEVEL      =   4;      // setze den Spruch auf den nächsten Level


Gdzie tu można zmienić czas trwania czaru, określić ile many potrzeba, aby przejąć kontrolę nad postacią itp?

A może powinienem wyedytować ZSy? (zs controlled lub zs pc controllin?)
A może jeszcze coś?

PS.Właśnie się dogrzebałem do plików spells process mana i spells process mana relased teraz już nic z tego nie rozumiem.

Będę bardzo wdzięczny za pomoc. A jeszcze bardziej - za link do tutoriala. Niestety przeszukałem całe forum tutoriale - skrypty i nic nie znalazłem na temat tworzenia/edycji czarów. :|

17
Pytania i problemy / Tekstury pancerzy - problem
« dnia: 2010-07-21, 20:42 »
Dzięki za odzew.
Dałem radę, musiałem tylko otworzyć te pliki .asc notatnikiem i tam pozmieniać nazwy tekstur .tga
A jeśli chodzi o -c.tex to gra mi to sama konwertuje, wystarczy że mam tga wrzucone do asc i spróbuję po raz pierwszy założyć nową zbroję - i już w compiled pojawia się plik c.tex o takiej nazwie jak jego .tga.
To ja mam jeszcze dwa pytania:
-skąd poza WoGiem mogę brać jakieś fajne tekstury pancerzy (i nie tylko) do Gothica.
-Te tekstury z WoG mogę dowolnie wykorzystywać w modzie, jeśli w creditsach dam adres ich stronki?

18
Pytania i problemy / Tekstury pancerzy - problem
« dnia: 2010-07-20, 17:24 »
Mam pewien problem - a raczej kilka pytań.
1. Gdy ściągnąłem GMDK nie było tam folderu textures. Wrzuciłem tam folder textures z G2MDK (na wszelki wypadek, bo używam tekstur pancerzy ale o tym za chwilę). Z tego  co wiem tekstury z gothic I powinny być w pliku textures.vdf czyli powinienem je rozpakować gothic vdfs, tak? A później jak chcę coś zmienić powinienem zmienić nazwę pliku na textures.vdf.disabled? (przy worlds.vdf musiałem tak zrobić, nie wiem do końca czemu)
2. Jakiś czas temu przerzucałem zbroje z G2NK do G1. Musiałem przekopiować pliki asc oraz 3ds (skopiowałem wtedy też tekstury, chociaż nie wiedziałem czy trzeba)
a oto skrypt byle jakiej zbroi i moje pytanie
INSTANCE VLK_ARMOR_M(C_Item)
{
name = "Spodnie Kopacza";

mainflag = ITEM_KAT_ARMOR;
flags = 0;

protection [PROT_EDGE] = 15;
protection [PROT_BLUNT] = 15;
protection [PROT_POINT] =   0;
protection [PROT_FIRE] = 5;
protection [PROT_MAGIC] = 0;

value = VALUE_VLK_ARMOR_M;

wear = WEAR_TORSO;

visual = "vlkm.3ds";
visual_change = "Hum_VLKM_ARMOR.asc";
visual_skin = 0;
material = MAT_LEATHER;

3DS to jest wygląd zbroi w ekwipunku i na ziemi, a asc na postaci, dobrze rozumiem?
3. Jak np wchodzę na WoG tam jest dużo tekstur do ściągnięcia, ale w formacie .tga Do czego to jest przydatne? Przecież mi są potrzebne teksury .asc dobrze rozumiem? Bo nie wiem, jak patrzę na skrypt jakiejkolwiek zbroi, widać tam .3ds, .asc, ale nigdzie nie ma .tga  :blink:  
Czym się rózni .tga od .asc oraz .tex i dlaczego te pliki tam są, czy są konieczne?
Mając taką teksturę .tga co zrobić, żeby ją zobaczyć w grze na jakiejś zbroi?
4. W skryptach postaci
// animations
Mdl_SetVisual (self,"HUMANS.MDS");
Mdl_ApplyOverlayMds (self,"Humans_Arrogance.mds");
// body mesh     ,bdytex,skin,head mesh     ,headtex,teethtex,ruestung
Mdl_SetVisualBody (self,"Hum_Body_CookSmith",1,1,"Hum_Head_FatBald",91 ,  0,-1);
   
SetVisual czyli .mds (cokolwiek to oznacza) z wyglądem postaci, applyoverlaymds to następny mds, definiujący styl chodzenia.
A setvisualbody? Czemu tam nie ma żadnego pliku, żadnego rozszerzenia itp.?? Tylko jakieś nazwy i cyfry? Jak się w tym połapać?
Jeśli chcę zobaczyć w G1 twarz z G2 to wystarczy, że skopiowałem folder textures z g2mdk oraz skrypt postaci odpowiadający za wygląd?

19
Pytania i problemy / Wstawianie modelu do innego modelu
« dnia: 2010-07-20, 14:02 »
Mam problem, który dotyczy gothica.
Ściągnąłem sobie fajny model zamku. Oglądałem w spacerze (load mesh albo otwórz mesh) - naprawdę dobry. Niestety nie da się go wstawić do zena jako vob, pewnie dlatego że jest za duży (tak samo jak statek paladynów i wiele innych rzeczy) Poza tym jeśli będzie to vob to woda będzie przeciekać.
Chciałbym go wstawić do pliku oldcamp.3ds i później skompilować worlda (czyli wstawić nie tracąc vobów, wcześniej tak robiłem z teksturowaniem w spacerze i mi wychodziło).
Jeśli chodzi o grafikę 3d nie umiem NIC. Mam blendera. Czytałem/oglądałem niektóre tutoriale, także te z tego forum jednak raz, że dotyczą one nie tego, co mnie interesuje, a dwa, że wszystko jest koszmarnie trudne i czasochłonne.
Jak wstawić w blenderze taki obiekt?
Pierwsza rzecz to załadowanie pliku oldcamp.3ds: daję import, 3ds, wybieram plik i pojawia mi się takie okno gdzie jest
-size constant 10.00 (można zmieniać)
-Image search (można zaznaczyć lub odznaczyć)
-transform fix (jw)

Po załadowaniu świat jest naprawdę niewielkich rozmiarów, to będzie określenie nader łagodne. Oglądając go w 3-Material po jakimś czasie nie chce się przybliżać. Nie potrafię też poruszać się po tym świecie (tak jak w spacerze służyły do tego strzałki oraz y i a)
Jak miałem ten głupi sześcian to potrafiłem go przesuwać, obracać itp. Jak mam świat, nie potrafię go przesunąć, tylko przesuwać jakieś dachy, itp. co oczywiście psuje model.

Później wczytanie zamku, jest za duży (większy nawet niż cały surface.3ds przynajmniej jak ja go oglądam w blenderze) jeżeli go zmniejszam normalnie czyli najpierw czerwony, później zielony kwadrat (albo odwrotnie) to wychodzi coś obrzydliwie porozciąganego. Nie da się zmniejszać proporcjonalnie całości?

Są jakieś tutoriale w stylu wstawianie chaty, wieży, czegokolwiek to gothica? (ale nie w spacerze tylko np. w blenderze) A jeśli nie ma to co mam zrobić, od czego powinienem zacząć?

Bardzo proszę o pomoc.
A jeśli nikt nie jest w stanie mi wytłumaczyć jak to zrobić to chociaż powiedzcie ile czasu musi minąć bym nauczył się wstawiać zamki, chaty itp. (nie interesuje mnie ich tworzenie) i czy warto się w to bawić?

20
Skrypty / Łóżko
« dnia: 2010-07-02, 13:43 »
Przeglądając skrypty natknąłem się na plik sleepabit.d
Postanowiłem, że zrobię "wyro śmierci" czyli łóżko, które zabija tych, którzy na nim śpią (jest to logiczne gdyż znajduje się w niebezpiecznej lokacji, później miałem zamiar dorobić random, oraz wyłączyć to, jeśli oczyścimy okolicę)

Oto plik sleepabit2.d Dużo tego jest jednak sam środek i koniec jest niemal taki sam jak w normalnym sleepabit.d

Cytuj
//****************************
//       PC_Sleep
//****************************

func void PC_Sleep2 (var int t)
{
   AI_StopProcessInfos(self);      // [SK] ->muss hier stehen um das update zu gewährleisten
   self.aivar[AIV_INVINCIBLE]=FALSE;
   if   (Wld_IsTime(00,00,t,00))   
   {
      Wld_SetTime   (t,00);
   }
   else
   {
      t = t + 24;
      Wld_SetTime   (t,00);
   };
   
   PrintScreen   ("Zostałeś zamordowany we śnie", -1,-1,"font_old_20_white.tga",3);
   hero.attribute[ATR_HITPOINTS] = 0;
      

   //-------- AssessEnterRoom-Wahrnehmung versenden --------
   PrintGlobals      (PD_ITEM_MOBSI);
   Npc_SendPassivePerc   (hero,   PERC_ASSESSENTERROOM, NULL, hero);      //...damit der Spieler dieses Feature nicht zum Hütteplündern ausnutzt!
};



func void SLEEPABIT_S2 ()
{
   var C_NPC her;    her = Hlp_GetNpc(PC_Hero);
   var C_NPC rock; rock = Hlp_GetNpc(PC_Rockefeller);
   
   //***ALT** if   (Hlp_GetInstanceID (self)== Hlp_GetInstanceID (Hero)) // MH: geändert, damit kontrollierte NSCs nicht schlafen können!
   if ( (Hlp_GetInstanceID(self)==Hlp_GetInstanceID(her))||(Hlp_GetInstanceID(self)==Hlp
_GetInstanceID(rock)) )
   {   
      self.aivar[AIV_INVINCIBLE]=TRUE;
      Ai_ProcessInfos (her);
   };
};

   




//-------------------- Gar nicht schlafen -------------------------

INSTANCE PC_NoSleep2 (c_Info)

{
   npc            = PC_Hero;
   nr            = 999;
   condition      = PC_NoSleep2_Condition;
   information      = PC_NoSleep2_Info;
   important      = 0;
   permanent      = 1;
   description      = DIALOG_ENDE;
};

FUNC INT PC_NoSleep2_Condition()
{      
      return 1;
};

func VOID PC_NoSleep2_Info()
{
   AI_StopProcessInfos (self);
   self.aivar[AIV_INVINCIBLE]=FALSE;
   
};

//---------------------- morgens --------------------------------------

INSTANCE PC_SleepTime_Morning2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Morning2_Condition;
   information      = PC_SleepTime_Morning2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do następnego poranka";
};

FUNC INT PC_SleepTime_Morning2_Condition()
{      
      return 1;
};

func void PC_SleepTime_Morning2_Info ()
{
   PC_Sleep2 (8);   // SN: geändert, da um 7 Uhr noch keiner der NSCs wach ist!
};

//--------------------- mittags -----------------------------------------

INSTANCE PC_SleepTime_Noon2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Noon2_Condition;
   information      = PC_SleepTime_Noon2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do południa";
};

FUNC INT PC_SleepTime_Noon2_Condition()
{      
      return 1;
};

func void PC_SleepTime_Noon2_Info ()
{
   PC_Sleep2 (12);
};

//---------------------- abend --------------------------------------

INSTANCE PC_SleepTime_Evening2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Evening2_Condition;
   information      = PC_SleepTime_Evening2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do następnego wieczora";
};

FUNC INT PC_SleepTime_Evening2_Condition()
{      
      return 1;
};

func void PC_SleepTime_Evening2_Info ()
{
   PC_Sleep2 (19);
};

//------------------------ nacht -----------------------------------------

instance PC_SleepTime_Midnight2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Midnight2_Condition;
   information      = PC_SleepTime_Midnight2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do północy";
};

FUNC INT PC_SleepTime_Midnight2_Condition()
{      
      return 1;
};

func VOID PC_SleepTime_Midnight2_Info()
{
   PC_Sleep2 (0);   
};

Następnie skopiowałem i wstawiłem w spacerze łóżko. Zmieniłem sleepabit na sleepabit2, dałem apply i activate.
Później próbowałem z sleepabit2.d
W spacerze przy naprawianiu skryptu błędów nie ma
Aha, i najważniejsze (tyle się rozpisałem, a nie napisałem na czym polega problem): postać podchodzi do łóżka, kładzie się na nie i nie wyświetla się żadne okno dialogowe  (nie gram na kodach i podchodzę bezimiennym!)

Bardzo proszę o pomoc. To mi jest naprawdę potrzebne.

PS. Jeżeli ktoś mógłby mi wytłumaczyć kilka rzeczy, tj. przełożyć ze skryptowego na nasze, co poniższe rzeczy oznaczają, bo nie do końca rozumiem:

Cytuj
self.aivar[AIV_INVINCIBLE]=FALSE;

Cytuj
if   (Wld_IsTime(00,00,t,00))   
   {
      Wld_SetTime   (t,00);
   }
   else
   {
      t = t + 24;
      Wld_SetTime   (t,00);
   };
Cytuj
func void SLEEPABIT_S1 ()
{
   var C_NPC her;    her = Hlp_GetNpc(PC_Hero);
   var C_NPC rock; rock = Hlp_GetNpc(PC_Rockefeller);

Strony: [1] 2 3 4
Do góry