droga_szamana_5

[NWN1] Skrypty, buildy i coś jeszcze

No tak, ale te zmienne, stałe, itp.
Odpowiedz
Proponuję zrobić z tego temat dotyczący nie tylko skryptów, ale także i problemów przy tworzeniu modułów.

Ja mam taki problem: daję pewnej istocie miecz i wszystko jej pięknie ładnie, w podglądzie i obszaru i istoty stworzenie to dzierży ten miecz, jednak jak włączam grę i testuję ten moduł, istota ta tego miecza nie trzyma. Co jest grane?
EDIT: Już wiem o co chodzi, także problemu już nie ma Miecz miał ograniczenie użycia - tylko dla chaotyczny zły, a istota była prawdziwie neutralna. Teraz już wszystko działa ;)Nadal jednak mam ten problem ze stworzeniem skryptu (tego o którym piszę poniżej)
Aha i jeszcze coś. Zrobiłem już sobie parę skryptów, jednak nie mam pojęcia, jak stworzyć skrypt tworzący w określonych odstępach czasu i miejscu pewną istotę.

A tak BTW. Skala wyzwania 585 to duża jest czy nie?
[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

Przejdź do cytowanego postu Użytkownik Darnith dnia czwartek, 23 września 2010, 18:59 napisał

Działa. Wielkie dzięki Jak będę miał jeszcze jakiś problem to napiszę

Wiem... zabrzmi to nie z tej ziemi - gdzieś ty się uchował lub skąd ty się wziąłeś,ale netety,to jet mój debiut,bo internet mam dopiero miesiąc,a i,kolega pomógł mi w rejestracji.Rzecz jasna mógłbym wcześniej napisać to czy owo,ale musiałem trochę pościągać kilka rzeczy interesujących - chyba nie muszę pisać ma jaki temat, no i wybadać klimat jaki tu panuje.Moim zdaniem nie ma przedniejszej zabawy jak tworzenie różnych rzeczy w edytorze Aurora, bo trzeba nadmienić,że nie tylko może służyć do robienia gier - zależy tylko od wyobraźni i pomysłów.Właśnie,Neverwinter mam nieprzerwanie na twardzielu od 2004 roku i zawsze coś tworzę i do tej pory nie jestem tym znudzony.Stworzyłem kilka modułów,koledzy w nie grali i byli nawet mile zaskoczeni,że taki pajac stworzył coś na rzeczy,a teraz pracuję nad ostatnim "dziełem",który podsumuje co wcześniej stworzyłem,tylko mam nadzieje,że bez wpadek.
No dobra jak to mówił jeden mędrzec pier...łami zalewajki się nie okrasi.
Jeśli chodzi o ten efekt,który nie chce zniknąć, 449 bodajże , ten efekt ma naturę DUR,więc zmień z DURATION_TYPE_PERMANENT na TEMPORARY i wpisz czas ile ma trwać,to wszystko.Natomiast z hakami jest troszkę sprawa zagmatwana.Nie radzę robić haków ze stworzeniami,zbrojami,głowami,tylko radzę przekopiować niezbędne pliki do override uniknie się po prostu nieprzewidzianych kłopotów.Haki możesz robić z obszarami,portretami i przeróżnymi modyfikacjami,z objektami za bardzo też nie polecam,chyba,ze będą statyczne,wtedy nic się nie dzieje. Wracając do skryptów,Lionel dał wersje na zmniejszenie siły,żeby była stała,wszystko się zgadza poza jednym malutkim szczególikiem.Mianowicie załóżmy taką sytuacje.Walczysz z magiem,który ma czar rozpraszania i co wtedy? Po prostu zmniejszona siła znika,więc trzeba dopisać dodatkową funkcje SupernaturalEffect(ExtraordinaryEffect( i dopiero to co było przedtem),ale i tak skryptami można to rozgonić.Proponuję w atucie to zamieścić,albo w strukturze,ale to jest bardziej skomplikowane,najprościej jednak pozostaje atut.
A skrypty związane ze śmiercią można naprawdę cuda robić podaj jakiś pomysł - nie ma problemu,np ja zrobiłem gdy gracz ginie trzeba wczytać grę - bo nie ma odrodzenia i po wczytaniu traci się jakąś ilość PD ,ginie drugi raz traci podwójną ilość PD itd.Naprawdę skrypty mogą troszkę kłopotów przysporzyć,ale jest na wszystko sposób.Jak się dobrze zna oryginał przecież wystarczy posłużyć się edytorem i poszukać co człowieka
interesuje - tak zrobiłem mój pierwszy moduł,przeważnie podparłem się skryptami z gry.Wiem,że to nie wszystko co Cię nurtuje,ale muszę kończyć,bo już inkaust w kałamarzu się skończył i nie mam jak pisać.

PS
Jak mógłbyś mi odpisać jak przesłać te moje moduły tu na ogólną stronę,fakt po tylu latach zostały mi tylko dwa,pierwszy i ostatni,który jest aktualnie jeszcze w robocie.Tylko proszę podać na którą wersje,bo są wykonane na podstawce,a jeśli ktoś w nowszej wersji będzie grał to trzeba je przerobić, na daną,bo netety aktualna wersja generuje błędy.
Odpowiedz
Wow, jakiś geniusz się trafił =D. Dzięki za pomoc, ja też lubię bawić się Aurorą, ale jestem w to kiepski. Wie ktoś jak się łatwo i szybko nauczyć pisać skrypty? A co do tych modów, to chyba z adminem (albo moderatorem) musisz pogadać.
Odpowiedz
Sorry, zapomniałem się zalogować . To u góry to ja pisałem xD

Mam taki jeden problem (tak, tak... znowu... ). Otóż tworzę sobie wilkołaki, ale chciałbym, żeby było tak jak w tych mitach/legendach/czy co to jest. Chodzi mi o to, że chcę aby tylko broń ze srebra mogła je ranić (w wersji 1.69 w właściwościach przedmiotu jest takie coś, jak "materiał"). Jeśli nie da się tak zrobić, to może być, że tylko broń o określonej etykiecie/ResRefie może je ranić. Proszę o pomoc.
Odpowiedz

Przejdź do cytowanego postu Użytkownik No ja... dnia czwartek, 30 września 2010, 21:30 napisał

Wow, jakiś geniusz się trafił =D. Dzięki za pomoc, ja też lubię bawić się Aurorą, ale jestem w to kiepski. Wie ktoś jak się łatwo i szybko nauczyć pisać skrypty? A co do tych modów, to chyba z adminem (albo moderatorem) musisz pogadać.

Jeśli naprawdę chcesz,nie ma problemma,mogę ci taki samouczek napisać w formie skryptu,tylko nie wiem czy tu będzie można,ponieważ jednak będzie zajmował trochę miejsca.Na samym początku,Żebyś się za bardzo nie zniechęcił bym zawarł podstawowe wiadomości i przykłady.Następnie jak już dobrze opanujesz (- przykładowo nazwijmy lekcję pierwszą) przejdziemy do drugiego etapu tzn skryptów rozbudowanych.Na koniec będziemy już mogli pisać prawdziwe skrypty,tzn wszystko czego dusza zapragnie.Powiem coś od siebie,może faktycznie wygląda tak trudno,ale jak kto lubi matematykę (np nie ja i dlatego miałem z tym problemy) w mig pojmie,bo w sumie jest to oparte,można tak powiedzieć na równaniach matematycznych.A może faktycznie nie pisać samouczka,tylko pomoc,bo napewno zauważyłeś gdy się bawisz skryptami,to jest po angielsku,a dlaczego by nie napisać po polsku?
Tak mi się wtedy wydaje,że raz dwa też Byś pojął.Akurat z tym drugim pomysłem nie największego problemu,tylko jednak ja z anglika jestem zupełny niemiec(napisałem z małej litery,aby nie czuli się obrażeni),a "tłumaczenie" byłoby bardziej praktyczne,aniżeli dosłowne i też nie wszystko byłoby przełożone,bo niektórych funkji nigdy nie używałem np abs,acos itp.Chyba jednak największym minusem jest to,że nie wiem czy Byś się doczekał, bo jak teraz otworzyłem edytor skryptów za głowę się chwyciłem - trochę tego jest,a owa pomoc byłaby w postaci haka.To na tyle.
Odpowiedz
No byłbym wdzięczny za taki samouczek.
Odpowiedz

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

Sorry, zapomniałem się zalogować . To u góry to ja pisałem xD

Mam taki jeden problem (tak, tak... znowu... ). Otóż tworzę sobie wilkołaki, ale chciałbym, żeby było tak jak w tych mitach/legendach/czy co to jest. Chodzi mi o to, że chcę aby tylko broń ze srebra mogła je ranić (w wersji 1.69 w właściwościach przedmiotu jest takie coś, jak "materiał"). Jeśli nie da się tak zrobić, to może być, że tylko broń o określonej etykiecie/ResRefie może je ranić. Proszę o pomoc.

Najprościej,aby uzyskać ten efekt wyposaż tego wilkołaka w jakiś dowolny przedmiot,np może być skóra i daj odporność na wszystkie obrażenia np 20.Skrypt umieść w skryptach potwora OnPhysicalAttacked.
void main()
{
object Gracz = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC); // Lub GetLastAttacker();

if (GetIsObjectValid(Gracz) == TRUE && GetDistanceToObject(Gracz) < 3.0)
if (GetTag(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,Gracz)) == "SrebrnyMiecznaWilkolaki")


{

ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d20(2),DAMAGE_TYPE_POSITIVE),OBJECT_SELF); //Obrazenia do ustalenia
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_DIVINE),OBJECT_SELF);

}
}
Widać,że skrypcik jest banalnie prościutki.
Rzecz jasna,że obrażenia muszą być większe od odporności.Wykonałem podobne zdarzenie,lecz troszkę inaczej rozwiązałem,a w Twoim przypadku boję się jednak o synchronizację.Jak ten pomysł nie przypadnie do gustu,to jest drugie rozwiązanie,które można zrobić na kilka sposobów,a to jeden z nich przy następnych sam pogłówkuj.
Robisz jw,tylko z tą różnicą,że generujesz osobny przedmiot na obrażenia niech będą pazury.
void main()
{

object Gracz = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
object Pazury = GetItemPossessedBy(OBJECT_SELF,"OdpornoscEnPoz");

if (GetIsObjectValid(Gracz) == TRUE && GetDistanceToObject(Gracz) < 3.0)
if (GetTag(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,Gracz)) == "SrebrnyMiecznaWilkolaki")
{
DestroyObject(Pazury);
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_POSITIVE,IP_CONST_DAMAGEBONUS_2d12),GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,Gracz),22.1); // Obrazenia do ustalenia

