Poszczególne elementy pancerza 28584 101

O temacie

Autor Drake

Zaczęty 14.11.2009 roku

Wyświetleń 28584

Odpowiedzi 101

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
UPDATE:






Jak widać są postepy, wlasciwie to jestem w polowie, spodziewalem się że model będzie jakiś strasznie sztywny ale nie jest tak źle, jak widac po pachwinie i łydkach
trzeba bedzie zrobic pewnego knifa - usunąć mianowicie czesci ciala które moga byc zasloniete przez zbroje - w najgorszym wypadku beda to 4 cz. ciala czyli 16 mozliwosci pliku .asc. Pozatym wiekszych problemów przy tworzeniu nie stwierdzilem.


Nie moge jednak obiecac ze jutro zdaze wrzucić całą zbroje.
 



inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Poszczególne elementy pancerza
#81 2009-12-24, 13:40(Ostatnia zmiana: 2009-12-24, 14:01)
Piszę te skrypty od nowa samodzielnie, sam pomysł uważam za genialny, jednak sposób w jaki orc to rozpisał nie do końca mi odpowiada. Jednak mam drobny problem, a raczej pomysł na jeszcze większe uproszczenie.
Otóż właściwość on_state określa funkcje jaka ma zostać wywołana przy użyciu itema. Gdybym chciał użyć wspólnej funkcji dla wielu itemów, czy jest sposób aby funkcja rozpoznawała przez jaki item została wywołana bez używania funkcji "pośrednich"? Czy można by było bezpośrednio po nazwie funkcji umieścić tam nawias z argumentem?
on_state[0] = USE_ARMOR("HELM", "GRD");Wtedy funkcja dzięki warunkom wyświetliłaby odpowiedniego vfx'a oraz zmodyfikowała zmienne.
A jeśli nie, czy jest jakaś inna metoda na pokierowanie taką wspólną funkcją?

Chodzi mi głównie o to żeby jako argument w tej funkcji wystąpiło samo instance wywołującego przedmiotu, wtedy funkcja sama na podstawie jego atrybutów rozpoznałaby gdzie i jaki model wyświetlić.
Oczywiście wiem że można to równie dobrze zrobić używając krótkiej funkcji pośredniej, zawierającej samo wywołanie z argumentem, jednak w skryptach staram się dążyć do maksymalnej prostoty i automatyzacji.

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders

orcwarrior
The Modders

Poszczególne elementy pancerza
#82 2009-12-24, 13:41(Ostatnia zmiana: 2009-12-24, 13:45)
 Jestem prawie pewien ze nie mozna podawać zadnych parametrów w funkcji onstate.
 



inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Poszczególne elementy pancerza
#83 2009-12-24, 18:20(Ostatnia zmiana: 2009-12-25, 11:00)
Napisałem większą część skryptów, jednak już na początku, w VFX'ie, wykrywa błąd przy parsowaniu:
---------------------------
Error-Message
---------------------------

U:PAR: Not a valid class or prototype name :CFX_BASE_PROTO ( line 1 )

---------------------------
OK  
---------------------------
A przecież jest to prototyp na pewno występujący w grze. Kiedy skopiowałem już istniejący vfx bariery, zmieniwszy tylko instance, efekt jest ten sam. Dodam, że moje skrypty są w gothic.src na samym końcu.

//EDIT: Skopiowałem sam prototyp, także zmieniłem nazwę, to teraz z kolei nie widzi klasy :D
//EDIT2: No dobra, klasę też skopiowałem i zmieniłem instance, teraz ją widzi, ale znalazł w niej błędy ;p

//EDIT3: Jeszcze klas ani prototypów mi nie widzi, ale znalazłem sposób na to żeby funkcja mogła wykorzystać dane o wywołującym ją przedmiocie nawet jeśli nie dostarczono ich w argumentach: zmienna item (C_ITEMowy odpowiednik SELF)

Zysk

Zysk

Użytkownicy
posty606
Propsy451
  • Użytkownicy
moje skrypty są w gothic.src
błąd powinno być w jakimś systemowym .src, nie pamiętam którym, ale łatwo znajdziesz
 

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
moze nie do tematu ale...
to alvach : mam pevne zbroje nordmarczikov jak bysz chcial to poviec
http://img689.imageshack.us/i/nordmarczici.jpg/
 


inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Poszczególne elementy pancerza
#86 2009-12-25, 11:27(Ostatnia zmiana: 2009-12-25, 12:23)
Napisałem do ciebie PW, MarkK, oczywiście jestem bardzo zainteresowany :D .
Napiszę jakie opracowałem rozwiązanie, w końcu jak się dzielić, to wszystkim. Niestety Gothic nie czyta mi części plików src, więc nie mogę go przetestować w praktyce.

Otóż opracowałem system wymagający tylko jednej funkcji i jednego PFX na jedną część ciała. Aby stworzyć nową część zbroi wystarczy sam item, i to na dodatek oparty na prototypie, więc wystarczy podać tylko kilka niezbędnych parametrów.
Każdy element np. hełm, wywołuje odpowiednią funkcję, tutaj  armor_helm. Ona przerabia sam PFX, ustawia jego parametr shpmesh_s na item.visual, czyli na plik 3ds którego używał wywołujący item. Następnie dany vfx jest wyświetlany. Wstępnie wygląda to tak:

func void ARMOR_HELM()
{
ARMOR_HELM_PFX.shpmesh_s = item.visual;
Wld_PlayEffect("ARMOR_HELM_VFX",hero,hero,0,0,0,FALSE);
};

ARMOR_HELM_PFX i ARMOR_HELM_VFX nie są zmiennymi, to podane wprost instance. Ponieważ i tak można na raz założyć tlyko jedną część danego typu, nie trzeba robić wielu efektów, wystarczy modyfikować jeden.

Ponadto dla ułatwienia dla każdej części stworzyłem prototyp, można zrobić także jeden prototyp ogólny, w końcu i tak wartości takie jak zawartość opisu, mainflag, flags, scemaname czy material pozostają z reguły bez zmian.

PROTOTYPE PROTO_AR_HELM(C_Item)
{
name = "Hełm";

mainflag = ITEM_KAT_ARMOR;
flags = 0;

scemename = "MAP";
on_state[0] = ARMOR_HELM;

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

visual = "helm.3ds";
material = MAT_METAL;

value = 1;

description = name;
TEXT[1] = NAME_Prot_Edge; COUNT[1] = protection [PROT_EDGE];
TEXT[2] = NAME_Prot_Point; COUNT[2] = protection [PROT_POINT];
TEXT[3] = NAME_Prot_Fire; COUNT[3] = protection [PROT_FIRE];
TEXT[4] = NAME_Prot_Magic; COUNT[4] = protection [PROT_MAGIC];
TEXT[5] = NAME_Value; COUNT[5] = value;
};

Pfx i Vfx zastosowałem takie jak orc, dopasowałem tylko do swojego systemu nazwy.

Dzięki tym uproszczeniom, do napisania przykładowego hełmu wystarczy to:

INSTANCE IT_AR_HELM_GRD (PROTO_AR_HELM)
name = "Hełm strażnika";
protection [PROT_EDGE] = 10;
protection [PROT_BLUNT] = 10;
protection [PROT_POINT] = 5;
visual = "helm_grd.3ds";
A reszta zrobi się sama :D


Aha, oczywiście funkcja zakładania zbroi którą tu podałem to zaledwie wstęp odpowiadający za samo wyświetlanie, trzeba dopisać cały szereg warunków kontrolujących co i jak zakładamy, zmiany flags oraz parę innych rzeczy, ale to już będzie prostsza część.

I jeszcze coś, gdyby okazało się że zmienna item jednak nie przechowuje obiektu którego użyliśmy, zawsze można użyć krótkiej funkcji pośredniej, która będzie dodawała argument i wywoływała funkcję właściwą. Ponieważ i tak trzeba było by ją dopisywać do każdego przedmiotu, będzie można zrezygnować z tego odczytywania parametru visual mając podane instance, ale po prostu wpisywać plik 3ds jako ten argument. Jednak jest to scenariusz pesymistyczny, wolałbym żeby wszystko działało jak najprościej.


//EDIT: No nie, Gothic nie reparsuje mi już żadnych skryptów :D
Jakby w ogóle nie widział plików src. Myślicie że będzie trzeba reinstalować?
Pliki na pewno są, na pewno są w dobrym miejscu, na pewno mają dobrą treść i na pewno zaznaczam "reparse all scripts". Odkąd ostatnio instalowałem grę (zmieniałem sprzęt) zdążyłem napisać tylko kilka skryptów, ale przynajmniej były widziane, czytało też z początku część skryptów tych zbroi, teraz się zbuntowało na amen.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
a moze v glovnym gotic.src niemasz je dopisane ... czi tziebie neczita nic ????
 


inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Nie czyta żadnych wprowadzonych przeze mnie zmian, przynajmniej kiedy w konsoli chcę przywołać mój item, nie reaguje. Za to jakoś złośliwie wyłapuje błędy kiedy jakiś zrobię. gothic.src jest w porządku, pozostałe pliki src też, w tym te z folderu scripts/system. Wcześniej mi wszystko działało.
Najwyżej zrobię reinstalkę skryptów, może pomoże.

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
 @Avallach tamte skrypty to bylo tylko załozonie - pisząc to uproszczam to tylko jak moge tzn:

VFX:

//******************************
//  ARMOR TEST
//******************************
//FINALLY WORKING VERSION!!!
PROTOTYPE ARMOR_PART_PROTO (CFx_Base)
{
visName_S = "";
emTrjOriginNode = "ZS_RIGHTHAND";
emTrjTargetNode = "";
emTrjTargetRange = 0;
emTrjTargetAzi = 0;
emTrjTargetElev = 0;
emTrjNumKeys = 0;
emTrjNumKeysVar = 0;
emTrjAngleElevVar = 0;
emTrjAngleHeadVar = 0;
emTrjKeyDistVar = 0;
emTrjEaseVel = 20000;
emTrjDynUpdateTargetOnly= 1;
emActionCollDyn_S = "NORESP";
emActionCollStat_S = "NORESP";
emFXCollStat_S = "";
emFXCollDyn_S = "";
emFXCollStatAlign_S = "";
emFXCollDynAlign_S = "";
emCheckCollision = 0;
emInvestNextKeyDuration = 0;
emFlyGravity = 0;
emSelfRotVel_S = "0 0 0";
lightPresetName = "";
sfxID = "";
sendAssessMagic = 0;
secsPerDamage = -1;

 visalpha = 0.5;
visalphablendfunc_s = "NONE";
emtrjmode_s = "FIXED";
emtrjloopmode_s = "LINEAR";  
emtrjeasefunc_s = "STEP";
emFXCreatedOwnTrj = 1;
emFXTriggerDelay = 0.02;
emfxlifespan = 4;
  emadjustshptoorigin = 1;//1
emTrjDynUpdateDelay = 2000000;
//emFXCreate_S = "BugfixFX";

};
INSTANCE V_ARMOR_STTH_BOOTL (ARMOR_PART_PROTO)
{
visname_S = "P_ARMOR_STTH_BOOTL";
emTrjOriginNode = "Bip01 L Foot";


};





PFX:

PROTOTYPE ARMOR_PART (C_ParticleFX)
{
ppsvalue = 1;
ppsscalekeys_s = "1";
ppsfps = 1;
ppsislooping = 0;
shptype_s = "MESH";
shpfor_s = "object";
shpoffsetvec_s = "0 0 0";
shpdistribtype_s = "UNIFORM";
shpdim_s = "1";
shpmesh_s = "M_ARMOR_STTH_BOOTL.3DS";
ShpMeshRender_B = 1;
shpscalekeys_s = "1";
shpscaleislooping = 0;
shpscaleissmooth = 0;
shpscalefps = 1;
dirmode_s = "DIR";
velavg = 0.01;//9.
lsppartavg = 1000;
flygravity_s = "0 0 0";
visname_s = "";
visorientation_s = "NONE";
vistexisquadpoly = 0;
vistexanifps = 0;
vistexaniislooping = 0;
vistexcolorstart_s = "0 0 0";
vistexcolorend_s = "0 0 0";
vissizestart_s = "1 1";
vissizeendscale = 1;
visalphafunc_s = "STEP";
visalphastart = 0;
visalphaend = 0;
};

//STTH
INSTANCE P_ARMOR_STTH_BOOTL (ARMOR_PART)
{
shpmesh_s = "M_ARMOR_STTH_BOOTL.3DS";
};


I to samo zamierzam zrobić z itemami.
 



inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Poszczególne elementy pancerza
#90 2009-12-26, 16:32(Ostatnia zmiana: 2009-12-26, 17:21)
A czy nie lepsza była by moja metoda z jednym pfx'em i vfx'em na każdą część ciała i tylko dynamicznie zmieniać shpmesh_s na taki jaki był visual w wywołującym itemie? Wtedy bez robienia żadnych dodatkowych czynności poza dodaniem on_state[0] = ARMOR_HELM; można by było założyć choćby i bochenek chleba :D

