Monolog do przemiotu 4695 6

O temacie

Autor Siemekk

Zaczęty 20.11.2015 roku

Wyświetleń 4695

Odpowiedzi 6

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota

Siemekk
Złote Wrota

Monolog do przemiotu
2015-11-20, 22:11(Ostatnia zmiana: 2016-01-29, 13:20)
Witam. Otóż jest to mój pierwszy tutorial na TheModders więc prosiłbym o wyrozumiałość.
W tym tutku pokażę wam jak można zrobić w  prosty sposób monolog do przedmiotu.Wymagane jest znanie podstaw dialogów.A więc zaczynajmy.
Po pierwsze musimy utworzyć zmienną. Np.:
var int naszazmienna;
Jak widzimy mamy zmienną którą dajemy do Story_globals.d w content/Story/Story_Globals.d
Następnym krokiem jest utworzenie przedmiotu z funkcją on_state;
INSTANCE ItMi_naszprzedmiot(C_Item)//unikalny kod przedmiotu
{
name = "Multi Teleport"; //nazwa ;d

mainflag = ITEM_KAT_NONE;
flags = ITEM_MULTI;//Flaga do użytku(nie jestem pewny)

value = 1000;//Cena naszego przedmiotu

visual = "ItMi_Nugget.3ds";//Wygląd :w tym wypadku bryłka rudy
material = MAT_STONE;

on_state[0] = monolog_naszejzmiennej; //używana funkcja po użyciu...
scemeName = "MAP"; //używa jak mapy-Animacja użycie
wear = WEAR_EFFECT;//Mniej ważne:oznacza to efekt na przedmiocie
effect = "SPELLFX_MANAPOTION";//Przypisujemy efekt

description = name;

TEXT[5] = NAME_Value;
COUNT[5] = value;
};
Gdy to zrobiliśmy dodajemy funkcję on_state.
func void  monolog_naszejzmiennej() // to co z one state
{

naszazmienna =  1; //Zmienna zwraca na 1 czyli rozpoczyna monolog
Ai_ProcessInfos(self); //Kończy dialog ??-Musi być bo monolog się nie pojawi...

};
No to teraz warunki jakie muszą być spełnione aby się wyświetlił np. napis Teleport do...
//********************PIERWSZY DIALOG/MONOLOG***************************************
//Dodajemy najpierw warunek if
if (naszazmienna == 1) //Czyli jeśli naszazmienna jest równa 1 to się pojawi napis
{
return 1;
};

func VOID q_Info()//Funkcja dialogowa (Tak jak w dialogach tylko bez rozmów)
{
//musimy dać przypisać zmiennej wartość 2 (musicie to sami zrobić, aby się czegoś nauczyć :P)
//I zakończyć dialog... wyżej macie (kombiujcie :lol2:)
};
//********************PIERWSZY DIALOG/MONOLOG***************************************
//********************DRUGI DIALOG/MONOLOG***************************************
FUNC INT Telepory_Condition()//Robimy drugi dialog który... wyświetli nam możliwe miejsca teleportacji
{
Na początku dajemy warunek : Jeżeli zmienna == naszej wartości którą przypisaliśmy wyżej (np.2)
{
return 1;
};
};

func VOID Telepory_Info()
{
// Ustawiamy zmienną na 0 (naszazmienna=0)
//Oraz kończymy dialog tak jak wcześniej :P
//I Teraz co ma się wydarzyć czyli teleport na farmę...
AI_Teleport (self, "BIGFARM");//Pol. Teleportuj samego siebie (hero) na Waypoint o nazwie BIGFARM
};
//********************DRUGI DIALOG/MONOLOG***************************************
Możecie też dodać efekty wizualne podczas teleportacji :P Ale to sami zrobicie  :F
To by było na tyle. Nie zabraniam kopiowania Tutka ale pod warunkiem że napiszecie kto jest jego autorem.
W razie problemów pisać pod tym postem postaram się pomóc w ich rozwiązaniu.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Można to bardziej uznać za gotowca niż poradnik. Nie wyjaśniłeś co i jak, a przynajmniej nie tak, by nowi mogli go zrozumieć.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Ai_ProcessInfos(self); Zaczyna / rozpoczyna monolog, a nie kończy.
AI_StopProcessInfos (self); Kończy.


INV_ZBIAS            = INVCAM_ENTF_MISC2_STANDARD; //nie wiem co to XD

To odpowiada za skalowanie przedmiotu w ekwipunku.
 
: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.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Ups mój błąd. Jakoś zawsze nie mogłem ogarnąć o co w tych rzeczach chodzi. Zaraz poprawie.
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Ja się przypierdolę do nazewnictwa zmiennej. zmienna o nazwie "Stefan" nie jest w zadnym kierunku dobra rzecz. Nie mówi nic o siebie a jako ze to jest samouczek, tym bardziej powinieneś dać jej sensowna nazwę.  :|


Reszta jak napisał Splash, przydało by się bardziej komentarzy objaśniających ważne linijki kodu. Rzecz jasna nie każdą linijkę, najlepiej na początek napisz ze owy samouczek wymaga podstawy tworzenia dialogu i przedmiotu, opcjonalnie dodaj link do nich. 
 


Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
Widzisz mark, zmienił nazwę zmiennej ale to niczego nowego nie nauczy , ale chyba gdzieś był tutek co znaczy zmienna, więc panowie co nie wiecie, szukajcie! a znajdziecie, aczkolwiek, trzeba kombinować w skryptach i się uczyć aby do tego dojść
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Pod nazewnictwem zmiennej ma sie na myśli coś na styl.
var int ItmNazwaMonolog_active;
Teraz nawet jakbyś w życiu nie widział skrypty, da się domyśleć ze zmienna ma związanie z monologiem jakiegoś tam itemu i prawdopodobnie służy do przechowywania informacji czy monolog jest aktywny albo nie.

 :F
Spoiler
on_state[0] = monolog_naszejzmiennej; //funkcja to jest najważniejsze
może tak ?
on_state[0] = ItmNazwaMonolog_enable; // funkcja wywołana po użyciu przedmiotu
scemeName = "MAP"; // animacja używania przedmiotu

func void  ItmNazwaMonolog_enable() // funkcja wywołana po użyciu przedmiotu.
{

ItmNazwaMonolog_active =  1; // zmienna która "uaktywni" opcje dialogowe "monologu"
self.aivar[AIV_INVINCIBLE]=TRUE; // NPC nas nie atakują podczas "monologu"
Ai_ProcessInfos(self); //  wszystkie dialogi ze samym sobą których funkcja condition zwraca 1 (true) 

};

Wiem ze się przypierdalam do drobnostek, ale myślę ze takim sposobem kod jest bardziej czytelny. Patrząc na nazwy funkcji i zmiennych da sie szybko zrozumieć co ona będzie wykonywała. Popatrz tez na nazewnictwo funkcji i plików Gothica.

 
 



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