Ikarus (Pakiet skryptów) 425780 1020

O temacie

Autor orcwarrior

Zaczęty 11.06.2010 roku

Wyświetleń 425780

Odpowiedzi 1020

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Jest taka możliwość. Używając pakietu View.
 
: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.

Splash

Splash

Moderator
posty4213
Propsy3414
ProfesjaNierób
  • Moderator
Cytuj
czy jest możłiwośc za pomocą Lego/Ikarus stworzenie własnego boxa (na wzór jak w dialogach)?
Tak.
Cytuj
i czy funkcję Print można edytować jej współrzędne jak i kolor i rodzaj fonta.
Tak.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Wowoz

Wowoz

Użytkownicy
Wowoźny
posty3698
Propsy4862
NagrodyVV
Profesjabrak
  • Użytkownicy
  • Wowoźny
Te synek, ale bez kropki nienawiści bo się skoończy źle
 

Splash

Splash

Moderator
posty4213
Propsy3414
ProfesjaNierób
  • Moderator
Nie.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Cytuj
czy jest możłiwośc za pomocą Lego/Ikarus stworzenie własnego boxa (na wzór jak w dialogach)?
Tak.
Cytuj
i czy funkcję Print można edytować jej współrzędne jak i kolor i rodzaj fonta.
Tak.
mozesz napisać które funkcje za to odpowiadają?

rozumiem,że boxy robimy podobnie jak bary?
 

Splash

Splash

Moderator
posty4213
Propsy3414
ProfesjaNierób
  • Moderator
G1:
006FC600:    zCView::InsertBack(zSTRING const &)G2:
007A6130:    zCView::InsertBack(zSTRING const &)
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Istnieje jakiś skrypt który sprawia że deszcz pada w losowych odstępach czasu? Np. raz od 11 do 15 lub 2
od 14 do 14:30.
 

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

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Jest funkcja, która włącza deszcz, jednakże sam musisz wybrać godziny, w który się on wywołuje. Najlepszym sposobem będzie ustawianie paru zmiennych, pierwsza, która będzie odpowiadało, czy dzisiaj pada, druga, która będzie odpowiadała za godzinę rozpoczęcia, trzecia - minuta rozpoczęcia, czwarta - godzina zakończenia i piąta - minuta zakończenia, oraz dodanie ich do funkcji, które wykonują się codziennie.

Oto skrypt:

func void StartRain_Time (var int start_hr, var int start_min, var int end_hr, var int end_min)
{
/* Globale Instanzen initialisieren: */
//MEM_InitGlobalInst(); /* Hierrunter fällt auch der Skycontroller */

/* Gothic Tage sind um 12 Stunden verschoben, 0 = 12 Uhr, 1 = 12 Uhr des nächtes Tags */
start_hr = (start_hr + 12) % 24;
end_hr   = (end_hr   + 12) % 24;

if (start_hr > end_hr)
{
MEM_Warn ("StartRain_Time: Regen um 12 Uhr mittags ist nicht möglich!");
return;
};

/* 24 Stunden auf Bereich 0 bis 1 runterskalieren (float) */
var int start_float; var int end_float;
start_float = divf(mkf(start_hr*60 + start_min), mkf(24*60));
end_float   = divf(mkf(end_hr  *60 + end_min)  , mkf(24*60));
/* Ich rechne hier zunächst die Uhrzeit in vergangene Minuten
und dann als Anteil eines ganzen Tages aus und addiere anschließend
noch den Anteil eines halben Tages (1/2), da die Floats für den Regen
zwischen 12:00 Uhr = 0 und 12:00 Uhr am nächsten Tag = 1 liegen */

/* Start zur Startzeit*/
MEM_SkyController.rainFX_timeStartRain = start_float;

/* Ende zur Endzeit */
MEM_SkyController.rainFX_timeStopRain = end_float;

MEM_SkyController.rainFX_renderLightning = TRUE;

//All other things about the weather are in zCSkyController.d.

/* Ergebnis: Regen zur gewünschten Zeit! (es sei denn man ist in einer Zone
in der es schneit, dann gibt es Schnee) */
};

Wywoływanie funkcji "codziennej":
func void ApplyRain()
{
var int isRainingToday; //BOOL -> 0 = not raining, 1 = raining
var int RainStartHour; var int RainStartMinute;
var int RainEndtHour; var int RainEndMinute;

//W sumie nie jestem pewien, czy r_Max losuje w ten sam sposób co Hlp_Random, czyli od 0 do x-1, czy od 0 do x.
//Plusy r_Max są takie, że funkcja zmienia liczbę co wywołanie, a Hlp_Random po zamieszczeniu w taki sposób jak tutaj spowoduje, że każda liczba będzie taka sama, czyli
//jeśli pierwsza zmienna wylosuje 1, to każda następna w TYM skrypcie będzie wynosiła 1.
isRainingToday = r_Max(2);//wylosuje 1 albo 0
RainStartHour = r_Max(24);//wylosuje od 0 do 23, o 0:00 nie może padać jakimś dziwnym cudem
RainStartMinute = r_Max(60);//wylosuje od 0 do 59
RainEndHour = RainStartHour + r_Max(24);//ta zmienna doda sobie jakąś losową liczbę do RainStartHour
RainStartMinute = r_Max(60);//wylosuje od 0 do 59

if (RainEndHour > 24)
{
RainEndHour - 24;
};

if (isRainingToday)
{
StartRain_Time(RainStartHour, RainStartMinute, RainEndHour, RainEndMinute);
};
};

var int currentDay;
func void CheckDay()//Startup: FF_ApplyOnceExt (CheckDay, 0, -1); Albo FF_Apply(CheckDay);
{
if (currentDay < MEM_SkyController.dayCounter)// jeśli zmienna dnia Gothicowego jest większa od naszej zmiennej
{
currentDay = MEM_SkyController.dayCounter;//wypełnia zmienną, przez co nasza funkcja nie będzie się już dzisiaj wykonywała
FF_ApplyOnceExt (ApplyRain, 0, 1);//Doda funkcję APPLYRAIN do FrameFunctions, który wykona się tylko raz i ani razu więcej, dopóki się nie spełni warunek
};
};
 
: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
Dzięki, o takie coś mi chodziło :D spróbuje zrobić ten deszcz na zmiennych Random. Powinno się działać :) Jak bym mógł prosić to która linijka odpowiada za dzień? Aby deszcz padał tak bardziej randomowo xD
Edit: Nie doczytałem, więc nic nie musisz tłumaczyć :F
 

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

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
W sumie jeszcze tak nawiasem, dayCounter to float.
 
: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
Jeszcze jedno banalne pytanie :F Jak wywalić plamy krwi z ekranu xD?
 

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

Splash

Splash

Moderator
posty4213
Propsy3414
ProfesjaNierób
  • Moderator
LeGo_Init (LeGo_All & ~LeGo_Bloodsplats);
 
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.
Ostatnio nurtuje mnie pewne pytanie, mianowicie CZYM jest deszcz?
Normalnie bym powiedział, że deszcz jest PFXem, który jest wywoływany, kiedy dane zmienne są wypełnione.

Chciałbym kompletnie przerobić system deszczu, lecz niezbyt wiem jak, dlatego pytam o rady lub jakieś "drogowskazy".
 
: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.

Splash

Splash

Moderator
posty4213
Propsy3414
ProfesjaNierób
  • Moderator
Możliwości ingerencji Ikarusa w system deszczu są  bardzo ograniczone, więc niewiele zrobisz.
 
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.
Bardziej mi chodziło o zostawienie tego systemu deszczu, który jest i dodanie nowego.

Wyglądało by to mniej więcej tak:
Jeśli zmienne deszczu są wypełnione -> zeruj je i dodać nowy system, który będzie sobie działał oddzielnie.
 
: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.

Splash

Splash

Moderator
posty4213
Propsy3414
ProfesjaNierób
  • Moderator
Jak bym znał budowę klasy zCOutdoorRainFX, to może udałoby się coś poczynić.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
@Bogdan Zwei  deszcz działa fajnie :3 tylko gdy zmieniłem czas to deszcz się zabugował (świeciło słońce i padało przez co były bugi z niebem) Czy tak będzie w razie gdy npc prześpi się w czasie deszczu? (zmieniłem konsolą czas)
 

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

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Jeśli się prześpisz to deszcz się powinien wyłączyć, albo nic nie zmieniać z niebem.
 
: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.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
mam problem z printsoftami z Lego chickena,niestety tego bugu nie usunał. Niektóre napisy w ogóle nie działają  (przy otwieraniu ksrzyń), a inne się nakładają na siebie. zaktualizowałem plik interface.d na podst njanowszej wersji w LEgo dla G2,  niestety błąd pozostaje.

