Ikarus (Pakiet skryptów) 413898 1020

O temacie

Autor orcwarrior

Zaczęty 11.06.2010 roku

Wyświetleń 413898

Odpowiedzi 1020

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Tu na pewno chodzi o klase zCView, a nie zCViewText?
Dowiedz się dokładniej.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Tu na pewno chodzi o klase zCView, a nie zCViewText?
Dowiedz się dokładniej.
zaktualizowana klasa, dodane zcviewtext z ikarusa 1.2 niestety w modzie nie generuje to spodziewanego efektu
//--------------------------------------
// Thx 2 orcwarrior!
//--------------------------------------

const int MAX_ITEMS = 150;
const int MENU_EVENT_MAX = 9;

class zCMenu {
    var int _vtbl;                  //0x0000

    var string backPic;             //0x0004 zSTRING
    var string backWorld;           //0x0018 zSTRING
    var int posx;                   //0x001C int
    var int posy;                   //0x0020 int
    var int dimx;                   //0x0000 int
    var int dimy;                   //0x0000 int
    var int alpha;                  //0x0000 int
    var string musicThemeName;      //0x0000 zSTRING
    var int eventTimerUpdateMSec;   //0x0000 int
    var string itemID[MAX_ITEMS];   //0x0000 zSTRING
    var int     flags;              //0x0000 int
    var int     defaultOutGame;     //0x0000 int
    var int     defaultInGame;      //0x0000 int

    var int m_pWindow;              //0x0000 zCViewWindow*
    var int m_pInnerWindow;         //0x0000 zCViewWindow*
   
    var int m_exitState;            //0x0000 enum { NONE, BACK, GO, FINISHED }

    var string name;                //0x0000 zSTRING

    var int m_musicTheme;           //zCMusicTheme*
    var int m_mainSel;              //int
    var int m_screenInitDone;       //zBOOL

    var int m_use_dimx;             //int
    var int m_use_dimy;             //int
    var int m_use_posx;             //int
    var int m_use_posy;             //int
   
    var int m_pViewInfo;            //zCView*
    var int cursorVob;              //zCVob*

    var int eventOccured[MENU_EVENT_MAX]; //zBOOL
    var int cursorEn;               //zBOOL
    var int noneSelectable;         //zBOOL
    var int registeredCPP;          //zBOOL
   
    var int updateTimer;            //int
    var int fxTimer;                //float
   
    /*
    enum zTMenuItemSelAction {
        SEL_ACTION_UNDEF            = 0,
        SEL_ACTION_BACK             = 1,
        SEL_ACTION_STARTMENU        = 2,
        SEL_ACTION_STARTITEM        = 3,
        SEL_ACTION_CLOSE            = 4,
        SEL_ACTION_CONCOMMANDS      = 5,
        SEL_ACTION_PLAY_SOUND       = 6,
        SEL_ACTION_EXECCOMMANDS     = 7
    };*/
    var int forceSelAction;         //zTMenuItemSelAction
   
    var string forceSelAction_S;    //zSTRING
    var int forceSelActionItem;     //zCMenuItem*
    var int forcedSelAction;        //zBOOL
   
    //zCArray <zCMenuItem *> m_listItems;   
        var int m_listItems_array;  //zCMenuItem*
        var int m_listItems_numAlloc;//int   
        var int m_listItems_numInArray;//int
   
    //[oCMenu_Status_only]
    //oCMenu_Status ist eine Unterklasse und hat zusätzlich diese Eigenschaften:
    //Hab mir gespart dafür nochmal eine Extraklasse zu schreiben:
   
    //zCArray <oSMenuInfoAttribute> m_listAttributes;   
        var int m_listAttributes_array;     //oSMenuInfoAttribute*
        var int m_listAttributes_numAlloc;  //int   
        var int m_listAttributes_numInArray;//int
    //zCArray <oSMenuInfoTalent>        m_listTalents;
        var int m_listTalents_array;        //oSMenuInfoTalent*
        var int m_listTalents_numAlloc;     //int   
        var int m_listTalents_numInArray;   //int
    //zCArray <oSMenuInfoArmor>     m_listArmory;
        var int m_listArmory_array;         //oSMenuInfoArmor*
        var int m_listArmory_numAlloc;      //int   
        var int m_listArmory_numInArray;    //int
   
    //[/oCMenu_Status_only]
};

