[NWN1] Skrypty, buildy i coś jeszcze

Witam!
Tworzę moduł w Neverwinter Nights i chciałbym was prosić o 3 rzeczy:
1. Potrzebuję super skryptów (np. coś ciekawego po śmierci, albo potrzebuję też takiego skryptu co po użyciu mocy specjalnej pewnego przedmiotu dzieję się określona czynność, a po użyciu innego przedmiotu, inna określona czynność). Jeśli ktoś zna jakąś stronę z nimi to proszę o link.
2. Przydałyby się też epickie buildy.
3. Jak udostępnić graczom możliwość wbicia 60 lvla?

Z góry dziękuję za odpowiedzi.
(Jeśli były gdzieś już takie tematy to przepraszam za problem i proszę o link )
Odpowiedz
Hmm... No więc jeden przedmiot robiłby tak, żeby postać odgrywała animację rzucania czaru, efekt wizualny w wybranym miejscu i stworzenie tam obiektu, a drugi po prostu teleportuje (z efektem wizualnym).
A i jeszcze o dwóch rzeczach zapomniałem napisać: Jak pozmieniać, albo zablokować atuty? I jak zrobić własne klasy?
Odpowiedz
To jedna z moich pozycji z listy skryptów, które za jakiś czas umieszczona zostanie na stronie .

Inteligentny przedmiot: Pierścień Translokacji I

Opis: Używając pierścienia posiadającego właściwość Rzucanie zaklęcia: Unikalna moc jedynie na sobie, postać teleportuje się do konkretnego punktu nawigacyjnego bez możliwości powrotu do miejsca aktywacji przy jednoczesnym wyświetleniu efektu wizualnego.
Skrypt:
SPOILER
void main()
{
object oActivated = GetItemActivated ();
object oPC = GetItemActivator ();
object oTarget = GetObjectByTag ("ETYKIETA PUNKTU NAWIGACYJNEGO");
effect eVis = EffectVisualEffect (ETYKIETA EFEKTU WIZUALNEGO);
if (oActivated == GetObjectByTag ("ETYKIETA PIERŚCIENIA"))
{
DelayCommand (2.0, AssignCommand (oPC, JumpToObject (oTarget)));
ApplyEffectToObject (DURATION_TYPE_INSTANT, eVis, oPC);
}
}

Gdzie: Edytuj/Właściwości Modułu/Zdarzenia/OnActivateItem

Lista etykiet efektów wizualnych: VFX_BEAM_*, VFX_COM_*, VFX_DUR_*, VFX_EYES_*, VFX_FNF_*, VFX_IMP_*

Oczywiście nie musi to być pierścień.

A to drugi:

SPOILER
void main()
{
object oActivated = GetItemActivated ();
object oPC = GetItemActivator ();
location lTarget = GetItemActivatedTargetLocation ();
effect eVis = EffectVisualEffect (ETYKIETA EFEKTU WIZUALNEGO);
if (oActivated == GetObjectByTag ("ETYKIETA PRZEDMIOTU SPROWADZAJĄCEGO"))
{
AssignCommand (oPC, ActionCastFakeSpellAtLocation (ETYKIETA ZAKLĘCIA, lTarget, PROJECTILE_PATH_TYPE_DEFAULT));
DelayCommand (6.0, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, eVis, lTarget));
DelayCommand (7.0, ActionInteractObject (CreateObject (OBJECT_TYPE_PLACEABLE, "ResRef SPROWADZANEGO POJEMNIKA", lTarget)));
}
}


Lista etykiet zaklęć: SPELL_*

Czas będziesz musiał sam ustawić do wybranego przez siebie efektu zaklęcia, bo każdy ma inny okres trwania. Poza tym efekt rzucania zaklęcia wydaje mi się sztuczny, gdyż właściwość przedmiotu Rzucanie zaklęcia: Unikalna moc ma już sama w sobie pewną animację.


