Beiträge von StreetFight

    Du weißt aber schon das mit den Zahlen im Source auch gearbeitet wird und das dort dann überall noch ein 32bit Integer ist ?

    Das schreit nach overflow entweder schon in der tabelle oder im game source.


    "SELECT * FROM player.mob_proto WHERE exp < 0;"


    Dann weißt du obs schon in der db passiert ist.

    Denke aber eher das es im Source passiert wenn da noch diverse EXP Bonis draufgerechnet werden.

    Dann solltest du deine EXP wieder etwas runterschrauben

    Fang an systeme in clienten einzubauen und guck dir an wie diese aifgebaut sind (sehr oft mit defines) du könntest beispielsweise mit sowas anfangen wie wenn define aktiv dann maxomale anzahl von Y erhöht. Oder du könntest dich an eon Gui reinmachen was bestimmte werte anzeigt Beispiel Bonus-Board

    Bitte mach nicht so einen Bullshit mit den defines. Niemand braucht defines.

    Wir Schreiben das Jahr 2019 es gibt viel bessere Möglichkeiten.

    #define ist das letzte was man verwenden sollte grade um solche Werte zu ändern.


    Scott Meyers hat in seinem Buch (Effective C++ 1998) schon geschrieben das man auf defines verzichten sollte.

    Und wie fügt man die Farben hinzu ? Ein Beispiel bitte

    Würde sagen so habs aber nicht ausprobiert:



    und dann ein txt file special_item_vnums.txt mit:


    Code
    1. 19 Pvp 0.5,0.5,0.5,1.0
    2. 189 Pvm 0.1,0.3,0.5,1.0
    3. 2189 Legendär 0.5,0.2,0.3,0.5

    Also

    VNUM[TAB]TITEL[TAB]R,G,B,A

    Ahja und falls nicht bekannt def __init__(self): ist der CTOR von ToolTip muss also dort eingebaut werden.

    uitooltip.py suchen:

    Code
    1. def __SetNormalItemTitle(self):

    darunter:

    MfG

    Lineare Suche kann bei vielen Einträgen teuer werden O(n)


    wie wärs mit

    und dann ein txt file special_item_vnums.txt mit:


    Code
    1. 19    Pvp
    2. 189    Pvm
    3. 2189    Legendär

    Farben kann man natürlich bei Bedarf auch dazu bauen


    Bitte melden Sie sich an, um diesen Link zu sehen.

    Sorry das war der MS SQL Weg. Das sollte der MySQL Weg sein:

    SQL
    1. UPDATE player.mob_proto SET gold_min = CAST(ROUND(RAND() * 2000) AS SIGNED) * level,
    2. gold_max = CAST(ROUND(RAND() * 20000) AS SIGNED) * level;

    Zudem weiß ich nicht genau ob die spalte in der mob_proto wirklich level heißt. Musst du überprüfen

    SQL
    1. UPDATE player.mob_proto SET gold_min=DEINWERT, gold_max=DEINWERT;


    Wie du den Command ausführst weißt du?

    Dann droppen aber alle mobs gleich viel Yang.

    Man könnte den Wert noch mit dem level multipliezieren und ein bisschen pseudozufallszahlen mit einbauen dann hat man vielleicht ein halbwegs brauchbares Ergebnis.


    Vielleicht so irgendwie (Habe es nicht getestet):


    SQL
    1. UPDATE player.mob_proto SET gold_min = CAST(FLOOR(ABS(CHECKSUM(NewId())) % 2000) AS INT) * level,
    2. gold_max = CAST(FLOOR(ABS(CHECKSUM(NewId())) % 20000) AS INT) * level;

    Mit den Zahlen kann man ja spielen

    Hallo verkaufe mein Monsterkartensystem hier dazu ein Video:


    Bitte melden Sie sich an, um dieses Medienelement zu sehen.


    Preis: 450€

    Der Preis ist nicht verhandelbar.

    Das System hat das model rendering so eingebaut das ihr es auch für andere Systeme verwenden könnt (z.B Shop Deco)

    Das heißt wer das System kauft, kauft auch das model rendering dazu das von mir so programmiert wurde das es wiederverwendbar ist.

    Dafür sind 450€ eh schon zu wenig ( sollte sich jemand darüber beschweren).


    Noch kurz zum System:

    Die Belohnungen sind anders als auf DE:

    Die Animationen kann man sich immer ansehen.

    1. Stern man kann sich zum Monster teleportieren (alle 30 Minuten)
    2. Stern man erhält eine Vwk des Monsters(jede Stunde)
    3. Stern man kann sich die Dropps des Monsters mit der jeweiligen Chance ansehen
    4. Stern man kann das Monster neben sich spawnen (alle 12 Stunden)
    5. Stern man erhält einen Tau mit stark gegen das Monster der 2 Stunden hält mit zufälligem Schaden ( alle 24 Stunden)

    Alle Zeiten und auch andere Parameter sind einfach einzustellen.

    Zudem kann man auch als normalen Dropp Monsterkarten bekommen.

    Eure Compile müssen C++14 können. (GCC >= 4.9 && MSVC >= 1900) bzw VS 2015 oder größer


    Bitte nur melden wenn ihr das wirklich kaufen wollt, ich will in kein Team oder irgendwas dergleichen.


    Das Video habe ich erst hochgeladen hat also noch schlechte Qualität.


    mfg


    Update 1:


    Da es offensichtlich relevant ist möchte ich hier nochmal erwähnen das ihr mit dem Target Render das verbaut ist

    auch Chars zeichnen könnt.

    Genauer gesagt könnt ihr alles verwenden was in der PythonCharacterModule ist und auch das was von mir ist z.B das scaling.

    Es gibt auch eine Möglichkeit Das Model rotieren zu lassen mit dem gewünschten Speed.


    Das ganze ist in eine Python class eingewrapped und super einfach zu benutzen.

    Das sieht wohl nach java oder C# aus, wo willst du den WebClient hernehmen ?

    Dafür musst du erstmal einen Ersatz finden den gibts in der C++ Standard Library nicht.

    libcurl wäre z.B ein Ersatz.

    Oder du schreibst den ganzen boilerplate socket code selbst

    Code
    1. if state != 0:
    2. self.Slot1_1[addrKey].SetPackedFontColor(0xFF2ecc71) # Online
    3. else:
    4. self.Slot1_1[addrKey].SetPackedFontColor(0xFFc94431) # Offline

    Der Name Slot1_1 ist ziemlich bedauerlich.

    Ist das nur Channel1 ? du musst mal den ganzen Rest her zeigen.


    Dann bezieht sich das SetLimitWidth tatsächlich auf die breite in Pixel und nicht auf die Zeichen Anzahl dann musst du entweder ne schöne Lookup table machen wo du die größe in pixel für jeden char reinballerst.

    Oder du schaust einfach kurz mit paint oder so wie breit der text in pixel ist und übergibst die zahl als zweiten parameter


    Hier würde ich noch folgendes hinzufügen:

    Code
    1. textline = self.GetChild("message")
    2. if textLenPerLine != 0:
    3. textline.SetMultiLine()
    4. textline.SetLimitWidth(textLenPerLine)
    5. textline.SetText(Message)
    6. textline.SetWindowHorizontalAlignCenter()


    Allerdings wäre es wohl deutlisch besser gewesen das ganze etwas generischer zu machen indem man einfach mehrere TextLine instanzen erzeugt.