Jak zapisać warunek, aby jeśli mamy założona ...? 4796 12

O temacie

Autor Florek

Zaczęty 30.12.2010 roku

Wyświetleń 4796

Odpowiedzi 12

Florek

Florek

Użytkownicy
posty71
Propsy1
  • Użytkownicy
Jak zapisać warunek jesli mamy zalozona jakas zbroje to dana postac do nas zagada?  :|
 

Nestor

Nestor

Użytkownicy
posty66
Propsy18
  • Użytkownicy
Nie bardzo rozumiem o co ci chodzi. Chodzi ci o to, że stoisz koło postaci, zakładasz zbroję i ona do ciebie zagada?

Jeżeli tak to :

   
          if (Hlp_IsItem (Npc_GetEquippedArmor(other), nazwa pancerza == TRUE)
          && (Npc_GetDistToNpc(self, other) >= 700)

Zamiast 700 dajesz jaki ma być dystans między postaciami.
 
Spoiler

Bucik

Bucik

Użytkownicy
posty182
Propsy128
Profesjabrak
  • Użytkownicy
Hmmm... jeszcze przed sylwestrem pisałeś - ogarniaj trochę :P

Jak już - to jest bliższe prawdzie ;]
   if (Hlp_IsItem (Npc_GetEquippedArmor(other), nazwa_pancerza) == TRUE)
    && (Npc_GetDistToNpc(self, other) <= 700)
Mam nadzieję, że zrozumiałeś swój błąd.

W tej Twojej wersji kompilator tłumaczy to sobie tak (kolejno wg priorytetów):
- Porównaj wartość nazwa_pancerza z wartością TRUE (czyli 1) - w najlepszym przypadku kompilator zwróci wartość FALSE gdyż obie wartości różnią się od siebie. W najgorszym już tutaj kompilator wyrzuci błąd, gdyż ciężko mu porównać zbroję jako obiekt klasy z wartością logiczną.
- Pobierz obiekt zbroi jaką aktualnie bohater ma na sobie (to jest dobrze)
- Funkcja Hlp_IsItem (z tego co wiem) porównuje dwa przedmioty - jeśli mają taką samą instancję (jest to przedmiot tego samego typu) zwraca wartość logiczną 1 (TRUE) jeśli są różne zwraca 0 (FALSE). W Twoim przypadku ponownie chcesz porównać obiekt klasy z wartością logiczną FALSE (patrz punkt wyżej) - jeśli w poprzednim przypadku nie wyskoczy błąd to w tym miejscu już raczej tak. W najlepszym przypadku kompilator zawsze zwracać będzie wartość FALSE
- Ostatni Twój błąd to warunek z dystansem. Przyjrzyj się dobrze. Koleś ma do nas zagadać kiedy jesteśmy od niego DALEJ niż 700j. No chyba tego nie muszę tłumaczyć.

Po za tym jeśli ma to działać trzeba jeszcze ustawić Important opcji dialogowej na 1 (TRUE).

Pozdrawiam
 

Jastrzab

Jastrzab

Użytkownicy
posty197
Propsy39
Profesjabrak
  • Użytkownicy
Zrobiłem tak jak napisał Bucik ale wyskakuje mi błąd przy reparsie, że w tej linijce:

   if (Hlp_IsItem (Npc_GetEquippedArmor(other), ITAR_MIL_M) == TRUE)
wymaga przecinka.

[...]Expected , [...]

Co jest źle?
 
CPU: Intel Core i7 8700k
RAM: G.Skill Ripjaws 16GB 3000MHz CL15
GPU: MSI GTX 1060 6GB
Mobas: MSI Z370 Gaming Pro Carbon


Jastrzab

Jastrzab

Użytkownicy
posty197
Propsy39
Profesjabrak
  • Użytkownicy
 
CPU: Intel Core i7 8700k
RAM: G.Skill Ripjaws 16GB 3000MHz CL15
GPU: MSI GTX 1060 6GB
Mobas: MSI Z370 Gaming Pro Carbon

Jastrzab

Jastrzab

Użytkownicy
posty197
Propsy39
Profesjabrak
  • Użytkownicy
Wie ktoś czemu ten błąd wyskakuje?
Refresh...
 
CPU: Intel Core i7 8700k
RAM: G.Skill Ripjaws 16GB 3000MHz CL15
GPU: MSI GTX 1060 6GB
Mobas: MSI Z370 Gaming Pro Carbon

FraseR
  • Gość
A pokaż, gdzie w dialogu umieszczasz ten warunek. W ogóle pokaż cały dialog.
 

Bucik

Bucik

Użytkownicy
posty182
Propsy128
Profesjabrak
  • Użytkownicy
   if (Hlp_IsItem (Npc_GetEquippedArmor(other), ITAR_MIL_M) == TRUE)
W jezyku skryptowym Gothica nie można bezpośrednio wartości funkcji przekazać do następnej.
Spróbuj tak:

var C_Item itm;
itm = Npc_GetEquippedArmor(other);
if (Hlp_IsItem (itm, ITAR_MIL_M) == TRUE)
{
...
};
 

Jastrzab

Jastrzab

Użytkownicy
posty197
Propsy39
Profesjabrak
  • Użytkownicy
Nie reparsowałem skryptów i nie widziałem pełnych animacji dialogów ale podczas wybierania opcji dialogowej warunek posiadania ciężkiego pancerza straży nie zadziałał. Tzn nie pokazały się dodatkowe podopcje. Nie wiem, może trzeba zreparsować skrypty i dialogi spackiem. Zrobię to i zobaczę czy będzie dobrze. Skrypt:

//========================================
//-----------------> Trening
//========================================

INSTANCE DIA_Wulfgar_Trening (C_INFO)
{
   npc          = MIL_312_Wulfgar;
   nr           = 5;
   condition    = DIA_Wulfgar_Trening_Condition;
   information  = DIA_Wulfgar_Trening_Info;
   permanent = TRUE;
   description = "Otrzymałem ekwipunek";
};

FUNC INT DIA_Wulfgar_Trening_Condition()
{
    if (Otrzymal_eq == 1)
    && (Jutro_trening == 0)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Wulfgar_Trening_Info()
{
    AI_Output (other, self ,"DIA_Wulfgar_Trening_15_01"); //Otrzymałem ekwipunek, kiedy zaczynamy trening?

    var C_Item ciezki_pancerz;
ciezki_pancerz = Npc_GetEquippedArmor(other);
if (Hlp_IsItem (ciezki_pancerz, ITAR_MIL_M) == TRUE)

    {
        AI_Output (self, other ,"DIA_Wulfgar_Trening_03_02"); //Skąd masz ciężki pancerz straży?!
    Info_ClearChoices (DIA_Wulfgar_Trening);
    Info_AddChoice (DIA_Wulfgar_Trening, "Dostałem go od Pecka", DIA_Wulfgar_Trening_od_pecka1);
    Info_AddChoice (DIA_Wulfgar_Trening, "Dałem Peckowi łapówkę", DIA_Wulfgar_Trening_od_pecka2);
    };


var C_Item zniszczona_straz;
zniszczona_straz = Npc_GetEquippedArmor(other);

if (Hlp_IsItem (itm2, ITAR_Zniszczona_straz) == TRUE)

    {
        AI_Output (self, other ,"DIA_Wulfgar_Trening_03_03"); //Widzę, że masz swój pancerz. Możemy zacząć trening jutro rano.
        AI_Output (self, other ,"DIA_Wulfgar_Trening_03_04"); //Przyjdź do mnie rano o świcie. Do tego czasu powinieneś wypocząć.
        AI_Output (other, self ,"DIA_Wulfgar_Trening_15_05"); //W porządku. Jutro się zamelduję.

Jutro_trening = 1;
Npc_ExchangeRoutine (MIL_312_Wulfgar,"Trening");
        AI_StopProcessInfos (self);
    }
    else
    {
        AI_Output (self, other ,"DIA_Wulfgar_Trening_03_06"); //Nie widzę, abyś miał na sobie jeden z naszych pancerzy. Najpierw odbierz od Pecka zbroję a potem ją załóż!
        AI_StopProcessInfos (self);
    };
};

FUNC VOID DIA_Wulfgar_Trening_od_pecka1()
{
    AI_Output (other, self ,"DIA_Wulfgar_Trening_od_pecka1_15_01"); //Dostałem go od Pecka.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka1_03_02"); //Niemożliwe! Peck nie daje tego pancerza byle przybłędzie.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka1_03_03"); //Mów prawdę!

    Info_ClearChoices (DIA_Wulfgar_Trening);

    Info_ClearChoices (DIA_Wulfgar_Trening);
    Info_AddChoice (DIA_Wulfgar_Trening, "Peck miał w składzie tylko tą zbroję", DIA_Wulfgar_Trening_od_pecka1_od_pecka_niebylo);
    Info_AddChoice (DIA_Wulfgar_Trening, "Dałem Peckowi łapówkę", DIA_Wulfgar_Trening_od_pecka1_od_pecka_lapowa);
};

FUNC VOID DIA_Wulfgar_Trening_od_pecka1_od_pecka_niebylo()
{
    AI_Output (other, self ,"DIA_Wulfgar_Trening_od_pecka_niebylo_15_01"); //Peck miał w składzie tylko tą zbroję. Wszystkie pozostałe rozdał.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_niebylo_03_02"); //Hm... dobrze, wierzę ci.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_niebylo_03_03"); //Związku z dzisiejszymi czasami przyjęliśmy dużo więcej nowych ludzi do straży.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_niebylo_03_04"); //Przyjdź do mnie jutro o świcie na trening.

Npc_ExchangeRoutine (MIL_312_Wulfgar,"Trening");

Jutro_trening = 1;
    AI_StopProcessInfos (self);

    Info_ClearChoices (DIA_Wulfgar_Trening);
};

FUNC VOID DIA_Wulfgar_Trening_od_pecka2()
{
    AI_Output (other, self ,"DIA_Wulfgar_Trening_od_pecka2_15_01"); //Dałem Peckowi łapówkę, przyjął ją.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka2_03_02"); //Co?!?!
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka2_03_03"); //To jakiś obłęd! Peck przyjął łapówkę?!
    AI_Output (other, self ,"DIA_Wulfgar_Trening_od_pecka2_15_04"); //Tak dałem mu 500 sztuk złota.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka2_03_05"); //Mogłem się tego spodziewać. Ten chciwy leń przyjmie każdą cenę byleby zarobić.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka2_03_06"); //Teraz ja się nim zajmę.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka2_03_07"); //A ty marsz na plac treningowy!!

AI_GotoWP   (self, "NW_CITY_HABOUR_KASERN_CENTRE_01");
AI_GotoWP   (other, "NW_CITY_HABOUR_KASERN_CENTRE_01");

Npc_ExchangeRoutine (MIL_312_Wulfgar,"Trening2");

Dzis_trening = 1;
    AI_StopProcessInfos (self);
    Info_ClearChoices (DIA_Wulfgar_Trening);

};

FUNC VOID DIA_Wulfgar_Trening_od_pecka1_od_pecka_lapowa()
{
    AI_Output (other, self ,"DIA_Wulfgar_Trening_od_pecka_lapowa_15_01"); //Dałem Peckowi łapówkę, przyjął ją.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_lapowa_03_02"); //Co?!?!
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_lapowa_03_03"); //To jakiś obłęd! Peck przyjął łapówkę?!
    AI_Output (other, self ,"DIA_Wulfgar_Trening_od_pecka_lapowa_15_04"); //Tak dałem mu 500 sztuk złota.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_lapowa_03_05"); //Mogłem się tego spodziewać. Ten chciwy leń przyjmie każdą cenę byleby zarobić.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_lapowa_03_06"); //Teraz ja się nim zajmę.
    AI_Output (self, other ,"DIA_Wulfgar_Trening_od_pecka_lapowa_03_07"); //A ty marsz na plac treningowy!!

AI_GotoWP   (self, "NW_CITY_HABOUR_KASERN_CENTRE_01");
AI_GotoWP   (other, "NW_CITY_HABOUR_KASERN_CENTRE_01");

Npc_ExchangeRoutine (MIL_312_Wulfgar,"Trening2");

Dzis_trening = 1;
    AI_StopProcessInfos (self);
    Info_ClearChoices (DIA_Wulfgar_Trening);
};
 
CPU: Intel Core i7 8700k
RAM: G.Skill Ripjaws 16GB 3000MHz CL15
GPU: MSI GTX 1060 6GB
Mobas: MSI Z370 Gaming Pro Carbon

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
var C_Item zniszczona_straz;
zniszczona_straz = Npc_GetEquippedArmor(other);

if (Hlp_IsItem (itm2, ITAR_Zniszczona_straz) == TRUE)

    {
        AI_Output (self, other ,DIA_Wulfgar_Trening_03_03); //Widzę, że masz swój pancerz. Możemy zacząć trening jutro rano.
        AI_Output (self, other ,DIA_Wulfgar_Trening_03_04); //Przyjdź do mnie rano o świcie. Do tego czasu powinieneś wypocząć.
        AI_Output (other, self ,DIA_Wulfgar_Trening_15_05); //W porządku. Jutro się zamelduję.

Jutro_trening = 1;
        Npc_ExchangeRoutine     (MIL_312_Wulfgar,Trening);
        AI_StopProcessInfos     (self);
    }
    else
    {
        AI_Output (self, other ,DIA_Wulfgar_Trening_03_06); //Nie widzę, abyś miał na sobie jeden z naszych pancerzy. Najpierw odbierz od Pecka zbroję a potem ją załóż!
        AI_StopProcessInfos     (self);
    };

Bucik

Bucik

Użytkownicy
posty182
Propsy128
Profesjabrak
  • Użytkownicy
Zdecyduj się chłopcze - domyślam się, że warunek miał być taki... ?

var C_Item zniszczona_straz;
zniszczona_straz = Npc_GetEquippedArmor(other);

if (Hlp_IsItem (zniszczona_straz, ITAR_Zniszczona_straz) == TRUE)
{
   ...
};
 

Jastrzab

Jastrzab

Użytkownicy
posty197
Propsy39
Profesjabrak
  • Użytkownicy
Sorki faktycznie za pierwszym razem nie zauważyłem ale zanim przeczytałem wasze posty to się poprawiłem, nie zedytowałem mojego postu ze skryptem. Teraz jest wszystko ok. Dzięki wam za pomoc, łapcie  :ok:
 
CPU: Intel Core i7 8700k
RAM: G.Skill Ripjaws 16GB 3000MHz CL15
GPU: MSI GTX 1060 6GB
Mobas: MSI Z370 Gaming Pro Carbon


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