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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • …

    Go to page

  • 18
Next
First Prev 5 of 18

Go to page

Next Last
D

dan_123

Senior user
#81
Jul 20, 2008
Napisałem sobie skrypt, który miał tworzyć o okreśłonej godzinie kilka obiektów na określonych waypointach. Problem jest taki, że co prawda tworzą się obiekty, ale jeśli chwile po automatycznym odpaleniu skryptu wejde do chaty i zaraz wyjdę gra zawisa.Kod, który działa i nie zawiesza gry wygląda tak (tworzy jeden obiekt) :
Code:
void tworz(string tag_waypoint , string nazwa_szabl , string newtag){object oway = GetObjectByTag (tag_waypoint);location war = GetLocation(oway);CreateObject(OBJECT_TYPE_PLACEABLE , nazwa_szabl , war , FALSE , newtag);}void main(){PrintString("tworzy bialy dym");tworz ("wp_dym1" , "fx_dym" , "dym7");}
Jeśli probuję utworzyć dwa (lub wiecej) obiekty, To gra zawisa po wejsciu i wyjsciu z chaty:
Code:
tworz ("wp_dym1" , "fx_dym" , "dym7");tworz ("wp_dym2" , "fx_dym" , "dym8");
Co ja robie nie tak w tym skrypcie ?
 
A

ailinon

Senior user
#82
Jul 20, 2008
Przede wszystkim co widzę, to że nie sprawdzasz, czy obiekt już nie istnieje - a obiekty (o ile mi wiadomo) żyją w swoich lokacjach pomimo przejść. Dlatego należałoby chyba sprawdzać, czy już Twój obiekt nie istnieje. To jednak nie powinno zawieszać gry - chyba... że tworzone obiekty gra traktuje jako "wchodzące na obszar", i uruchamiające zdarzenie onenter, a Twój skrypt siedzi w onenter i zaczynają się obiekty tworzyć w nieskończoność w chwili stworzenia poprzednich. W takim przypadku trzeba sprawdzać, czy GetEnteringObject()==GetFirstPC() i dalej chyba wiadomo.-- Sinus
 
D

dan_123

Senior user
#83
Jul 20, 2008
Nieprecyzyjnie się wyraziłem ... moja wina. Obiekty są wrzucane na lokacje gl24 (wioska) poprzez Daily Script placeablea o określonej godzinie. Np 20.00. Zostaje odpalony skrypt i godz 20.01 przechodzę do innej lokacji (jesli nie przejdę obiekty pojawią się i są i wydaje się być wszystko w porządku). Zaraz po przejsciu do innej lokacji wracam spowrotem do gl24 i jesli wczesniej dodalem tylko jeden obiekt to wracam prawidłowo, jesli wiecej niz jeden to wisi.
 
A

ailinon

Senior user
#84
Jul 20, 2008
A to już ciekawsze. Czy tak samo się dzieje, gdy ten skrypt odpalasz sobie z jakiejś onused dekoracji? Czy też się stworzą dymki prawidłowo, a po powrocie na lokację się zawiesi? Oprócz tego tak na wszelki wypadek jednak zadbałbym o to, żeby sprawdzać, czy już takich nie ma (żeby np. nie powieliło obiektów po upływie doby), i okrasiłbym to PrintStringami sowicie - żeby mieć pewność, że skrypty zadziałały wtedy i tylko wtedy, gdy powinny były, i nie poszły w szkodę jako ta krowa.-- Sinus
 
D

dan_123

