Beiträge von Sogma

    Überprüf sonst noch mal was von GetGold zurück kommt, ggf. hab ich da irgendwo was vergessen.

    Danke, ich kam gestern Abend einfach nicht mehr drauf ohne vor dem Code zu sitzen :)

    Ich würde mir an deiner Stelle mal angucken wie SetGold an anderen Stellen verwendet wird und es dann genau so machen. Kann mir gut denken, dass du da noch irgendein DB Packet schicken musst. Bin nicht am Rechner und kann es selbst nicht nachsehen

    Der Umhang ist bei dir aber kein Quest Item, oder?

    Hab das jetzt nur auf die Schnelle runter geschrieben und nicht ausprobiert. Check sonst mal ob der Code da überhaupt ankommt oder ob der Umhang noch von irgendwo anders getriggert wird.

    Nein der code kommt schon an, wenn ich folgendes nämlich auskommentiere, zieht er den tapfi nicht ab.

    Code
    1. item->SetCount(item->GetCount()-1);

    Überprüf sonst noch mal was von GetGold zurück kommt, ggf. hab ich da irgendwo was vergessen.

    Der Umhang ist bei dir aber kein Quest Item, oder?

    Hab das jetzt nur auf die Schnelle runter geschrieben und nicht ausprobiert. Check sonst mal ob der Code da überhaupt ankommt oder ob der Umhang noch von irgendwo anders getriggert wird.

    Joar ist die Frage ob das Not tut. Würde da dann gar nichts anpacken wenn es für einen Oldschool Server ist, oder wenn überhaupt dann nur für Chars ab einem bestimmten Level. Das kann der TE dann ja aber anpassen wie er lustig ist

    In char_item.cpp wird die Funktion AggregateMonster aufgerufen, in etwa so:

    Code
    1. case UNIQUE_ITEM_CAPE_OF_COURAGE:
    2. //¶ó¸¶´Ü º¸»ó¿ë ¿ë±âÀÇ ¸ÁÅä
    3. case 70057:
    4. case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:
    5. AggregateMonster();
    6. item->SetCount(item->GetCount()-1);
    7. break;

    Du könntest dann eine eigene Funktion in der CHARACTER Klasse schreiben, die dir basierend auf dem Level einen Yang-Wert ausgibt. Die Logik dahinter müsstest du dann definieren. Ein Beispiel wäre return Char-Level * 10; dann bezahlt man halt skalierend mit dem eigenen Level.


    Dann änderst du jedes Mal, wenn AggregateMonster oder SetCount ausgeführt wird, das Gold von dem Char:

    Code
    1. case UNIQUE_ITEM_CAPE_OF_COURAGE:
    2. //¶ó¸¶´Ü º¸»ó¿ë ¿ë±âÀÇ ¸ÁÅä
    3. case 70057:
    4. case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:
    5. AggregateMonster();
    6. item->SetCount(item->GetCount()-1);
    7. this->SetGold(GetGold() - 100); //100 Yang pro Pull
    8. break;


    Wenn du willst, dass man keine Umhänge benutzen kann wenn das Yang leer ist, dann bau das so oder so ähnlich um und deaktiviere den automatischen Umhang:

    Finde das irgendwie too much. Die Boni kann man imho auch im Pet/Mount unterbringen.

    Ich würde durchdrehen wenn ich die ganze Zeit 2 Chars sehe.

    Hi,


    da ich nichts public gefunden habe zum Thema Metin2 Client und Python 3 habe ich mir mal den Spaß erlaubt etwas zu experimentieren. Meine Fortschritte will ich hier gerne festhalten, dass auch andere einen Nutzen davon haben.

    Updates werden wohl eher unregelmäßig kommen, da ich auch nicht mehr ganz so viel Zeit habe. Neuer Job, viele private Veränderungen, der ein oder andere kann das vielleicht nachvollziehen.

    Ohne jetzt viel als Einleitung schreiben zu wollen starte ich aber gleich mal mit dem eigentlichen Thema.


    Insgesamt gibt es drei nennenswerte und viele kleine Herausforderungen denen ich bis jetzt begegnet bin.

    1. Update der CPython Implementierung im Client Source
    2. Konvertierung der vorhandenen bytecode files im lib Verzeichnis vom Client
    3. Konvertierung der Python Scripts aus dem Pack Verzeichnis

    Auf die drei Punkte will ich jetzt im Detail eingehen, ich packe die jeweiligen Inhalte in Spoiler, sodass sich jeder das raussuchen kann was ihn interessiert ohne zu viel scrollen zu müssen.



    Aktueller Stand:

    29.11.2022 - 23:55

    Dateien

    • Python3.zip

      (461,58 kB, 71 Mal heruntergeladen, zuletzt: )

    Du kannst alles mit dem Marty Source machen, einige Sachen können halt nicht nur C&P sondern müssen vorher noch angepasst werden

    Und was muss man genau anpassen, da ich mit c++ nicht kann wäre sehr nett wenn du mir sagen könntest was ich anpassen müsste


    Danke für deine Antwort ;)

    Ich habe das System nicht eingebaut, kein Plan was man machen muss. Probieren und ggf. korrigieren

    Ich würde das ganz anders machen.

    Schritt 1: Kauf dir bei Amazon so eine 3-in-1 Maske mit unechter Nase, Brille und Bart. -> Dann kann dich keiner erkennen

    Schritt 2: Kauf dir Lederhandschuhe -> Dann sind deine Fingerabdrücke nicht überall

    Schritt 3: Alles was mit M2 zu tun hat machst du mit den Utensilien aus Schritt 1 + 2 ausgerüstet nur noch in dem ranzigsten Internetcafe deiner Stadt.


    Bingo bongo

    Andere blöde Frage, hat das System vielleicht Recht? Du bist mit dem Char Lv. 75 und der Stein Lv. 5.


    Hast du das mal an einem Stein oder Mob getestet, der ca. dein Level hat? Ich meine mich zu erinnern, dass das System tatsächlich nur Drops anzeigt die du auch bekommen kannst (durch Levelbegrenzung)

    Bei älteren Versionen ist die Option erst dann verfügbar, wenn du die Tabelle öffnest, also Doppelklick drauf machst

    Dude, guck deine Tabellen an, Rechtsklick -> Design Table -> "Default Null" Häkchen setzen, speichern, fertig.

    kannst du das nicht etwas genauer erklären was ich genau anklicken soll ? welche tabelle ? ich habe tausende tabellen vor mir lol

    Bruder....



    In Navicat:


    1. Rechtsklick auf deine Account Tabelle -> Design Table

    2. Für jede column (Feld) z.B. Login, passwort, social number, jede column halt die Einstellung 'Allow Null' aktivieren.


    Wenn du das nicht findest guck dir die Dokumentation zu deiner Navicat Version an. Eigenständiges Arbeiten ist king