//#################################################################
//
//  zCView: Basis für viele Anzeigeelemente //sollte jetzt auch für G1 korrekt sein.
//
//#################################################################

//------------------------------------------------
//  Textzeile von zCView:
//------------------------------------------------

class zCViewText {
var int _vtbl;

var int posx;
var int posy;

var string text; //zSTRING //Die Entscheidende Eigenschaft.
var int font; //zCFont*
var int timer; //zREAL //übrige Zeit für PrintScreen anzeigen die nur eine bestimmte Zeit dauern?
var int inPrintWin; //zBOOL //vermutlich für anzeigen mit "Print", die nach oben weggeschoben werden.

var int color; //zCOLOR
var int timed; //zBOOL
var int colored; //zBOOL //klingt interessant. Vielleicht kann man hiermit was anfangen.
};

//siehe Konstanten für Adresse vom globalen zCView screen.

/* zCViews kapseln zweidimensionale Objekte auf dem Bildschirm.
 * Dazu zählen zum Beispiel Texte oder Menüelemente.
 *
 * Bei Menüelemente verhält es sich so:
 * -Ein Menüelement wird generiert, wenn es das erste mal gebraucht wird. Es lebt dann bis zum beenden von Gothic.
 * -Ein Menüelement speichert den Text, der zu ihm gehört in zCMenuItem.m_listLines.
 * -Sobald ein Menüelement etwas anzeigen muss, erzeugt es ein "InnerWindow" um speichert sich eine Referenz
 *  auf dieses InnerWindow in zCMenuItem.m_pInnerWindow.
 * -Das InnerWindow ist ein zCView und bekommt eine Kopie des anzuzeigenden Textes vom Menüelement.
 * -Das InnerWindow speichert sich alle Textzeilen (meistens eine) in zCView.textLines. Das "nullte" Element von solchen Liste bleibt stets leer.
 * -Der Text wird vom InnerWindow dann in jedem Frame gezeichnet. Sobald das Menüitem entscheidet, dass es nichts mehr anzeigen muss wird das InnerWindow zerstört.
 */

//siehe Konstanten für Adresse vom globalen zCView screen.

class zCView {
    var int _vtbl;
    var int _zCInputCallback_vtbl;
    /*
    enum zEViewFX
    {
        VIEW_FX_NONE,
        VIEW_FX_ZOOM,
        VIEW_FX_MAX
    }*/
    //var int m_bFillZ;               //zBOOL //G2 only
    var int next;                   //zCView*

    //enum zTviewID { VIEW_SCREEN,VIEW_VIEWPORT,VIEW_ITEM };
    var int viewID;                 //zTviewID
    var int flags;                  //int
    var int intflags;               //int
    var int ondesk;                 //zBOOL Flag if in list

    /*
    enum zTRnd_AlphaBlendFunc   {   zRND_ALPHA_FUNC_MAT_DEFAULT,
                                zRND_ALPHA_FUNC_NONE,           
                                zRND_ALPHA_FUNC_BLEND,         
                                zRND_ALPHA_FUNC_ADD,                   
                                zRND_ALPHA_FUNC_SUB,                   
                                zRND_ALPHA_FUNC_MUL,                   
                                zRND_ALPHA_FUNC_MUL2,                   
                                zRND_ALPHA_FUNC_TEST,           
                                zRND_ALPHA_FUNC_BLEND_TEST     
                            };  */
    var int alphafunc;              //zTRnd_AlphaBlendFunc
    var int color;                  //zCOLOR b, g, r, a
    var int alpha;                  //int

    // Childs
    //zList <zCView>            childs
        var int childs_compare;        //(*Compare)(zCView *ele1,zCView *ele2)
        var int childs_count;          //int
        var int childs_last;           //zCView*
        var int childs_wurzel;         //zCView*
   
    var int owner;              //zCView*
    var int backTex;            //zCTexture*

    //Das Menüzeug nutzt oft virtuelle Koordinaten.
    var int vposx;              //int
    var int vposy;              //int
    var int vsizex;             //int
    var int vsizey;             //int
   
    //Aber auch "echt" Pixelpositionen
    var int pposx;              //int
    var int pposy;              //int
    var int psizex;             //int
    var int psizey;             //int

    //Font
    var int font;               //zCFont*
    var int fontColor;          //zCOLOR
   
    //Das Textfenster:
    var int px1;                //int
    var int py1;                //int
    var int px2;                //int
    var int py2;                //int
   
