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

  • 14
  • 15
  • 16
  • 17
  • 18
Next
First Prev 16 of 18

Go to page

Next Last
C

Czopera

Senior user
#301
Mar 19, 2009
Tak.Jeszcze nie napisałem tego błędu przy próbie zapisu skryptu:
Code:
NWNScript Compiler: c:\documents and settings\kd\ustawienia lokalne\dane aplikacji\the witcher\temp\__resourcesunpacktmp\start did not compile successfully.NWNScript Compiler: start.nss(3): ERROR: UNDEFINED IDENTIFIER (AddJournalEntry)
 
K

Kageru

Senior user
#302
Mar 19, 2009
Czopera123 said:
Tak.Jeszcze nie napisałem tego błędu przy próbie zapisu skryptu:
Code:
NWNScript Compiler: c:\documents and settings\kd\ustawienia lokalne\dane aplikacji\the witcher\temp\__resourcesunpacktmp\start did not compile successfully.NWNScript Compiler: start.nss(3): ERROR: UNDEFINED IDENTIFIER (AddJournalEntry)
Click to expand...
Coś musiałeś zmienić w skrypcie Deatha, bo nie ma w nim błędu. Mi się normalnie kompiluje.
Czopera123 said:
@dan_123, być może. Ja zawsze dodawałem, tak dla bezpieczeństwa. Są dwie możliwości. Przy dodaniu wpisu odhacza się coś w journal.2da. Albo brany jest ID danego wpisu w hidden.dlgDla bezpieczeństwa i spokoju, radziłbym ci zrobić. Albo przetestować, czy działa bez owego DLG.
Click to expand...
Ja też nigdy nie robiłem pliku hidden.dlg i wszystko mi działa bez zarzutu ;)
 
T

Tuszu0x

Forum veteran
#303
Mar 19, 2009
Kageru said:
Coś musiałeś zmienić w skrypcie Deatha, bo nie ma w nim błędu. Mi się normalnie kompiluje.
Click to expand...
Nie ma innej możliwości. ;)Hm.. To ułatwia sprawę, jeśli chodzi o ukryte wpisy. ;)
 
C

Czopera

Senior user
#304
Mar 19, 2009
Oto mój skrypt "start" => http://img5.imageshack.us/img5/6614/startt.pngChyba jest identyczny ze skryptem podanym przez Death13 :(
 
D

dan_123

Senior user
#305
Mar 23, 2009
Czy istnieje jakaś komenda sprawdzająca czy na obiekt jest nałożony efekt wizualny, ewentualnie komenda która usunie wszystkie efekty wizualne z obieku za jednym zamachem, bez sprawdzania co to za efekty.
 
T

Tuszu0x

Forum veteran
#306
Mar 23, 2009
Nie znalazłem. A co chcesz uzyskać? Tzn, nie będziesz wiedział, czy odpalił się jakiś efekt, czy nie chce ci się ręcznie niszczyć każdego? :p
 
D

dan_123

Senior user
#307
Mar 23, 2009
Death13 said:
Nie znalazłem. A co chcesz uzyskać? Tzn, nie będziesz wiedział, czy odpalił się jakiś efekt, czy nie chce ci się ręcznie niszczyć każdego? :p
Click to expand...
Mam obiekt który ma o określonyćh godzinach naprzemiennie mieć określony efekt. Zrobiłem to w Daily Scripts na określone godziny. Problem pojawia się jeśli gracz raz za razem prześpi po 24 godz na przykład. Wtedy teoretycznie skrypty powinny się jeden po drugim wykonać, ale od czasu do czasu coś jest nie tak i tak jakby ginęła jedna z kolejnych przełączeń efektu. Stąd pomysł, żeby kontrolnie pobrać czy na obiekcie jest ten co trzeba efekt i jesli nie to naniesc poprawki.
 
T

Tuszu0x

Forum veteran
#308
Mar 28, 2009
Obawiam się dan, że takiej funkcji po prostu nie ma. :-\
 
M

maciekwitcher

Senior user
#309
Mar 30, 2009
A ja zapytam się tak. Jest skrypt na zmiane apperance jakiegos przedmiotu, czy innej postaci. A jak np. zmienić wygląd gracza(w tym wypadku Geralta)? Na np. osiłka z karczmy?
 
T

Tuszu0x

Forum veteran
#310
Mar 30, 2009
Code:
void main(){  object oTarget = GetObjectByTag("my_tag");  int iAppearance = 1;  SetCreatureAppearance(oTarget, iAppearance);}
Gdzie numerek to postać z appearance.2da.Sporo skryptów masz na pierwszej stronie lub TUTAJ.
 
M

maciekwitcher

Senior user
#311
Mar 31, 2009
Niach, niach. To proste jest! Ale chyba gracz nie ma tagu, a ja chce żeby zmieniło gracza :dead:
Code:
void main(){ SetCreatureAppearance(GetFirstPC(), numer);}Niekatualne ale dla potrzebujących:)
 