Jak widać też nie jest skomplikowany,tylko z tą różnicą,że zamieszczasz OnHeartbeat i pamiętaj o jednym serce bije co jedną rundę czyli 6 sekund takie może mieć maksymalne opóźnienie.

[Dodano po 18 godzinach]

Przejdź do cytowanego postu Użytkownik Eha'y dnia sobota, 2 października 2010, 18:55 napisał

No byłbym wdzięczny za taki samouczek.

Przyznaję się lojalnie,że już wcześniej czytałem,żeby nie strzępić języka po próżnicy przygotowałem już ogólny zarys i muszę się też pochwalić,iż znalazłem kilka tłumaczeń CDP,odnośnie naszego tematu.Trzeba zarazem zaznaczyć,że to jednak będzie samouczek(żebyśmy się dobrze zrozumieli) i Ty masz się uczyć,a nie dostawać gotowce na wszystkie nurtujące Cię problemy.W każdej grze samouczek też nie wyczerpuje dogłębnie tematu,chodzi tylko o ogólne panujące zasady.Pobieżnie przygotowałem i okazuje się,że pierwsza lekcja może zająć conajmniej 700 linijek,więc chyba nie wyobrażasz sobie,że tutaj będzie zamieszczony,więc podaj jakiś pomysł.Chyba orientujesz się - zresztą napisałem od kiedy mam ten internet(no teraz już upłynęło kilka dni),to w tym temacie jestem jeszcze bardziej zielony,aniżeli Ty w skryptach,więc coś wymyśl,aja biorę się do roboty.

