Po przycisnięciu na przycisk otwiera się krata i aktualizuje się zadanie. 5777 17

O temacie

Autor Ayman

Zaczęty 25.07.2012 roku

Wyświetleń 5777

Odpowiedzi 17

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Witam, chciałem by po przycisnięciu przycisku w wieży Xardasa, tym na kominku i podniesieniu sie kraty zaktualizowal sie dziennik oraz po tym NPC podszedł do mnie i rozpoczął rozmowe i zadanie wykonane. Narazie nie zrobilem NPCA, tylko chce zobaczyc czy po przycisnieciu jest aktualizacja dziennika.Ale nic sie nie dzieje po przycisnieciu przycisku, krata normalnei sie podnosi ale nie ma aktualizacji dziennika.

Zrobiłem nowy event na podstawie klinania przycisków na kregach z NK.

//****************************
// EVT_XARDAS_SECRET_01_FUNC
//****************************
func void EVT_XARDAS_SECRET_01_FUNC ()
{
if (EVT_XARDAS_SECRET_01 == FALSE)
{
Log_CreateTopic (TOPIC_okultysta, LOG_MISSION);
Log_SetTopicStatus (TOPIC_okultysta, LOG_RUNNING);
B_LogEntry (TOPIC_okultysta,"Uaktywniłem sekretny przelacznik na kominku w wieży Xardasa");
EVT_XARDAS_SECRET_01 = TRUE;
};
};


A w Story_Globals dopisałem:

var int EVT_XARDAS_SECRET_01; //= TRUE
Nie wychodzą zadne bledy, po prostu nic nie działa w grze, po kliknieciu na przycisk.
 
"Lók, jestem tfojim ojcem!"

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
W Spacerze, na przycisku trzeba ustawić jaką funkcję ma wywołać przycisk.


Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Więc tak, sa dwa parametry:
conditionFunc:
i
onStateFunc:

W pierwszym parametrze wpisuej moją fukcje czyli EVT_XARDAS_SECRET_01_FUNC i jest nawet dobrze bo w grze pojawia sie wpis w dzienniku z nowym zdaniem, gdy nacisne na przycisk, ale nie ma w ogole animacji przyciskania, po prostu klikam i jest wpis, a bezio stoi oraz nie podnosi sie krata.

Drugim paramentr w ogóle nie działa po wpisaniu funkcji, naciskam na przycisk (jest animacja przyciskania i otwiera sie krata) ale nic sie nie dzieje czyli nie ma wpisu.


Tutaj mam screena z parametrami tego przycisku:
http://img825.imageshack.us/img825/2564/beztytulux.jpg

Może jeszcze cos ominąłem
 
"Lók, jestem tfojim ojcem!"


Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Ale przy OnStateFunc dziala mi animacja i otwiera sie brama ale nie ma wpisu do dziennika w przeciwienstwie do conditionFunc w ktorym mam wpis do dziennika ale nia mam animacji i nie ma otwierania sie kraty. Kowadlo ma takie same parametry, no procz tego ze trzeba miec przedmiot by je uzyc.
 
"Lók, jestem tfojim ojcem!"

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
W OnStateFunc wpisujesz "nazwe funkcji" a w skryptach musisz określić nazwą stan w którym trzeba to odpalić

więc na przykład

w onStateFunc jest wpisane "funkcja_pierwsza"

w skryptach jest
func void funkcja_pierwsza_s0lub
func void funkcja_pierwsza_s1lub
func void funkcja_pierwsza_s2
gdzie numer po s oznacza stan
0 - namierzenie przycisku
1 - wcisniecie
2 - puszczenie

zależy keidy chcesz to wykonac dajesz tak numerek ;)

wiec zmiec nazwe funkcji w skryptach na

