Forums
Games
Cyberpunk 2077 Thronebreaker: The Witcher Tales GWENT®: The Witcher Card Game The Witcher 3: Wild Hunt The Witcher 2: Assassins of Kings The Witcher The Witcher Adventure Game
Jobs Store Support Log in Register
Forums - CD PROJEKT RED
Menu
Forums - CD PROJEKT RED
  • Najnowsze
  • AKTUALNOŚCI
  • DZIAŁ OGÓLNY
    WIEDŹMIN GRA PRZYGODOWA
  • FABUŁA
    WIEDŹMIN WIEDŹMIN 2 WIEDŹMIN 3 WIEDŹMIŃSKIE OPOWIEŚCI
  • ROZGRYWKA
    WIEDŹMIN WIEDŹMIN 2 WIEDŹMIN 3 MODY (WIEDŹMIN) MODY (WIEDŹMIN 2) MODY (WIEDŹMIN 3)
  • DZIAŁ TECHNICZNY
    WIEDŹMIN WIEDŹMIN 2 (PC) WIEDŹMIN 2 (XBOX) WIEDŹMIN 3 (PC) WIEDŹMIN 3 (PLAYSTATION) WIEDŹMIN 3 (XBOX) WIEDŹMIN 3 (SWITCH)
  • SPOŁECZNOŚĆ
    TWÓRCZOŚĆ FANÓW (ŚWIAT WIEDŹMINA) TWÓRCZOŚĆ FANÓW (ŚWIAT CYBERPUNKA) INNE GRY
  • RED Tracker
    Cyberpunk Seria gier Wiedźmin GWINT
WIEDŹMIN
WIEDŹMIN 2
WIEDŹMIN 3
MODY (WIEDŹMIN)
MODY (WIEDŹMIN 2)
MODY (WIEDŹMIN 3)
Menu

Register

TnZ Scripting Tricks FAQ (update:18-09-2008, aktualnie skryptów: 23)

+
Prev
  • 1
  • …

    Go to page

  • 11
  • 12
  • 13
  • 14
  • 15
  • …

    Go to page

  • 18
Next
First Prev 13 of 18

Go to page

Next Last
T

Tuszu0x

Forum veteran
#241
Dec 26, 2008
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?
 
D

dan_123

Senior user
#242
Dec 26, 2008
Death13 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?
Click to expand...
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 ekranie
Code:
RunClientLua("g_GuiInGame.lm_pInfoPanel:CleanUp()");
I teraz jak np siadam przy ognisku to mi nic nie wyświetla bo mam już ten wpis we własnym dzienniku itd. dla pozostałych wpisów.A mój problem:1. Czy można pole Description obiektu pobrac jakąś komendą w skrypcie nss. W zasadzie moze to też byc komenda lua bo chodzi mi o pobieranie tooltipów do wyświetlania onelinerów z poziomu lua.2. Jakakolwiek komenda do zapisania gry po np wejsciu na trigger (również lua bądź nss).EDIT: komenda DoSinglePlayerAutoSave()3. Dodałem własny eliksir. Jak zrobić, żeby ten eliksir nie wyświetlał się w inventory jako nieznany eliksir? Eliksir jest jeden na całą grę otrzymywany fabularnie. Nazwa i opis eliksiru z recipe.dlg pojawia się dopiero jak wypiję ten eliksir. Dla eliksirów z gry "nazwę" nadaje im wykonanie skryptu rec_it_potion_xx. Ktoś wie co robi ten skrypt?EDIT: Problem 3 już rozwiązany. Po pierwsze trochę przekombinowałem bo mogłem dodać zwykły napój ze skryptem na onused, ale z eliksirem też sobie poradziłem. Podmieniłem nazwę it_potion_109 na swoją HexEditorem w skompilowanym skrypcie i działa.
 
D

dan_123

Senior user
#243
Dec 29, 2008
Jak zablokować możliwość wyłączenia cutsceny?Co prawda ustawienie parametru bPureMode = 0 w komendzie PlayCutscene blokuje mozliwość wyłączenia filmu, ale włącza też oryginalną lokację i widok postaci na lokacji. Mi potrzebna jest możliwość zablokowania filmu bez widoku postaci.I drugi problem: O co chodzi z komendą GetName(). Dla języka polskiego jako język tekstów pobiera mi nazwę obiektu podwójnie, a dla języka angielskiego najpierw nazwę angielską, a potem nazwę polską. Pewnym rozwiązaniem jest np wstawianie kropki na końcu nazwy i obcinanie stringa na tej kropce, ale dlaczego wogóle tak dziwnie pobiera nazwę.
 
A

ailinon

Senior user
#244
Dec 30, 2008
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
 
D

dan_123

Senior user
#245
Dec 30, 2008
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
Click to expand...
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ź
 
F

fantasta