    var int winx;               //int // Position in Text-Win
    var int winy;               //int
   
    //zCList <zCViewText>       textLines;
        var int textLines_data; //zCViewText*
        var int textLines_next; //zCList <zCViewText>*
       
    var int scrollMaxTime;      //zREAL
    var int scrollTimer;        //zREAL
   
    /*
    enum zTViewFX: {
        VIEW_FX_NONE        = 0,
        VIEW_FX_ZOOM        = 1,
        VIEW_FX_FADE        = VIEW_FX_ZOOM << 1,
        VIEW_FX_BOUNCE      = VIEW_FX_FADE << 1,

        VIEW_FX_FORCE_DWORD = 0xffffffff
    }*/
   
    var int fxOpen       ;    //zTViewFX           
    var int fxClose      ;    //zTViewFX           
    var int timeDialog   ;    //zREAL                 
    var int timeOpen     ;    //zREAL
    var int timeClose    ;    //zREAL                 
    var int speedOpen    ;    //zREAL                 
    var int speedClose   ;    //zREAL                 
    var int isOpen       ;    //zBOOL                 
    var int isClosed     ;    //zBOOL                 
    var int continueOpen ;    //zBOOL                 
    var int continueClose;    //zBOOL                 
    var int removeOnClose;    //zBOOL                 
    var int resizeOnOpen ;    //zBOOL                 
    var int maxTextLength;    //int                   
    var string textMaxLength;    //zSTRING             
    var int posCurrent_0[2]; //zVEC2
    var int posCurrent_1[2]; //zVEC2             
    var int posOpenClose_0[2]; //zVEC2
    var int posOpenClose_1[2]; //zVEC2
};

const int MAX_USERSTRINGS = 10;
const int MAX_SEL_ACTIONS =  5;
const int MAX_USERVARS    =  4;
const int MAX_EVENTS      = 10;

class zCMenuItem {
    var int zCView__vtbl;
    var int zCInputCallback_vtbl;
    //var int m_bFillZ;               //zBOOL //G2 only
    var int zCView_next;       
    var int zCView_viewID;     
    var int zCView_flags;     
    var int zCView_intflags;   
    var int zCView_ondesk;     
    var int zCView_alphafunc;   
    var int zCView_color;       
    var int zCView_alpha;       
    var int zCView_compare;
    var int zCView_count;       
    var int zCView_last;       
    var int zCView_wurzel;     
    var int zCView_owner;       
    var int zCView_backTex;
    var int zCView_vposx;       
    var int zCView_vposy;       
    var int zCView_vsizex;     
    var int zCView_vsizey;     
    var int zCView_pposx;     
    var int zCView_pposy;       
    var int zCView_psizex;     
    var int zCView_psizey;     
    var int zCView_font;       
    var int zCView_fontColor;   
    var int zCView_px1;           
    var int zCView_py1;           
    var int zCView_px2;           
    var int zCView_py2;           
    var int zCView_winx;           
    var int zCView_winy;           
    var int zCView_textLines_data; 
    var int zCView_textLines_next;
    var int zCView_scrollMaxTime;   
    var int zCView_scrollTimer;
    var int zCView_fxOpen        ; 
    var int zCView_fxClose       ; 
    var int zCView_timeDialog    ; 
    var int zCView_timeOpen  ; 
    var int zCView_timeClose     ; 
    var int zCView_speedOpen     ; 
    var int zCView_speedClose    ; 
    var int zCView_isOpen        ; 
    var int zCView_isClosed  ; 
    var int zCView_continueOpen ; 
    var int zCView_continueClose; 
    var int zCView_removeOnClose; 
    var int zCView_resizeOnOpen ; 
    var int zCView_maxTextLength; 
    var string zCView_textMaxLength;           
    var int zCView_posCurrent_0[2];
    var int zCView_posCurrent_1[2];       
    var int zCView_posOpenClose_0[2];
    var int zCView_posOpenClose_1[2];
   
    //Parser Start
   
