Własny dziennik 3767 9

O temacie

Autor karus

Zaczęty 14.05.2011 roku

Wyświetleń 3767

Odpowiedzi 9

karus

karus

Użytkownicy
posty122
  • Użytkownicy

karus

Własny dziennik
2011-05-14, 12:21(Ostatnia zmiana: 2011-12-09, 19:20)
Pytanie jest tego typu, czy za pomoca zwyklych skryptow da sie stworzyc dziennik w ktorym moglbym z poziomu gry zapisywac dana ilosc zdan, czy to tez zabawa z ikarusem?
pzdr
 


karus

karus

Użytkownicy
posty122
  • Użytkownicy
Tak wlasnie myslalem, leci props.
 

karus

karus

Użytkownicy
posty122
  • Użytkownicy

karus

Własny dziennik
#3 2011-05-14, 20:10(Ostatnia zmiana: 2011-05-14, 20:11)
A jeszcze jedno, w jaki sposób skryptowo tak zrobić, by wybranie danej literki w dialogu skutkowało wypisaniem jej dajmy na to w jakiejś czystej książce? Może da się funkcje log_entry przenieść do itemków tego typu skoro zainicjować questa da się bez problemu?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Nie rozumiem co masz na myśli przez "przenieść funkcję do itemków". Item może wywoływać jakąś funkcję przez on_state. Możesz w niej korzystać z dowolnych externali.
Co do wpisywania w książce, to musiałbyś po prostu zrobić zmienną tekstową. Przy wybieraniu literki robić
ConcatStrings(zmienna, "literka");ewentualnie przy czyszczeniu:
zmienna = "";W kodzie księgi zamiast bezpośredniego tekstu umieściłbyś tylko w odpowiednim miejscu odwołanie do zmiennej.
Doc_PrintLines (nDocID, 0, zmienna);

karus

karus

Użytkownicy
posty122
  • Użytkownicy

karus

Własny dziennik
#5 2011-12-08, 21:52(Ostatnia zmiana: 2011-12-08, 22:07)
No więc tak, deklaruje trzy zmienne tekstowe

Plik Story_Globals.d

var string x;
var string xn;
var string xnm;

2. Przygotowuję dialog

instance  DIA_Questob_ST (C_INFO)
{
npc = NOV_2060_Questob;
nr = 1;
condition = DIA_Questob_ST_Condition;
information = DIA_Questob_ST_Info;
permanent = 1;
important = 0;
description = "Chcę Pisać";
};

FUNC int  DIA_Questob_ST_Condition()
{
return 1;
};


FUNC VOID DIA_Questob_ST_Info()
{
AI_Output (other, self,"DIA_Questob_ST_15_00"); //Chcę pisać.
AI_Output (self, other,"DIA_Questob_ST_15_01"); // Ok!

Info_ClearChoices (DIA_Questob_ST);
Info_AddChoice (DIA_Questob_ST, "A",DIA_Questob_ST_Wybor1);
Info_AddChoice (DIA_Questob_ST, "B",DIA_Questob_ST_Wybor2);
Info_AddChoice (DIA_Questob_ST, "C",DIA_Questob_ST_Wybor3);

};

func void DIA_Questob_ST_Wybor1 ()
{
ConcatStrings(x, "A");
};

func void DIA_Questob_ST_Wybor2 ()
{
ConcatStrings(xn, "B");
};

func void DIA_Questob_ST_Wybor3 ()
{
ConcatStrings(xnm, "C");
};

3. Skrypt Księgi

INSTANCE CzystaKsiega (C_ITEM)

{
        name = "Czysta Ksiazka";

mainflag = ITEM_KAT_DOCS;
flags = ITEM_MISSION;


   visual = "ItWr_Book_02_03.3ds";
material = MAT_LEATHER;

scemeName = "MAP";
on_state[0] = UseCzystaKsiega;
description = name;

TEXT[0] = "";
};