Forum veteran
#246
Dec 30, 2008
dan123 said:
3. Dodałem własny eliksir.
Click to expand...
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?
 
K

Kageru

Senior user
#247
Dec 30, 2008
fantasta said:
fantasta said:
3. Dodałem własny eliksir.
Click to expand...
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?
Click to expand...
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ść:
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})
Click to expand...
 
D

dan_123

Senior user
#248
Dec 30, 2008
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ść:
Click to expand...
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.
 
A

adriano_120292

Senior user
#249
Dec 31, 2008
Witajcie czy idzie odpalić skryptem takie rzeczy(Będę pisał obrazowo bo nie wiem jak inaczej to wytłumaczyć): 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.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.
 
K

Kageru

Senior user
#250
Dec 31, 2008
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.
Click to expand...
2)Daje na On Enter triggera:
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);}
Click to expand...
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");
 
A

adriano_120292

Senior user
#251
Dec 31, 2008
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ć.
 
F

Firnomir

Forum veteran
#252
Dec 31, 2008
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ć.
Click to expand...
IMO np. if(GetLocalInt(oPC, "30") == 0)
 
T

Tuszu0x

Forum veteran
#253
Dec 31, 2008
Firnomir said:
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ć.
Click to expand...
IMO np. if(GetLocalInt(oPC, "30") == 0)
Click to expand...
Muszę Cię zmartwić Fir, ale skrypt jest dobrze napisany :)czas & time to zmienne w skrypcie, zgodnie z deklaracją przyjmują daną wartość w zależności od zdarzeń.
 
A

adriano_120292

Senior user
#254
Jan 1, 2009
No to trudno się mówi u mnie jak zwykle coś nie działa :( na szczęście obędzie się bez tych skryptów. Więc ja tylko ponawiam pierwsze pytanie bo skrypt ten ułatwiłby i przyśpieszył prace nad przygodą, którą składam ;D 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. pozdrawiam i z góry dziękuje adriano
 
D

dan_123

Senior user
#255
Jan 1, 2009
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.
Click to expand...
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.
Code:
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}}
Nie mam teraz dostępu do kompa z grą, żeby sprawdzić czy coś się nie machnałem, więc jeśli się nie skompiluje pisz to poprawię.EDIT: poprawione z If na if
 
A

adriano_120292

Senior user
#256
Jan 2, 2009
Oto chodziło działa dobrze ;D tylko że w trzeciej linijce If trzeba zmienić na małą literkę czyli if. Jeszcze raz tobie i wam dzięki za pomoc. Na podstawie skryptu od DAN_123 zrobiłem taki.
Code:
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}}
On ma odtworzyć efekt bariery. Skrypt się kompiluje i wygląda dobrze tylko że nie działa :( Więc gdzie jest bląd? Z poważaniem Adriano
 
A

ailinon

Senior user
#257
Jan 2, 2009
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
 
A

adriano_120292

Senior user
#258
Jan 2, 2009
Ailinon 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
Click to expand...
No więc wszystko naraz prócz
Nie znajduje obiektu waypointu
Click to expand...
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.
 
A

ailinon

Senior user
#259
Jan 2, 2009
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ę:
Code:
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 }}
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..?-- Sinus
 
A

adriano_120292

Senior user
#260
Jan 2, 2009
Ailinon 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ę:
Code:
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 }}
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..?-- Sinus
Click to expand...
to ta linijka
CreateVisualEffectAtObject("fx_magtrap04","",GetObjectByTag("q3013_barrier_fx"));
Click to expand...
sprawia że efekt dzieje się na na danym obiekcie :eek: bo jak tak to nie oto mi chodzi, ja raczej chce włączyć tą barierę żeby gracz nie mógł odejść z pola walki zanim ta się nie skończy.
 
Prev
  • 1
  • …

    Go to page

  • 11
  • 12
  • 13
  • 14
  • 15
  • …

    Go to page

  • 18
Next
First Prev 13 of 18

Go to page

Next Last
Share:
Facebook Twitter Reddit Pinterest Tumblr WhatsApp Email Link
  • English
    English Polski (Polish) Deutsch (German) Русский (Russian) Français (French) Português brasileiro (Brazilian Portuguese) Italiano (Italian) 日本語 (Japanese) Español (Spanish)

STAY CONNECTED

Facebook Twitter YouTube
CDProjekt RED Mature 17+
  • Contact administration
  • User agreement
  • Privacy policy
  • Cookie policy
  • Press Center
© 2018 CD PROJEKT S.A. ALL RIGHTS RESERVED

The Witcher® is a trademark of CD PROJEKT S. A. The Witcher game © CD PROJEKT S. A. All rights reserved. The Witcher game is based on the prose of Andrzej Sapkowski. All other copyrights and trademarks are the property of their respective owners.

Forum software by XenForo® © 2010-2020 XenForo Ltd.