Beiträge von soyoz

    ich bekomme den fehler beim einbauen würde mich freuen wenn jemand mir es erklären kann was da falsch ist oder was ich extra noch einfügen muss damit es funktioniert es ist jetzt das beispiel von der uhrzeit:/:/


    0401 19:54:34994 :: File "networkModule.py", line 247, in SetGamePhase


    0401 19:54:34995 :: File "game.py", line 136, in __init__


    0401 19:54:34995 :: NameError

    0401 19:54:34995 :: :

    0401 19:54:34995 :: global name 'locale' is not defined

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




    Die schritte habe ich befolgt hoffe jemand kann mir helfen

    ihr müsst die locale_de entpacken und dann in folgendes Verzeichnis: locale_de\locale\de\ui anschließend öffnet ihr die inventorywindow.py und klammert folgendes aus:



    Code:





    Einfach ein # davor setzt.


    Jetzt entpackt ihr die root.e** und öffnet die game.py und klammert folgendes aus:



    Code:

    PHP
    1. onPressKeyDict[app.DIK_O] = lambda : self.interface.ToggleDragonSoulWindowWithNoInfo()


    anschließend öffnet ihr die uitaskbar.py und sucht nach:



    Code:

    PHP
    1. self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL].SetParent(self)


    und fügt darunter folgendes ein:



    Code:

    PHP
    1. self.toggleButtonDict[ExpandedTaskBar.BUTTON_DRAGON_SOUL].Hide()

    ihr entpackt die root.e** und öffnet die uitaskbar.py anschließend sucht ihr nach:



    Code:
    self.energyGaugeBoard = self.GetChild("EnergyGauge_Board")
    self.energyGaugeToolTip = self.GetChild("EnergyGauge_ToolTip")
    und setzt darunter folgenden Code:



    Code:
    self.energyGaugeBoard.Hide()
    self.energyGaugeToolTip.Hide()

    Heyho,


    ihr kennt ja sicher folgende Problematik:


    Ihr levelt und levelt, aber die Levelanzeige an eurem Namen steht noch immer auf dem Level mit dem ihr angefangen habt.


    Ich hab rausgefunden was dort los war! Folgende Problematik:


    Das Spielerlevel wird an den Clienten nur in der __Create__ mitgegeben.
    Im UpdatePacket() fehlt es allerdings. Er führt im Verlaufe des UpdatePackets das RefreshTextTail() aus, welches das Level theoretisch auch wirklich aktualisiert mit dem wert "m_dwLevel". Dieser Wert wird aber nur gesetzt wenn der Spieler "Created" wird. Sprich Spawnen, Mounten etc.


    Mit diesem Fix zeig ich euch wie ihr ganz einfach das Level in das UpdatePacket() einbaut!


    Server:


    In packet.h suchen:


    Code
    1. typedef struct packet_update_char


    unter


    Code
    1. short sAlignment;
    2. hinzufügen:
    3. DWORD dwLevel;


    In char.cpp suchen:


    Code
    1. void CHARACTER::UpdatePacket()


    unter


    Code
    1. pack.sAlignment = m_iAlignment / 10;
    2. hinzufügen:
    3. pack.dwLevel = GetLevel();


    Client:


    In Packet.h suchen:


    Code
    1. typedef struct packet_update_char


    unter


    Code
    1. short sAlignment;
    2. hinzufügen:
    3. DWORD dwLevel;


    In PythonNetworkStreamPhaseGameActor.cpp suchen:


    Code
    1. bool CPythonNetworkStream::RecvCharacterUpdatePacket()


    unter


    Code
    1. kNetUpdateActorData.m_sAlignment=chrUpdatePacket.sAlignment;
    2. hinzufügen:
    3. kNetUpdateActorData.m_dwLevel=chrUpdatePacket.dwLevel;


    In NetworkActorManager.cpp suchen:


    Code
    1. void CNetworkActorManager::UpdateActor(const SNetworkUpdateActorData& c_rkNetUpdateActorData)


    unter


    Code
    1. pkInstFind->SetAlignment(c_rkNetUpdateActorData.m_sAlignment);
    2. hinzufügen:
    3. pkInstFind->SetLevel(c_rkNetUpdateActorData.m_dwLevel);


    In NetworkActorManager.h suchen:


    Code
    1. struct SNetworkUpdateActorData


    unter


    Code
    1. short m_sAlignment;
    2. hinzufügen:
    3. DWORD m_dwLevel;


    In InstanceBase.cpp suchen:


    Code
    1. void CInstanceBase::SetAlignment(short sAlignment)


    unter der Funktion adden wir diese Funktion:


    Code
    1. void CInstanceBase::SetLevel(DWORD level)
    2. {
    3. m_dwLevel = level;
    4. UpdateTextTailLevel(m_dwLevel);
    5. }


    In InstanceBaseEffect.cpp suchen:


    Code
    1. void CInstanceBase::UpdateTextTailLevel(DWORD level)


    ersetzen mit:



    In InstanceBase.h suchen:


    Code
    1. void SetAlignment(short sAlignment);


    darunter hinzufügen:


    Code
    1. void SetLevel(DWORD level);

    Als erstes im Binary SRC in der Datei PythonExchange.h findet ihr diese Zeile: (Leerzeichen mit Tabs ersetzen)


    PHP
    1. enum
    2. {
    3. EXCHANGE_ITEM_MAX_NUM = 12,
    4. };


    Die 12 steht für 4x3 sprich 3 Reihen von Slots hoch und 4 Breit das heißt die ändern wie auf die Gewünschte Zahl ich habe das ganze erweitert auf 6 slots Breit und 6 slots hoch d.h bei mir ist die zahl 36.


    das wars auch schon im Client nun kommen wir zur game das selbe in Grün in der Datei exchange.h ganz am Anfang:


    PHP
    1. enum EExchangeValues
    2. {
    3. EXCHANGE_ITEM_MAX_NUM = 12,
    4. EXCHANGE_MAX_DISTANCE = 1000
    5. };


    Die 12 wieder ändern gleich wie oben wie ihr das haben wollt oder eben auf 36 für 36 werde ich meine exchange.py heute noch uploaden.


    und zu guter letzt in exchange.cpp sucht ihr nach dem hier:



    und das hier :


    PHP
    1. m_pGrid = M2_NEW CGrid(4,3);


    ändert ihr jetzt auf die gewünschten zahlen also bei mir ist es


    PHP
    1. m_pGrid = M2_NEW CGrid(6,6);


    anstatt von 4,3 versteht sich ^^

    Dateien

    Hallo,


    Ist zwar nichts besonderes, aber vlt bringts jmd. was.


    Nach dem ersten Login wird das EQ komplet angezogen (Anfänger EQ +9).


    Im SRC game/src/questlua_pc.cpp


    sucht nach :


    Code
    1. int pc_get_killee_drop_pct(lua_State* L)


    und unter der kompletten Funktion das hinzufügen :



    sucht nach :


    Code
    1. { "get_informer_item", pc_get_informer_item },


    und füngt darunter das ein :


    Code
    1. { "give_weapson", pc_give_weapson },


    danach compilen.
    Beispiel Quest zum Aufrufen der neuen Questfunktion:


    Hallöchen,



    da ich versuche so wenig mit quests zu regeln habe ich die Barrenfunktion auch in den Source gebaut. Der code ist nicht der beste ich weiß das ihr es alle besser könnt ;)


    Was brauchen wir denn alles ?
    - char.cpp
    - char_item.cpp
    - char.h


    Fangen wir mit der char.h an, und suchen:


    Code
    1. public:
    2. bool ItemProcess_Polymorph(LPITEM item);


    und fügen darunter:


    Code
    1. int ChangeGold(long gold = 0);


    So speichern und die char.cpp öffnen.
    in der char.cpp fügt ihr ganz am ende diese funktion ein:


    Code
    1. int CHARACTER::ChangeGold(long gold)
    2. {
    3. DBManager::instance().SendMoneyLog(MONEY_LOG_QUEST, GetPlayerID(), gold);
    4. PointChange(POINT_GOLD, gold, true);
    5. }


    Speichern und die char_item.cpp öffnen.
    sucht in der char_item.cpp diesen abschnitt:


    Code
    1. if (false == item->IsEquipped())
    2. item->SetSocket(1, item->GetSocket(1) + 1);


    darunter fügt ihr das ein:



    sollte so aussehen:


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


    Bestehende bugs:
    wenn man die Chatausgabe wieder einfügt also die "//" weg macht dann kommt der Text 2x das man das Yang erhalten hatt, wieso auch immer.