FUNC VOID UseCzystaKsiega()
{
var int nDocID;

nDocID = Doc_Create ()  ; // DocManager
Doc_SetPages ( nDocID,  2 );                         //wieviel Pages

Doc_SetPage ( nDocID,  0, "Book_Mage_L.tga", 0 );
Doc_SetPage ( nDocID,  1, "Book_Mage_R.tga", 0 );

//1.Seite
 
  Doc_SetFont ( nDocID, -1, "font_15_book.tga"   ); // -1 -> all pages
  Doc_PrintLine ( nDocID,  0, "");
  Doc_PrintLine ( nDocID,  0, "");
Doc_SetMargins ( nDocID,  0,  275, 20, 30, 20, 1   );  //  0 -> margins are in pixels
Doc_PrintLine ( nDocID,  0, " " );
Doc_SetFont ( nDocID, -1, "font_10_book.TGA"   ); // -1 -> all pages
Doc_PrintLine ( nDocID,  0,  "");
Doc_PrintLine ( nDocID,  0, "");
Doc_PrintLines ( nDocID,  0, "x");
Doc_PrintLines ( nDocID,  0, "xn");
Doc_PrintLines ( nDocID,  0, "xnm");

//2.Seite
Doc_SetMargins ( nDocID, -1, 30, 20, 275, 20, 1   );  //  0 -> margins are in pixels (Position des Textes von den Ränder des TGAs aus, links,oben,rechts,unten)
Doc_PrintLine ( nDocID,  1, "");
Doc_PrintLine ( nDocID,  1, "");
Doc_PrintLine ( nDocID,  1, "");
Doc_PrintLine ( nDocID,  1, "");
Doc_PrintLines ( nDocID,  1, "");
Doc_PrintLine ( nDocID,  1, "");
Doc_PrintLine ( nDocID,  1, "");
Doc_PrintLine ( nDocID,  1, "");
Doc_Show ( nDocID );

};

4. Wynik:

Odpalam księgę i widzę nie odwołanie do zmiennej ale sam napis

x
xn
xnm

Odpalam dialog z postacią i wybieram opcje dialogowe, i niestety tekst się nie zmienia. Co robię źle? Jak zrobić żeby księga była czysta od początku, i dopiero dialog dodawał kolejnych literek?
Dzięki za pomoc z góry :)

P.S nie pamiętam ale raz udało mi się zrobić, że po odpaleniu gry w księdze widziałem już tylko literki które zostały podstawione pod zmienne, ale wykasowałem to  :lol:  Ale chyba wtedy definiowałem stałe tekstowe. A może pies pogrzebany jest w braku odnośnika do zmiennej w skrypcie książki?
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Zamiast podawać w funkcji nazwy zmiennych tekstowych, wpisałeś je w cudzysłowie przez co zostały potraktowane jako tekst :|

Zamiast
                                       Doc_PrintLines  ( nDocID,  0, "x");
                                        Doc_PrintLines  ( nDocID,  0, "xn");
                                        Doc_PrintLines  ( nDocID,  0, "xnm");
daj
                                       Doc_PrintLines  ( nDocID,  0, x);
                                        Doc_PrintLines  ( nDocID,  0, xn);
                                        Doc_PrintLines  ( nDocID,  0, xnm);

karus

karus

Użytkownicy
posty122
  • Użytkownicy
Po usunięciu cudzysłowiów, księga jest czysta, odpalam dialog, wybieram literki, i nadal jest czysta..
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Własny dziennik
#8 2011-12-08, 22:22(Ostatnia zmiana: 2011-12-08, 22:22)
zamiast tego
func void DIA_Questob_ST_Wybor1 ()
{
        ConcatStrings(x, "A");
};

func void DIA_Questob_ST_Wybor2 ()
{
        ConcatStrings(xn, "B");
};

func void DIA_Questob_ST_Wybor3 ()
{
        ConcatStrings(xnm, "C");
};
daj to
func void DIA_Questob_ST_Wybor1 ()
{
        x = ConcatStrings(x, "A");
};

func void DIA_Questob_ST_Wybor2 ()
{
        xn = ConcatStrings(xn, "B");
};

func void DIA_Questob_ST_Wybor3 ()
{
        xnm = ConcatStrings(xnm, "C");
};

karus

karus

Użytkownicy
posty122
  • Użytkownicy
Dzięki, działa :ok:
 


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