    var string m_parFontName;                            //zSTRING
    var string m_parText            [MAX_USERSTRINGS];   //zSTRING
    var string m_parBackPic;                             //zSTRING
    var string m_parAlphaMode;                           //zSTRING
    var int m_parAlpha;                                  //int         
    var int m_parType;                                   //int         
    var int m_parOnSelAction        [MAX_SEL_ACTIONS] ;  //int         
    var string m_parOnSelAction_S   [MAX_SEL_ACTIONS];   //zSTRING
    var string m_parOnChgSetOption;                      //zSTRING
    var string m_parOnChgSetOptionSection;                //zSTRING
    var int m_parOnEventAction  [MAX_EVENTS];            //int         
    var int m_parPosX;                                   //int         
    var int m_parPosY;                                   //int         
    var int m_parDimX;                                   //int         
    var int m_parDimY;                                   //int         
    var int m_parSizeStartScale;                         //float     
    var int m_parItemFlags;                              //int         
    var int m_parOpenDelayTime;                          //float     
    var int m_parOpenDuration;                           //float     
    var int m_parUserFloat      [MAX_USERVARS];          //float   
    var string m_parUserString      [MAX_USERVARS];      //zSTRING
    var int m_parFrameSizeX;                             //int         
    var int m_parFrameSizeY;                             //int         
   
    //Parser End
   
    var int m_iRefCtr;                //int                     
    var int m_pInnerWindow;           //zCView*               
    var int m_pFont;                  //zCFont*               
    var int m_pFontHi;                //zCFont*               
    var int m_pFontSel;               //zCFont*               
    var int m_pFontDis;               //zCFont*               
    var int m_bViewInitialized;       //zBOOL                   
    var int m_bLeaveItem;             //zBOOL                   
    var int m_bVisible;               //zBOOL                   
   
    //zCArray<zSTRING> m_listLines;
        var int m_listLines_array;     //zSTRING*
        var int m_listLines_numAlloc;  //int     
        var int m_listLines_numInArray;//int

    var string id;                     //zSTRING           
    var int inserted;                  //zBOOL           
    var int changed;                   //zBOOL           
    var int active;                    //zBOOL           
    var int open;                      //zBOOL           
    var int close;                     //zBOOL           
    var int opened;                    //zBOOL           
    var int closed;                    //zBOOL           
    var int disabled;                  //zBOOL           
    var int orgWin;                    //zCView*           
    var int fxTimer;                   //float           
    var int openDelayTimer;            //float   
   
    var int activeTimer;               //float
var int registeredCPP;             //zBOOL
var int firstTimeInserted;         //zBOOL
};

//#################################################################
//
//  Auch ein zCView, aber ein anderes:
//
//#################################################################

class oCViewStatusBar
{
    var int zCView__vtbl;
    var int zCInputCallback_vtbl;
    //var int m_bFillZ;               //zBOOL //G2 only
    var int zCView_next;       
    var int zCView_viewID;     
    var int zCView_flags;     
    var int zCView_intflags;   
    var int zCView_ondesk;     
    var int zCView_alphafunc;   
    var int zCView_color;       
    var int zCView_alpha;       
    var int zCView_compare;
    var int zCView_count;       
    var int zCView_last;       
    var int zCView_wurzel;     
    var int zCView_owner;       
    var int zCView_backTex;
    var int zCView_vposx;       
    var int zCView_vposy;       
    var int zCView_vsizex;     
    var int zCView_vsizey;     
    var int zCView_pposx;     
    var int zCView_pposy;       
    var int zCView_psizex;     
    var int zCView_psizey;     
    var int zCView_font;       
    var int zCView_fontColor;   
    var int zCView_px1;           
    var int zCView_py1;           
    var int zCView_px2;           
    var int zCView_py2;           
    var int zCView_winx;           
    var int zCView_winy;           
    var int zCView_textLines_data; 
    var int zCView_textLines_next;
    var int zCView_scrollMaxTime;   
    var int zCView_scrollTimer;
    var int zCView_fxOpen        ; 
    var int zCView_fxClose       ; 
    var int zCView_timeDialog    ; 
    var int zCView_timeOpen  ; 
    var int zCView_timeClose     ; 
    var int zCView_speedOpen     ; 
    var int zCView_speedClose    ; 
    var int zCView_isOpen        ; 
    var int zCView_isClosed  ; 
    var int zCView_continueOpen ; 
    var int zCView_continueClose; 
    var int zCView_removeOnClose; 
    var int zCView_resizeOnOpen ; 
    var int zCView_maxTextLength; 
    var string zCView_textMaxLength;           
    var int zCView_posCurrent_0[2];
    var int zCView_posCurrent_1[2];       
    var int zCView_posOpenClose_0[2];
    var int zCView_posOpenClose_1[2];
   
