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.


Pokaż wątki - krupam

Strony: [1]
1
Skrypty / [G2NK] Kalkulowanie obrażeń
« dnia: 2014-11-09, 21:27 »
Pytanie dosyć zwięzłe; Czy można w skryptach znaleźć równania odpowiadające za ilość zadawanych obrażeń w walce? Tj, biorące pod uwagę statystyki broni, atrybuty i umiejętności postaci, obrony przeciwnika i takie tam pierdoły.

Sam już próbowałem tego czegoś szukać i jedyne co mi do głowy przychodzi to to, że może być to zdefiniowane w silniku, a jakoś do grzebania w silniku niespecjalnie mnie rwie...

2
MDS i animacje / Animacje bez kości
« dnia: 2011-07-26, 20:08 »
No właśnie. Jak przypisać ustawienia vertexów do klatek animacji bez dodawania kości? Wiem, że to możliwe, bo tak są zrobione np. animacje twarzy. Chciałbym wiedzieć przynajmniej, czy jest to możliwe w Blenderze 2.49b, a jeśli możliwe, to jak to zrobić?

Próbowałem I>Mesh, ale to chyba nie to...

3
Skrypty / Używanie czarów przez NPC
« dnia: 2011-07-18, 11:07 »
Wiecie o co chodzi, nie? No to jazda!
Wchodzimy do Content\AI\Magic\B_SelectSpell.d
Tam mamy długą funkcję z tymi wszystkimi gratami.
Na wstępie dodam - funkcja wywołuje się na pierwszym spełnionym warunku!
Co to znaczy?
A no bo ustawimy se gildię na GIL_KDW i jeszcze ustawimy postaci aivar [AIV_MagicUser] = MAGIC_ALWAYS. Wtedy niezależnie co wpiszemy pod gildię magów wody, postać i tak będzie używała czarów podpisanych pod ów aivar, bo jest on wyżej w funkcji.
Na początku mamy takie coś:
if (slf.npctype == NPCTYPE_FRIEND)
&& (Npc_IsPlayer (oth))
&& (oth.guild < GIL_SEPERATOR_HUM) //nicht gegen verwandelten Spieler
{
if (slf.guild == GIL_KDF)
|| (slf.guild == GIL_KDW)
|| (slf.aivar[AIV_MagicUser] == MAGIC_ALWAYS)
{
if (Npc_HasItems (slf, ItRu_Sleep) == 0)
{
CreateInvItems (slf, ItRu_Sleep, 1);
};

B_ReadySpell (slf, SPL_Sleep, SPL_Cost_Sleep);
return TRUE;
}
else //Nicht-KdF
{
return FALSE;
};
};
Co chcemy dopisać, piszemy pod tym. Czemu? A no bo jeśli nasz NPC jest magiem i nas kocha, to nas nie zaatakuje tylko przywali snem.
Dalej mamy:
if (slf.guild == GIL_KDF)
|| (slf.aivar[AIV_MagicUser] == MAGIC_ALWAYS)
Całą tę funkcję najlepiej podzielić na dwie - jedną na warunek. Tą od aivara najlepiej wtedy wyjebać przesunąć na sam dół funkcji i wtedy problem, który opisałem wcześniej, po prostu zniknie.
Dobra, to teraz dopisujemy funkcję. Chcemy zrobić, by postać o inscie SGR_534651_Sulejman(Tak, teraz mam wpierdol od niego... Trudno...) zaatakowała nas Dużą błyskawicą, jeśli nie chce nas zabić to gejzerem(który nie dobija), jeśli będzie mieć mało życia to się uleczy, a jeśli nazbyt się zbliżymy, to zacznie walkę wręcz(jak ork szaman). Czyli zaczynamy.
Wpierw ustawiamy pierwszy warunek funkcji:
if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(SGR_534651_Sulejman))Dzięki temu jeśli slf to ta postać, to będzie bla, bla, bla...
Teraz trzebaby przywołać naszej postaci runy, jeśli jeszcze ich nie ma...
if (Npc_HasItems (slf, ItRu_LightningFlash) == 0) { CreateInvItems (slf, ItRu_LightningFlash, 1); };Czyli jeśli postać nie ma runy dużej błyskawicy, to se zrobi runę dużej błyskawicy. Proste? To robimy tak z każdą runą...
Teraz zaczynamy funkcję. Wpierw chcemy w końcu ustawić, by postać się uleczyła:
if (self.attribute[ATR_HITPOINTS] < 100)
{
B_ReadySpell (slf, SPL_FullHeal, SPL_Cost_FullHeal);
return TRUE;
}
Gdy nasza postać będzie miała mniej niż 100 hp, wtedy użyje runy leczenia.
return TRUE oznacza użycie czaru.
B_ReadySpell (slf, SPL_<czar>, SPL_Cost_<czar>) oznacza wybranie czaru. Owe stałe mamy w folderze Content\AI\Magic\Spells.
Dalej.
Jeśli wróg się zbliży, postać ma zaatakować bronią. Czyli robimy takie coś:
if (Npc_GetDistToNpc(slf,oth) > FIGHT_DIST_MELEE)
{
///////Tu będziemy wpisywać to, co pisze niżej
}
else
{
return FALSE;
};
Wtedy nasza postać, jeśli wróg się zbliży, przestanie czarować i zacznie walczyć mieczem.(nie zapominamy - funkcje tu oddzielamy else)
Teraz błyskawica:
if (C_NpcHasAttackReasonToKill (self))
{
B_ReadySpell (slf, SPL_LightningFlash, SPL_Cost_LightningFlash);
return TRUE;
}
(C_NpcHasAttackReasonToKill (self)) oznacza, że jeśli postać ma powód by uśmiercić przeciwnika(który np. jest mordercą lub ma wrogą gildię) to warunek jest spełniony.
Ostatnia część - jeśli żaden z warunków dot. czarów nie zostaje spełniony - postać nie jest ranna i nie chce zabić przeciwnika - ma użyć gejzeru:
else
{
B_ReadySpell (slf, SPL_Geyser, SPL_Cost_Geyser);
return TRUE;
};
Teraz, całość powinna wyglądać tak:
if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(SGR_534651_Sulejman))
{
if (Npc_HasItems (slf, ItRu_LightningFlash) == 0) { CreateInvItems (slf, ItRu_LightningFlash, 1); };
if (Npc_HasItems (slf, ItRu_FullHeal) == 0) { CreateInvItems (slf, ItRu_FullHeal, 1); };
if (Npc_HasItems (slf, ItRu_Geyser) == 0) { CreateInvItems (slf, ItRu_Geyser, 1); };

if (self.attribute[ATR_HITPOINTS] < 100)
{
B_ReadySpell (slf, SPL_FullHeal, SPL_Cost_FullHeal);
return TRUE;
}
else if (Npc_GetDistToNpc(slf,oth) > FIGHT_DIST_MELEE)
{
if (C_NpcHasAttackReasonToKill (self))
{
B_ReadySpell (slf, SPL_LightningFlash, SPL_Cost_LightningFlash);
return TRUE;
}
else
{
B_ReadySpell (slf, SPL_Geyser, SPL_Cost_Geyser);
return TRUE;
};
}
else
{
return FALSE; //Nahkampfangriff
};
};

Dziękuję i do widzenia...

Żeby nie było, pomagał mi Sulejman.

4
Skrypty / Gildia
« dnia: 2011-07-13, 12:39 »
Cóż, mam taki problem... Otóż gdy jakikolwiek NPC zaatakuje kogoś lub zostanie zaatakowany, jego gildia(ale nie TrueGildia) zmienia się na GIL_DMT(Poszukiwacz). Wtedy pojawiają się takie rzeczy, jak np. natychmiastowa śmierć po pobiciu, czy atakowanie wszystkich dookoła, nie reagowanie na potwory...

5
Skrypty / Miecz runiczny
« dnia: 2011-07-09, 20:33 »
Nie, od razu mówię, że nie chodzi o żaden zatracony przecinek, czy niezrozumianą funkcję
Skrypt:
//***************************************************************
func void B_Blade_of_Gods (var C_NPC oth, var C_NPC slf)
{
var C_NPC UnNamed;
UnNamed = Hlp_GetNpc (KDF_2002_UnNamed);

if (Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(UnNamed))
{
var C_ITEM ready;
var int randomdmg;
var int damage;

var int Innos;
var int Adanos;
var int Beliar;

ready = Npc_GetReadiedWeapon(UnNamed);
randomdmg = Hlp_Random (100);
damage = 1000;

if (Npc_HasItems(UnNamed, ItMw_2H_BladeOfGods) == TRUE
&& Hlp_IsItem(ready, ItMw_2H_BladeOfGods) == TRUE)
&& (slf.flags != NPC_FLAG_IMMORTAL)
{
if (Innos >= 5)
&& (Adanos >= 5)
&& (Beliar >= 5)
{
Wld_PlayEffect("spellFX_MassDeath", UnNamed, UnNamed, 0, 0, 0, FALSE );
B_MagicHurtNpc (UnNamed, slf, 5000);
Innos = 0;
Adanos = 0;
Beliar = 0;
Print("Moc wszystkich trzech Bogów wyzwolona!");
}
else if (randomdmg <= 33)
{
Wld_PlayEffect("spellFX_Firestorm_Spread", slf, slf, 0, 0, 0, FALSE ); //Innos
B_MagicHurtNpc (UnNamed, slf, damage);
Innos += 1;
if (Innos >=5)
{
Print("Moc Innosa naładowana!");
};
}
else if (randomdmg > 33)
&& (randomdmg < 67)
{
Wld_PlayEffect("spellFX_Icebolt_Collide", slf, slf, 0, 0, 0, FALSE ); //Adanos
B_MagicHurtNpc (UnNamed, slf, damage);
Adanos += 1;
if (Adanos >=5)
{
Print("Moc Adanosa naładowana!");
};
}
else if (randomdmg >= 66)
{
Wld_PlayEffect("spellFX_BeliarsRage", slf, slf, 0, 0, 0, FALSE ); //Beliar
B_MagicHurtNpc (UnNamed, slf, damage);
Beliar += 1;
if (Beliar >=5)
{
Print("Moc Beliara naładowana!");
};
};
};
};
};

