G2/G1 - nowa opcja w menu + bonus 5947 10

O temacie

Autor chicken

Zaczęty 16.07.2014 roku

Wyświetleń 5947

Odpowiedzi 10

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

G2/G1 - nowa opcja w menu + bonus
2014-07-16, 20:39(Ostatnia zmiana: 2014-08-16, 18:12)
Wybieramy jakieś menu. Menu korzysta z prototypu (C_MENU_DEF).
Np. ja wybrałem sobie w pliku 'Menu_Opt_Game.D' menu:
INSTANCE MENU_OPT_GAME(C_MENU_DEF)
Spoiler
{
   backpic         = MENU_BACK_PIC;
   
   items[0]      = "MENUITEM_GAME_HEADLINE";
            
   items[1]      = "MENUITEM_GAME_SUB_TITLES";
   items[2]      = "MENUITEM_GAME_SUB_TITLES_CHOICE";
   
   items[3]      = "MENUITEM_GAME_ANIMATE_WINDOWS";
   items[4]      = "MENUITEM_GAME_ANIMATE_WINDOWS_CHOICE";

   items[5]      = "MENUITEM_GAME_LOOKAROUND_INVERSE";
   items[6]      = "MENUITEM_GAME_LOOKAROUND_INVERSE_CHOICE";
   
   items[7]      = "MENUITEM_M";
   items[8]      = "MENUITEM_M_CHOICE";
   
   items[9]      = "MENUITEM_MSENSITIVITY";
   items[10]      = "MENUITEM_MSENSITIVITY_SLIDER";
   
   items[11]      = "MENUITEM_GAME_BLOOD";
   items[12]      = "MENUITEM_GAME_BLOOD_CHOICE";
            
   items[13]      = "MENUITEM_GAME_BACK";
   
   flags = flags | MENU_SHOW_INFO;
};
Zacznijmy od dodania nowego items, czyli zwykłego napisu. Tworzymy nową tablicę:
Cytuj
items[14] = "MENUITEM_GAME_DIFFICULTY"; // Ważne, żeby się nie powtarzały, "numer" tablicy również.
I tworzemy kolejną tablice, która będzie zawierała opcje do wyboru:
Cytuj
items[15] = "MENUITEM_GAME_DIFFICULTY_CHOICE";
Efekt:
Spoiler
INSTANCE MENU_OPT_GAME(C_MENU_DEF)
{
   backpic         = MENU_BACK_PIC;
   
   items[0]      = "MENUITEM_GAME_HEADLINE";
            
   items[1]      = "MENUITEM_GAME_SUB_TITLES";
   items[2]      = "MENUITEM_GAME_SUB_TITLES_CHOICE";
   
   items[3]      = "MENUITEM_GAME_ANIMATE_WINDOWS";
   items[4]      = "MENUITEM_GAME_ANIMATE_WINDOWS_CHOICE";

   items[5]      = "MENUITEM_GAME_LOOKAROUND_INVERSE";
   items[6]      = "MENUITEM_GAME_LOOKAROUND_INVERSE_CHOICE";
   
   items[7]      = "MENUITEM_M";
   items[8]      = "MENUITEM_M_CHOICE";
   
   items[9]      = "MENUITEM_MSENSITIVITY";
   items[10]      = "MENUITEM_MSENSITIVITY_SLIDER";
   
   items[11]      = "MENUITEM_GAME_BLOOD";
   items[12]      = "MENUITEM_GAME_BLOOD_CHOICE";
            
   items[13]      = "MENUITEM_GAME_BACK";
   
   items[14]      = "MENUITEM_GAME_DIFFICULTY";
   items[15]      = "MENUITEM_GAME_DIFFICULTY_CHOICE";

   
   flags = flags | MENU_SHOW_INFO;
};
Następnie dodajemy instancje do tego samego pliku gdzieś na dole, żeby napisy były widoczne:
Cytuj
INSTANCE MENUITEM_GAME_DIFFICULTY(C_MENU_ITEM_DEF)
{
   backpic      =   MENU_ITEM_BACK_PIC; // To jest obraz z tyłu napisu, nie ma textury
   text[0]      =   "Poziom trudności"; // Napis, który się wyświetla
   text[1]      =    "Poziom ciężkości gry."; // Komentarz, jest na samym dole menu
   posx      =   1000;   posy      =   MENU_START_Y + MENU_DY*6; // Pozycja względem osi X i Y
   dimx      =   4000;   dimy      =   750; // Wymiar względem osi X i Y
   onSelAction[0]   = SEL_ACTION_UNDEF; // niezdefiniowana akcja po wyborze
   flags         = flags | IT_EFFECTS_NEXT | IT_EXTENDED_MENU; // flagi ^^
};