    var int minLow, maxHigh;         //zREAL
    var int low, high;               //zREAL
    var int currentValue;            //zREAL
   
    var int scale;                   //float   
    var int range_bar;               //zCView*
    var int value_bar;               //zCView*
    var string texView;              //zSTRING
    var string texRange;             //zSTRING
    var string texValue;             //zSTRING
};
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Ikarus (Pakiet skryptów)
#262 2014-11-07, 11:13(Ostatnia zmiana: 2014-11-08, 17:04)
Wymaga testu w g1. Wskazówki od Lehony przydatne były.
// Ported from g2 into g1          - CHICKEN
const int PS_X = 0;
const int PS_Y = 1;

const int PS_VMax = 8192;

var int Print_Screen[2];
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]));
};
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();
};
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;
};
const int zFontMan = 9291548;

const int zCFontMan__Load = 7204928;
const int zCFontMan__GetFont = 7205408;

const int zCFont__GetFontX = 7209488;
const int zCFont__GetFontY = 7209472;

func int zCFontMan_Load(var string font) {
    CALL_zStringPtrParam(font);
   CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__Load);
    return CALL_RetValAsInt();
};
func int Print_GetFont(var string font) {
    var int loadFont; loadFont = zCFontMan_Load(font);
    CALL_IntParam(loadFont);
    CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__GetFont);
    return CALL_RetValAsInt();
};
func int Print_GetStringWidth(var string s, var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL_zStringPtrParam(s);
    CALL__thiscall(adr, zCFont__GetFontX);
    return CALL_RetValAsInt();
};
func int Print_GetFontHeight(var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL__thiscall(adr, zCFont__GetFontY);
    return CALL_RetValAsInt();
};
func void PrintColored(var string msg, var int posx, var int posy, var string font, var int timeInMs, var int color){
PrintScreen ("", -1, -1, "", 2);
MEM_InitGlobalInst();
var zCView view; view = _^(MEM_Game.array_view[0]);
if (view.textLines_next) {
var zCList list; list = _^(view.textLines_next);
var zCViewText viewT; viewT = _^(list.data);

viewT._vtbl = 8251988; //0x7DEA54 g1
viewT.timed = (timeInMs != -1);
if (timeInMs != -1) { viewT.timer = mkf(timeInMs); };

viewT.inPrintWin = 0;

viewT.font = Print_GetFont(font);
viewT.color = color;
viewT.colored = 1;

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

//Print(viewT.text);
};
};
Testowałem w g2, nie wiem jak w g1. Trochę rzeczy pożyczyłem z LeGo.
Adresy przeportowane.

Czas liczony w milisekundach, a kolor trzeba podać w RGBA.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Ikarus (Pakiet skryptów)
#263 2014-11-07, 11:39(Ostatnia zmiana: 2014-11-07, 20:27)
var zCView view; view = _^(MEM_Game.array_view[0]);

to co podkresiłem wywala jako undefined fucntion _^