http://ifotos.pl/zobacz/printscre_ssqawqh.jpg

skrypt

Spoiler
/***********************************\
              INTERFACE
\***********************************/

var int Print_List; //zCList_zCViewText@

//========================================
// Vergangene Zeit seit Systemstart
//========================================
// Danke an Sektenspinner
func int sysGetTime() {
    CALL__cdecl(sysGetTimePtr);
    return CALL_RetValAsInt();
};

//========================================
// Farbhandling
//========================================
func int RGBA(var int r, var int g, var int b, var int a) {
    if(!a){if(!b){if(!g){if(!r){return 1;};};};};
    return ((r&zCOLOR_CHANNEL)<<zCOLOR_SHIFT_RED)
          |((g&zCOLOR_CHANNEL)<<zCOLOR_SHIFT_GREEN)
          |((b&zCOLOR_CHANNEL)<<zCOLOR_SHIFT_BLUE)
          |((a&zCOLOR_CHANNEL)<<zCOLOR_SHIFT_ALPHA);
};

func int ChangeAlpha(var int zCol, var int a) {
    return ((zCol & ~(zCOLOR_CHANNEL<<zCOLOR_SHIFT_ALPHA)) | ((a&zCOLOR_CHANNEL)<<zCOLOR_SHIFT_ALPHA));
};

func int GetAlpha(var int zCol) {
    return (zCol&(zCOLOR_CHANNEL<<zCOLOR_SHIFT_ALPHA))>>zCOLOR_SHIFT_ALPHA;
};


//========================================
// Text generieren
//========================================

func int Print_CreateText(var string text, var string font) {
    var int hndl; hndl = new(zCViewText@);
    var zCViewText txt; txt = get(hndl);
    txt.timed = 0;
    txt.font = Print_GetFontPtr(font);
    txt.color = -1;
    txt.text = text;
    return hndl;
};

func int Print_CreateTextPtr(var string text, var string font) {
    var int ptr; ptr = create(zCViewText@);
    var zCViewText txt; txt = _^(ptr);
    txt.timed = 0;
    txt.font = Print_GetFontPtr(font);
    txt.text = text;
    txt.color = -1;
    return ptr;
};

func int Print_CreateTextPtrColored(var string text, var string font, var int color) {
    var int ptr; ptr = create(zCViewText@);
    var zCViewText txt; txt = _^(ptr);
    txt.timed = 0;
    txt.font = Print_GetFontPtr(font);
    txt.text = text;
    txt.color = color;
    txt.colored = 1;
    return ptr;
};

//========================================
// Text als zCViewText erhalten
//========================================
func zCViewText Print_GetText(var int hndl) {
    get(hndl);
};

func int Print_GetTextPtr(var int hndl) {
    return getPtr(hndl);
};

//========================================
// Text löschen
//========================================
func void Print_DeleteText(var int hndl) {
    if (!Hlp_IsValidHandle(hndl)) { return; };
    var zCView v; v = _^(MEM_Game.array_view[0]);
    var int list; list = _@(v.textLines_data);
    var int offs; offs = List_Contains(list, getPtr(hndl));
    if(offs > 1) {
        List_Delete(list, offs);
    }
    else {
        MEM_Error(ConcatStrings(IntToString(offs), ". Print not found?!"));
    };
    delete(hndl);
};

//========================================
// Screengröße (in Pixeln)
//========================================
var int Print_Ratio; //float
func void _Print_Ratio() {
    Print_Ratio = mkf(Print_Screen[PS_X]);
    Print_Ratio = divf(Print_Ratio, mkf(Print_Screen[PS_Y]));
};


var int Print_Screen[2];
func void Print_GetScreenSize() {
    Print_Screen[PS_X] = STR_ToInt(MEM_GetGothOpt("VIDEO", "zVidResFullscreenX"));
    Print_Screen[PS_Y] = STR_ToInt(MEM_GetGothOpt("VIDEO", "zVidResFullscreenY"));
    _Print_Ratio();
};

//========================================
// Pixel in Virtuelle Koordinaten
//========================================
func int Print_ToVirtual(var int pxl, var int dim) {
    Print_GetScreenSize();
    pxl *= 8192;
    if(dim == PS_X) {
        return pxl / Print_Screen[PS_X];
    }
    else if(dim == PS_Y) {
        return pxl / Print_Screen[PS_Y];
    };
    return pxl / dim;
};
func int Print_ToPixel(var int vrt, var int dim) {
    Print_GetScreenSize();
    if(dim == PS_X) {
        vrt *= Print_Screen[PS_X];
    }
    else if(dim == PS_Y) {
        vrt *= Print_Screen[PS_Y];
    }
    else {
        vrt *= dim;
    };
    return vrt / 8192;
};

func int Print_ToPixelF(var int vrt, var int dim) {
    Print_GetScreenSize();
    if(dim == PS_X) {
        vrt *= Print_Screen[PS_X];
    }
    else if(dim == PS_Y) {
        vrt *= Print_Screen[PS_Y];
    }
    else {
        vrt *= dim;
    };
    return fracf(vrt, PS_VMax);
};

func int Print_ToRatio(var int size, var int dim) {
    if (dim == PS_Y) {
        return roundf(mulf(mkf(size), Print_Ratio));
    } else if (dim == PS_X) {
        return roundf(divf(mkf(size), Print_Ratio));
    };
    return -1;
};

func int Print_ToRadian(var int angle) {
    const int toRadian = 1016003125; // 0.017453292
    mulf(angle, toRadian);
};
func int Print_ToDegree(var int angle) {
    const int toDegree = 1113927393; // 57.29578
    mulf(angle, toDegree);
};

//========================================
// Erweitertes PrintScreen
//========================================

instance zCViewTextPrint(zCViewText) {
    //_vtbl = 8643396; //0x83E344 g2
    _vtbl = 8251988; //dla gothic 1
    inPrintWin = 0;
    timer = 0;
    timed = 0;
    colored = 0;
    color = 0;
};

func void zCViewTextPrint_UnArchiver(var zCViewText this) {
    this._vtbl = PM_LoadInt("vtbl");
    this.posx = PM_LoadInt("posx");
    this.posy = PM_LoadInt("posy");
    this.text = PM_LoadString("text");
    this.font = Print_GetFontPtr(PM_LoadString("fontname"));
    this.timer = PM_LoadInt("timer");
    this.inPrintWin = PM_LoadInt("inPrintWin");
    this.color = PM_LoadInt("color");
    this.timed = PM_LoadInt("timed");
    this.colored = PM_LoadInt("colored");

    var zCView v; v = _^(MEM_Game.array_view[0]);
    if (v.textlines_next) {
        List_Add(v.textlines_next, MEM_InstToPtr(this));
    } else {
        v.textlines_next = List_Create(MEM_InstToPtr(this));
    };
};


func int Print_Ext(var int x, var int y, var string text, var string font, var int color, var int time) {
    if (time == -1) {
        var int h; h = new(zCViewTextPrint);
        var zCViewText txt; txt = get(h);
    } else {
        h = -1;
        txt = _^(create(zCViewTextPrint));
    };

    if(!color) { color = 1; };

    txt.timed = (time != -1);
    if (time != -1) { txt.timer = mkf(time); };

    txt.font = Print_GetFontPtr(font);
    txt.color = color;
    txt.text = text;
    txt.colored = 1;

    txt.posx = x;
    if (x == -1) {
        txt.posx = (PS_VMax - Print_ToVirtual(Print_GetStringWidth(text, font), PS_X)) / 2;
    };
    txt.posy = y;
    if (y == -1) {
        txt.posy = (PS_VMax - Print_ToVirtual(Print_GetFontHeight(font), PS_Y)) / 2;
    };

    var zCView v; v = _^(MEM_Game.array_view[0]);
    if (v.textlines_next) {
        List_Add(v.textlines_next, MEM_InstToPtr(txt));
    } else {
        v.textlines_next = List_Create(MEM_InstToPtr(txt));
    };
    return h;
};

//========================================
// Erweitertes PrintScreen (pixel)
//========================================
func int Print_ExtPxl(var int x, var int y, var string text, var string font, var int color, var int time) {
    Print_Ext(Print_ToVirtual(x, PS_X), Print_ToVirtual(y, PS_Y), text, font, color, time);
};

//========================================
// Textfeld
//========================================