func void EVT_XARDAS_SECRET_01_FUNC_S1()
i będzie git ;)

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Działa, nie wiedziałem że trzeba ten stan umieścić na końcu :) . Mam jeszcze jedno pytanie. Zakładam ze to w dialogu NPC'a trzeba umiescic. Przed przycisnieciem przycisku NPC siedzi za kratami czyli to rutyna startowa, jak klikne przycisk to krata idzie w góre i NPC'a idzie do innego Waypointu czyli zmienia rutyne ze startowej na tą drugą. Jak to trzeba zrobić? Chyba trzeba wstawic ta funkcje z mojego eventu func void EVT_XARDAS_SECRET_01_FUNC_S1() ze jak sie skonczy to by byla zmiana rutyny wywołana Npc_ExchangeRoutine (self,"druga_rutyna"); dobrze mysle ? xD
 
"Lók, jestem tfojim ojcem!"

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Jak dasz zaraz w tej funkcji "func void EVT_XARDAS_SECRET_01_FUNC_S1()" Npc_ChangeRoutain to automatycznie jak użyjesz tego przycisku, brama zacznie się otwierać, a npc zmieni waypoint (rutynę). Jest jeszcze jedno "ale". Jak zrobisz tak, to npc będzie się cisł do krat, więc najlepiej dać
 AI_Wait (instance npc za kratami, ilośc czasu w sekundach - na przykład 5);i NPC poczeka daną ilość czasu i pójdzie do innego waypointa.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Nie może być self !!!

wpisz tam instance NPC powinno automatycznie zrobić z tego C_NPC

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Napisałem "instance npc za kratami", więc chyba się domyślił, że musi być instance. :)
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
ale w Npc_ExchangeRoutine ma self chodziło mi o jego post

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Aa, przepraszam. Nie kapnąłem się. ;/
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Coś zle zrobilem wychodzi mi w bląd w jednej linijce

//*********************************************************************
//      Info EXIT
//*********************************************************************
INSTANCE DIA_SLD_891_Ayman_EXIT   (C_INFO)
{
        npc         = SLD_891_Ayman;
        nr          = 999;
        condition   = DIA_SLD_891_Ayman_EXIT_Condition;
        information = DIA_SLD_891_Ayman_EXIT_Info;
        permanent   = TRUE;
        description = DIALOG_ENDE;
};

FUNC INT DIA_SLD_891_Ayman_EXIT_Condition()
{
        return TRUE;
};

FUNC VOID DIA_SLD_891_Ayman_EXIT_Info()
{
        AI_StopProcessInfos (self);
};



//*********************************************************************
//      Info Hello
//*********************************************************************
INSTANCE DIA_SLD_891_Ayman_Witaj   (C_INFO)
{
        npc         = SLD_891_Ayman;
        nr          = 1;
        condition   = DIA_SLD_891_Ayman_Witaj_Condition;
        information = DIA_SLD_891_Ayman_Witaj_Info;
        permanent   = FALSE;
        description = "Witaj. Kim jesteś?";
};

FUNC INT DIA_SLD_891_Ayman_Witaj_Condition()
{
        return TRUE;    
};

