Witam, poszukuję jakichś specjalistów od skryptów, którzy mogli by poświęcić dla mnie trochę czasu i pomóc mi napisać właściwe skrypty(te które potrzebuję). Jeżeli znajdzie się chociaż jedna chętna osoba, to zacznę pisać pytania pod tym postem. Tak by inne osoby też mogły się tutaj czegoś nauczyć.
Każdy kto zna jakiś działający skrypt, może go tutaj wpisać.
To ja może zacznę, żeby was troszkę rozruszać :)
(Zielony kolor to opis, podpowiedź, którego nie wpisuje się do skryptu.)
Odpalenie scenki od razu po starcie mapy
StartDialogScene( "/ścieżka do scenki" );
Przykład
StartDialogScene( "/DialogScenes/Presentation/Row/Scena1.1/DIALOGPWL/SC1/SC1.1/DialogScene.xdb#xpointer(/DialogScene)" );
Po wejściu w dany region przez bohatera(w tym przypadku Izabelę) odpali się dana scenka.
function MeetingIzabela( heroname ) Zawsze na początku przy funkcji piszemy Meeting + nazwa bohatera(nie skryptowa, tylko taka jak się naprawdę nazywa). W tym przypadku to Izabela, więc MeetingIzabela.
if heroname == "Isabell" then Tutaj wpisujemy nazwę skryptową bohatera.
Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER, "meeting", nil ); Tutaj wpisujemy nazwę regionu, w którym ma się odpalić nasza scenka po wejściu bohatera.
StartDialogScene( "/DialogScenes/Presentation/Row/Scena1.1/DIALOGPWL/SC1/SC1.1/DialogScene.xdb#xpointer(/DialogScene)" ) tutaj znany nam już skrypt, czyli samo włączenia scenki
RemoveObject("meeting"); tutaj trzeba wpisać znowu nazwę regionu, który zostanie usunięty po jednym wejściu do niego i odegraniu scenki
end;
end;
Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER, "meeting", "MeetingIzabela" ); Tutaj trigger odpowiadający za to, że scenka zostanie odpalona TYLKO po wejściu w region bez konieczności zostania w nim. Można oczywiście użyć innego triggera, te już znajdziecie w plikach gry, folder ,,Editor Documentation''. "meeting" - tutaj wpisujemy znowu nazwę regionu. "MeetingIzabela" - tutaj wpisujemy nazwę funkcji.
Zaznaczam, że przy pisaniu skryptu trzeba zachować odpowiednie odstępy(tutaj cały skrypt):
function MeetingIzabela( heroname )
if heroname == "Isabell" then
Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER, "meeting", nil );
StartDialogScene( "/DialogScenes/Presentation/Row/Scena1.1/DIALOGPWL/SC1/SC1.1/DialogScene.xdb#xpointer(/DialogScene)" )
RemoveObject("meeting");
end;
end;
Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER, "meeting", "MeetingIzabela" );
Możemy jeszcze dodać np. opcję pojawienia się nowego celu pobocznego lub głównego po wyjściu w ten region i odegraniu scenki.
Wtedy skrypt będzie wyglądał mniej więcej tak(mój autorski używany w mapie, więc niektóre wartości różnią się od poprzednika):
function MeetingJakub( heroname )
if heroname == "Nicolai" then
Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER,"Zombie1",nil );
SetObjectiveState( "Plugastwa", OBJECTIVE_ACTIVE, PLAYER_2, );
sleep(4);
StartDialogScene( "/Maps/NECR/DialogScene.xdb#xpointer(/DialogScene)" );
RemoveObject("Zombie1");
end;
end;
Trigger( REGION_ENTER_WITHOUT_STOP_TRIGGER, "Zombie1", "MeetingJakub" );
SetObjectiveState( "Plugastwa", OBJECTIVE_ACTIVE, PLAYER_2, PLAYER_3 ); "Plugastwa" - nazwa naszego zadania(skryptowa)
sleep(4) - to jest swego rodzaju pauza, tutaj wymagana, aby wszystko poprawnie zadziałało. Tą wartość w nawiasie można zmienić na inną wartość, ponieważ jest to czas.
OBJECTIVE_ACTIVE - Dzięki temu uaktywnia się cel
PLAYER_2 - gracz, który otrzyma zadanie
Oczywiście trzeba do tego dodać samą odpowiednią konfigurację zadania w edytorze. Ale z tym już powinniście sobie poradzić :)