Senior user
#85
Jul 20, 2008
Ailinon said:
Oprócz tego tak na wszelki wypadek jednak zadbałbym o to, żeby sprawdzać, czy już takich nie ma (żeby np. nie powieliło obiektów po upływie doby), i okrasiłbym to PrintStringami sowicie - żeby mieć pewność, że skrypty zadziałały wtedy i tylko wtedy, gdy powinny były, i nie poszły w szkodę jako ta krowa.-- Sinus
Click to expand...
Wielkie dzieki. Gdybym od razu porządnie zrobił skrypt to by chodziło. Jak juz naprowadziłeś mnie na co zwracać uwagę, to przed zawieszeniem zobaczylem w Aurora Log serie PrintStringów (nieskończone tworzenie obniektów). Okazuje się, że DailyScripts są odpalane jeszcze raz w trakcie wchodzenia ponownie do lokacji, z której były startowane. Nie wiem jak długi jest odstęp czasu miedzy opuszczeniem lokacji a momentem kiedy gra odpuści ponowne startowanie skryptu przy wejściu. Po półtorej godziny jeszcze startowała ponownie, po dwóch już dawała spokój.Wychodzi na to, że trzeba pamietać o sprawdzaniu czy to co ma zrobić skrypt nie zostało juz przypadkiem zrobione. W moim wypadku wystarczyło sprawdzić czy pierwszy tworzony obiekt nie istnieje juz na lokacji. Dałbym orena, ale jeszcze za młody w ilości postów jestem na posiadanie własnych pieniędzy :) :dead: Znowu z godzinki przy Djinni zrobiło się ponad 5
 
G

gower

Forum veteran
#86
Jul 20, 2008
Mam takie pytanko. W skrypcie startowym Ceny Neutralności jest mnóstwo funkcji AddSequence i podobnych. Czy są one niezbędne do prawidłowego działania modułu?
 
A

ailinon

Senior user
#87
Jul 20, 2008
Do tworzenia dymów lepiej nadadzą się takie dwa skrypty:"smoke_on":void main() { if (!GetLocalInt(OBJECT_SELF,"FX_SMOKE")) { CreateVisualEffectAtObject("fx_smoke01","",OBJECT_SELF); SetLocalInt(OBJECT_SELF,"FX_SMOKE",1); }}"smoke_off":void main() { if (GetLocalInt(OBJECT_SELF,"FX_SMOKE")) { DeleteVisualEffectFromObject("fx_smoke01",OBJECT_SELF,TRUE); DeleteLocalInt(OBJECT_SELF,"FX_SMOKE"); }}Doskonale pasują do podpięcia pod dzienne włączanie/wyłączanie, i wymagają tylko jednego obiektu postawionego na kominie, nie tworząc instancji następnych.Edit: Oops - smoke_off jednak nie działa. Ale nie widzę żadnego powodu, dla którego miałby nie działać...-- Sinus
 
D

dan_123

Senior user
#88
Jul 21, 2008
Ailinon said:
Edit: Oops - smoke_off jednak nie działa. Ale nie widzę żadnego powodu, dla którego miałby nie działać...-- Sinus
Click to expand...
Dzieki. Oba skrypty działają. Tylko wyłączający na: DeleteVisualEffectFromObject("fx_smoke01",OBJECT_SELF,FALSE);Nie wiem co robi ostatni parametr (przeładowuje efekt ?) bo z polskich literami sieczke mi robi w podpowiedzi do funkcji. Szkoda tylko, że nie mozna wygaszać efektów płynnie. Bo on po prostu znika w całości.
 
A

ailinon

Senior user
#89
Jul 21, 2008
Wedle opisu - właśnie ostatni parametr miałby decydować, że efekt jest wygaszany płynnie. Najwyraźniej 'non funziona' :)
 
T

tnz

Senior user
#90
Jul 21, 2008
Z moich skromnych wiadomości wynika, że żeby efekt mógłbyć wygaszany płynnie musi mieć fazę końca (nazwana bodajże Fade albo EndEffect, nie pamiętam już dokładnie a nie mam możliwości teraz sprawdzić). Nie każdy takową ma - jeśli jest efekt zaloopowany - nie da się go płynnie wygasić niestety. Ale tak jak napisane powyżej - owy ostatni parametr umożliwia uzyskanie takiego płynnego wygaszanie, jeśli efekt na to pozwala. Funkcja po porostu przed usunięciem efektu włącza ową fazę.
 
T

Tuszu0x