F

fantasta

Forum veteran
#312
Mar 31, 2009
Gracz ma tag. Ten tag to - jeśli się nie mylę - "Wiedzmin". Ale pobierz tag funkcją GetTag i sprawdź...
 
M

maciekwitcher

Senior user
#313
Mar 31, 2009
fantasta said:
Gracz ma tag. Ten tag to - jeśli się nie mylę - "Wiedzmin". Ale pobierz tag funkcją GetTag i sprawdź...
Click to expand...
Racja ;)Ale podsunąłeś mi niezły pomysł.Oren dla ciebie :)
 
T

Tuszu0x

Forum veteran
#314
Mar 31, 2009
Racja. Z pośpiechu wkleiłem podstawowy skrypt. Ogólnie obiekt jako gracza najlepiej i najbezpieczniej pobierać poprzez funkcję GetFirstPC(); ;)
 
P

piochu.403

Forum veteran
#315
May 8, 2009
Sorka że troche nie w temacie ale kilkanaście stron przed tym ktoś się pytał"Czy jest sktypt , dzięki któremu otworzy sie dziennik na wpisie o danej postaci?"A mu ktośtam odpowiedział, że da sie otworzyć dziennik, ale nie wiedział jak przełączyć zakładki. Mianowicie, jak doda ci się wpis w dzienniku, a ty dziennik otworzysz to otworzy ci sie na ostatnio dodanym/otwieranym wpisie, czyli np wystarczy dodać do wpisu powiedzmy spację (albo edytować na taki sam), a następnie skryptowo otworzyć dziennik
 
T

Tuszu0x

Forum veteran
#316
Oct 5, 2009
Po ostatniej rozmowie w Akcie I (rozmowa z strażnikiem), przechodzimy do II Aktu, w którym na początku trafiamy do więzienia. Wówczas cały nasz ekwipunek trafia do depozytu.Czy ktoś wie, jak napisać skrypt, który przeniósłby ekwipunek do takiego schowka?Jakie znacie funkcje, które tworzą (przenoszą) przedmiot w inventory przedmiotu, tudzież NPCa?Schowek działa trochę inaczej, niż zwykłe placeables, z których można tylko wyciągać przedmioty. Jak skryptami można manipulować przedmiotami w tym schowku?
 
F

fantasta

Forum veteran
#317
Oct 5, 2009
Chyba znalazłem funkcję pomocną w przenoszeniu przedmiotów - trzeba posłużyć się CopyObject. Czyli powiedzmy:
Code:
object oPC=GetFirstPC();object oSkrzynia=GetObjectByTag("skrzynka"); location lLoco=GetLocation(oPC); object oFirst=GetFirstItemInInventory(oPC); CopyObject(oFirst,lLoco,oSkrzynia);
Teraz skrypt trzeba przerobić, bo pobiera tylko jeden, pierwszy napotkany w ekwipunku gracza obiekt i kopiuje go do skrzyni o tagu "skrzynka". Przydałaby się pętla pobierająca kolejny przedmiot (GetNextItemInInventory), kopiująca do skrzyni i niszcząca przedmiot w ekwipunku, po czym zatrzymująca się po przekopiowaniu wszystkich przedmiotów. Zdaje się, że nie trzeba sobie zawracać głowy poleceniem GetItemStackSize, czyli liczeniem ilości poszczególnych przedmiotów tego samego rodzaju, bo CopyObject kopiuje wszystkie elementy danego typu.EDIT Pętla mogłaby wyglądać tak:
Code:
object oPC=GetFirstPC();  object oSkrzynia=GetObjectByTag("skrzynka");  location lLoco=GetLocation(oPC);  object oPrzedmiot=GetFirstItemInInventory(oPC);  while (oPrzedmiot!=OBJECT_INVALID)  {CopyObject(oPrzedmiot,lLoco,oSkrzynia); DestroyObject(oPrzedmiot); oPrzedmiot=GetNextItemInInventory(oPC);  }
Przekopiują się wszystkie przedmioty z ekwipunku oprócz broni, teraz kwestia brzmi, co zrobić z mieczami,bronią.Edit 2: Można uprościć lekko skrypt i zastosować CopyItem i funkcję GetItemInSlot do pobierania broni:
Code:
void main(){  object oPC=GetFirstPC();  object oSkrzynia=GetObjectByTag("skrzynka");  object oPrzedmiot=GetFirstItemInInventory(oPC);    while (oPrzedmiot!=OBJECT_INVALID)   {CopyItem(oPrzedmiot,oSkrzynia);  DestroyObject(oPrzedmiot);  oPrzedmiot=GetNextItemInInventory(oPC);   }			object oMieczSrebrny = GetItemInSlot(INVENTORY_SLOT_SILVERSWORD, oPC);  CopyItem(oMieczSrebrny,oSkrzynia);	 DestroyObject(oMieczSrebrny);	 	 	object oMieczStalowy = GetItemInSlot(INVENTORY_SLOT_STEELSWORD, oPC);  CopyItem(oMieczStalowy,oSkrzynia);	 DestroyObject(oMieczStalowy);  }
 
