Mikstura czasowa 5252 15

O temacie

Autor Alpha

Zaczęty 5.04.2012 roku

Wyświetleń 5252

Odpowiedzi 15

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy
Nie wiem, czy był podobny temat, ale tym razem chciałbym dodać do Gothic'a miksturę, która działałaby przez określony czas. Dokładniej, chcę zrobić miksturę, która dodaje 50 pkt siły na 5 minut. Jest to możliwe do wykonania w Gothic 1?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Mikstura czasowa
#1 2012-04-05, 13:31(Ostatnia zmiana: 2012-04-05, 13:31)
jedna zmienna + TICK + skrypt mikstury.

W miksturze zmieniasz nasza zmienna na TAK i dodajesz 50 siły

w Ticku liczysz 5 min

Po 5 minutach odejmujesz 50 siły

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy
Dzięki, jutro props będzie bo dzienny limit wyczerpałem ^^ . Tylko, że nie miałem jeszcze styczności z Tickiem, więc nie bardzo wiem jak się za to wziąć... No i czy tick tocka trzeba pobrać, czy to "coś" jest już w Gothicu?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Tikc tock to Triger Script który uruchamia sam siebie w danym odstępie czasowym wstawiamy go przez spacera.

http://themodders.org/index.php?/topic/89-wywolywanie-skryptu-co-xx-czyli-wywolanie-skryptu-co-18-sekundy/

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy
Thx za wyjaśnienie. Ale czy mógłbyś opisać jak tą całą modyfikację zrobić? Zadam pytania w punktach ;)

1) W Spacerze trzeba otworzyć World.ZEN, czy może być obojętnie jaki?

2) "Jedna zmienna" - co to takiego?

3) Skrypt mikstury - wydaje mi się, że można się wzorować na miksturze szybkości. Ale coś mi nie wychodzi. Byłoby miło, gdybyś pokazał chociaż na przykładzie, jak powinien wyglądać.

Sory że wypytuję o każdą rzecz... :/
 

gothic1210
  • Gość
Cytuj
W Spacerze trzeba otworzyć World.ZEN, czy może być obojętnie jaki?
Najlepiej dodać we wszystkich światach z twojego moda. Jeżeli nie dodasz np do OLDMINE.ZEN to w grze mikstura w tym właśnie świecie nie będzie działać.
Cytuj
"Jedna zmienna" - co to takiego?
http://pl.wikipedia.org/wiki/Zmienna_%28informatyka%29
Zmienną definiujesz
var int nazwa; - przed skryptem mikstury lub w StoryGlobals.d
Potem w skrypcie mikstury:
INSTANCE Tiger(C_Item)
{
name = "Tiger";

mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;

value = 100;

visual = "ItFo_Potion_Mana_01.3ds";
material = MAT_GLAS;
on_state[0] = UseTiger;
scemeName = "POTIONFAST";

description = "Napój bezalkoholowy";
TEXT[1] = NAME_Bonus_Mana; COUNT[1] = Mana_Essenz;
TEXT[5] = NAME_Value; COUNT[5] = Value_ManaEssenz;
};

FUNC VOID UseTiger()
{
nazwa == true; // TUTAJ JEST TA ZMIENNA!!!! <-
B_RaiseAttribute (ATR_STRENGTH, 50); // zwiększona siła o 50
};
Teraz w tictocu musisz odliczyć czas i ptem odjąć te 50 punktów siły.
 

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy
Dzięki wielkie za ten skrypt, props będzie jutro :) .

Teraz czas na tick tocka. Wie ktoś jakie dane wpisać w "oCTriggerScript:zCTrigger:zCVob:"? Np. czy nazwa voba musi być taka, jak w skrypcie mikstury (nazwa == true;)? I jeszcze dwie rzeczy - gdzie wpisać odliczany czas (bo są tam dwie opcje, "retriggerWaitSec:" i "FireDelaySec:") oraz gdzie odjąć punkty siły?

Wiem, że jestem trochę natrętny, ale ten temat jest dla mnie dość ważny.
 

gothic1210
  • Gość
Źle rozumujesz. W świecie umieszczasz tylko wyzwalacz, czyli trigera.
http://themodders.org/index.php?/topic/13518-videotutorial-dokladnie-omowione-podstawy/
- obejrzyj część 5 i 6. Tam Rafał dodaje TIC_TOCA. Zawuwaz jak on to zrobił. Wyzwalacz musi mieć też skrypt (którego nie robi się w Spacerze!). Możesz go napisać np. pod tym skryptem mikstury.
 

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy

Alpha

Mikstura czasowa
#8 2012-04-06, 22:33(Ostatnia zmiana: 2012-04-06, 23:18)
Dzięki po raz kolejny :ok: . Próbowałem się wzorować na tych tutkach, ale napewno coś zrobiłem źle, bo to po prostu nie działa. Oto skrypt mikstury:

INSTANCE ItFo_Potion_Power(C_Item)
{
name = NAME_Trank;

mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;

value = 700;

visual = "ItFo_Potion_Strength_03.3ds";
material = MAT_GLAS;
on_state[0] = UseTiger;
scemeName = "POTIONFAST";

description = "Grom";
TEXT[1] = "Ogromnie zwiększa siłę, jednak efekt";
TEXT[2] = "jest krótkotrwały.";
TEXT[4] = NAME_Bonus_Str; COUNT[4] = 50;
TEXT[5] = NAME_Value; COUNT[5] = 500;
};

FUNC VOID UseTiger()
{
Power == true;
  B_RaiseAttribute (ATR_STRENGTH, 50);
};

FUNC VOID TICK_TOCK(){
  B_RaiseAttribute (ATR_STRENGTH, -50);
};

A w Spacerze w TriggerScript wpisałem:

vobName - TICK_TOCK
triggerTarget - UseTiger (tutaj pewnie jest błąd, tak mi się zdaje)
retriggerWaitSec - 10 (narazie ustawiłem tylko 10 sekund, by szybko sprawdzić, czy to wgl działa)
fireDelaySec - 1
ScriptFunc - TICK_TOCK

Dodam, że rozpocząłem nową grę, a ticka dodałem narazie tylko do World.ZEN. Zatem, gdzie jest błąd?

Edit: Chyba w skrypcie mikstury, pod tickiem brakuje czegoś...
 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
A dodałeś w startup.d WLD_SENDTRIGGER? Możesz to w sumie dodać w skrypcie mikstury.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Mikstura czasowa
#10 2012-04-07, 11:41(Ostatnia zmiana: 2012-04-07, 12:50)
       FUNC VOID UseTiger()
        {
Power == true;
                B_RaiseAttribute        (ATR_STRENGTH,  50);
        };

tu masz bład !!!

Nie możesz porównywać ==
MUSISZ przypisywać =

       FUNC VOID UseTiger()
        {
                Power = true;
                B_RaiseAttribute        (ATR_STRENGTH,  50);
        };


A dodałeś w startup.d WLD_SENDTRIGGER? Możesz to w sumie dodać w skrypcie mikstury.

A no właśnie !!! Sawik ma racje Tick nie jest potrzebny. Wystarczy trigger bo mozesz uruchamiać go tutaj w skrypcie mikstury.

Jak byś nie skumał o co mi chodzi to po prostu nic nie piszesz w triggerTarget. I nie musisz mieć zmiennej.

INSTANCE ItFo_Potion_Power(C_Item)
{
        name                    =       NAME_Trank;

        mainflag                =       ITEM_KAT_POTIONS;
        flags                   =       ITEM_MULTI;

        value                   =       700;    

        visual                  =       "ItFo_Potion_Strength_03.3ds";
        material                =       MAT_GLAS;
        on_state[0]             =       UseTiger;
        scemeName               =       "POTIONFAST";

        description                     = "Grom";
        TEXT[1]                 = "Ogromnie zwiększa siłę, jednak efekt";
        TEXT[2]                 = "jest krótkotrwały.";
        TEXT[4]                         = NAME_Bonus_Str;                               COUNT[4]        = 50;
        TEXT[5]                         = NAME_Value;                                   COUNT[5]        = 500;
};

FUNC VOID UseTiger(){
Wld_SendTrigger("SILA");//edit
        B_RaiseAttribute        (ATR_STRENGTH,  50);
};

FUNC VOID mikstura(){
        B_RaiseAttribute        (ATR_STRENGTH,  -50);
};

vobName - sila
retriggerWaitSec - 10
fireDelaySec - 1
ScriptFunc - mikstura

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy
RafalBudzis, zrobiłem dokładnie jak napisałeś - skopiowałem ten skrypt i przy wstawianiu triggera w Spacerze wpisałem też to co napisałeś. Ale wciąż nie widać efektów... Nie odejmuje siły... :/
Napewno nie trzeba czegoś jeszcze wpisywać w startup.d czy jeszcze gdzieś indziej?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Napewno nie trzeba czegoś jeszcze wpisywać w startup.d czy jeszcze gdzieś indziej?

Nie nie trzeba.

Masz 100 % pewność ze gra wczytuje twój zmieniony świat ?? Paczka world ma zmienione rozszerzenia ? Nie podmieniałeś świata tylko zapisałeś i zmieniłeś nazwę ??

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy
Wypakowałem Gothic VDFS'em Wolrds.vdf, wszystkie pliki dałem do Piranha Bytes\Gothic\_Work\Data\Worlds, a nazwę Worlds.vdf zmieniłem na Worlds.vdf.disabled. A w Spacerze po dodaniu triggera po prostu zapisałem ZEN'a i zamknąłem program, następnie zreparsowałem skrypty GothicStarterem i włączyłem grę - to wszystko.
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Spacer ma problemy z nadpisywaniem musisz zapisac z inna nazwa usunąc poprzedni świat i zmienić nazwe na taką jak miał

Alpha

Alpha

Użytkownicy
posty42
Propsy1
  • Użytkownicy
To też nic nie dało... :confused:  Kurde, jestem już tak blisko, a to nadal nie działa.

P.S. Jak masz Gothic'a, to może spróbuj u siebie taką miksturę zrobić? Żeby sprawdzić, czy Ci by to działało.
 


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