func string Print_LongestLine(var string text, var string font) {
    var int cnt; cnt = STR_SplitCount(text, Print_LineSeperator);
    var int i; i = 0;
    var int max; max = 0;
    var int tmp; tmp = 0;

    var int pos; pos = MEM_StackPos.position;
        if (i >= cnt) {
            return STR_Split(text, Print_LineSeperator, i-1);
        };
        tmp = Print_GetStringWidth(STR_Split(text, Print_LineSeperator, i), font);
        if (tmp > max) {
            max = tmp;
        };
    i+=1;
    MEM_StackPos.position = pos;
};

func int Print_LongestLineLength(var string text, var string font) {
    return Print_GetStringWidth(Print_LongestLine(text, font), font);
};


func int Print_TextField(var int x, var int y, var string text, var string font, var int height) {
    var int cnt; cnt = STR_SplitCount(text, Print_LineSeperator);
    var int i; i = 1;
    var int ptr; ptr = Print_CreateTextPtr(STR_Split(text, Print_LineSeperator, 0), font);
    var zCViewText txt; txt = _^(ptr);
    txt.posx = x;
    txt.posy = y;

    var int list; list = List_Create(Ptr);
    var int pos; pos = MEM_StackPos.position;
    if (i >= cnt) {
        return list;
    };
        ptr = Print_CreateTextPtr(STR_Split(text, Print_LineSeperator, i), font);
        txt = _^(ptr);
        txt.posx = x;
        txt.posy = y+(height*i);

        List_Add(list, ptr);
        i+=1;

    MEM_StackPos.position = pos;
};

func int Print_TextFieldPxl(var int x, var int y, var string text, var string font) {
    return Print_TextField(Print_ToVirtual(x, PS_X), Print_ToVirtual(y, PS_Y), text, font, Print_ToVirtual(Print_GetFontHeight(font), PS_Y));
};



//========================================
// Klasse für PermMem
//========================================
class gCPrintS {
    var int a8_Alpha;    // Anim8(h)
    var int a8_Movement; // Anim8(h)
    var int tv_Text;     // Print(h)
    var int vr_Pos;
    var int vr_Offs;
};
instance gCPrintS@(gCPrintS);

var int gCPrintS_Act;
var int gCPrintS_COff;

func void gCPrintS_Delete(var gCPrintS this) {
    Anim8_Delete(this.a8_Movement);
    Print_DeleteText(this.tv_Text);
};

func void gCPrintS_Alpha(var int h, var int value) {
    var gCPrintS p; p = get(h);
    var zCViewText t; t = get(p.tv_Text);
    t.color = ChangeAlpha(t.color, value);
    if(gCPrintS_COff > p.vr_Offs) {
        p.vr_Pos -= (gCPrintS_COff - p.vr_Offs) * PF_TextHeight;
        Anim8(p.a8_Movement, p.vr_Pos, PF_MoveYTime, A8_SlowEnd);
        p.vr_Offs = gCPrintS_COff;
    };
};

func void gCPrintS_Position(var int h, var int value) {
    var gCPrintS p; p = get(h);
    var zCViewText t; t = get(p.tv_Text);
    t.posY = value;
};

//========================================
// Softprint
//========================================
func void PrintS_Ext(var string txt, var int color) {
    var int h; h = new(gCPrintS@);
    var gCPrintS p; p = get(h);
    var int v;

    v = Anim8_NewExt(1, gCPrintS_Alpha, h, false);
    Anim8_RemoveIfEmpty(v, true);
    Anim8_RemoveDataIfEmpty(v, true);
    Anim8 (v, 255, PF_FadeInTime,  A8_Constant);
    Anim8q(v, 0,   PF_WaitTime,    A8_Wait);
    Anim8q(v, 0,   PF_FadeOutTime, A8_SlowStart);
    p.a8_Alpha = v;

    v = Anim8_NewExt(PF_PrintY, gCPrintS_Position, h, false);
    Anim8 (v, PF_PrintY - PF_TextHeight, PF_MoveYTime, A8_SlowEnd);
    p.a8_Movement = v;

    p.tv_Text = Print_Ext(PF_PrintX, PF_PrintY, txt, PF_Font, color, -1);
    p.vr_Pos = PF_PrintY - PF_TextHeight;
    gCPrintS_COff += 1;
    if(!gCPrintS_Act) {
        gCPrintS_COff = 0;
    };
    gCPrintS_Act += 1;
    p.vr_Offs = gCPrintS_COff;
};
func void AI_PrintS_Ext(var c_npc slf, var string txt, var int color) {
    AI_Function_SI(slf, PrintS_Ext, txt, color);
};

//========================================
// vereinfachter Softprint
//========================================
func void PrintS(var string txt) {
    PrintS_Ext(txt, RGBA(255,255,255,0));
};
func void AI_PrintS(var c_npc slf, var string txt) {
    AI_Function_S(slf, PrintS, txt);
};

//========================================
// PrintScreen fixen
//========================================
func void PrintScreen_Ext(var string txt, var int x, var int y, var string font, var int timeSec) {
    if(x == -1) {
        x = (PS_VMax - Print_ToVirtual(Print_GetStringWidth(txt, font), PS_X)) / 2;
    }
    else {
        x = Print_ToVirtual(x, 100);
    };
    if(y == -1) {
        y = (PS_VMax - Print_ToVirtual(Print_GetFontHeight(font), PS_Y)) / 2;
    }
    else {
        y = Print_ToVirtual(y, 100);
    };
    Print_Ext(x, y, txt, font, COL_White, timeSec * 1000);
};
class PS_Param {
    var string txt;
    var int x;
    var int y;
    var string font;
    var int timesec;
}; instance PS_Param@(PS_Param);

func void AI_PrintScreen_Execute(var int h) {
    var PS_Param p; p = get(h);
    PrintScreen_Ext(p.txt, p.x, p.y, p.font, p.timeSec);
    delete(h);
};

func void AI_PrintScreen(VAR STRING msg, VAR INT posx, VAR INT posy, VAR STRING font, VAR INT timeSec){
PrintScreen(msg, posx, posy, font, timesec);
};

func void AI_PrintScreen_Ext(var string txt, var int x, var int y, var string font, var int timeSec) {
    var int h; h = New(PS_Param@);
    PS_Param@.txt = txt;
    PS_Param@.x = x;
    PS_Param@.y = y;
    PS_Param@.font = font;
    PS_Param@.timeSec = timeSec;
    AI_Function_I(self, AI_PrintScreen_Execute, h);
};
func void Print_FixPS() {
    var int PS_Ext; PS_Ext = MEM_GetFuncOffset(PrintScreen_Ext);
    var zCPar_Symbol PS; PS = _^(MEM_ReadIntArray(contentSymbolTableAddress, MEM_GetFuncID(PrintScreen)));

    Call_Begin(0);
        Call_IntParam(_@(PS_Ext));
        Call__thiscall(_@(ContentParserAddress), zCParser__DoStack);

    PS.content = Call_Close();
    var int AI_PS_Ext; AI_PS_Ext = MEM_GetFuncOffset(AI_PrintScreen_Ext);
     PS = _^(MEM_ReadIntArray(contentSymbolTableAddress, MEM_GetFuncID(AI_PrintScreen)));

    Call_Begin(0);
        Call_IntParam(_@(AI_PS_Ext));
        Call__thiscall(_@(ContentParserAddress), zCParser__DoStack);

    PS.content = Call_Close();
};




 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Znowu jestem ciemny :F Zacząłem bawić się buttonami i napisałem skrypt wyświetlania napisu gdy na niego wjadę. Akurat napis się pojawia, ale nie chcę zniknąć :/
Tak wyglądają obie funkcje.
func void Enter_B1()
{

var int msg;
var int msgTitle;
msgTitle=Print_Ext(5000,4500,"Duży oręż II",PF_Font,RGBA(255,255,255,255),-1);
msg = Print_Ext(5000,5000,"Bohater potrafi lepiej walczyć ciężkimi broniami.",PF_Font,RGBA(255,255,255,255),-1);
//Print_DeleteText
//PrintScreen_Ext(var string txt, var int x, var int y, var string font, var int timeSec) {
};

func void Leaver_B1()
{
var int msg;
var int msgTitle;
msgTitle=Print_Ext(5000,4500,"Duży oręż II",PF_Font,RGBA(255,255,255,255),-1);
msg = Print_Ext(5000,5000,"Bohater potrafi lepiej walczyć ciężkimi broniami.",PF_Font,RGBA(255,255,255,255),-1);
Print_DeleteText(msg);
Print_DeleteText(msgTitle);
};
2)Da się jakoś zrobić, aby button był nad teksturą a nie pod nią?? (Nie oś Y!)
 

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


0 użytkowników i 3 gości przegląda ten wątek.
0 użytkowników
Do góry