Nie znam programu tworzącego nowe klasy podstawowe, ale jest jeden do prestiżowych. Tu masz wskazówkę co do blokowania umiejętności, ale na pewno przetransformujesz to na atuty.
Odpowiedz
Dziękuję bardzo. Jednak co do skryptów to prosiłbym o jeszcze jakieś ciekawe, jeśli nie stanowi to problemu.
Odpowiedz
Z tych ciekawszych to te poniżej. Nie wiem czy ci się do czegoś przydadzą.

Leczący obiekt

Opis: Obiekt, np. snop światła, po dotknięciu uleczy postaci określoną liczbę PW przy jednoczesnym wyświetleniu danego efektu wizualnego nad postacią. We właściwościach obiektu należy zaznaczyć opcję można używać.
Skrypt:
SPOILER
void main()
{
object oPC = GetLastUsedBy ();
effect eHeal = EffectHeal (LICZBA PW);
effect eVis = EffectVisualEffect (ETYKIETA EFEKTU WIZUALNEGO);
ApplyEffectToObject (DURATION_TYPE_INSTANT, eVis, oPC);
ApplyEffectToObject (DURATION_TYPE_INSTANT, eHeal, oPC);
}

Gdzie: OnUsed obiektu

Atakujący obiekt


Opis: Po wejściu na wyzwalacz obiekt, np. statua, zaatakuje postać zadając jej odpowiednią ilość kostek obrażeń ustalonego rodzaju przy jednoczesnym wyświetleniu danego efektu wizualnego. Dostępne kostki obrażeń: d2(X), d3(X), d4(X), d6(X), d8(X), d10(X), d12(X), d20(X), d100(X), gdzie X oznacza ilość rzutów kostką, np. d3(4) oznacza rozpiętość obrażeń (1-3)•4.
Skrypt:
SPOILER
void main()
{
object oPC = GetEnteringObject ();
object oObject = GetNearestObjectByTag ("ETYKIETA OBIEKTU");
effect eBeam = EffectBeam (ETYKIETA EFEKTU WIZUALNEGO, oObject, BODY_NODE_HAND,FALSE);
effect eDMG = EffectDamage (OBRAŻENIA, ETYKIETA RODZAJU OBRAŻEŃ);
ApplyEffectToObject (DURATION_TYPE_TEMPORARY, eBeam, oPC, 1.0);
ApplyEffectToObject (DURATION_TYPE_INSTANT, eDMG, oPC, 0.0);
}

Gdzie: OnEnter wyzwalacza

Kradzież powodująca wrogość stworzenia




Opis: Po zabraniu konkretnego przedmiotu z pojemnika dane stworzenie stanie się wrogie i wypowie tekst.
Skrypt:
SPOILER
void main()
{
object oObject = GetObjectByTag ("ETYKIETA STWORZENIA");
object oPC = GetLastDisturbed ();
object oItem = GetObjectByTag ("ETYKIETA PRZEDMIOTU");
if
(GetIsObjectValid (oPC) &&
(GetInventoryDisturbType () == INVENTORY_DISTURB_TYPE_REMOVED) &&
(GetInventoryDisturbItem () == oItem))
{
SetIsTemporaryEnemy (oPC, oObject, FALSE);
AssignCommand (oObject, SpeakString ("TEKST"));
AssignCommand (oObject, ActionAttack (oPC, FALSE));
}
}

Gdzie: OnDisturbed pojemnika

I coś nad czym się napracowałem dłuższą chwilę

Inteligentny przedmiot: Butelka z Dżinem




Opis: Używając butelki, uwolniony zostanie Dżin prowadzący sklep.
- Wpierw stwórz konkretnego Dżina oraz przedmiot będący jego więzieniem, np. butelka. We właściwościach przedmiotu wybierz Rzucanie zaklęcia: Rozmawiaj z.
- Wejdź w panel Maluj Obiekty/Tajemny Obiekt i edytuj Enserric Miecz. Zmień nazwę, etykietę, ResRef oraz portret.
- Otwórz skrypt x2_inc_intweapon, korzystając z filtra wszystkie zasoby. Przejdź do linii IWStartIntelligentWeaponConversation i wstaw ResRef wcześniej stworzonego tajemnego obiektu w miejsce x2_plc_intwp. Zapisz.
- Następnie otwórz konwersację x2_iw_enserric, korzystając z filtra wszystkie zasoby. Usuń wszystkie linie dialogowe i stwórz własne, pamiętając o tej dotyczącej uwolnienia Dżina.
W linii odnoszącej się do uwolnienia Dżina w zakładce podjęte działania stwórz poniższy skrypt, który spowoduje przywołanie Dżina oferującego towary przy jednoczesnym wyświetleniu efektu wizualnego nad postacią.
Skrypt:
SPOILER
void main()
{
location locLocation = GetLocation (OBJECT_SELF);
object oSpawn = CreateObject (OBJECT_TYPE_CREATURE, "ResRef DŻINA", locLocation, FALSE);
object oStore = CreateObject (OBJECT_TYPE_STORE, "ResRef PUNKTU KUPIECKIEGO", locLocation, FALSE);
effect eVis = EffectVisualEffect (ETYKIETA EFEKTU WIZUALNEGO);
ApplyEffectToObject (DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
}

- Powyższą konwersację dodaj wcześniej stworzonemu tajemnemu obiektowi.
- Stwórz nową konwersację odnoszącą się do samego Dżina, pamiętając o liniach dialogowych dotyczących odesłania oraz handlu.
W linii dotyczącej handlu w zakładce podjęte działania stwórz skrypt przy pomocy Kreatora Skryptów (czerwonawa szpiczasta czapka czarodzieja), wybierając wykonaj działanie/uruchom kupca. W etykiecie skryptu wpisz etykietę punktu kupieckiego.
W linii odnoszącej się do odesłania w zakładce podjęte działania stwórz poniższy skrypt, który spowoduje zniknięcie Dżina oraz punktu kupieckiego przy jednoczesnym wyświetleniu efektu wizualnego nad nim.
Skrypt:
SPOILER
void main()
{
object oObject = OBJECT_SELF;
object oStore = GetObjectByTag ("ETYKIETA PUNKTU KUPIECKIEGO");
effect eVis = EffectVisualEffect(ETYKIETA EFEKTU WIZUALNEGO);
DestroyObject (oStore);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oObject);
DelayCommand (0.5, DestroyObject (oObject));
}

- Powyższą konwersację dodaj wcześniej stworzonemu Dżinowi.
Odpowiedz
Widzę, że już tu nikt nie zagląda . A ja mam kolejny problem! Jak zrobić, aby te zmienione atuty albo nowe klasy włożyć do jednego modułu?
Odpowiedz
Chyba nie rozumiem . Mam to wstawić w zmiennych? I jak mój hak nazywa się np. haki.hak to jak mam to wpisać? Proszę najlepiej o screena
Odpowiedz
Chyba coś źle robię, ale nie wiem co. Otwieram plik "feat.2da" zagwiazdkowuję atut uniki (dodge) i zapisuję jako nowy plik, włączam nwhak wybieram ten plik i zapisuję. Wrzucam do własnej zawartości w module i go testuję. O dziwo postać może wybrać atut "Uniki". Z klasami tak samo. Tworzę klasę, zapisuję, zmieniam w nwhak i wrzucam do modułu i nie ma moich klas...
Odpowiedz
Hm. A co to za moduł? Zobaczymy efekt końcowy?
Młodość i niedojrzałość mijają z czasem, ignorancję pokonać można nauką, a pijaństwo trzeźwością, za to głupota jest wieczna. - Arystofanes
Odpowiedz
A nie wiem, bo mam problemy z hostowaniem. A tak poza tym, to wie ktoś jak ustawić własną nazwę w tych liczbach w rubryce name? (przy tworzeniu klas). Wiecie, chodzi mi o to, że chcę inną nazwę od tych klas co są i tekstów z kampanii.

[Dodano po 11 dniach]