Cytuj
instance MENUITEM_GAME_DIFFICULTY_CHOICE(C_MENU_ITEM_DEF)
{
backPic      =   MENU_CHOICE_BACK_PIC; // To jest obraz z tyłu napisu, nie ma textury
   type      =   MENU_ITEM_CHOICEBOX;   // To sprawia, że można wybierać opcje
   text[0]      =    "Łatwy|Normalny|Trudny"; // wiadomo, a jeśli chodzi o | , to jest operatory bitowy
   fontName   =   MENU_FONT_SMALL; // czcionka
   posx      = 5000;      posy      = MENU_START_Y + MENU_DY*6 + MENU_CHOICE_YPLUS; // Pozycja względem osi X i Y
   dimx       = 2000;      dimy       = MENU_CHOICE_DY; // Wymiar względem osi X i Y
   onChgSetOption   = "difficulty"; // Po zmianie opcji, wyznacza jej opcje
   onChgSetOptionSection = "GAME"; // Po zmianie opcji, wyznacza jej sekcje
   flags      = flags & ~IT_SELECTABLE; // znów operator bitowy & i ~(operator negacji bitowej)
   flags      = flags  | IT_TXT_CENTER | IT_EXTENDED_MENU; // wyśrodkowany
};
I mamy nowy napis! Życzę miłego bawienia się, rozmieszczania.
Teraz bonus(wymagany Ikarus i gothic fix 2.6):
Robimy nową funkcję:
Cytuj
func void MyOptFunc()
{
   if (Hlp_StrCmp(Mem_GetGothOpt("GAME","difficulty"), "0")) // Game i difficulty oznacza " patrz wyżej ", a 0 to zwracana wartość, ponieważ pierwszą opcją jest poziom ŁATWY, więc zwraca 0, kolejne następne zwracają o 1 więcej, a poprzednie o 1 mniej. Można jako pierwszą opcje w menu dać TRUDNY, wtedy też będzie zwracane 0, ale dla poziomu trudnego, a nie łatwego.
   {
      // poziom łatwy
   }
   else if(Hlp_StrCmp(Mem_GetGothOpt("GAME","difficulty"), "1"))
   {
      // poziom normalny
   }
   else if (Hlp_StrCmp(Mem_GetGothOpt("GAME","difficulty"), "2"))
   {
      // poziom trudny
   };
};
Wywołuj jak chcesz.
Ja zalecam tak( tylko g2 ):
Cytuj
Lego_Init(LeGo_FrameFunctions);
   if (!FF_Active(MyOptFunc)){
      FF_Apply(MyOptFunc);
   };
A jeśli chodzi o G1, to wszystko to samo, ale wywołujcie z np. Tick_tocka.
Tyle. Have a nice options. Życzę miłego bawienia się oraz, żeby działało ;p
Jak coś poprawić to krzyczeć.

Edit @down: No tak :facepalm:, takie podstawowe błędy :redface:. Ale ich nie poprawie, żeby zapamiętać, co źle zrobiłem i dla innych, jak mają takie same problemy.

Xardas47

Xardas47

Użytkownicy
Mhroczny charakterek
posty249
Propsy150
ProfesjaProgramista
  • Użytkownicy
  • Mhroczny charakterek
Raczej nie tworzymy nowych tablic a raczej przypisujemy wartości do zmiennych w tablicy (tablica to items, numery w nawiasach to ID zmiennych w tej tablicy). Reszta jest Ok, całkiem nieźle wytłumaczone.
 

MajkeI

MajkeI

Użytkownicy
Front End Developer
posty698
Propsy169
Profesjabrak
  • Użytkownicy
  • Front End Developer
 

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator

Splash
Moderator

G2/G1 chyba też - nowa opcja w menu + bonus
#3 2014-07-16, 22:28(Ostatnia zmiana: 2014-07-16, 22:39)
Cytuj
Teraz bonus(wymagany Ikarus i gothic fix 2.6):
Można by powiedzieć, że to nie bonus, bo bez Ikarusa nowa opcja w ustawieniach jest bezużyteczna. Bez Ikarusa to możesz się bawić w zmianę opcji bez żadnych efektów :D Tylko dzięki funkcji Mem_GetGothOpt możemy mieć dostęp do ustawień w opcjach Gothica.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