EDIT: Już czyta mi skrypty, okazało się że linijkę pliku z itemami (a tylko po nich mogłem poznać czy skrypty zostały przeczytane) umieściłem na końcu pliku gothic.src i nie zostawiłem po niej pustej linijki. Zaś parser ma takią nietypową cechę że nie czyta ostatniej linijki tego pliku, dlatego zawsze trzeba ją zostawiać pustą :/

Sprawdziłem samą automatyzację rozpoznawania jaki ma zostać użyty model, i działa.

Teraz już pozostało mi tylko dowiedzieć się dlaczego nie widzi klas ani prototypów PFX.

//EDIT2: Coś jest nie tak, nadal nie widzi klasy ani prototypów PFX'ów. Czy to normalne? Może trzeba reparsować Spacerem? Nigdy wcześniej nie potrzebowałem tworzyć PFXów, więc nie wiem czy kiedyś się tak działo. W każdym razie nadpisanie czystych polskich skryptów nie pomogło, reinstalacja całego GMDK też ;(

orcwarrior

orcwarrior

The Modders
posty475
Propsy317
Profesjabrak
  • The Modders
 gothic.src i pfx.src/vfx.src to calkiem inna "paka" skryptow, i nie ma miedzy nimi połaczenia, jedno nie bedzie moglo korzystac z drugiego wiec shpmesh-em nic nie zdziałasz.

Mam drobne problemy z torsem zbroi, mam nadzieje ze da sie z tym cos zrobic, bo narazie nie wyglada to za ciekawie.
 



inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
No tak! Jasne, dlatego nie widziało mi tych klas i prototypów, bo swoje pfx'y umieszczałem w skryptach z "content" zamiast "system" a jak napisałeś nie ma pomiędzy nimi połączenia ^^ . Szkoda, bardzo zautomatyzowało by to pracę, a tak nic z tego, trzeba będzie robić osobne pfx'y i vfx'y dla każdego itemka.

BTW, a propos PFX'ów, nie wiecie czy jest sposób aby wyświetlać je w menu gry? Bo kiedy przeglądałem listę gotowych, znalazłem kilka prawdopodobnie specjalnie w tym celu stworzonych, jak choćby FIRE_MENU albo FIRE_MENU_OLD.

Drake

Drake

Użytkownicy
posty93
Propsy3
  • Użytkownicy
No nieźle :lol2:  założyłem temat ponad mięsiąc temu,potem troche mnie nie było a tu 92 odpowiedzi.
 

jendrzejs

jendrzejs

Użytkownicy
posty586
Propsy31
Profesjabrak
  • Użytkownicy
Gdyby nie orc to,nikt nie wymyślił że można to robic za pomocą pfx'ów..
I tak to nie jest perfekcyjne rozwiązanie bo występuje dużo bugów :(

@Drake masz linka do pobranie tego http://www.speedyshare.com/files/20020591/...PARTS3_work.rar
 

Drake

Drake

Użytkownicy
posty93
Propsy3
  • Użytkownicy
Skoro ten temat był już wałkowany kiedyś i dużo osób o tym myśli,to może by z tego zrobić tutek.


@Jendrzejs ten link który podałeś niezbyt mi działa.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Jaki tutek? Chyba naprawdę dawno nie byłeś na forum, orcwarrior opracował kompletny system wspierający coś takiego, łącznie z przykładowymi pfx'ami. Chciał przerobić tak wszystkie zbroje z gry i opublikować, jednak się nie odzywa mimo propozycji pomocy przy cięciu modeli.

jendrzejs

jendrzejs

Użytkownicy
posty586
Propsy31
Profesjabrak
  • Użytkownicy
@Avallach@Do mnie też się orc nie odzywa.
No właśnie orca wogóle nie ma na gg pisałem mu dużoo wiadomości na forum też a nadal się nie odzywa.....
@Edit.Czemu masz na avatarze "czarną wstążke" xD ?

Na znak żałoby po odejściu Kazzmira  :lol2:   //Edit by jendrzejs.Wow da sie na kolorowo pisac :)
 

Tomek

Tomek

Użytkownicy
Kapitan Rob
posty2181
Propsy2189
ProfesjaNierób
  • Użytkownicy
  • Kapitan Rob
Z tego co pamiętam, to Darek ma często odpalony komputer przez cały dzień, chociaż na nim nie siedzi. A przynajmniej tak było kiedyś.
 

zalpl

zalpl

Użytkownicy
posty92
  • Użytkownicy
orcwarrior...jakieś postępy w przykładowej zbroi?
 


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