K

Kageru

Senior user
#318
Oct 5, 2009
fantasta dobrze mówi, tylko że jego skrypt nie skopiuje eliksirów ze slotów w zbroi, dodatkowych broni, trofeum i pierścieni. Trzeba uwzględnić wszystkie sloty, czyli całość wyglądałaby tak:
Code:
void main(){  object oPC=GetFirstPC();  object oSkrzynia=GetObjectByTag("skrzynka");  object oPrzedmiot=GetFirstItemInInventory(oPC);    while (oPrzedmiot!=OBJECT_INVALID)   {CopyItem(oPrzedmiot,oSkrzynia);  DestroyObject(oPrzedmiot);  oPrzedmiot=GetNextItemInInventory(oPC);   }			object oMieczSrebrny = GetItemInSlot(INVENTORY_SLOT_SILVERSWORD, oPC);  CopyItem(oMieczSrebrny,oSkrzynia);	 DestroyObject(oMieczSrebrny);	 	 	object oMieczStalowy = GetItemInSlot(INVENTORY_SLOT_STEELSWORD, oPC);  CopyItem(oMieczStalowy,oSkrzynia);	 DestroyObject(oMieczStalowy);	 	 object oPrawyPierscien = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC);  CopyItem(oPrawyPierscien,oSkrzynia);	 DestroyObject(oPrawyPierscien);	 	 object oLewyPirescien = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC);  CopyItem(oLewyPirescien,oSkrzynia);	 DestroyObject(oLewyPirescien);	 	 object oBigWeapon = GetItemInSlot(INVENTORY_SLOT_BIGWEAPON, oPC);  CopyItem(oBigWeapon,oSkrzynia);	 DestroyObject(oBigWeapon);	 	 object oTrofeum = GetItemInSlot(INVENTORY_SLOT_TROPHY, oPC);  CopyItem(oTrofeum,oSkrzynia);	 DestroyObject(oTrofeum);	 	 object oMalaBron = GetItemInSlot(INVENTORY_SLOT_SHORT2, oPC);  CopyItem(oMalaBron,oSkrzynia);	 DestroyObject(oMalaBron);	 	 object oElixir1 = GetItemInSlot(INVENTORY_SLOT_ELIXIR1, oPC);  CopyItem(oElixir1,oSkrzynia);	 DestroyObject(oElixir1);	 	 object oElixir2 = GetItemInSlot(INVENTORY_SLOT_ELIXIR2, oPC);  CopyItem(oElixir2,oSkrzynia);	 DestroyObject(oElixir2);	 	 object oElixir3 = GetItemInSlot(INVENTORY_SLOT_ELIXIR3, oPC);  CopyItem(oElixir3,oSkrzynia);	 DestroyObject(oElixir3);  }
Nie brałem pod uwagę zbroi, bo chyba nie ma potrzeby jej zabierania, ale jeśli chcesz to jej slot to INVENTORY_SLOT_CARMOR.
 
D

dan_123

Senior user
#319
Oct 5, 2009
Kag said:
Trzeba uwzględnić wszystkie sloty, czyli całość wyglądałaby tak:
Code:
void main(){ object oPC=GetFirstPC();  object oSkrzynia=GetObjectByTag("skrzynka");  object oPrzedmiot=GetFirstItemInInventory(oPC);  while (oPrzedmiot!=OBJECT_INVALID)  {CopyItem(oPrzedmiot,oSkrzynia); DestroyObject(oPrzedmiot); oPrzedmiot=GetNextItemInInventory(oPC);  }}
Click to expand...
Nie testowałem rozwiązania jeszcze, ale czy nie będzie problemu przy DestroyObject. Usunie jeden przedmiot tego samego typu, a co z resztą. Czy fukncja GetNextItemInInventory() nie da OBJECT_INVALID jak dojdzie do końca ekwipunku. No chyba, że GetNextItemInInventory leci po kolei np 10 razy jesli jest 10 sztuk i dopiero przechodzi do kolejnego przedmiotu.
 
F

fantasta

Forum veteran
#320
Oct 5, 2009
No miałem jeszcze napisać o tych dodatkowych slotach, ale już nie chciałem robić EDIT 3 i nie miałem czasu na to. Nie ma problemu przy DestroyObject : CopyItem czy CopyObject pobiera wszystkie przedmioty danego typu (testowałem na 10 butelkach dobrego alkoholu:)
 
Prev
  • 1
  • …

    Go to page

  • 14
  • 15
  • 16
  • 17
  • 18
Next
First Prev 16 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.