No to poza problemem u góry to mam jeszcze potrzebę skryptu, który po wejściu gracza na obszar czyścił był pomieszczenie z wszelkich efektów wizualnych (bo niektóre się zacinają i zostają na cały czas). Jeszcze przydadzą się 2 takie (uruchomione podczas konwersacji), co jeden dodawałby, a drugi odejmował określoną ilość punktów wybranej cechy na stałe, tak, że nawet po wylogowaniu się z serwera i powtórnym zalogowaniu były zmienione (nie chcę aby był to efekt, tylko, żeby po prostu z np. 18 pkt siły zostało graczowi 16 i już zawsze miałby tyle [chyba, że podczas awansu by dobrał]).
Odpowiedz
+

Cytat

void main()
{
object oTarget = GetPCSpeaker ();
effect eAbility = EffectAbilityIncrease(ABILITY_STRENGTH, 2);
eAbility = SupernaturalEffect (eAbility);
effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAbility, oTarget);
}


-

Cytat

void main()
{
object oTarget = GetPCSpeaker ();
effect eAbility = EffectAbilityDecrease(ABILITY_STRENGTH, 2);
eAbility = SupernaturalEffect (eAbility);
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eAbility, oTarget);
}


W obu przypadkach tyczy się to siły zwiększanej ub zmniejszanej o 2. Sam już sobie odpowiednio to przystosujesz.

Przejdź do cytowanego postu Użytkownik Eha'y dnia niedziela, 19 września 2010, 21:31 napisał

No to poza problemem u góry to mam jeszcze potrzebę skryptu, który po wejściu gracza na obszar czyścił był pomieszczenie z wszelkich efektów wizualnych (bo niektóre się zacinają i zostają na cały czas).


Jak wizualny efekt może się zaciąć? Nie bardzo rozumiem.
Odpowiedz

Cytat

Jak wizualny efekt może się zaciąć? Nie bardzo rozumiem.


No tak... Zrobiłem, że po wejściu na wyzwalacz pojawia się losowy efekt wizualny. Wśród nich są także takie... Domki albo coś w tym stylu i one zostają na zawsze... Np. ten efekt: 449 SCENE_BUILDING (chyba ten).

I jeszcze przydałby mi się skrypt na dodanie na stałe atutu.

Hmm... Chyba łatwiej byłoby, gdybym się nauczył pisać skrypty... Ale nie wiem od czego zacząć...

A co do tych skryptów, to one dalej są efektami i usuwają się po ponownym zalogowaniu na server. Jeśli nie da się inaczej to trudno.

Przepraszam, że tak się pytam ciągle o te skrypty, ale jak już wspominałem, sam nie umiem pisać dobrych...
Odpowiedz
Ten temat do mojego pytania chyba będzie najodpowiedniejszy

Czy da się zrobić tak, że po zabiciu określonej istoty aktywuje się nowe zadanie?
[font="Courier"]"In noreni per ipe,
in noreni cora;
tira mine per ito,
ne domina.
In romine tirmeno,
ne romine to fa,
imaginas per meno per imentira."[/font]

[font="Courier"]"Nie bój się cieni, one świadczą o tym, że gdzieś znajduje się światło"[/font]
[font="Courier"]"Nigdy nie znajdziesz prawdziwego przyjaciela, jeśli sam nie umiesz nim być..."[/font]
[font="Courier"]Hej, Ty lepiej czytaj moje posty, a nie sygnaturę.[/font]
Odpowiedz
Działa. Wielkie dzięki Jak będę miał jeszcze jakiś problem to napiszę
[font="Courier"]"In noreni per ipe,
in noreni cora;
tira mine per ito,
ne domina.
In romine tirmeno,
ne romine to fa,
imaginas per meno per imentira."[/font]

[font="Courier"]"Nie bój się cieni, one świadczą o tym, że gdzieś znajduje się światło"[/font]
[font="Courier"]"Nigdy nie znajdziesz prawdziwego przyjaciela, jeśli sam nie umiesz nim być..."[/font]
[font="Courier"]Hej, Ty lepiej czytaj moje posty, a nie sygnaturę.[/font]
Odpowiedz
← Neverwinter Nights

Skrypty, buildy i coś jeszcze - Odpowiedź

Wczytywanie...