Skocz do zawartości
Opublikowano

Cześć,

 

Przedstawiam małą modyfikację, w której dodamy efekt na pieczęci po przywołaniu zwierzaka. Taka modyfikacja weszła na oficjalnych serwerach w patchu 17.5.

 

Prezentacja:

 

Wymagane:

 

Implementacja:

📂 Lokalizacja pliku: 'game -> PetSystem.cpp'

 

🔍 Szukaj:

🔐 Ukryta Treść 🔐

 

♻️ Zamień:

🔐 Ukryta Treść 🔐

 

Niżej dodaj:

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'game -> PetSystem.h'

 

🔍 Szukaj:

🔐 Ukryta Treść 🔐

 

Dodaj:

🔐 Ukryta Treść 🔐

 

🔍 Szukaj:

🔐 Ukryta Treść 🔐

 

Dodaj:

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'UserInterface -> PythonItemModule.cpp'

 

🔍 Szukaj:

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

♻️ Zamień:

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'root  -> uiinventory.py'

 

🔍 Szukaj:

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

Dodaj:

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'root  -> constinfo.py'

 

Dodaj na końcu:

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'root  -> uitaskbar.py'

 

🔍 Szukaj:

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

Dodaj:

🔐 Ukryta Treść 🔐

 

Featured Replies

Opublikowano

Podziękował, napewno dla oka będzie przydatne

  • 5 tygodni później...
Opublikowano

Dziękuje

Opublikowano

Posiadam problem z dodaniem. Po wybraniu passów i próbie zalogowania, klient się crashuje

sysser:
 

1203 14:49:06075 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=92) - Strange Skill Attribute(IGNORE_BLOCK)
1203 14:49:06105 ::
networkModule.py(line:200) SetSelectCharacterPhase
system.py(line:115) __pack_import
system.py(line:98) _process_result
introSelect.py(line:23) <module>
system.py(line:115) __pack_import

networkModule.SetSelectCharacterPhase - <type 'exceptions.IndentationError'>:unindent does not match any outer indentation level (uiInventory.py, line 572)

1203 14:49:06105 :: ============================================================================================================
1203 14:49:06105 :: Abort!!!!


1203 14:49:06105 :: filename = exception.py, name = Abort
1203 14:49:06105 :: filename = networkModule.py, name = SetSelectCharacterPhase
1203 14:49:06105 :: filename = prototype.py, name = RunApp
1203 14:49:06105 :: filename = prototype.py, name = <module>
1203 14:49:06105 :: filename = system.py, name = Run
1203 14:49:06105 :: filename = system.py, name = execfile
1203 14:49:06105 :: filename = system.py, name = RunMainScript
1203 14:49:06105 :: filename = system.py, name = <module>
1203 14:49:06105 :: filename = <string>, name = <module>

 

 

uiinventory.py o którym mówi sysser:

            if constInfo.IS_AUTO_POTION(itemVnum):
                # metinSocket - [0] : Č°ĽşČ­ ż©şÎ, [1] : »çżëÇŃ ľç, [2] : ĂÖ´ë żë·®
                metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]    
                
                if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
                    slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
                    
                isActivated = 0 != metinSocket[0]
                
                if isActivated:
                    self.wndItem.ActivateSlot(slotNumber)
                    potionType = 0;
                    if constInfo.IS_AUTO_POTION_HP(itemVnum):
                        potionType = player.AUTO_POTION_TYPE_HP
                    elif constInfo.IS_AUTO_POTION_SP(itemVnum):
                        potionType = player.AUTO_POTION_TYPE_SP                        
                    
                    usedAmount = int(metinSocket[1])
                    totalAmount = int(metinSocket[2])                    
                    player.SetAutoPotionInfo(potionType, isActivated, (totalAmount - usedAmount), totalAmount, self.__InventoryLocalSlotPosToGlobalSlotPos(i))
                    
                else:
                    self.wndItem.DeactivateSlot(slotNumber)
            elif itemVnum == 70019:
                metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]    
                isActivated = 0 != metinSocket[0]
                
                if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
                    slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
                
                if isActivated:
                    self.wndItem.ActivateSlot(slotNumber)
                else:
                    self.wndItem.DeactivateSlot(slotNumber)
            elif constInfo.IS_PET_SEAL(itemVnum):
                metinSocket = [player.GetItemMetinSocket(slotNumber, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
                isActivated = 0 != metinSocket[2]
                
                if slotNumber >= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex:
                    slotNumber -= player.INVENTORY_PAGE_SIZE*self.inventoryPageIndex
                
                if isActivated:
                    self.wndItem.ActivateSlot(i)
                else:
                    self.wndItem.DeactivateSlot(i)

 

//EDIT

 

Znalazłem rozwiązanie. Błąd IndentationError w Pythonie występuje, gdy w kodzie nie zgadza się poziom wcięcia (indentacji). Python używa wcięć do określania bloków kodu, a błąd ten oznacza, że w kodzie na linii 572 pliku uiInventory.py jest błąd związany z wcięciem. Może nam się wydawać, że taby nam się zgadzają. Aby upewnić się na 100% czy mamy poprawnie wypełnione wcięcia, należy włączyć wyświetlanie tabulatorów w danym edytorze.

obraz.png.a9c8145b8ce3ac29c04a7abecd2a2d3e.png

 

Jak widzimy pierwsza linia jest wypełniona poprawnie, drugą natomiast trzeba poprawić, aby error wcześniej wspomniany zniknął.

Edytowane przez atk

  • 3 miesiące temu...
Opublikowano
  • Premium

dzięki

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...