G2/G1 - nowa opcja w menu + bonus
#4 2014-07-17, 08:38(Ostatnia zmiana: 2014-07-18, 09:30)
Raczej nie tworzymy nowych tablic a raczej przypisujemy wartości do zmiennych w tablicy (tablica to items, numery w nawiasach to ID zmiennych w tej tablicy). Reszta jest Ok, całkiem nieźle wytłumaczone.
Trafna uwaga, będę pamiętał na przyszłość oraz dzięki.
Propsik :D
Dzięki.
Cytuj
Teraz bonus(wymagany Ikarus i gothic fix 2.6):
Można by powiedzieć, że to nie bonus, bo bez Ikarusa nowa opcja w ustawieniach jest bezużyteczna. Bez Ikarusa to możesz się bawić w zmianę opcji bez żadnych efektów :D Tylko dzięki funkcji Mem_GetGothOpt możemy mieć dostęp do ustawień w opcjach Gothica.
Też racja :D
To co poprawić miałem, to poprawiłem.

MajkeI

MajkeI

Użytkownicy
Front End Developer
posty698
Propsy169
Profesjabrak
  • Użytkownicy
  • Front End Developer
Lekka poprawka
Trzeba dobrze ponumerować zmienne w tablicy:
   items[13]      = "MENUITEM_GAME_DIFFICULT";
   items[14]      = "MENUITEM_GAME_DIFFICULT_CHOICE";
   items[15]      = "MENUITEM_GAME_BACK";
"Powórt" musi być na końcu, inaczej bo opcji "ilość krwi" strzałką w dół przejdziemy do powrót, a nie do poziom trudności :)

Ponadto w pliku ini możemy nadać początkowy poziom trudności, za pomocą:
GAME.difficulty= 1 //0-łatwy,1-średni,2-trudny
+ W "MENUITEM_GAME_BACK" => posy polecam wpisać "MENU_START_Y + MENU_DY*7", żeby napisy na siebie nie wchodziły. Wygląda to tak:
posy = MENU_START_Y + MENU_DY*7;
 

Maciej

Maciej

Użytkownicy
posty3689
Propsy1006
ProfesjaGracz
  • Zbanowany
,,GAME.difficulty= 1 //0-łatwy,1-średni,2-trudny''

W jaki sposob to dziala?  :hmmm:
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

G2/G1 - nowa opcja w menu + bonus
#7 2014-07-20, 18:37(Ostatnia zmiana: 2014-07-20, 19:49)
W .ini po odpaleniu moda, poziom trudności będzie od razu zaczynał od średniego w tym przypadku.
Przynajmniej takie mam domysły.

MajkeI

MajkeI

Użytkownicy
Front End Developer
posty698
Propsy169
Profesjabrak
  • Użytkownicy
  • Front End Developer
,,GAME.difficulty= 1 //0-łatwy,1-średni,2-trudny''

W jaki sposob to dziala?  :hmmm:
Wpisujesz odpowiednio  onChgSetOptionSection.onChgSetOption (GAME.difficulty)=
Jeżeli napisałeś  "Łatwy|Normalny|Trudny" to liczy od 0 i od lewej.
Cytuj
W .ini po odpaleniu moda, poziom trudności będzie od razu zaczynał od średniego w tym przypadku.
Przynajmniej takie mam domysły.
Dokładnie
 

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
,,GAME.difficulty= 1 //0-łatwy,1-średni,2-trudny''

W jaki sposob to dziala?  :hmmm:
Wpisujesz odpowiednio  onChgSetOptionSection.onChgSetOption (GAME.difficulty)=
Jeżeli napisałeś  "Łatwy|Normalny|Trudny" to liczy od 0 i od lewej.
Cytuj
W .ini po odpaleniu moda, poziom trudności będzie od razu zaczynał od średniego w tym przypadku.
Przynajmniej takie mam domysły.
Dokładnie

na czym dokładnie ten poziom trudności ma polegać? mocniejsi oponenci, wolniej zdobywany poziom etc.
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Wszystko zależy od Ciebie, jak to wykorzystasz.


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