PS
Może "Lionel"a "zgwałć" (tylko nie tak dosłownie,lepiej już Mu piwo postaw )widać,że jest kumaty i może pomoże.
Odpowiedz
Tego drugiego trochę nie rozumiem . Te pazury to broń tego wilkołaka? Ale i tak dzięki za pomoc. A co do tych "lekcji" pisania skryptów, to kiedy zaczniemy?
Odpowiedz

Przejdź do cytowanego postu Użytkownik Eha'y dnia niedziela, 3 października 2010, 14:33 napisał

Tego drugiego trochę nie rozumiem . Te pazury to broń tego wilkołaka? Ale i tak dzięki za pomoc. A co do tych "lekcji" pisania skryptów, to kiedy zaczniemy?

Właaaaaaaśnie,dobrze kombinujesz,ale ostatniej odpowiedzi też nie zrozumiałeś(wiem trudno jest zrozumieć co poeta ma na myśli),bo ja chciałem popracować nad pierwszą częścią i przesłać w całości,mniej więcej za tydzień by było gotowe,bo zauważ kończy się labowanie,a zaczyna się praca i co mogę zrobić przez 2/3 godziny?Natomiast z Twojej odpowiedzi wywnioskowałem,że chcesz na bieżąco,można to na upartego zrobić,ale czy naprawdę znasz podstawowe zasady?Jeśli nie,to jw napisałem zajęłoby to mnóstwo miejsca.Aha i jak z tą synchronizacją?,może być,czy jednak drugą opcje weźmiesz na warsztat?Czekam na szybciutką odpowiedź,bo nie wiem jak mam się przygotować.
Odpowiedz
To z wilkołakami? Pierwszy skrypt się dobrze spisuje i jego użyłem.
Odpowiedz
Koledzy, od takich spraw jest PW Przepraszam za "bawienie się w moderatora", ale straszna mieszanka się tutaj zrobiła.