Gdzie tkwi problem? Ano bo gdy ja steruję ową postacią(Kdf_2002_UnNamed) to fala działa jak powinna i rozpierdala wszystko na swej drodze. Jednak gdy postać steruje się sama(tak jak będzie to w modzie), to fala robi jedynie ładny efekcik, ale obrażeń nikomu dookoła nie robi. Chciałbym po prostu wiedzieć, jak ustawić funkcję, która wywoła B_MagicHurtNPC na KAŻDYM npc(poza kolesiami w grupie) w zasięgu rażenia(no bo niby można zawsze wpisać wszystkie możliwe insty pod Npc_GetDistToNpc, ale to trochę bez sensu).

6
Pytania i problemy / World of Warcraft - instalacja...
« dnia: 2010-10-04, 18:33 »
No właśnie. Mam takie pytanie dotyczące WoW'a:
Da się jakkolwiek ściągnąć WoW'a z neta za darmo? Jak ściągnąłem takiego clienta z głównej strony WoW'a(taki co miał 1.6 MB), to po zaczęciu instalacji to się okno zawieszało i trza było wyłączyć. Do kupowania jakoś się nie palę, programu do torrentów nie mam, RapidSzer odpada, nie chce mi się czekać tygodni(strasznie skomercjalizowane to skurwielstwo :/), na MegaUploadzie szukałem - ni ma.

7
Skrypty / Zaciemnienie
« dnia: 2010-07-15, 20:10 »
Dobra, nie będę pierdolił: Jak zrobić takie "zaciemnienie", tak jak było np. w Velayi z misją z podglądaczem, tzn. jak się go pobiło to ekran się zaciemniał i obie postacie pojawiają się pod drzewem...

8
MDS i animacje / Tworzenie animacji w .mds'ie
« dnia: 2010-01-05, 18:16 »
Tak. Wiem, że wielu jeszcze tego nie rozumie, a chciałoby, więc przedstawiam Wam ten oto tutorial.

Na początek najważniejsze: MUSIMY MIEĆ ZAINSTALOWANE ANIMACJE!!! Jak podczas instalacji G2MDK wybieramy jeszcze "Animationen".
No więc po pierwsze musimy zdekompilować plik z animacjami. Jak robimy dla orków(jak ja) to rozpakowujemy plik orc.msb, jak ludzi to humans.msb et cetera.
Otwieramy w tym celu Sourcerem ów plik(Tools>Decompiler models>Dynamic i wybieramy Gothic 2). Jest on w _work/Data/Anims/_compiled. Potem wchodzimy w folderze Sourcera w Gothic Projects/Anims/asc_<nazwa_.mds'a> i kopiujemy ten folder do takiego samego katalogu w folderze Gothica. Pamiętamy o tym, żeby usunąć pliki, które powtarzają się w folderze Anims! W tym folderze nie może być dwóch takich samych plików o tej samej nazwie(poza _compiled)!

Ok. Tera musimy napisać linijki w .mds'ie. Pokażę jak zrobić prostą animację typu "NPC siada, siedzi, wstaje". A właściwie nie samą animację, tylko to, jak ją wsadzić do Gothica.

ani ("t_Stand_2_Sit" 1 "s_Sit" 0.2 0.0 M. "Orc_SleepingGuard_jue02.asc" F 1 149)


Po kolei:
Nazwa animacji(czyli jak w grze się wpisuje "Play Ani t_Stand_2_Sit")
Nazwa animacji, która po niej następuje.
Nazwa pliku .asc.
To, czy animacja jest od początku[F] czy od końca[R]
Długość animacji(od klatki X do klatki Y)

Analogicznie robimy następne:

ani ("s_Sit" 1 "s_Sit" 0.0 0.0 M. "Orc_SleepingGuard_jue02.asc" F 150 199)
ani ("t_Sit_2_Stand" 1 "" 0.0 0.2 M. "Orc_SleepingGuard_jue02.asc" F 200 259)


Zapisujemy .mds'a i otwieramy Sourcera. Wybieramy Tools>Compiler models>Dynamic i otwieramy naszego .mds'a.
Zaznaczamy Gothic 2 i odznaczamy Partial Compilation(jeśli jest zaznaczone :) ). Klikamy ok i czekamy. Dość długo czekamy. Jeśli Sourcer pieprznie(co zdarza się dość często) to ponownie otwieramy jak wcześniej, tyle że zaznaczamy Partial Compilation. Potem otwieramy Gothic Projects/Anims/_compiled i kopiujemy całą zawartość folderu(a przy ludziach jest ich koło 600) do _work/Data/Anims/_compiled i tyle.
Efekt w grze powinien się pojawić jak wejdziemy w postać i wpiszemy w konsoli "Play Ani <nazwa_animacji>" i powinno być.

W związku z pytaniami uzupełniam:
Sposób ten działa też w Gothicu I


Sprostuję:
Do G1 trza zdekompilować plik .MDS, a nie .MSB.
Jak ktoś wie, co oznaczają podkreślone i skursywowane miejsca w linijce .mds'a, to bardzo proszę o wytłumaczenie ich tu bądź na PM, to poprawię.

9
Pytania i problemy / Przypisanie broni do ZS'a
« dnia: 2009-12-15, 20:07 »
Mam takie pytanie: jak zrobić, by bronie jednoręczne zamiast na ZS'ie ZS_SWORD pojawiały się na ZS_LONGSWORD, tzn. żeby zamiast za pasem pojawiał się na plecach, gdzie jest m. dwuręczny. Wiem, że można przesunąć ZS'a w modelu, ale to bez sensu, bo trzeba by wtedy zmieniać to we wszystkich animacjach, których jest w pi**u.

10
Skrypty / Efekty spellFX i FX w G2
« dnia: 2009-12-06, 17:18 »
Mam takie pytanie: czy jest gdzieś lista wszystkich efektów na bronie, pancerze itp.?(nie chodzi mi o te od czarów) Gdzieś czytałem, że były na PolandMachinima.pl, ale ta strona już nie istnieje.
I jeszcze co oznaczają te spellFX_<nazwa_czaru>_<INVEST; COLLIDE; SPREAD; itp.>(w _work/data/Scripts/System/VisualFX/VisualFxInst.d), tzn. który jest efektem czaru jak się go trzyma, jak ładuje, jak leci, jak trafia itd...

11
Spacer / Error przy uruchamianiu
« dnia: 2009-11-30, 13:59 »
Jak włączam Spacera, wyskakuje mi taki błąd:

Wie ktoś może co to oznacza.
Przeinstalowanie Spacera nic nie dało, próbowałem też włączyć przez GothicStarter i nic.

12
MDS i animacje / MDS - problem z dodaniem nowej animacji
« dnia: 2009-11-27, 19:19 »
No więc zrobiłem swoją pierwszą animację dla orka(jedzenie), wpisałem ją do .mds'a bazując na odpowiedniku u ludzi i podczas kompilowania w Sourcerze wyskoczył błąd:

Ma być tak, że od klatki 1 do 25 przedmiot jest w ręce, w klatce 25 znika, a koleś zaczyna mleć mordą i w klatkach 26-50 odkłada rękę.