natomiast ten znak jest w ikarus.d i tam nie wyrzuca błędu.
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Jeśli używasz Ikarusa z wog.de, to pobierz najnowszą wersję 1.2
Jeśli OrcWarriora, to zmień _^ na MEM_PtrToInst.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Jeśli używasz Ikarusa z wog.de, to pobierz najnowszą wersję 1.2
Jeśli OrcWarriora, to zmień _^ na MEM_PtrToInst.
var zCList list; list = MEM_PtrToInst(view.textLines_next);
      var zCViewText viewT; viewT = _^(list.data);// tu mi wywala syntax error zcviewtext bez względu czy jest _^ czy MEM_PtrToInst(
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Ikarus (Pakiet skryptów)
#266 2014-11-08, 16:19(Ostatnia zmiana: 2014-11-08, 17:04)
// Ported from g2 into g1          - CHICKEN
const int PS_X = 0;
const int PS_Y = 1;
const int PS_VMax = 8192;
var int Print_Screen[2];in
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]));
};
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();
};
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;
};
const int zFontMan = 9291548;
const int zCFontMan__Load = 7204928;
const int zCFontMan__GetFont = 7205408;
const int zCFont__GetFontX = 7209488;
const int zCFont__GetFontY = 7209472;
func int zCFontMan_Load(var string font) {
    CALL_zStringPtrParam(font);
   CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__Load);
    return CALL_RetValAsInt();
};
func int Print_GetFont(var string font) {
    var int loadFont; loadFont = zCFontMan_Load(font);
    CALL_IntParam(loadFont);
    CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__GetFont);
    return CALL_RetValAsInt();
};
func int Print_GetStringWidth(var string s, var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL_zStringPtrParam(s);
    CALL__thiscall(adr, zCFont__GetFontX);
    return CALL_RetValAsInt();
};
func int Print_GetFontHeight(var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL__thiscall(adr, zCFont__GetFontY);
    return CALL_RetValAsInt();
};
func void PrintColored(var string msg, var int posx, var int posy, var string font, var int timeInMs, var int color){
   PrintScreen ("", -1, -1, "", 2);   
   MEM_InitGlobalInst();
   var zCView view; view = MEM_PtrToInst(MEM_Game.array_view[0]);
   if (view.textLines_next) {
      var zCList list; list = MEM_PtrToInst(view.textLines_next);
      var zCViewText viewT; viewT = MEM_PtrToInst(list.data);
           
      viewT._vtbl = 8251988; //0x7DEA54 g1
      viewT.timed = (timeInMs != -1);
      if (timeInMs != -1) { viewT.timer = mkf(timeInMs); };
     
      viewT.inPrintWin = 0;
     
      viewT.font = Print_GetFont(font);
      viewT.color = color;
      viewT.colored = 1;
     
      viewT.posx = posx;
      if (posx == -1) {
        viewT.posx = (PS_VMax - Print_ToVirtual(Print_GetStringWidth(msg, font), PS_X)) / 2;
      };
      viewT.posy = posy;
      if (posy == -1) {
         viewT.posy = (PS_VMax - Print_ToVirtual(Print_GetFontHeight(font), PS_Y)) / 2;
      };
      viewT.text = msg;
     
      //Print(viewT.text);
   };
};
Masz poprawione na MEM_PtrToInst
Jak będzie błąd, to daj ss błędu

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
dobra wiadomość : DZIAŁĄ!

zła: to jest to nie praktyczne , bo z automatu nakłada kolor na texturki , które wykorzystuję jako czcionkę. czy white czy yellow kolor się nakłada , więc DUPA.
np.

PrintColored("Dupa", -1, -1, "FONT_OLD_10_WHITE.tga", 50000, RGBAToZColor(255,100,100,255));

//   PutMsg("Nie udało się wydobyć bryłek węgla.","FONT_OLD_10_YELLOW.tga",RGBAToZColor(255,100,100,255),8,"");
PrintScreen   ("Działa. ", -1, 20, "FONT_OLD_10_YELLOW.tga", 3 );
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Ok, spróbuję to ogarnąć, ale pokaż ss :P

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Ok, spróbuję to ogarnąć, ale pokaż ss :P
http://wrzucaj.net/images/2014/11/08/color.jpg

działa jest na żółto jak cytryna, dupa - standardowo w trybie normalnym
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
zmień
viewT.inPrintWin = 1;
na
viewT.inPrintWin = 0;

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
zmień
viewT.inPrintWin = 1;
na
viewT.inPrintWin = 0;

bez róznicy
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Ikarus (Pakiet skryptów)
#272 2014-11-08, 17:12(Ostatnia zmiana: 2014-11-08, 19:10)
Teraz uzbrój się w cierpliwość, bo nie wiem ile może potrwać naprawa :D

