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 3 von 21 « Erste 12345671014 ... Letzte »
Ergebnis 41 bis 60 von 410
  1. Beiträge anzeigen #41
    Ritter Avatar von M.L.
    Registriert seit
    Oct 2005
    Ort
    Hamburg
    Beiträge
    1.288
     
    M.L. ist offline
    Respekt!

    Da steht ja jetzt viel zur Verfügung, was ich in Gothic immer vermisst habe.

    Mann, ich bin echt versucht mal wieder das MDK zu installieren...!

  2. Beiträge anzeigen #42
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Was mir gerade so einfällt:
    Wäre es nicht super, die notwendigen Adressen für alle möglichen Funktion, die jemand schon einmal für Hooks rausgesucht hat, zu sammeln und allen zur Verfügung zu stellen?

  3. Beiträge anzeigen #43
    Held Avatar von Ulukai
    Registriert seit
    Feb 2003
    Ort
    Deutschland
    Beiträge
    5.046
     
    Ulukai ist offline
    Großes Lob

    Das sieht wirklich unheimlich nützlich aus, macht sofort Lust das Gothic MDK anzuschmeißen und zu Modden

    Wenn ich endlich mal die Zeit finde, werd ich mich mal intensiv damit befassen(genauso wie mit Ikarus).

    Vielen Dank für eure Arbeit!


    MfG Ulukai
    "In 20 Jahren wirst Du dich mehr ärgern über die Dinge, die du nicht getan hast, als über die, die du getan hast. Also wirf die Leinen und segle fort aus deinem sicheren Hafen. Fange den Wind in deinen Segeln. Forsche. Träume. Entdecke." (Mark Twain)

  4. Beiträge anzeigen #44
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von Milky-Way Beitrag anzeigen
    Was mir gerade so einfällt:
    Wäre es nicht super, die notwendigen Adressen für alle möglichen Funktion, die jemand schon einmal für Hooks rausgesucht hat, zu sammeln und allen zur Verfügung zu stellen?
    Tabellen mit Engine-Funktionen + Adressen fliegen im Forum rum (2 mal), das Problem ist momentan noch der Parameter "OldInstruction", für den IDA benutzt werden muss (Was aber auch kein Aufwand ist - wenn gewollt, kann ich dafür 'ne kleine Anleitung schreiben, geht eigentlich ganz fix). Solange nur der Anfang einer Funktion gehookt wird, kann man das scriptseitig auch so umbauen, dass der Parameter wegfällt - dafür war ich bisher bloß viel zu faul, weil's halt noch mal ein Stück Arbeit ist (Aber zu bewältigen), IDA tut's eben auch (Sind 60MB oder so... Und ich benutze es sowieso irgendwie am laufenden Band zum Debuggen).

    Wer eine Adresse wissen möchte und sich IDA nicht herunterladen mag, soll lieber hier im Forum oder meinethalber auch bei mir per PN fragen, sollte es in meinen Möglichkeiten stehen, suche ich sie dann raus... Aber erstmal die Funktionen in IDA:

    Zitat Zitat von Lehona Beitrag anzeigen
    Ich habe die IDA-Funktionen übrigens mal hochgeladen, formatiert wie folgt:

    name adresse länge (Alles in hex)

    IDA-Funktionen
    sub_xxx und unknown_libname_xxxx habe ich rausgeschnitten, wer damit was anfangen kann, hat eh gerade IDA zur Hand.
    Ist übrigens nicht sauber analysiert sondern in ein paar Minuten entstanden - vielleicht hätte man noch mehr/bessere Funktionsnamen rausholen können.

    Durch meine grobe Methode (Suchen & Ersetzen) zur Verkleinerung der Daten sind teilweise Adresse und Funktionsname verschmolzen, die Adressen beginnen aber immer mit 00.

  5. Beiträge anzeigen #45
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Zitat Zitat von Lehona Beitrag anzeigen
    Tabellen mit Engine-Funktionen + Adressen fliegen im Forum rum (2 mal),
    Ich habe diese Liste und Nicos Erklärungen zum Einrichten von IDA mal bei den FAQ zu den nützlichen Threads geschrieben:
    http://forum.worldofplayers.de/forum...&#post15755256

    Zitat Zitat von Lehona Beitrag anzeigen
    das Problem ist momentan noch der Parameter "OldInstruction", für den IDA benutzt werden muss (Was aber auch kein Aufwand ist - wenn gewollt, kann ich dafür 'ne kleine Anleitung schreiben, geht eigentlich ganz fix). Solange nur der Anfang einer Funktion gehookt wird, kann man das scriptseitig auch so umbauen, dass der Parameter wegfällt - dafür war ich bisher bloß viel zu faul, weil's halt noch mal ein Stück Arbeit ist (Aber zu bewältigen), IDA tut's eben auch (Sind 60MB oder so...
    Wäre beides sehr nett
    (IDA 5.0-Download sind sogar nur 15 MB)

    Ein weiteres "typisches" Problem ist, aus der Liste noch die richtige Funktion rauszusuchen.

    Zitat Zitat von Lehona Beitrag anzeigen
    Wer eine Adresse wissen möchte und sich IDA nicht herunterladen mag, soll lieber hier im Forum oder meinethalber auch bei mir per PN fragen, sollte es in meinen Möglichkeiten stehen, suche ich sie dann raus...
    Das ist natürlich schön, dann fange ich mal an. Ich würde gerne einen Hook beim Fallenlassen eines Items (durch den Spieler) haben.
    In der Liste habe ich jetzt diese Einträge gefunden, die sich interessant anhören:
    Code:
    oCAIDrop::oCAIDrop(void)006A1EA0 D3 
    oCAIDrop::~oCAIDrop(void)  006A2010 11A 
    oCNpc::DropInventory(void) 00737350 01
    ist da schon das richtige bei?


    Wenn man die bekannten irgendwo sammeln würde, dann hätten alle einfachen Zugriff drauf und kämen womöglich noch auf gute Ideen

  6. Beiträge anzeigen #46
    Ehrengarde Avatar von Gottfried
    Registriert seit
    Mar 2006
    Beiträge
    2.512
     
    Gottfried ist offline
    Zitat Zitat von Milky-Way Beitrag anzeigen
    Dann fange ich mal an
    Die Position des Cursors ist dem Spiel also eigentlich bekannt (wird aber nicht verwendet)?
    Code:
    func void _Cursor_Pos(var int ptr) {
        CALL_PtrParam(ptr);
        CALL__stdcall(8079628);
    };
    und ihr lest diese Position nur noch aus und schreibt an entsprechender Stelle ein X auf den Bildschirm?
    An solchen Schnipseln sieht man recht deutlich dass der Code ursprünglich nicht für die Öffentlichkeit gedacht war
    Der Call führt zu einer Funktion aus der WinAPI, nämlich GetCursorPos. Dort wird als Parameter ein LPPoint erwartet, netterweise ist das, wie Lehona bereits erwähnt hat, eine 8-Byte große struktur die X und Y-Koordinaten enthält.
    Cursor_X und Cursor_Y legen einfach eine solche Struktur an, lassen sie befüllen und lesen dann entweder an der Addresse (X) oder an der Addresse+4 (Y) das Ergebnis aus.
    Zitat Zitat von Milky-Way Beitrag anzeigen
    In der Liste habe ich jetzt diese Einträge gefunden, die sich interessant anhören:
    Code:
    oCAIDrop::oCAIDrop(void)006A1EA0 D3 
    oCAIDrop::~oCAIDrop(void)  006A2010 11A 
    oCNpc::DropInventory(void) 00737350 01
    ist da schon das richtige bei?
    Es kann sein dass oCAIDrop auch funktioniert, aber ich glaube dass man beim Npc besser beraten ist. (Schon deshalb weil man direkt an Item und Npc herankommen kann)
    Ich habe oCNpc::DoDropVob(zCVob*) gefunden. Der Name verwirrt erstmal, aber ein oCItem ist ja nichts weiter als ein erweitertes zCVob. Es lässt sich auch ohne Probleme als solches verwenden:
    Code:
    func void Hook_oCNpc__DoDropVob() {
        const int oCNpc__DoDropVob = 7622096; //0x744DD0
        HookEngine(oCNpc__DoDropVob, 6, "EVT_NPCDROPVOB");
    };
    
    func void EVT_NpcDropVob() {
        var c_npc slf; slf = MEM_PtrToInst(ECX);
        var c_item itm; itm = MEM_PtrToInst(MEM_ReadInt(ESP + 4));
        PrintS(cs4(slf.name, " ließ '", itm.name, "' fallen"));
    };
    Wenn ich als Held einen Apfel ablege bekomme ich folgendes auf den Bildschirm:
    Ich ließ 'Apfel' fallen
    Scheint also zu klappen

    MfG Gottfried

  7. Beiträge anzeigen #47
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Danke!

    Um anderen noch ein paar Anregungen und Beispiele zu geben:
    Damit (in Verbindung mit Sektenspinners Broadcasts) könnte man nun den Spieler Monster, NPC weglocken lassen, die sich natürlich nicht das hingelegte Stück Fleisch entgehen lassen wollen

  8. Beiträge anzeigen #48
    #11 Avatar von Alpha
    Registriert seit
    Oct 2008
    Beiträge
    23.044
     
    Alpha ist offline
    Richtig, richtig hammergeil!


  9. Beiträge anzeigen #49
    Schwertmeister
    Registriert seit
    May 2009
    Beiträge
    924
     
    Umfi ist offline
    Zitat Zitat von Gottfried Beitrag anzeigen

    Code:
      
     const int oCNpc__DoDropVob = 7622096; //0x744DD0
       HookEngine(oCNpc__DoDropVob, 6, "EVT_NPCDROPVOB");
    MfG Gottfried
    Die 6 ist ja die Länge in Bytes der Anweisung die an 'address' (also oCNpc__DoDropVob) zu finden ist, mindestens 5 Bytes. Kann zB. in IDA nachgesehen werden.

    Kann ich diese '6' auch aus dieser Liste hier rauslesen? http://upload.worldofplayers.de/file...A_gekuerzt.txt
    Oder muss ich mit IDA arbeiten?


    Code:
    oCNpc::DoDropVob(zCVob *)  00744DD0 2D8
    Also 00744DD0 wird ja aus dem Hexadezimal ins Dezimalsystem umgewandelt zu -> 7622096

    Was ist mit '2D8' ?

    Mfg Umfi

  10. Beiträge anzeigen #50
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Zitat Zitat von Umfi Beitrag anzeigen
    Kann ich diese '6' auch aus dieser Liste hier rauslesen? http://upload.worldofplayers.de/file...A_gekuerzt.txt
    Nein, das geht wohl nicht.

    Zitat Zitat von Umfi Beitrag anzeigen
    Was ist mit '2D8' ?
    Das müsste die Länge der kompletten Funktion sein.

    Eine interessante erleichterte Anwendung könnte es sein, statt der mind. 5 einfach die komplette Länge anzugeben. Dann würde zwar überflüssig viel kopiert, aber es könnte trotzdem gehen. Oder gibt es Probleme, wenn dann beim Zurückspringen (falls das überhaupt erreicht wird -> return) ans Ende der Funktion gesprungen wird und nichts mehr kommt?

  11. Beiträge anzeigen #51
    Ehrengarde Avatar von Gottfried
    Registriert seit
    Mar 2006
    Beiträge
    2.512
     
    Gottfried ist offline
    Zitat Zitat von Milky-Way Beitrag anzeigen
    Eine interessante erleichterte Anwendung könnte es sein, statt der mind. 5 einfach die komplette Länge anzugeben. Dann würde zwar überflüssig viel kopiert, aber es könnte trotzdem gehen. Oder gibt es Probleme, wenn dann beim Zurückspringen (falls das überhaupt erreicht wird -> return) ans Ende der Funktion gesprungen wird und nichts mehr kommt?
    Das ist sehr gefährlich, da zB. calls relative Addressen verwenden die dabei kaputt gehen würden..
    Mal schaun ob Lehona seine Methode komplett ohne Instruction noch fertigstellt

    MfG Gottfried

  12. Beiträge anzeigen #52
    #11 Avatar von Alpha
    Registriert seit
    Oct 2008
    Beiträge
    23.044
     
    Alpha ist offline
    Kann man damit auch Items farblich kennzeichnen? Zum Beispiel, dass Nahkampfwaffen zum Beispiel eine andere Farbe haben als die Fernkampfwaffen oder Spruchrollen die ne andere Farben als die ITems, für die man keine Verwendung eig hat.?

  13. Beiträge anzeigen #53
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Ja, das müsste gehen, wenn du die Item-Kategorien überprüfst. Es sähe dann dem Einfärben der NPC-Namen sehr ähnlich, daran könntest du dich orientieren.

  14. Beiträge anzeigen #54
    Auserwählter Avatar von Simon
    Registriert seit
    Dec 2007
    Ort
    Kiefersfelden
    Beiträge
    6.620
     
    Simon ist offline
    Angenommen man wollte aber auch innerhalb einer Item-Kategorie Farbunterschiede haben... ginge das auch? ^^
    Risenmodkit
    "Du sagst mir jetzt, was du weißt, oder es gibt ein paar auf's Maul, Paul!"

  15. Beiträge anzeigen #55
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.244
     
    Milky-Way ist offline
    Zitat Zitat von Simon Beitrag anzeigen
    Angenommen man wollte aber auch innerhalb einer Item-Kategorie Farbunterschiede haben... ginge das auch? ^^
    Solange du irgendeine Möglichkeit hast, die Items skripttechnisch zu unterscheiden: ja. Zur Not müsstest du eben mit Hlp_IsItem jedes Item abfragen.

  16. Beiträge anzeigen #56
    Ehrengarde Avatar von Gottfried
    Registriert seit
    Mar 2006
    Beiträge
    2.512
     
    Gottfried ist offline
    Nur um es nochmal zu verdeutlichen: Milky meinte diesen Block in der Focusnames.d:
    Code:
    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
    
    }
    else {
        col = Focusnames_Color_Neutral();
    };
    Dort kannst du beliebig viele Abfragen einbauen. RGBA ist in der Interface.d dokumentiert.

    MfG Gottfried

  17. Homepage besuchen Beiträge anzeigen #57
    Apprentice Avatar von edeksumo
    Registriert seit
    Apr 2011
    Ort
    Poland
    Beiträge
    35
     
    edeksumo ist offline
    This package is very good But I've got one question how to turn off(close) an texture. I try with Print_CloseView but nothing happened.

  18. Beiträge anzeigen #58
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von edeksumo Beitrag anzeigen
    This package is very good But I've got one question how to turn off(close) an texture. I try with Print_CloseView but nothing happened.
    Have you downloaded the newest package? Gottfried fixed a bug within Print_CloseView() (Although I don't think this bug made the function not working at all).

    And show your script, please. Are you sure Print_CloseView() is called?

  19. Homepage besuchen Beiträge anzeigen #59
    Apprentice Avatar von edeksumo
    Registriert seit
    Apr 2011
    Ort
    Poland
    Beiträge
    35
     
    edeksumo ist offline
    Code:
    var int _SkillWindow;
    
    func void Skill_Window_on (){
    
    	Print_OpenView  (_SkillWindow);
    	Print ("Window On");                  // for test
    };
    
    func void Skill_Window_off (){
    	Print_CloseView (_SkillWindow);
    	Print ("Window off");                 // for test
    };
    
    
    func void Inicjalize_Window(){
    
    	var int Slash_key;
    	Slash_key = MEM_KeyState (KEY_SLASH);
    	_SkillWindow = Print_CreateView (1000, 1000, 7000, 7000);
    	Print_SetViewTexture (_SkillWindow, "kartka_menu.tga");
    	
    	if (Slash_key == KEY_PRESSED)
    	&& (Window_on == FALSE){
    	Skill_Window_on ();
    	Window_on = true;
    	}
    	else if (Window_on == true)
    	&& (Slash_key == KEY_PRESSED){
    	Skill_Window_off();
    	Window_on = false;
    	};
    
    };
    Yes I've download the newest package. I initializes in init_global by FF_APPLY.

  20. Homepage besuchen Beiträge anzeigen #60
    Exodus Avatar von Sektenspinner
    Registriert seit
    Jul 2004
    Ort
    Karlsruhe
    Beiträge
    7.827
     
    Sektenspinner ist offline

    Post

    I did not read the documentation of the package but, you seem to create a new view every time your Inicjalize_Window function is called. You open some of those views, and you close some of them, but you never act on the same view. A view that is opened will never be closed. Try something like this:

    Code:
    func void Inicjalize_Window(){
        var int Slash_key;
        if (MEM_KeyState (KEY_SLASH) != KEY_PRESSED) {
            return;
        };
        
        if (Window_on == FALSE){
            _SkillWindow = Print_CreateView (1000, 1000, 7000, 7000);
            Print_SetViewTexture (_SkillWindow, "kartka_menu.tga");
            Skill_Window_on ();
            Window_on = true;
        } else {
            Skill_Window_off();
            Window_on = false;
        };
    };
    I would expect this code to crash when opening the view, saving, restarting Gothic and pressing Shift. This has to be fixed somehow, for example via an INIT_* function.
    Für Spieler:
    Velaya # Velaya in English # Exodus Demo # Irrwichtel
    Tools für Modder:
    DiaDepp # DOPA-PARTER # zSlang
    Scripte für Modder:
    Ikarus Skriptpaket # Floats # Broadcasts

Seite 3 von 21 « Erste 12345671014 ... 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