Lionel co do tamtego wyzwalacza. Właściwie to nie wiem jak ma to działać To znaczy ma być coś takiego że po wejściu do danej lokacji w pewnych miejscach pojawiają się co chwilę potwory. Może to być po najściu na jakieś wybrane pole (np. tam gdzie gracz się pojawia) - ja się w sumie na tym nie znam, nie wiem, jakie są możliwości
[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

Przejdź do cytowanego postu Użytkownik Darnith dnia wtorek, 5 października 2010, 15:21 napisał

Koledzy, od takich spraw jest PW Przepraszam za "bawienie się w moderatora", ale straszna mieszanka się tutaj zrobiła.

Lionel co do tamtego wyzwalacza. Właściwie to nie wiem jak ma to działać To znaczy ma być coś takiego że po wejściu do danej lokacji w pewnych miejscach pojawiają się co chwilę potwory. Może to być po najściu na jakieś wybrane pole (np. tam gdzie gracz się pojawia) - ja się w sumie na tym nie znam, nie wiem, jakie są możliwości

Jeśli utrudniliśmy komuś korzystanie z forum,a może nawet został zawieszony,czy inne problemy wychodziły z tego powodu,to bardzo przepraszam i postaram się na przyszłość być w porządku.Jak trochę kasy uzbieram poszkodowanych na piwo zaproszę,lub colę - jak kto woli.
Odpowiedz
Następnym razem pisz ze spacjami po przecinkach, ale skoro moderatorzy nie reagowali to nie było tak źle. Nasi katowszczakowie do pobłażliwych nie należą.
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

Cytat

Jeśli utrudniliśmy komuś korzystanie z forum,a może nawet został zawieszony,czy inne problemy wychodziły z tego powodu,to bardzo przepraszam i postaram się na przyszłość być w porządku.Jak trochę kasy uzbieram poszkodowanych na piwo zaproszę,lub colę - jak kto woli.


Przyłaczam się. Sorka.
Odpowiedz
Witam wie ktoś jak zrobić by w pewnej okręślonej porze dnia np. kupiec udawał sie do domku jakiegoś bądź gdy jest robi sie ciemno idzie sie położyć spać na sennik ?
Odpowiedz
Takich skryptów, które sprawdzają, np. porę dnia, nie zalecam umieszczać zbyt wielu NPC, bo nieźle wpływa to na płynność modułu. Ale jednemu czy dwóm nie zaszkodzi.

SPOILER

void main()<br />
{<br />
object oPC = GetEnteringObject();<br />
object oNPC = GetObjectByTag("ETYKIETA NPC";<br />
object oWP = GetWaypointByTag("PUNKT NAWIGACYJNY W KTÓRYM MA ZMIERZAĆ GDY JEST NOC");<br />
object oTargetA = GetWaypointByTag("PUNKT NAWIGACYJNY W DOMKU DO KTÓREGO MA SIĘ UDAĆ");<br />
object oTargetB = GetWaypointByTag("PUNKT NAWIGACYJNY MIEJSCA GDZIE SPRZEDAJE");<br />
<br />
if(GetIsPC(oPC))<br />
    {<br />
    if (GetIsNight())<br />
        {<br />
        AssignCommand(oNPC, ActionForceMoveToObject(oWP));<br />
        DelayCommand (2.0, AssignCommand (oNPC, JumpToObject (oTargetA)));<br />
        }<br />
    else<br />
        {<br />
        AssignCommand (oNPC, JumpToObject (oTargetB));<br />
        }<br />
    }<br />
}



W OnEnter wyzwalacza umieszczonego na ziemi. Po wejściu na wyzwalacz przez postać, gra sprawdzi porę dnia. Nocą zmusi NPC do pójścia w konkretnym kierunku [oWP], by po 2 sekundach przemieścić go do domku [oTargetA]. Jeżeli jest dzień, przerzuci go do miejsca, gdzie handlował [oTargetB]. Wyzwalacz powinien kształtować się w obrębie obszaru tak, by za każdym razem, gdy postać wyjdzie z jakiegoś budynku, gra od razu sprawdziła czy handlarz nie powinien iść do pracy. W innym wypadku może się okazać, że w dzień handlarz będzie w domu, aż gracz nie nadepnie na ten, aktualnie mniejszy, wyzwalacz, co byłoby nienaturalne.
Odpowiedz
Lionel,

A możesz mi powiedzieć skąd posiadasz takie informacje? Skąd wiesz ile 'energii' zżera odpalenie funkcji GetIsNight? Bo mnie się wydaje, że jest to bardzo prosta i lekka funkcja, nawet bym zaryzykował - lżejsza niż GetGold, bo operuje tylko dwiema cyferkami: 1 - jest noc, 0 - nie ma nocy.

Co do samego skryptu - niby koncepcja dobra, ale nie lepiej zrobić to w Enterze miasta? Ewentualnie w HB, żebyś miał pewność, że nie będzie dziwnych sytuacji, ale jakie jest to zdarzenie każdy widzi. Wcale nie musiałoby to być ciężkie, a jeśli GetIsNight jest tak straszliwie żarłoczną funkcją to i bez niej można by się obyć - DelayCommand.

To jeszcze odpowiedź do starszych wiadomości: zwiększenie maksymalnego poziomu nie jest możliwe w normalny sposób, czyli nigdy wam się nie pokaże, że postać zdobyła 41 poziom. Można to jednak zrobić sztucznie, za pomocą LetoScript - z tego co mi wiadomo działa tylko w grze wieloosobowej. Tym sposobem można zrobić i 200, albo bez limitu, to nie ma znaczenia. Równie dobrze można to zrobić za pomocą właściwości przedmiotu, wystarczy zmodyfikować odpowiednio 2da i dodać wszystkie atuty, wtedy fakt - działałoby w grze jednoosobowej.
Odpowiedz
← Neverwinter Nights

Skrypty, buildy i coś jeszcze - Odpowiedź

Wczytywanie...