Mój .mds wygląda tak(.asc nazywa się "ORC_EatFood"):
[codebox]// ---------------------------------------------------------------------------------------------------------------
// Generic Food (Apple, Mushroom)

   ani         ("t_Food_Stand_2_S0"      1   "s_Food_S0"      0.1   0.0   M.   "ORC_EatFood.asc"      F   1   24)
   {
      *eventTag   (1   "DEF_INSERT_ITEM"   "ZS_LEFTHAND")
   }
   ani         ("s_Food_S0"            1   "s_Food_S0"      0.0   0.0   M.   "ORC_EatFood.asc"      F   25   25)
   ani         ("t_Food_Random_1"         2   ""            0.1   0.1   M.   "ORC_EatFood.asc"      F   26   50)
   {
      *eventMMStartAni   (25   "T_EAT")
      *eventSFX         (25   "Eat_Apple"   R:1000)
   }
   ani         ("t_Food_Random_2"         2   ""            0.1   0.1   M.   "ORC_EatFood.asc"      F   50   50)
   ani         ("t_Food_S0_2_Stand"      1   ""            0.0   0.2   M.   "ORC_EatFood.asc"      F   50   50)
   {
      *eventMMStartAni    (50   "T_EAT")
      *eventSFX         (50   "Eat_Apple"   R:1000)
      *eventTag         (50   "DEF_DESTROY_ITEM")
   }
[/codebox]
Co muszę w nim zmienić?

A może źle zapisałem animację? Wiem, że zapisałem ją jako .asc, wybierając "Export animation". Frame'sy ustawiłem tak.

13
MDS i animacje / Błąd z nowym modelem .asc
« dnia: 2009-11-08, 20:28 »
Mam taki problem. Zrobiłem nowy model pancerza, wrzuciłem go do skryptu i w ogóle model i pancerz działa. Ale potem jak przywołuję np. FH to okazuje się, że ma on nałożony ten model(nie jako pancerz, tylko jako ciało).
Wie kto jak to naprawić? Wcześniej to się od razu naprawiało jak importowałem go 3ds Maxem i potem exportowałem, ale teraz to nie działa.

@edit
OK, udało mi się samemu to zmienić. Do zamknięcia.

14
Pozostałe / Robienie ładnych pasków życia
« dnia: 2009-10-24, 23:31 »
Jeśli graliście w demo CZ(a większość użytkowników forum grała), to pewnie zauważyliście, że mieli tam takie fajne paski życia. Chcesz mieć takie same? Sprawa prosta. Potrzebne są tylko GIMP i MS Paint. Link.

Jest Ivona ^_^  Ale to wina tego, że nie mam mikrofonu i w ogóle przechodzę właśnie mutację...

15
MDS i animacje / Animacje orkowych zbroi
« dnia: 2009-10-10, 21:33 »
Mam takie pytanie: czy dałoby się zrobić tak, aby z ciałem orka zrobić tak jak z ciałem człowieka, czyli że mamy nagie ciało, na które można ubierać zbroje itd. Bo chcę zrobić moda, w którym będziemy orkiem i w którym można by było ubierać różne zbroje(inne niż dla ludzi), a niezbyt mi się chce przerabiać wszystkie modele.

16
Skrypty / Skrypty z Nocy Kruka
« dnia: 2009-09-22, 20:50 »
Mam 4 pytania:
1. O co chodzi z tymi linijkami w skryptach niektórych broni:
on_equip   =   Equip_1H_07;
on_unequip   =   UnEquip_1H_07;

2. Czy da się dać broń 1-ręczną na plecy i móc ją normalnie wyciągać(jak w G3)? Jeśli tak, to w jaki sposób(zdaje mi się, że ma to coś wspólnego z pkt. 1.).
3. Czy robiąc kuszę magiczną w rodzaju Szponu Beliara(efekt przy uderzeniu) ustawić skrypt na bełty czy na kuszę, czy nie robi to różnicy?
4. Co oznaczają te aivary:
aivar[AIV_ToughGuy]=TRUE;
aivar[AIV_ToughGuyNewsOverride]=TRUE;


Oczywiście mógłbym sam to sprawdzić, ale niestety póki co nie mam zainstalowanej NK.

17
Pytania i problemy / Tekstury
« dnia: 2009-08-02, 10:03 »
Mam taki problem, bo wg poradnika, żeby zrobić inny pancerz z inną teksturą trza w skrypcie zmienić visual_skin na 1 i zmienić nazwę tekstury z nazwa_V0-C.tex na nazwa_V1-C.tex. Tyle że niektóre mają po prostu nazwa-C.tex, a jak im zmieniam nazwę i dodaję następną teksturę to i tak oba wyglądają tak samo i to jeszcze gorzej niż oryginalna.
Aha, to w Gothic II:NK.

Strony: [1]
Do góry