Forum veteran
#91
Jul 22, 2008
W jaki sposób można aktywować waypointa, który jest znacznikiem do mapy w quescie?
 
D

dan_123

Senior user
#92
Jul 22, 2008
Death13 said:
W jaki sposób można aktywować waypointa, który jest znacznikiem do mapy w quescie?
Click to expand...
SetMapPinActivealbo jak nie zadziała to: SetMapPinEnabled
 
T

Tuszu0x

Forum veteran
#93
Jul 24, 2008
Jak używam skryptu:
Code:
void main(){  object oTarget = GetFirstPC();  object oGoTo = GetObjectByTag("miejsce_odpoczynku");  AssignCommand(oTarget, ActionMoveToObject(oGoTo));}
to Geralt owszem idzie w wybrane miejsce, ale można w tym czasie robić dowolną czynność. Czy można dodać do tego skryptu funkcję, która zablokuje możliwość poruszania się?
 
T

tnz

Senior user
#94
Jul 24, 2008
Death13 said:
Jak używam skryptu:
Code:
void main(){ object oTarget = GetFirstPC(); object oGoTo = GetObjectByTag("miejsce_odpoczynku"); AssignCommand(oTarget, ActionMoveToObject(oGoTo));}
to Geralt owszem idzie w wybrane miejsce, ale można w tym czasie robić dowolną czynność. Czy można dodać do tego skryptu funkcję, która zablokuje możliwość poruszania się?
Click to expand...
SetCutsceneMode(oPC, TRUE);a potem jak postać gracza dotrze na miejsce :SetCutsceneMode(oPC, FALSE);w inny sposób raczej nie da rady.
 
T

Tuszu0x

Forum veteran
#95
Jul 28, 2008
Jak można skryptem obliczyć odległość gracza od jakiegoś NPCa?Chodzi o to, że jak Geralt zbliży się do NPCa na konkretną odległość, to wtedy np. NPC nam coś powie.
 
A

ailinon

Senior user
#96
Jul 28, 2008
// Get the distance from the caller to oObject in metres. // * Return value on error: -1.0f float GetDistanceToObject(object oObject); albo// Get the distance in metres between oObjectA and oObjectB. // * Return value if either object is invalid: 0.0f float GetDistanceBetween(object oObjectA, object oObjectB); Tylko, że to będzie najczęściej co 6 sekund się sprawdzać, jako heartbeat. Jeżeli NPC jest stacjonarny, to może skuteczniejszy byłby trigger? Albo pod percepcję, ale tym się jeszcze nie zajmowaliśmy...
 
T

Tuszu0x

Forum veteran
#97
Jul 29, 2008
W jaki sposób zrobić zmienną globalną?Tak, żeby w jednym skrypcie ustawić jej wartość, a w innych skryptach sprawdzać jej wartość?
 
A

ailinon

Senior user
#98
Jul 29, 2008
Chowasz ją w jakimś obiekcie - funkcjami SetLocalInt, SetLocalString i wszystkimi SetLocal-, sprawdzasz GetLocal-, usuwasz DeleteLocal-. Jak poustawiasz zmienne na wiedźminie, to powinny przetrwać ogień i wodę i przemarsz ruskich wojsk. No, mogą nie przetrwać przechodzenia między modułami - do tego służyłby może dziennik, ale to chyba nie będzie potrzebne.-- Sinus
 
T

Tuszu0x

Forum veteran
#99
Jul 30, 2008
Czy jest jakiś skrypt, który uniemożliwi graczowi wyrzucenie przedmiotu z ekwipunku?
 
J

juve-fan-sebek.606

Senior user
#100
Jul 30, 2008
Death13 said:
Czy jest jakiś skrypt, który uniemożliwi graczowi wyrzucenie przedmiotu z ekwipunku?
Click to expand...
Zawsze ten przedmiot może być przedmiotem fabularnym i wtedy nie można go wyrzucić :p
 
Prev
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • …

    Go to page

  • 18
Next
First Prev 5 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.