Ikarus (Pakiet skryptów) 413429 1020

O temacie

Autor orcwarrior

Zaczęty 11.06.2010 roku

Wyświetleń 413429

Odpowiedzi 1020

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Tu są kolorowe teksty w menu statystyk.
var int menuIptr; menuIptr = MEM_GetMenuItemByString("MENU_ITEM_ATTRIBUTE_1");
      var zCMenuItem menuI; menuI = _^(menuIptr);
      var zCView viewI; viewI = _^(menuI.m_pInnerWindow);
      var zCList listI; listI = _^(viewI.textLines_next);
      var zCViewText viewTI; viewTI  = _^(listI.data);
      var int col; col = RGBA(200,0,0,255);
      MEM_WriteInt(_@(viewTI.color), col); 
      viewTI.colored = 1;
działa tylko wtedy, gdy menu statystyk jest aktywne.
Nie mam czasu więcej wytłumaczyć, jak przyjdę.
MENU_ITEM_ATTRIBUTE_1  - to instance w menu
Działa bo testowałem :D

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Ikarus (Pakiet skryptów)
#281 2014-11-09, 16:36(Ostatnia zmiana: 2014-11-09, 16:47)
jeszcze w temacie ost.ikarusa 1.2 . brakuje tam
adresu, który odpowiada za zmianę koloru wyświetlanych obiektów.. pytanie czemu?

do tego klasa menu i menu.unveryfied w engineclassess_g1 dubluje się adresami.widać, że ta wersja ikarusa dla g1 nie była testowana.

adres z CZ, którego nie ma w tej wersji

const int zCView_SetFontColor_offset = 7339392;    //6FFD80 thiscall(zCColor)
chicken, zaktualizowałem ikarusa do tego z wersji moda Budzisa 4.0.3 i nadal nie działa,ale dzisiaj już niem ochoty sie z tym dalej pierdolić
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Wszystko było testowane. Nic się nie dubluje.
Tak jest, jak się miesza.

Post połączony: 2014-11-09, 17:22
Cytuj
const int zCView_SetFontColor_offset = 7339392;    //6FFD80 thiscall(zCColor)
to skopiuj

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Ikarus (Pakiet skryptów)
#283 2014-11-09, 18:04(Ostatnia zmiana: 2014-11-09, 21:36)
wie ktoś jak zrobić , aby wyświetlana była nazwa zadania w innych kolorach,kiedy mamy log_running,log_failed,log_success. nie bardzo mam ochotę modyfikować dziesiątki linijek, chodzi mi o rozwiązanie w jednej funkcji.

jest tak zrobione w min. w Dark Sadze czy z życia złodzieja.

NIESTETY WYWALA TOPIC WRONG TYPE

Snd_Play ("LogEntry");
if (topic) == (LOg_RUNNING)
{
Snd_Play ("LogEntry");
};
};
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Musisz przerabiać dziesiątki linijek.
Oczywiście jest funkcja Log_GetTopicStatus oparta na Ikarusie, ale ona nie działa jak należy.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Musisz przerabiać dziesiątki linijek.
Oczywiście jest funkcja Log_GetTopicStatus oparta na Ikarusie, ale ona nie działa jak należy.

Nie działała jak należy. Czasami warto popytać i poszukać.

func string zString_zString(var int charPtr) {
        const int zString__zString = 4198592; //0x4010C0
        CALL_PtrParam(charPtr);
        var int strPtr; strPtr = MEM_Alloc(20);
        CALL__thiscall(strPtr, zString__zString);
        return CALL_RetValAszString();
};

func int LogManager_GetLogManager() {
        const int LogManager__GetLogManager =6697840; //0x663370
        CALL__cdecl(LogManager__GetLogManager);
        return CALL_RetValAsInt();
};

func string std2z(var int ptr) {
        return zString_zString(MEM_ReadInt(ptr+4));
};
func int Log_GetTopicStatus(var string name) {
const int logMan = 11191608; //0xaac538
    var zCList list; list = _^(logMan);
   
    while(list.next);
        list = _^(list.next);
       
        if (list.data) {
            if (Hlp_StrCmp(MEM_ReadString(list.data), name)) {
                return MEM_ReadInt(list.data + 24);
            };
        };
    end;
   
    return -1;
};

Działająca funkcja Get topic status.
 
: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.

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
O tym właśnie mówię.
Funkcja zwraca 1 przy LOG_RUNNING, przy całej reszcie -1.
Poza tym wersja Lehony crashuje, Sektenspinner ją poprawił.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
ten skrypt jest pod G2, wywal błąd przy "while"
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio

chicken
RaveN Studio

Ikarus (Pakiet skryptów)
#288 2014-11-13, 22:26(Ostatnia zmiana: 2014-11-13, 22:40)
Nie jest pod g2, w g1 też występuje funkcja do zapętlania, ale OrcWarrior jej nie napisał.
Jedynie adresy się mogą nie zgadzać.

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Nie jest pod g2, w g1 też występuje funkcja do zapętlania, ale OrcWarrior jej nie napisał.
Jedynie adresy się mogą nie zgadzać.
chicken, mam ikarusa 1.1.4 nie Orca! adresy moge poszukać w skryptach CZ, ale while nie ma. możesz coś podesłać?

 wersję Ikarusa 1.2 przy starcie gry wywala do pulpitu! nie wiem czy tylko u mnie?  Gothic 1 moduje tylko jeszcze Outlander (przynajmniej jesli mówimy o poważnym modowaniu, ale i on miał wersję od RafałaBudzisa 1.1.4)
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Cytuj
ale while nie ma. możesz coś podesłać?
nie, bo while wykorzystuje funkcje/zmienne/stałe, których brakuje u Orca, lepiej używaj jego Ikarusa.
Cytuj
adresy moge poszukać w skryptach CZ
nie wszystko jest w CZ
Cytuj
wersję Ikarusa 1.2 przy starcie gry wywala do pulpitu! nie wiem czy tylko u mnie?
nie tylko

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Dobra, skończyłem i działa poprawnie.
// Made by 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();
};
const string FontConst_Small    = "FONT_OLD_10_WHITE.TGA";
func int Print_CreateText() {
    PrintScreen("", 0, 0, "", 2); // blank
    MEM_InitAll();
    var zCView v; v = MEM_PtrToInst(MEM_Game.game_text);
    var zCList l; l = MEM_PtrToInst(v.textLines_next);
   
    return l.data;
};
func int PrintPrototype(var int posx, var int posy, var string msg, var string font, var int color, var int timeMs){
    var int myText; myText = Print_CreateText();
   
    var zCViewText viewT; viewT = MEM_PtrToInst(myText);
   
    //viewT._vtbl = 8251988; //0x7DEA54 g1
    viewT.timed = (timeMs != -1);
   
    viewT.timer = mkf(timeMs);
     
    viewT.font = Print_GetFont(font); // :D
    viewT.color = color;
    viewT.colored = (color != 0);
     
    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;
     
    return myText; //Print(viewT.text);
};
func void PrintColored(var int x, var int y, var string txt, var string font, var int color, var int timeMs) {
    PrintPrototype(x, y, txt, font, color, timeMs);
};

PrintColored(-1,-1, "wiadomosc", FontConst_Small, RGBA(200,0,0,255), 20000);

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
a mozesz jeszcze przerobic te logi z gnk do gothic .skrypt od bogdana zwei
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Zobacz co pisałem o tej funkcji... kilka postów wyżej.
Ta funkcja według mnie nie działa jak należy. Rzekłbym, że jest pierdolnięta, ale może tylko u mnie.
const int Log_GetLogManager_Adr = 10328172;
func int Log_GetTopicStatus(var string topic) {
    var zCList list; list = _^(Log_GetLogManager_Adr);
    while (list.next);
        list = _^(list.next);
        if (list.data) {
            if (Hlp_StrCmp(MEM_ReadString(list.data), topic)) {
                return MEM_ReadInt(list.data +24); // oCLogTopic.m_enuSection, this engine class doesn't exist in g1
            };
        };
    end;
    return -1;
};

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Ikarus (Pakiet skryptów)
#294 2014-11-17, 13:17(Ostatnia zmiana: 2015-01-05, 10:17)
u mnie działa!
 

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Bierzcie i jedzcie z tego wszyscy: to jest bowiem klasa, dzięki której uzyskacie dostęp do MDSów przypisywanych do postaci tymczasowo.
class oCNpcTimedOverlay
{
    var string m_sMdsName;
    var float m_fTime;
};
Może się komuś przyda, tak jak mnie do sprintu, ponieważ włączenie sprintu za pomocą klawisza powodowało, że "usuwało" MDS sprintu po wypiciu mikstury.
var oCNpc npc; npc = Hlp_GetNpc (IntancjaNPC);
var zCList list; list = _^ (npc.timedOverlays_next);
var oCNpcTimedOverlay overlay; overlay = _^ (list.data);
Zastanawia mnie czemu programiści z Piranha Bytes nie użyli do tymczasowych MDSów zwykłych liczb...
Print (IntToString (FloatToInt (overlay.m_fTime))
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
Splash kochanie powiedz mi czy da rade zrobić coś więcej z nakładanymi mdsami.... :D
 


Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Chodzi ci o coś takiego?
var oCNpc npc; npc = Hlp_GetNpc (InstancjaNPC);
MEM_ReadString (npc.activeOverlays_array + 0 * 4); //Broń jednoręczna
MEM_ReadString (npc.activeOverlays_array + 5 * 4); //Broń dwuręczna
MEM_ReadString (npc.activeOverlays_array + 10 * 4); //Łuk
MEM_ReadString (npc.activeOverlays_array + 15 * 4); //Kusza
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Mark56

Mark56

Moderator
som veľký magič
posty1632
Propsy1846
ProfesjaAnimator
  • Moderator
  • som veľký magič
 :ok: :ok:
A czy wiesz dokładnie jak to działa ? Interesuje mnie czy zawsze jest zapisany tylko ostatni mds, i tez czy po nalezeniu więcej mds one "pozostają  aktywne". Bo wiem ze z tym zawsze był trochę burdel, głownie jeżeli chodzi o remove overaly mds.

Niestety nie mogę tego wypróbować sam. Ale w bliskim czasie możne być baszo pożyteczne.
 


Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Cytuj
A czy wiesz dokładnie jak to działa ? Interesuje mnie czy zawsze jest zapisany tylko ostatni mds, i tez czy po nalezeniu więcej mds one
"pozostają  aktywne". Bo wiem ze z tym zawsze był trochę burdel, głowniejeżeli chodzi o remove overaly mds.
Nie udało mi się jeszcze do tego dojść.

Ciężko się przyzwyczaić do tej zmiany, ale udało mi się ogarnąć problem z nierozciągającym się oknem opcji dialogowych.
func void SetChoiceBoxScale ()
{
    var int ptr; ptr = MEM_ReadInt(MEMINT_oCInformationManager_Address+28);
    MEM_WriteInt (ptr+64, STR_ToInt (MEM_GetGothOpt ("VIDEO", "zVidResFullscreenX")));
    MEM_WriteInt (ptr+56, 0);
};

Funkcję można wywołać w ZS_Talk_Loop bądź też za pomocą FF, czy czegoś innego.

Screen:
Spoiler
 
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 3 gości przegląda ten wątek.
0 użytkowników
Do góry