Post połączony: 2014-11-08, 17:22
U mnie jest normalnie. Użyj tego:
// Ported from g2 into g1          - CHICKEN
const int PS_X = 0;
const int PS_Y = 1;
const int PS_VMax = 8192;
var int Print_Screen[2];
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]));
};
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();
};
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;
};
const int zFontMan = 9291548;
const int zCFontMan__Load = 7204928;
const int zCFontMan__GetFont = 7205408;
const int zCFont__GetFontX = 7209488;
const int zCFont__GetFontY = 7209472;
func int zCFontMan_Load(var string font) {
    CALL_zStringPtrParam(font);
   CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__Load);
    return CALL_RetValAsInt();
};
func int Print_GetFont(var string font) {
    var int loadFont; loadFont = zCFontMan_Load(font);
    CALL_IntParam(loadFont);
    CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__GetFont);
    return CALL_RetValAsInt();
};
func int Print_GetStringWidth(var string s, var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL_zStringPtrParam(s);
    CALL__thiscall(adr, zCFont__GetFontX);
    return CALL_RetValAsInt();
};
func int Print_GetFontHeight(var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL__thiscall(adr, zCFont__GetFontY);
    return CALL_RetValAsInt();
};
func void PrintColored(var string msg, var int posx, var int posy, var string font, var int timeInMs, var int color){
   PrintScreen ("", -1, -1, "", 2);   
   MEM_InitGlobalInst();
   var zCView view; view = MEM_PtrToInst(MEM_Game.array_view[0]);
   if (view.textLines_next) {
      var zCList list; list = MEM_PtrToInst(view.textLines_next);
      var zCViewText viewT; viewT = MEM_PtrToInst(list.data);
           
      //viewT._vtbl = 8251988; //0x7DEA54 g1
      viewT.timed = (timeInMs != -1);
      if (timeInMs != -1) { viewT.timer = mkf(timeInMs); };
     
      viewT.inPrintWin = 0;
     
      viewT.font = Print_GetFont(font);
      viewT.color = color;
      viewT.colored = 1;
     
      viewT.posx = posx;
      if (posx == -1) {
        viewT.posx = (PS_VMax - Print_ToVirtual(Print_GetStringWidth(msg, font), PS_X)) / 2;
      };
      viewT.posy = posy;
      if (posy == -1) {
         viewT.posy = (PS_VMax - Print_ToVirtual(Print_GetFontHeight(font), PS_Y)) / 2;
      };
      viewT.text = msg;
     
      //Print(viewT.text);
   };
};
i zamiast RGBAtozColor użyj funkcji RGBA
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);
};

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Ikarus (Pakiet skryptów)
#273 2014-11-09, 07:38(Ostatnia zmiana: 2014-11-09, 07:52)
chicken,można jednocześnie wyświeltać wiele kolorów tą funkcją,oczywiście pod warunkiem,że wszytskie funkcje wywołujemy funkcją printcolored.

w przeciwnym razie mamy ten efekt nakładania, bez względu czy to jest rgbatozcolor od orca czy z najnowszego ikarusa .

w tej sytuacji wymaga to zmian w wielu miejscach w grze,więc raczej nie będę tego robił....jest jeszcze jeden pomysł na rozwiazanie tej kwestii, w twoim skrypcie musisz powróćić po wywołaniu efektu wyświetlania do koloru krystalicznie białego czyli (255,255,255,255), wtedy automatycznie kolor textury wraca do pierwotnej.


ikarus w wersji 1,2 i funkcja RGBA z najnowszego ikarusa.

natomiast mam pomysł na praktyczniejsze zastosowanie, chociażby w menu statystyk, gdzie moglibyśmy pozmieniać poszczególne atrybuty na inne kolory (np. po założeniu pierścieniu siła nam rośnie i podświetla się na żółto).
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Ikarus (Pakiet skryptów)
#274 2014-11-09, 09:07(Ostatnia zmiana: 2014-11-09, 09:12)
Cytuj
natomiast mam pomysł na praktyczniejsze zastosowanie, chociażby w menu statystyk, gdzie moglibyśmy pozmieniać poszczególne atrybuty na inne kolory (np. po założeniu pierścieniu siła nam rośnie i podświetla się na żółto).
Niestety, ale to nie będzie tak działać, to wyświetla tylko tekst.
Chociaż trudne to nie jest.
Cytuj
jest jeszcze jeden pomysł na rozwiazanie tej kwestii, w twoim skrypcie musisz powróćić po wywołaniu efektu wyświetlania do koloru krystalicznie białego czyli (255,255,255,255), wtedy automatycznie kolor textury wraca do pierwotnej.
i wyświetlony kolorowy tekst też wraca do pierwotnej postaci, więc odpada.
Będę próbował do oporu.
U mnie g1 jest jebnięte i nie mam jak.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
[
Cytuj
jest jeszcze jeden pomysł na rozwiazanie tej kwestii, w twoim skrypcie musisz powróćić po wywołaniu efektu wyświetlania do koloru krystalicznie białego czyli (255,255,255,255), wtedy automatycznie kolor textury wraca do pierwotnej.
i wyświetlony kolorowy tekst też wraca do pierwotnej postaci, więc odpada.
Będę próbował do oporu.
U mnie g1 jest jebnięte i nie mam jak.
[/quote]
daję PrintColored("", -1, -1, "FONT_OLD_10_WHITE.tga", 3000, RGBAToZColor(255,255,255,255));

koloryw text już się wyświetlił i się nie zmieni, a podstawa to text biały, któryn można sobie kolorowac jak sie chce.

i po temacie. natomiast w twoim skrypcie potrzebuję jeszcze, aby funkcja odnosiła się własnie do konkretnego uzytego tga,bo jest ich przecież kilka. to już jesteśmy blisko zakońćzenia. i już dalej nie kombinuj, bo nie ma po co.

proszę, abyś jednak pomógł ze zmiana koloru w menu statystyk
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

Wg. tego skryptu:
Spoiler
// Ported from g2 into g1          - CHICKEN
const int PS_X = 0;
const int PS_Y = 1;
const int PS_VMax = 8192;
var int Print_Screen[2];
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]));
};
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();
};
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;
};
const int zFontMan = 9291548;
const int zCFontMan__Load = 7204928;
const int zCFontMan__GetFont = 7205408;
const int zCFont__GetFontX = 7209488;
const int zCFont__GetFontY = 7209472;
func int zCFontMan_Load(var string font) {
    CALL_zStringPtrParam(font);
   CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__Load);
    return CALL_RetValAsInt();
};
func int Print_GetFont(var string font) {
    var int loadFont; loadFont = zCFontMan_Load(font);
    CALL_IntParam(loadFont);
    CALL__thiscall(MEM_ReadInt(zFontMan), zCFontMan__GetFont);
    return CALL_RetValAsInt();
};
func int Print_GetStringWidth(var string s, var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL_zStringPtrParam(s);
    CALL__thiscall(adr, zCFont__GetFontX);
    return CALL_RetValAsInt();
};
func int Print_GetFontHeight(var string font) {
    var int adr; adr = Print_GetFont(font);
    CALL__thiscall(adr, zCFont__GetFontY);
    return CALL_RetValAsInt();
};
func void PrintColored(var string msg, var int posx, var int posy, var string font, var int timeInMs, var int color){
   PrintScreen ("", -1, -1, "", 4);
   MEM_InitGlobalInst();
   var zCView view; view = MEM_PtrToInst(MEM_Game.array_view[0]);
   if (view.textLines_next) {
      var zCList list; list = MEM_PtrToInst(view.textLines_next);
      var zCViewText viewT; viewT = MEM_PtrToInst(list.data);
           
      //viewT._vtbl = 8251988; //0x7DEA54 g1
      viewT.timed = (timeInMs != -1);
      if (timeInMs != -1) { viewT.timer = mkf(timeInMs); };
     
      viewT.inPrintWin = 0;
     
      viewT.font = Print_GetFont(font);
      viewT.color = color;
      viewT.colored = 1;
     
      viewT.posx = posx;
      if (posx == -1) {
        viewT.posx = (PS_VMax - Print_ToVirtual(Print_GetStringWidth(msg, font), PS_X)) / 2;
      };
      viewT.posy = posy;
      if (posy == -1) {
         viewT.posy = (PS_VMax - Print_ToVirtual(Print_GetFontHeight(font), PS_Y)) / 2;
      };
      viewT.text = msg;
      //Print(viewT.text);
   };
};
Wiem, że to g2, ale skrypt jest ten sam, nie ma różnicy.
Więc to nie wina skryptów.
Cytuj
proszę, abyś jednak pomógł ze zmiana koloru w menu statystyk
po przerwie

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
plik ikarus.d   wersja 1.2
zaktualizowana klasa ocMenu z ikarusa 1.2
RGBa w ersji także prezentowanej na WOGu , a efekt jak poprzednio czy nakłada się u mnie.

chyba , że jest jeszcze inna klasa, która pominąłem w aktualizacji.

wiemy, że dla g2nk to działa
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Zdaje mi się, że masz pomieszane te Ikarusy. Trochę z tego, trochę z tamtego.
Sam nie wiem od kogo używasz Ikarusa + z czyjego masz engineClasses

Splash

Splash

Moderator
posty4210
Propsy3412
ProfesjaNierób
  • Moderator
Zdaje mi się, że masz pomieszane te Ikarusy. Trochę z tego, trochę z tamtego.
Sam nie wiem od kogo używasz Ikarusa + z czyjego masz engineClasses
Tak to jest, gdy on używa Ikarusa zrobionego przez Orca niezawierającego poprawek Sektenspinnera...
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie


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