Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Seite 5 von 21 « Erste 1234567891216 ... Letzte »
Ergebnis 81 bis 100 von 410
  1. Homepage besuchen Beiträge anzeigen #81
    General Avatar von Dada
    Registriert seit
    Jan 2007
    Ort
    Krefeld
    Beiträge
    3.651
     
    Dada ist offline
    Mit
    Code:
    hero.guild = GIL_*
    Probehalber habe ich auch mal probiert, weit weg zu gehen, mich zurückzuteleportieren, etc...

  2. Homepage besuchen Beiträge anzeigen #82
    Teutonic Team Avatar von Bonne6
    Registriert seit
    Jun 2004
    Ort
    Erlangen
    Beiträge
    11.053
     
    Bonne6 ist offline
    Versuch auch mal ein Npc_SetTrueGuild (hero, GIL_*);

    Vielleicht liegt's ja nur daran.

  3. Homepage besuchen Beiträge anzeigen #83
    General Avatar von Dada
    Registriert seit
    Jan 2007
    Ort
    Krefeld
    Beiträge
    3.651
     
    Dada ist offline
    Tatsache, funktioniert, ich sollte mich mal durch die Externals durchwühlen...

    Danke

  4. Beiträge anzeigen #84
    Dragonslayer Avatar von Teron Gorefiend
    Registriert seit
    Nov 2006
    Ort
    im Alchemielabor
    Beiträge
    4.800
     
    Teron Gorefiend ist offline
    hört sich ja Prima an dieses LeGo, Die Schadensberechnung von Lehona klappt auf jeden Fall.

    Mal eine frage habe gerade mal im wiki etwas nachgelesen
    http://gottfried.milgo.de/LeGo/?Focusnames

    wäre es irgendwie möglich auch Items/gegenstände eine Farbe zu geben?. Zum Beispiel Wolfsfell = grün, Schattenläuferfell = blau, schwarzes Treollfell = lila

  5. Beiträge anzeigen #85
    Halbgöttin
    Registriert seit
    Jul 2007
    Beiträge
    9.877
     
    Lehona ist gerade online
    Schau dir mal die Datei Focusnames.d im LeGo-Ordner an. In der Funktion _Focusnames() gibt es einen Abschnitt, in dem Items behandelt werden. Du musst in der passenden If-Abfrage bloß die Variable 'col' auf den entsprechenden Farbwert setzen. Dazu baust du dir einfach deine Farbe mit der Funktion RGBA() zusammen (Steht für Rot/Grün/Blau/Alpha) wie in den Funktionen Focusnames_Color_Friendly() etc. auch. Desweiteren gibt es in der Userconst.d ein paar vorgefertigte Farben, wenn ein Item gelb sein soll, könntest du z.B. einfach 'col = COL_Yellow;' benutzen. Nicht vergessen, LeGo mindestens mit 'LeGo_Init(LeGo_Focusnames);' in der Init_Global() zu intialisieren.

  6. Beiträge anzeigen #86
    Dragonslayer Avatar von Teron Gorefiend
    Registriert seit
    Nov 2006
    Ort
    im Alchemielabor
    Beiträge
    4.800
     
    Teron Gorefiend ist offline
    hi also das klappte noch nicht so ganz bei mir.

    Frage1) die items sind ja dann leider nur farbig wenn sie offen in der Welt rumliegen, aber nicht wenn sie im Inventar sind. Gibts da irgend eine Möglich die Schrift auch farbig zu machen wenn man sie im Inventar des Helden betrachtet?

    Frage2)
    Wie genau mache ich nochmal eine Abfrage für Gegenstände. Habs so gemacht
    Code:
    ...
    else if(Hlp_Is_oCItem(her.focus_vob)) 
    {
        
    var c_item itm; 
    itm = MEM_PtrToInst(her.focus_vob);
    
        // Setze col = RGBA(.., .., .., ..); um die Farbe einzustellen
    col = Focusnames_Color_common();
    
    }
    
    else ///Gegenstände
    {
        
    
    if (Hlp_GetInstanceID(ItAt_WolfFur)	==  	Hlp_GetInstanceID(item)) 
    {
    col = Focusnames_Color_uncommon();
    }
    else ///normal
    {
    col = Focusnames_Color_common();
    };
    
    
    
    };///ende gegenstände   
    ...
    Nur sind alel Gegenstände Weiß
    Weiß nicht wirklich wie die genaue Abfrage für Gegenstände ist. Wenn ich da scon frage fällt mir gleich ein, dass ich dies dann für meine Müllfunktion nutzen kann. wenn ein NPC stirbt wird diese ausgeführt und entfernt ALLE Waffen aus der Spielwelt.

    Code:
    instance clrItm(oCItem);
    
    func void DeleteItems() {
        PrintDebug("BOTK: MUELLMANN: Start");
    
        var int activeVobList;     activeVobList = MEM_World.activeVobList_array;
        var int activeVobList_max; activeVobList_max = MEM_World.activeVobList_numInArray;
    
        var int i; i = 0;
        var int ptr;
    
        var int pos;
        pos = MEM_StackPos.position;
            ptr = MEM_ReadInt(activeVobList+4*i);
    
            MEM_AssignInst(clrItm, ptr);
            if (clrItm.mainflag & ITEM_KAT_NF)||(clrItm.mainflag & ITEM_KAT_FF)/*||(clrItm.mainflag & ITEM_KAT_MUN)*/ {
                if Hlp_IsValidItem(clrItm) {
                    Wld_RemoveItem(clrItm);
                };
            };
    
            i += 1;
            if(i < activeVobList_max) {
        MEM_StackPos.position = pos;  };
    
        PrintDebug("BOTK: MUELLMANN: Finished");
    };

    Ich würde dies gerne einmal bei Spielstart ausführen und Sachen wie Schwarze Perlen, Trollfell und alle anderen seltenen Sachen aus der Spielwelt zu entfernen, aber wie frage ich das nochmal ab?
    Geändert von Teron Gorefiend (26.05.2012 um 15:01 Uhr)

  7. Beiträge anzeigen #87
    Ehrengarde Avatar von Gottfried
    Registriert seit
    Mar 2006
    Beiträge
    2.512
     
    Gottfried ist offline
    Zitat Zitat von Teron Gorefiend Beitrag anzeigen
    Frage1) die items sind ja dann leider nur farbig wenn sie offen in der Welt rumliegen, aber nicht wenn sie im Inventar sind. Gibts da irgend eine Möglich die Schrift auch farbig zu machen wenn man sie im Inventar des Helden betrachtet?
    Schwierige Sache. Man müsste einen Hook finden, der dort ansetzt wo der Text im Inventar eingestellt wird. Vielleicht schaue ich demnächst mal danach.

    Zitat Zitat von Teron Gorefiend Beitrag anzeigen
    Frage2)
    Wie genau mache ich nochmal eine Abfrage für Gegenstände.
    In deinem Fall prüfst du zuerst ob es ein Item ist (Hlp_Is_oCItem(her.focus_vob)), willst aber erst im nächsten Block (also wenn es kein Item ist) prüfen ob es ein Wolfsfell ist. Das kann so nicht funktionieren. (Eine ordentliche Einrückung hilft so etwas zu erkennen )
    Außerdem vergleichst du das Wolfsfell mit der globalen Instanz 'item', die wird aber gar nicht befüllt. Du musst 'itm' verwenden, welchem du davor das Ziel des Helden zuweist.

    Probiere es so:
    Code:
    [...]
    else if(Hlp_Is_oCItem(her.focus_vob)) 
    {
        var c_item itm; itm = MEM_PtrToInst(her.focus_vob);
        if (Hlp_GetInstanceID(ItAt_WolfFur) == Hlp_GetInstanceID(itm)) {
            col = Focusnames_Color_uncommon();
        }
        else {
            col = Focusnames_Color_common();
        };
    }
    [...]
    Zitat Zitat von Teron Gorefiend Beitrag anzeigen
    Ich würde dies gerne einmal bei Spielstart ausführen und Sachen wie Schwarze Perlen, Trollfell und alle anderen seltenen Sachen aus der Spielwelt zu entfernen, aber wie frage ich das nochmal ab?
    Diese Funktion wird so ohnehin nicht funktionieren, da sie nur in der activeVobList nachsieht. Dort sind nur Items enthalten auf die gerade die Physik wirkt.

    Ich weiß gerade nicht aus dem Kopf wo alle Items gelagert werden. (MEM_World.voblist_item oder so ähnlich?)
    Die müsstest du durchsuchen und die entsprechenden Items daraus entfernen.

    MfG Gottfried

  8. Beiträge anzeigen #88
    Dragonslayer Avatar von Teron Gorefiend
    Registriert seit
    Nov 2006
    Ort
    im Alchemielabor
    Beiträge
    4.800
     
    Teron Gorefiend ist offline
    Zitat Zitat von Gottfried Beitrag anzeigen
    Schwierige Sache. Man müsste einen Hook finden, der dort ansetzt wo der Text im Inventar eingestellt wird. Vielleicht schaue ich demnächst mal danach.
    Wäre super denn normalerweise sind fast alle Items ja im Inventar und mich hat das schon immer genervt, dass die alle weiß waren, Optimal wäre es wenn Name und Beschreibung andere Farben hätte aber nur der Name würde auch reichen. Damit würdest du mir einen riesen Gefallen tun.

    Diese Funktion wird so ohnehin nicht funktionieren, da sie nur in der activeVobList nachsieht. Dort sind nur Items enthalten auf die gerade die Physik wirkt.

    Ich weiß gerade nicht aus dem Kopf wo alle Items gelagert werden. (MEM_World.voblist_item oder so ähnlich?)
    Die müsstest du durchsuchen und die entsprechenden Items daraus entfernen.

    MfG Gottfried
    Ähm konntest diesen Schritt evtl. nochmal genauer erklären.

    Edit: Ich könnte das Problem auch anders lösen. Ich wandle einfach alle seltenen Sachen die es in der Welt gibt gegen Müll aus. Aus Schattenläufer oder Trollfell wird beschädigtes Fell. Und erstelle neue Iteminstanzen die es in der Welt nicht gibt. In der Give_DeathINV gebe ich den toten Monster dann einfach neue Beute und bei Bosper ändere ich bei Fellabgabe einfach den Instanznamen. Zwar ein bisschen Aufwand aber was solls.

    Edit:
    LeGo hört sich so toll an da muss ich einfach nochmal was fragen. Gibt es die Möglichkeit neue Itemsslots zu erstellen. In Gothic gibts ja nur Rüstung, 2 Ringe, Amulett, Nah und Fernkampfwaffe und in G2 noch Gürtel. So ein paar Sachen mehr wie Handschuhe, Schuhe etc. wären toll. Wäre sowas möglich bzw. gibt es dazu ein Tutorial ?

  9. Beiträge anzeigen #89
    Halbgöttin
    Registriert seit
    Jul 2007
    Beiträge
    9.877
     
    Lehona ist gerade online
    Items vom Typ "ITEM_SHIELD" (oder so ähnlich) kann man in unbegrenzter Menge anlegen. Darauf aufbauend kannst du dir deine anderen Items bauen.

    Die Itemsanzeige einzufärben ist eventuell nicht so simpel wie es scheint, kann mir gut vorstellen, dass eine Menge von anderem Text da auch mitgefärbt wird. Wird man ausprobieren müssen.

  10. Beiträge anzeigen #90
    Halbgöttin
    Registriert seit
    Jul 2007
    Beiträge
    9.877
     
    Lehona ist gerade online
    Ups, war doch einfacher als gedacht

    Code:
    func void ColorItemName() {
    	var zCViewText txt; txt = _^(EAX);
    	var int col; col = -1;
    	var C_Item itm; itm = _^(MEM_ReadInt(ESP+324+4));
    	
    	
    
    
    	txt.color = col;
    	txt.colored = 1;
    };
    
    // Zum initialisieren einmalig pro Session folgendes aufrufen:
    
    		HookEngineF(7369071/*0x70716F*/, 6, ColorItemName);
    Damit wird bloß der angezeigte Name gemäß 'col' eingefärbt
    Die Beschreibung inzufärben wäre aus diversen Gründen ein wenig komplizierter (aber auch möglich). Wenn du es unbedingt brauchst, kann ich mir das vielleicht nochmal anschauen.

  11. Beiträge anzeigen #91
    Dragonslayer Avatar von Teron Gorefiend
    Registriert seit
    Nov 2006
    Ort
    im Alchemielabor
    Beiträge
    4.800
     
    Teron Gorefiend ist offline
    ähm ja ich kann mal wieder mit dem script nichts anfangen, wohin genau kommt ColorItemName()

    einmalig pro Session folgendes aufrufen:
    HookEngineF(7369071/*0x70716F*/, 6, ColorItemName);
    heißt das, einmal beim Spielstart ausführen also z.b. in die Startup.d kopieren

    bzw. wo müsste ich das jetzt einfügen das mein Wolfsfell grün ist
    Code:
    ///fokusnamen
    
    func int Focusnames_Color_Friendly() 
    {
        
    return RGBA(0,   255, 0,   255); // Grün
    
    };
    
    
    
    func int Focusnames_Color_Neutral() 
    {
        
    return RGBA(255, 255, 255, 255); // Weiß
    
    };
    
    
    
    func int Focusnames_Color_Angry() 
    {
    
        return RGBA(255, 180, 0,   255); // Orange
    
    };
    
    
    
    func int Focusnames_Color_Hostile() 
    {
        
    return RGBA(255, 0,   0,   255); // Rot
    
    };
    
    
    
    
    ///items
    func int Focusnames_Color_legendary()  ///legendär orange
    {
        
    return RGBA(255,   127, 0,   255); // orange
    };
    
    
    
    func int Focusnames_Color_epic() ///lila
    {
        
    return RGBA(255,   0, 255,   255); // lila
    };
    
    
    
    func int Focusnames_Color_rar() ///blau
    {
        
    return RGBA(0,   0, 255,   255); // Grün
    
    };
    
    
    
    func int Focusnames_Color_uncommon()  ///grün
    {
        
    return RGBA(0,   255, 0,   255); // Grün
    
    };
    
    
    
    func int Focusnames_Color_common() ///weiß
    {
        
    return RGBA(255, 255, 255, 255); // Weiß
    
    };
    
    
    
    func int Focusnames_Color_bad() ///grau
    {
        
    return RGBA(0,   255, 0,   255); // Grün
    
    };
    
    
    
    
    //========================================
    // [intern] Färben der Namen
    //========================================
    
    func void _Focusnames() 
    {
     
    var int itemid;
    itemid = Hlp_GetInstanceID (item);
    
    
       
    var int col;
        
    var oCNpc her; 
    her = Hlp_GetNpc(hero);
    
    
    
    if(Hlp_Is_oCNpc(her.focus_vob)) 
    {
        
    var c_npc oth; 
    oth = MEM_PtrToInst(her.focus_vob);
        
    var int att; 
    att = Npc_GetPermAttitude(hero, oth);
        
    
    if     (att == ATT_FRIENDLY) 
    { 
    col = Focusnames_Color_Friendly(); 
    }
        
    else if(att == ATT_NEUTRAL)  
    { 
    col = Focusnames_Color_Neutral();  
    }
     
    else if(att == ATT_ANGRY)    
    { 
    col = Focusnames_Color_Angry();    
    }
        
    else if(att == ATT_HOSTILE)  
    { 
    col = Focusnames_Color_Hostile();  
    };
    
    
    
    }
    
    else if(Hlp_Is_oCItem(her.focus_vob)) 
    {
        
    var c_item itm; 
    itm = MEM_PtrToInst(her.focus_vob);
    
        // Setze col = RGBA(.., .., .., ..); um die Farbe einzustellen
    col = Focusnames_Color_common();
    
    
        if (Hlp_GetInstanceID(ItMw_2h_legendary_firehammer) == Hlp_GetInstanceID(itm))
         {
            col = Focusnames_Color_legendary(); ///episch = lila
        }
    
    
    
        else if ((Hlp_GetInstanceID(ItAt_TrollBlackFur) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_FireGolemHeart) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_IceGolemHeart) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_DemonHeart) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_DragonScale2) == Hlp_GetInstanceID(itm))) 
    
    
         {
            col = Focusnames_Color_epic(); ///episch = lila
        }
    
    
        else if ((Hlp_GetInstanceID(ItAt_CrawlerMandibles) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_Sting) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_CrawlerPlate) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_ShadowFur) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_SharkSkin) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_TrollFur) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_WaranFiretongue) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_ShadowHorn) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_SharkTeeth) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_icewolfTeeth) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_TrollTooth) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_StoneGolemHeart) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_SwampgolemHeart) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_DragonBlood) == Hlp_GetInstanceID(itm)))
    
         {
            col = Focusnames_Color_rar(); ///blau = rar
        }
    
        else if ((Hlp_GetInstanceID(ItAt_WolfFur) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_Addon_BCKopf) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_Meatbugflesh) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_SheepFur) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_BugMandibles) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_Claw) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_LurkerClaw) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_Teeth) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(ItAt_Wing) == Hlp_GetInstanceID(itm)) 
        || (Hlp_GetInstanceID(itat_LurkerSkin) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_WargFur) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_Addon_KeilerFur) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_DrgSnapperHorn) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_GoblinBone) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_UndeadDragonSoulStone) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_IcedragonHeart) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_RockdragonHeart) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_SwampdragonHeart) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_FiredragonHeart) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_DragonScale) == Hlp_GetInstanceID(itm))
        || (Hlp_GetInstanceID(ItAt_SkeletonBone) == Hlp_GetInstanceID(itm))) 
         {
            col = Focusnames_Color_uncommon(); ///grün
        }
        else 
    {
            col = Focusnames_Color_common();
        };
    
    
    }
    
    else ///Gegenstände
    {
        
    /*
    
    var c_item itm; itm = MEM_PtrToInst(her.focus_vob);
    
        if (Hlp_GetInstanceID(ItAt_WolfFur) == Hlp_GetInstanceID(itm)) 
    {
            col = Focusnames_Color_uncommon();
        }
        else {
            col = Focusnames_Color_common();
        };
    
    
    */
    
    };
    
     ///ende gegenstände   
    
    
    var int ptr; 
    ptr = MEM_Alloc(4);
        
    MEM_WriteInt(ptr, col);
        
    CALL_IntParam(ptr);
        
    CALL__thiscall(MEM_ReadInt(screen_offset), zCView__SetFontColor);
        MEM_Free(ptr);
    
    
    
    };

  12. Beiträge anzeigen #92
    Halbgöttin
    Registriert seit
    Jul 2007
    Beiträge
    9.877
     
    Lehona ist gerade online
    Kurz was zur Terminologie: Eine Session meint (zumindest benutze ich es so) den Zeitraum, indem der selbe Prozess läuft. Wenn ich also Gothic2 starte (über den GothicStarter z.B.), fängt eine Session an. Wenn ich jetzt das Programm beende, indem ich auf "Gothic 2 beenden" im Menü drücke, ist die Session vorrüber.

    Du musst also sicherstellen, dass die Zeile nur einmal pro Session aufgerufen wird. Mittlerweile führt ein Verletzen dieser Regel nicht mehr zum Crash sondern nurnoch dafür, dass die Funktion zweimal ausgeführt wird - sollte in diesem Fall "nur" zu einem Performanzkiller führen.

    Das kannst du machen, indem du folgenden Code in der Init_Global() einfügst:

    Code:
    const int oncePerSession = 1;
    if (oncePerSession) {
        oncePerSession = 0;
        /* Tu, was du einmal pro Session tun solltest */
    };
    Ansonsten zu deinem Code: Bitte, bitte gewöhne dir einen vernünftigen Stil an. Ich erwarte nicht, dass du meinen Stil kopierst, aber gewöhne dir an richtig einzurücken und nicht so viele unnötige Leerzeilen einzubauen. Es ist eine Graus, deinen Code zu lesen und er ist unnötig schwierig zu verstehen.

    Außerdem musst du aufpassen: Dieser Teil des Codes wird sehr frequent (jeden Frame) aufgerufen. Es ist sinnvoll, ihn nicht zu performanzlastig zu schreiben. Es ist daher viel sinnvoller, den Typ des Items in einer ungenutzten Eigenschaft zu speichern, da würden sich C_Item.weight, C_Item.nutrition, C_Item.hp oder C_Item.hp_max anbieten, dieser Wert kann dann einfach im Konstruktor (Die Instanz) gesetzt werden.

  13. Beiträge anzeigen #93
    Bad Eight
    Registriert seit
    May 2009
    Ort
    Österreich/Graz
    Beiträge
    888
     
    Umfi ist offline
    Hallo, ich hab ein kleines Problem.

    Ich bin jetzt ein paar Tage dabei gesessen, damit es so funktioniert und aussieht wie ich es will, allerdings ist es momentan nur auf eine Auflösung optimiert und skaliert nicht ordentlich mit. Ich hab zwar zuvor immer getestet (Auflösung verändert -> hat immer gepasst; Aber kein Neues Spiel mit der neuen Auflösung gestartet und heut hab ich's mal gemacht und da hab ich bemerkt das garnichts mehr passt.)

    Nun zu meiener Frage, wie kann ich das anpassen, das es für alle Auflösungen gleich ausschaut, bzw. sich mitskalliert?

    Hier mal ein Ausschnitt:

    Code:
    Print_GetScreenSize();
    SUR_BM_X = (Print_Screen[PS_X] / 2) - 256;
    SUR_BM_Y = Print_Screen[PS_Y] / 4;
      
    bm_v = View_Create(Print_ToVirtual(SUR_BM_X, PS_X), Print_ToVirtual(SUR_BM_Y, PS_Y), Print_ToVirtual(SUR_BM_X, PS_X) + Print_ToVirtual(512, PS_X), Print_ToVirtual(SUR_BM_Y, PS_Y) + Print_ToVirtual(512, PS_Y));
    View_SetTexture(bm_v, "SURVIVAL_BAUMENU_MAIN.TGA");
        
     //Buttons  - Hauptmenü
    Button_Building = Button_Create(Print_ToVirtual(SUR_BM_X + 39, PS_X), Print_ToVirtual(SUR_BM_Y + 132, PS_Y), Print_ToVirtual(148, PS_X), Print_ToVirtual(119, PS_Y), "SURVIVAL_BAUMENU_MAIN_SLOT_BUILDING.TGA", Button_Building_onEnter, Button_Building_onLeave, Button_Building_onClick);
    
    //usw....

    mfg Umfi

  14. Beiträge anzeigen #94
    Halbgöttin
    Registriert seit
    Jul 2007
    Beiträge
    9.877
     
    Lehona ist gerade online
    Niemals gar nicht nie reale Pixel benutzen sondern (fast immer) virtuelle Koordinaten
    Eine Beispiellösung gibt es wenn ich wieder an meinem Laptop bin und damit ins Forum kann

  15. Beiträge anzeigen #95
    Bad Eight
    Registriert seit
    May 2009
    Ort
    Österreich/Graz
    Beiträge
    888
     
    Umfi ist offline
    Ich bin jetzt auf die virtuellen Pixel umgestiegen und jetzt scheint es zu passen. Allerding hab ich noch keine System gefunden un das genau zu positionieren, nur durch raten und probieren. Da gibt es doch bestimmt ein System dafür oder?

  16. Beiträge anzeigen #96
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    12.144
     
    Milky-Way ist gerade online
    Wenn ich jetzt nicht vollkommen danebenliege:
    0,0 links oben - 8192,8192 unten rechts.
    Werte dazwischen sind Positionen dazwischen,
    4096,4096 wäre dann die Mitte.
    Je nach Auflösung haben kleine Veränderungen natürlich keine Wirkung.
    Die angegebenen Koordinaten sind z.B. dann der Anfangspunkt einer Textur. Zeigst du also eine Textur bei 4096,4096 an, so ist die linke obere Ecke der Textur in der Bildmitte. Gibt es eigentlich direkt mitgeliefert eine Funktion, die die Texturmitte auf die angegebenen Koordinaten setzt?
    Gibt es eine Funktion, die die Größe einer Textur bestimmt?

    War es das, was du wissen wolltest?

  17. Beiträge anzeigen #97
    Halbgöttin
    Registriert seit
    Jul 2007
    Beiträge
    9.877
     
    Lehona ist gerade online
    Die Größe eines View stellt man ja selber ein. Aber es gibt View_CreateCenter()

  18. Beiträge anzeigen #98
    Bad Eight
    Registriert seit
    May 2009
    Ort
    Österreich/Graz
    Beiträge
    888
     
    Umfi ist offline
    Ich dachte eher an sowas. Ich hab mal schnell eine kleine Grafik gemacht.

    [Bild: EQErl2Unbenannt_1.jpg]



    Wie komm ich jetztzu den X/Y Koardinaten des blauen Rechteckes?
    Bei der Pixelmethode ging das ja leicht.

    Code:
    Print_ToVirtual(linker oberer Punkt + abstand zu blauen rechteck, PS_X), Print_ToVirtual(linker oberer Punkt + abstand zu blauen rechteck, PS_Y), länge, breite, ...


    Aber hier muss ich immer raten und lange anpassen bis ich die richtie Stelle habe.

    Ich hoffe das ist so verständlich.

    mfg

  19. Beiträge anzeigen #99
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    12.144
     
    Milky-Way ist gerade online
    Ich verstehe nicht ganz, was das Problem ist?

    Wenn du weißt, dass es bei deiner Auflösung der 135. von 1024 Pixeln ist, dann musst du nur die Gleichung 135/1024 = x/8192 lösen, x ist dann deine virtuelle Koordinate (bzw. der erste Teil davon).

    Oder wie bekommst du bei der alten Methode die Position heraus?

  20. Beiträge anzeigen #100
    Bad Eight
    Registriert seit
    May 2009
    Ort
    Österreich/Graz
    Beiträge
    888
     
    Umfi ist offline
    So einfach... und ich stell da wieder ganz neue Theorien udn Formeln auf.

    Naja jedenfalls danke, für den Denkanstoß.

Seite 5 von 21 « Erste 1234567891216 ... Letzte »

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide