A w którym momencie wyswietla Ci się coś takiego?Ja dodałem wpisy do dziennika, na końcu wyczyściłem, zeby nie wyswietliło mi tych tutoriali na ekranieDeath13 said:Ale mi chodzi o niewyświetlanie tutoriali. Przy wyrzuceniu wszystkich wpisów z tutorial.dlg i wpisów z journal.2da dot. tutoriali wyświetla się takie coś:Jak zrobić, żeby to w ogóle się nie wyświetlało?
RunClientLua("g_GuiInGame.lm_pInfoPanel:CleanUp()");
Chodziło mi o takie cutscenki z których wynika dalsza fabuła więc wypadałoby, żeby potoczyły się swoim torem, bez przerywania. Chociaż jak to teraz testuje to też już się zaczynam zastanawiać czy nie zrobić jednak wszystkie przerywane, bo kolejny raz czekać nawet 10-15 sekund to .... :dead:W takim razie rozwiązanie przerywania cutsceny uważam za obecnie wstrzymany problem. Niemniej jeśli ktoś trafi przypadkiem na sposób jak to zrobić to prosze o odpowiedźAilinon said:dan_123, wybacz trollopodobną odpowiedź, ale czy masz 100% pewność, że chcesz zablokować możliwość przerwania scenki..? Ja osobiście morduję gołymi mackami, gdy nie mogę jakiegoś intra czy przerywnika czy dialogu ESCejpem czy innym klawiszem przerwać...-- Sinus
Pytanie do dan_123: Czy twój eliksir wyświetla swoją nazwę(po zażyciu) gdy najedzie się kursorem na medalion(tam gdzie są statystyki)? Jeśli tak, to jak to zrobiłeś?Jestem właśnie na etapie dodawania własnego eliksiru, ale nie wyświetla swojej nazwy (wyświetla tylko w inventory i dzienniku). Czy nie trzeba do tego modyfikować plików .tlk?dan123 said:3. Dodałem własny eliksir.
Musisz dodać odpowiedną umiejętność dla eliksiru. Tworzysz ją w pliku potion_abl.lua i umieszczasz ją w szablonie eliksiru lub dodajesz ją poprzez AddAbility w skrypcie startowym eliksiru. Tu masz przykładową umiejętność:fantasta said:Pytanie do dan_123: Czy twój eliksir wyświetla swoją nazwę(po zażyciu) gdy najedzie się kursorem na medalion(tam gdzie są statystyki)? Jeśli tak, to jak to zrobiłeś?Jestem właśnie na etapie dodawania własnego eliksiru, ale nie wyświetla swojej nazwy (wyświetla tylko w inventory i dzienniku). Czy nie trzeba do tego modyfikować plików .tlk?fantasta said:3. Dodałem własny eliksir.
DefAbility({Name = "potion_016", // Nazwa którą należy podać w funkcji AddAbility(będzie się też wyświetlać w spisie zdolności)Icon = "ice_potion_016", // Ikonka pod medalionem// Nazwę i opis eliksiru zmieniamy w pliku dialog_5.tlkAbilityName = "1940", // Nazwa eliksiruAbilityDescription = "1941", // Opis działania eliksiruStartingAction = "potion016_start", // Skrypt startowyEndingAction = "potion016_end", // Skrypt końcowyPositive = true})
Tego mi właśnie było trzeba. Mój eliksir ma własciwości łączone eliksirów już wystepujących w grze, więc nie potrzebowalem konieczności wyświetlania nazwy przy medalionie bo tam pojawiały się dane z eliksirów z gry. Z przykładem, który podałeś może przerobię to na całkowicie własny eliksir.Kageru said:Musisz dodać odpowiedną umiejętność dla eliksiru. Tworzysz ją w pliku potion_abl.lua i umieszczasz ją w szablonie eliksiru lub dodajesz ją poprzez AddAbility w skrypcie startowym eliksiru. Tu masz przykładową umiejętność:
2)Daje na On Enter triggera:Adriano120292 said:2) Chce zrobić coś takiego że jak gracz wejdzie na wyzwalacz(tigers) zostaną naładowane jego punkty życia i many. Ale żeby nie mógł stać na tym bez przerwy i być nieśmiertelny skrypt powinien aktywować się co 30 sekund tzn. Po wejściu na wyzwalacz(tigers) naładowują nam się punkty życia i many ale jeśli chcemy z tego wyzwalacza skorzystać drugi raz musimy czekać te 30 sekund by znów można było z niego skorzystać.3) dało by się uruchamiać skryptem efekty eliksirów. np. po wejściu na wyzwalacz(Tigers) uruchamia się nam efekt zamieci. i tak jak po wyżej żeby skorzystać z danego wyzwalacza drugi raz należy poczekać np.60 sekund.
3) Podobnie jak w punkcie drugim, tylko zamiast 30 dajesz 60. A żeby był efekt eliksiru, musisz wyzwolić skrypt za to odpowiedzialny, np. dla Zamieci ExecuteScript("it_potion_019");object oPC = GetFirstPC();if(GetLocalInt(oPC, "czas") == 0){int time = GetTimeSecond()+60*GetTimeMinute()+3600*GetTimeHour()+86400*GetCalendarDay();SetLocalInt(oPC, "time", time);SetLocalInt(oPC, "czas", 1);SetCurrentVitalityPoints(GetMaxVitalityPoints(oPC), oPC);SetCurrentEndurancePoints(GetMaxEndurancePoints(oPC), oPC);}int time1 = GetTimeSecond()+60*GetTimeMinute()+3600*GetTimeHour()+86400*GetCalendarDay();if(GetLocalInt(oPC, "time")+30*15 < time1) // Tu zmieniasz odstęp czasowy(30), *15 jeśli masz ustawione w module 4 minuty na godzinę{SetLocalInt(oPC, "czas", 0);}
IMO np. if(GetLocalInt(oPC, "30") == 0)Adriano120292 said:A trzeba coś wpisywać zamiast "time" , "czas" bo jak tak to co? bo wyskakuje mi podczas kompilacji:NWNScript Compiler: zycie_test.nss(3): ERROR: INVALID DECLARATION TYPE o co może mu ZNOWU chodzić.
Muszę Cię zmartwić Fir, ale skrypt jest dobrze napisanyFirnomir said:IMO np. if(GetLocalInt(oPC, "30") == 0)Firnomir said:A trzeba coś wpisywać zamiast "time" , "czas" bo jak tak to co? bo wyskakuje mi podczas kompilacji:NWNScript Compiler: zycie_test.nss(3): ERROR: INVALID DECLARATION TYPE o co może mu ZNOWU chodzić.
Ja to robię w ten sposób, że stawiam w miejscu gdzie coś się ma pojawić waypoint o jakimś tagu np "tag_waypoint"Potem w skrypcie pobieram położenie tego waypointa i w tym miejscu tworzę obiekt na podstawie nazwy szablonu.Nazwę szablonu wpisujesz bez rozszerzenia.Adriano120292 said:1) Powiedźmy że Geralt jest w krypcie i jak przejdzie przez wyzwalacz(tigers) to za jego plecami ma pojawić się góra kamieni która uniemożliwia mu przejście. Ogólnie chodzi o to żeby pojawił się w danym miejscu jakiś obiekt którego tam nie było.
void main (){if (GetEnteringObject() == GetFirstPC()) //to żeby tworzenie obiektu wyzwalało wejście gracza a nie każdego npca w pobliżu.{object way = GetObjectByTag("tag_waypoint"); //tag waypointa gdzie ma pojawić sie nowy obiektlocation lLoc = GetLocation(way); //miejsce pojawienia sie obiektuCreateObject(OBJECT_TYPE_PLACEABLE,"nazwa_szablonu",lLoc,FALSE,"tag_tworzonego_obiektu"); //utworzenie obiektu}}
void main (){if (GetEnteringObject() == GetFirstPC()) //to żeby tworzenie obiektu wyzwalało wejście gracza a nie każdego npca w pobliżu.{object way = GetObjectByTag("kosth_block"); //tag waypointa gdzie ma pojawić sie nowy obiektlocation lLoc = GetLocation(way); //miejsce pojawienia sie obiektuCreateVisualEffectAtObject("fx_magtrap04","",GetObjectByTag("q3013_barrier_fx")); //utworzenie obiektu}}
No więc wszystko naraz próczAilinon said:Na oko wygląda dobrze - możesz sprecyzować, w jaki sposób "nie działa"? Nie uruchamia się w ogóle? Nie tworzy blokady? Nie tworzy efektu? Nie znajduje obiektu waypointu? Dodaj parę PrintStringów tu i ówdzie i zdiagnozuj gdzie się psuje.-- Sinus
bo to nie potrafię zdefiniować, ponieważ bariera się nie pojawia i jej nigdzie nie widać. Gdy gracz idzie nic go nie zatrzymuje. Jednym słowem nic się nie dzieje zero reakcji.Nie znajduje obiektu waypointu
void main (){ PrintString("Ktoś wszedł"); if (GetEnteringObject() == GetFirstPC()) //to żeby tworzenie obiektu wyzwalało wejście gracza a nie każdego npca w pobliżu. { PrintString("Gracz wszedł!"); object way = GetObjectByTag("kosth_block"); //tag waypointa gdzie ma pojawić sie nowy obiekt PrintObject(way); location lLoc = GetLocation(way); //miejsce pojawienia sie obiektu CreateVisualEffectAtObject("fx_magtrap04","",GetObjectByTag("q3013_barrier_fx")); //utworzenie obiektu }}
to ta linijkaAilinon said:No to skoro wszystko naraz, czyli skrypt się w ogóle nie uruchamia, nawet nie dochodzi do sprawdzenia czy wchodzący to gracz, to skrypt masz źle podpięty albo nie skompilowany na nowo.Proponuję:Po komunikatach w logu dowiesz się, co zawiodło. Na przykład waypoint zwróci 7fff... czyli OBJECT_INVALID.A w ogóle po co wydobywasz lLoc, skoro tej zmiennej nigdzie nie używasz? Nie tworzysz też żadnego obiektu, tylko tworzysz efekt "fx_magtrap04" na obiekcie o tagu "q3013_barrier_fx"... Na pewno o to Ci chodzi..?-- SinusCode:void main (){ PrintString("Ktoś wszedł"); if (GetEnteringObject() == GetFirstPC()) //to żeby tworzenie obiektu wyzwalało wejście gracza a nie każdego npca w pobliżu. { PrintString("Gracz wszedł!"); object way = GetObjectByTag("kosth_block"); //tag waypointa gdzie ma pojawić sie nowy obiekt PrintObject(way); location lLoc = GetLocation(way); //miejsce pojawienia sie obiektu CreateVisualEffectAtObject("fx_magtrap04","",GetObjectByTag("q3013_barrier_fx")); //utworzenie obiektu }}
sprawia że efekt dzieje się na na danym obiekcieCreateVisualEffectAtObject("fx_magtrap04","",GetObjectByTag("q3013_barrier_fx"));