FUNC VOID EVT_XARDAS_SECRET_01_FUNC_S1()   <--- w tej
{
if (Npc_ExchangeRoutine (SLD_891_Ayman,"STAND"))
&& (AI_Wait (SLD_891_Ayman, 10))
{
        return TRUE;    
};

FUNC VOID DIA_SLD_891_Ayman_Witaj_Info()
{
        AI_Output (other,self ,"DIA_SLD_891_Ayman_Witaj_15_00"); //Witaj. Kim jesteś?
        AI_Output (self, other,"DIA_SLD_891_Ayman_Witaj_16_01"); //Mam na imię Ayman. Jestem okultystą z tajnego bractwa.
        AI_Output (self, other,"DIA_SLD_891_Ayman_Witaj_17_02"); //Przybyłem tu by nawracać ten głupi motłoch z Khorinis, wszystko szło dobrze dopóki nie uprowadził Mnie ten nekromanta Xardor... Xardmor...
AI_Output (other,self,"DIA_SLD_891_Ayman_Zadanie_18_00"); //Xardas. Ten nekromanta ma na imię Xardas.
        AI_Output (self, other,"DIA_SLD_891_Ayman_Zadanie_19_03"); //Nie ważne. Fakt jest taki że nie pozwala mi opuścić wieży.
        AI_Output (self, other,"DIA_SLD_891_Ayman_Zadanie_45_04"); //Siędzę tu już dobre cztery dni i nie chce mi wyjaścić dlaczego mnie uprowadził.
        AI_Output (self, other,"DIA_SLD_891_Ayman_Zadanie_67_05"); //Wszelkie próby opuszczenia wieży kończą się fiaskiem gdyż wychodząc przez główne wyjście wpadam w magiczną pułapkę która usypia mnie, a gdy się budze znajduję się w łóżku w tej przeklętej wieży.
        AI_Output (self, other,"DIA_SLD_891_Ayman_Zadanie_20_06"); //Nie powiem raz próbowałem wyskoczyć z tego balkonu na górze, ale gdy rozpędzałem się do skoku z wieży magiczna pułapka zaczynała działać i zapadałem w sen.

};
 
"Lók, jestem tfojim ojcem!"

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
a ja widzę 3 błędy ;d

AI_Wait nie zwraca wartości
Npc_ExchangeRoutine nie zwraca wartości

Nie możesz tych funkcji dawać do if`a !!!

oraz nie zamknąłeś klamry brakuje jednej };

edit: 4 błędy ;d  funkcja ma typ void a chcesz zwracać wynik TRUE(int)

dlaczego nie dałeś tak jak miałeś ??

func void EVT_XARDAS_SECRET_01_FUNC ()
{
                if (EVT_XARDAS_SECRET_01 == FALSE)
                {
                        Log_CreateTopic         (TOPIC_okultysta, LOG_MISSION);
                        Log_SetTopicStatus      (TOPIC_okultysta, LOG_RUNNING);
                        B_LogEntry                      (TOPIC_okultysta,"Uaktywniłem sekretny przelacznik na kominku w wieży Xardasa");
                        AI_Wait (SLD_891_Ayman, 10);
                        Npc_ExchangeRoutine (SLD_891_Ayman,"STAND")
                        EVT_XARDAS_SECRET_01 = TRUE;
                };
};

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Ale mam całe powielić to z góry i wstawic do dialogu NPC'a ? Czy edytowac plik eventu ten z samej góry dodając AI_Wait (SLD_891_Ayman, 10); i Npc_ExchangeRoutine (SLD_891_Ayman,"STAND") ? gdy dodaje do dialogu wyskakuje mi w jednej linijce błąd:

//*********************************************************************
//      Info Hello
//*********************************************************************
INSTANCE DIA_SLD_891_Ayman_Witaj   (C_INFO)
{
        npc         = SLD_891_Ayman;
        nr          = 1;
        condition   = DIA_SLD_891_Ayman_Witaj_Condition;
        information = DIA_SLD_891_Ayman_Witaj_Info;
        permanent   = FALSE;
        description = "Witaj. Kim jesteś?";
};

FUNC INT DIA_SLD_891_Ayman_Witaj_Condition()
{
        return TRUE;    
};

func void EVT_XARDAS_SECRET_01_FUNC_S1 ()
{
                if (EVT_XARDAS_SECRET_01 == FALSE)
                {
                        Log_CreateTopic         (TOPIC_okultysta, LOG_MISSION);
                        Log_SetTopicStatus      (TOPIC_okultysta, LOG_RUNNING);
                        B_LogEntry              (TOPIC_okultysta,"Uaktywniłem sekretny przelacznik na kominku w wieży Xardasa");
                        AI_Wait (SLD_891_Ayman, 10);
                        Npc_ExchangeRoutine (SLD_891_Ayman,"STAND")
                        EVT_XARDAS_SECRET_01 = TRUE;   <---- tutaj
                };
};

gubie sie w tym totalnie, sam staram sie cos pisac ale nic juz nie wychodzi.
 
"Lók, jestem tfojim ojcem!"

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Linijkę wyżej średnika brakuje sorry mój błąd.

naucz się czytać błędy ! Na pewno miałeś komunikat (brakuje znaku ";" (line xxx))

wiec można było się domyślić


EDIT : 1500 postów :D  Lubie to ;d

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
No tak, brakowało cholernego ";". Dziękuje wielkie, raz jak sie pokaze to na przyszłośc bede wiedział :)  Gratuluje kosmicznej liczby postów :P
 
"Lók, jestem tfojim ojcem!"


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry