Warunek walki bronią 3448 13

O temacie

Autor kir

Zaczęty 8.11.2014 roku

Wyświetleń 3448

Odpowiedzi 13

kir

kir

Użytkownicy
posty21
  • Użytkownicy
Witak mam pewien problem mianowicie chce zrobić misje, w której warunkiem jest że nasz postać włada mieczem 1H lub 2H przynajmniej na poziomie 30 pkt czytałem w skrypcie Corda Więc tak wystarczy że w condition użyje:

FUNC INT DIA_MIL_319_Pablo_Fechmistrz_Condition()
{
   if(Npc_Knowsinfo (other, DIA_MIL_319_Pablo_Sprawdzian))
&& ((Npc_GetTalentSkill(other, NPC_TALENT_1H) > 0)&&(Npc_GetTalentSkill(other, NPC_TALENT_2H) > 0))
{
   return TRUE;
};

Chodzi mi że jeden z warunków musi być spełniony albo 1H lub 2H i tu zachodzi pytanie czy pomiędzy warunkami 1H i 2H mam wstawić || i czy to  zadziała jeśli są jakieś błędy to proszę o poprawę. W tym przy przypadku mam rozumieć że jeśli

if(Npc_Knowsinfo (other, DIA_MIL_319_Pablo_Sprawdzian)) // znamy dialog NPC
&& ((Npc_GetTalentSkill(other, NPC_TALENT_1H) > 0)||(Npc_GetTalentSkill(other, NPC_TALENT_2H) > 0))// oraz władamy 1H lub 2H przynajmniej w 30 pkt to będziemy mogli pogadać na dany temat

Następnie (other, NPC_TALENT_1H) > 0)//czy to 0 domyślnie odpowiada 30 pkt w broni czy mam wpisać np. >=30) żeby zadziałało

Props dla tego kto wyjaśni mój nie logiczny wywód mam nadzieje że zrozumiecie o co mi chodzi jak nie zadawajcie pytania spróbuje wyjaśnić  :lol2:
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Cytuj
Chodzi mi że jeden z warunków musi być spełniony albo 1H lub 2H i tu zachodzi pytanie czy pomiędzy warunkami 1H i 2H mam wstawić || i czy to  zadziała jeśli są jakieś błędy to proszę o poprawę. 
Wystarczy wstawić.
Cytuj
Następnie (other, NPC_TALENT_1H) > 0)//czy to 0 domyślnie odpowiada 30 pkt w broni czy mam wpisać np. >=30) żeby zadziałało 
>= 30
nie będzie działać, ponieważ zwracany jest poziom, a nie ilość punktów.
(other, NPC_TALENT_1H) > 0 // to jest poprawne

kir

kir

Użytkownicy
posty21
  • Użytkownicy
czyli

FUNC INT DIA_MIL_319_Pablo_Fechmistrz_Condition()
{
   if(Npc_Knowsinfo (other, DIA_MIL_319_Pablo_Sprawdzian))
&& ((Npc_GetTalentSkill(other, NPC_TALENT_1H) > 0)||(Npc_GetTalentSkill(other, NPC_TALENT_2H) > 0))
{
   return TRUE;
};

to dobra droga
2 co rozumiesz przez "ponieważ zwracany jest poziom, a nie ilość punktów." do czego odnosi się poziom np gdybym wpisał > 1) to było by to widoczne jak broń 60 pkt jako biegły(sorki że tak dopytuje ale kto pyta nie błądzi, a nie mam zamiaru kopiować skryptów innych postaci na pałę bo może coś z tego wyjdzie).
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
W gothic 1 umiejętności posługiwania się broniami w zwarciu mają 3 poziomy:
0 - brak
1 - adept
2 - mistrz
myślę, że teraz jest jasne.
Jeśli chciałbyś sprawdzić w g1 ilość punktów ( szansa na trafienie krytyczne ), to musisz użyć takiej instrukcji warunkowej:
Cytuj
if ((Npc_GetTalentValue(hero, NPC_TALENT_1H)==30) // nie testowałem
W g2 możesz sprawdzić za pomocą aivaru:
Cytuj
if ((npc.hitchance[NPC_TALENT_1H])==30)

MajkeI

MajkeI

Użytkownicy
Front End Developer
posty698
Propsy169
Profesjabrak
  • Użytkownicy
  • Front End Developer
if (Npc_GetTalentSkill(other, NPC_TALENT_1H) >= 30) || (Npc_GetTalentSkill(other, NPC_TALENT_2H) >= 30)

Warunek jest prawdą, jeśli masz przynajmniej 30 w broni jedno, lub dwuręcznej. Odnosi się on to szansy na trafienie krytyczne, a nie animacji. Oczywistą oczywistością jednak jest dla każdego gracza Gothica II, że gdy zdobędziemy 30sty lub 60ty punkt w walce bronią, zmienia nam się ta animacja. Rozumiesz?
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Warunek walki bronią
#5 2014-11-08, 14:19(Ostatnia zmiana: 2014-11-08, 14:26)
if (Npc_GetTalentSkill(other, NPC_TALENT_1H) >= 30) || (Npc_GetTalentSkill(other, NPC_TALENT_2H) >= 30)

Warunek jest prawdą, jeśli masz przynajmniej 30 w broni jedno, lub dwuręcznej. Odnosi się on to szansy na trafienie krytyczne, a nie animacji. Oczywistą oczywistością jednak jest dla każdego gracza Gothica II, że gdy zdobędziemy 30sty lub 60ty punkt w walce bronią, zmienia nam się ta animacja. Rozumiesz?
Nie, nie masz racji.

MajkeI

MajkeI

Użytkownicy
Front End Developer
posty698
Propsy169
Profesjabrak
  • Użytkownicy
  • Front End Developer
Pewnie jest jakaś funkcja w silniku która przy 30 i 60 zmienia animację, czy coś. Więc jak to wg ciebie działa?
Zresztą chodzi o warunek
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Npc_GetTalentSkill - zwraca poziom, są 3 (w zależności od umiejętności):
  • Zielony // 0
  • Wojownik // 1
  • Mistrz // 2
Za zmianę animki odpowiada Npc_SetTalentSkill, jest to funkcja silnikowa, nie widziałem jej nigdzie w plikach gothica.
Np. Npc_SetTalentSkill(hero, NPC_TALENT_1H, 2); // teraz włada mieczem jak MISTRZ

MajkeI

MajkeI

Użytkownicy
Front End Developer
posty698
Propsy169
Profesjabrak
  • Użytkownicy
  • Front End Developer
Też nigdzie nie znalazłem, więc to raczej
Npc_SetTalentSkill
odpowiada za animację, a nie hitchance :P.
Możesz wpisać sobie w hitchance 70, kodem lub w skrypcie postaci, a gość będzie machał jak "zielony"
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Nikt nie mówił, że za hitchance.

kir

kir

Użytkownicy
posty21
  • Użytkownicy
Dobra dzięki za odpowiedzi działa wszystko a co ważniejsze rozumiej jak to działa.

Mam następne pytanie mianowicie to zadanie z bronią jest częścią większego zadania tak więc wykonuje dla Wulfgara. W zadaniu muszę pogadać z paroma strażnikami zrobić dla nich mniejsze zadania a następnie wrócić do Wulfgara te zadania są w fornie rozmowy i dania paru przedmiotów oraz wymogu  z bronią (patrz wyżej). Te pomniejsze zadania są dopisywane do tego samego dziennika zadań co główne nie kończą się osobno.U Wufgara chce zrobić warunek że znając trzy dialogi strażników czyli te w których mówią że udało mi się ukończyć ich polecenia muszę tu użyć mnogiego warunku i czy taki starczy (do pogadania na temat ukończenia owego zadania).

FUNC INT DIA_MIL_312_Wulfgar_krok_Condition()
{
   if(Npc_Knowsinfo (other,  DIA_MIL_319_Pablo_WBron))
   && (Npc_Knowsinfo (other, DIA_MIL_324_Peck_Stal))
   && (Npc_Knowsinfo (other, DIA_MIL_337_Mika_Piwko2))// jeśli te trzy dialogi się odbędą to mogę pogadać na dany temat.
{
   return TRUE;
};
};

Czy tako warunek zadziała bo jaki widzialem to u Hakona czy Bospera to było to bardziej skomplikowane.
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
tak

kir

kir

Użytkownicy
posty21
  • Użytkownicy
1 Dzięki wszystkim za odpowiedzi a w szczególności chicken ( zaraz odpowiedz po poście )
2 Mam kolejne  :hmmm: tworze questa że moja postać dostaje misje od 1 osoby ta wysyła do 2 po wskazówki (standard) następnie ta mówi że mam zabić szczury z nabrzeża więc tak krótko wyjaśnię (coś próbowałem zrobić)   

/*********************************************************************
//   Info Szczury
//*********************************************************************
INSTANCE DIA_MIL_336_Rick_Szczury   (C_INFO)
{
   npc         = MIL_336_Rick;
   nr          = 2;
   condition   = DIA_MIL_336_Rick_Szczury_Condition;
   information = DIA_MIL_336_Rick_Szczury_Info;
   permanent   = FALSE;
   description = "Wulfgar powiedział że mam przejąć wasze zadanie";
};

FUNC INT DIA_MIL_336_Rick_Szczury_Condition()
{
   if(Npc_Knowsinfo (other, DIA_MIL_312_Wulfgar_Proba2))
{
   return TRUE;
};
};

FUNC VOID DIA_MIL_336_Rick_Szczury_Info()
{
   AI_Output (other,self, "DIA_MIL_336_Rick_Szczury_15_00"); //Wulfgar powiedział że mam przejąć wasze zadanie
   AI_Output (self ,other,"DIA_MIL_336_Rick_Szczury_10_01"); //Wreście pewnie chodziło mu o te szczury też mi coś wylazły z jakiegoś statku
   AI_Output (other,self, "DIA_MIL_336_Rick_Szczury_15_02"); //Jakie szczury?
   AI_Output (self ,other,"DIA_MIL_336_Rick_Szczury_10_03"); //Słuchaj za statkiem Magów na samym końcu nabrzeża zalęglo się kilka szczurów zamij się nimi
   AI_Output (self ,other,"DIA_MIL_336_Rick_Szczury_10_04"); //Słuchaj po skończonej robocie wróć do mnie będę miał coś dla ciebie za fatygę 

   AI_StopProcessInfos (self);// U Pepe bylo coś takiego co to znaczy do czego służy
   
   Wld_InsertNpc (Giant_Rat, "NW_CITY_KANAL_ROOM_01_01");// Moja intencja to przywołanie szczura po tym dzialogu udało się chyba?   
   Wld_InsertNpc (Giant_Rat, "NW_CITY_KANAL_ROOM_01_02");/ tylko jeśli to mam być ptwór do misji to raczej musze go stworzyć osobno i przypisać mu misje jaśli tak to gdzie i jak    
   Wld_InsertNpc (Giant_Rat, "NW_CITY_KANAL_ROOM_01_03");/ oczywiście waypont inny :)
   Wld_InsertNpc (Giant_Rat, "NW_CITY_KANAL_ROOM_01_04");
   
   MIS_Pepe_KillWolves = LOG_RUNNING;//Cóż to jest gdzie to jest jak tego użyć i gdzie wpisać

   Log_SetTopicStatus(TOPIC_Rick, LOG_RUNNING);
   B_LogEntry(TOPIC_Rick,"Muszę zabić kilka szczurów");
   
};

Najlepiej łopatologicznie jeśli można to rozpisać tak jak wyżej taki poziom jest w 100% dla mnie zrozumiały jak coś dopytam  (jeśli : :hmmm:)
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Cytuj
   AI_StopProcessInfos (self);// U Pepe bylo coś takiego co to znaczy do czego służy
kończy dialog
Cytuj
  Wld_InsertNpc (Giant_Rat, "NW_CITY_KANAL_ROOM_01_01");// Moja intencja to przywołanie szczura po tym dzialogu udało się chyba?   
tak
Cytuj
Wld_InsertNpc (Giant_Rat, "NW_CITY_KANAL_ROOM_01_02");/ tylko jeśli to mam być ptwór do misji to raczej musze go stworzyć osobno i przypisać mu misje jaśli tak to gdzie i jak   
komentarze pisze się w po 2 //, a nie po 1
Nie przypisujesz do potwora misji.
Cytuj
MIS_Pepe_KillWolves = LOG_RUNNING;//Cóż to jest gdzie to jest jak tego użyć i gdzie wpisać
To ma Ci pomóc w sprawdzaniu, czy misja już jest(lub nie) przyjęta/skończona/zepsuta.

Pewnie chcesz, aby następny dialog był aktywny po zabiciu X szczurów.
Tworzysz zmienną w story_globals, w zs_dead tworzysz warunek, w którym porównujesz instance SELF z GIANT_RAT za pomocą Hlp_GetInstanceID. ( if (Hlp_GetInstanceID(cos)==Hlp_GetInstanceID(cos)) + sprawdzasz, czy misja jest przyjęta ;).
Potem w zakresie warunku zwiększasz tą zmienną, którą zapisałeś w story_globals o 1.
W dialogu do zakończenia tej misji warunkiem jest sprawdzanie, czy zmienna == 5 // 5 zabitych szczurów, możesz zmienić. Tyle.


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