3 mesaje
Membru Începător Membru Începător
  • Mesaje: 13
  • Reacții: 2
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    *Problemă/Întrebare:

    Salut, am o problemă după adăugarea propriului text „Canal” în fișierul locale_game.txt.
    După efectuarea acestei modificări apare o eroare.

    *Resursă folosită (sistem/funcție/modificare):

    Cod modificat:

    Fișier: localgame.txt

    CHANNEL_STATUS_OFF test
    CHANNEL_STATUS_NORMAL Normal
    CHANNEL_STATUS_BUSY Busy
    CHANNEL_STATUS_FULL Full

    Fișier: Loginwindow.py

    {
    "name": "Channel1Button",
    "type": "radio_button",
    "x": 10,
    "y": 10,
    "default_image": "d:/ymir work/ui/public/large_button_01.sub",
    "over_image": "d:/ymir work/ui/public/large_button_02.sub",
    "down_image": "d:/ymir work/ui/public/large_button_03.sub",
    "color": 4294281095L,
    "text": ".....",
    },

    Fișier: Intrologin.py

    STATE_DICT = {
    0:localeInfo.CHANNEL_STATUS_OFF,
    1:localeInfo.CHANNEL_STATUS_NORMAL,
    2:localeInfo.CHANNEL_STATUS_BUSY,
    3:localeInfo.CHANNEL_STATUS_FULL
    }

    self.channelButtonList = []
    self.channelButtonList.append(GetObject("Channel1Button"))
    self.channelButtonList.append(GetObject("Channel2Button"))
    self.channelButtonList.append(GetObject("Channel3Button"))
    self.channelButtonList.append(GetObject("Channel4Button"))

    def NotifyChannelState(self, addrKey, state):
    if addrKey-1 < len(self.channelButtonList):
    status = STATE_DICT.get(state, STATE_DICT[0])
    self.channelButtonList[addrKey-1].SetText(localeInfo.CHANNEL + " %d (%s)" % (addrKey, status))

    *Syserr:

    0316 06:10:00521 :: mouseModule:357: RuntimeWarning: tp_compare didn't return -1 or -2 for exception
    0316 06:10:00521 :: Traceback (most recent call last):
    0316 06:10:00521 :: File "mouseModule.py", line 357, in Update
    0316 06:10:00521 :: TypeError
    0316 06:10:00521 :: :
    0316 06:10:00521 :: an integer is required
    0316 06:10:00521 ::

    *Fișier(e) cu problema (link pastebin / code):

    *Poze / Video:

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Membru Ucenic Membru Ucenic
  • Mesaje: 48
  • Reacții: 52
  • Mesaje utile: 6
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    Avatar utilizator
    Membru Ucenic
    Membru Ucenic

    Mesaj de Dintisor »

    Salut,

    [FIX] TypeError: an integer is required după modificare CHANNEL
    Problemă

    După modificarea locale_game.txt pentru a adăuga text custom la „Canal”, apare următoarea eroare în syserr:
    TypeError: an integer is required
    Traceback:
    mouseModule.py", line 357, in Update
    Cauza problemei

    Eroarea NU este direct de la locale_game.txt, ci din codul Python care folosește valorile respective.

    Sunt 3 probleme posibile:
    1. Lipsă CHANNEL în locale_game.txt

    Codul folosește:
    localeInfo.CHANNEL
    Dar în locale_game.txt există doar:
    CHANNEL_STATUS_OFF test
    CHANNEL_STATUS_NORMAL Normal
    CHANNEL_STATUS_BUSY Busy
    CHANNEL_STATUS_FULL Full
    Lipsește:
    CHANNEL Canal
    2. addrKey nu este integer

    Linia:
    addrKey-1
    va da eroare dacă addrKey este string.

    De aici vine:
    TypeError: an integer is required
    3. status poate fi None
    Dacă valoarea nu este găsită în STATE_DICT, %s poate primi None.

    FIX COMPLET
    ✔ Adaugă în locale_game.txt:
    CHANNEL Canal
    Modifică funcția:
    def NotifyChannelState(self, addrKey, state):
    try:
    addrKey = int(addrKey)
    except:
    return

    if addrKey-1 < len(self.channelButtonList):
    status = str(STATE_DICT.get(state, STATE_DICT[0]))
    self.channelButtonList[addrKey-1].SetText("%s %d (%s)" % (localeInfo.CHANNEL, addrKey, status))
    Concluzie

    Problema apare din:

    lipsa CHANNEL în locale
    addrKey nu este int
    posibil status invalid

    Sfat

    Când lucrați cu localeInfo:

    verificați că toate cheile există

    validați tipurile de date

    folosiți conversii defensive (int, str)

    Succes 👍

    Daca apar probleme, revino cu reply si vom incerca sa te ajutam in continuare !!!
    Membru Începător Membru Începător
  • Mesaje: 13
  • Reacții: 2
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    Avatar utilizator
    Membru Începător
    Membru Începător

    Mesaj de Szyfrant »

    Vă rog

    localgame.txt:

    CHANNEL Canal
    CHANNEL_EMPTY_SERVER Niciun server
    CHANNEL_NORMAL Canal %d
    CHANNEL_NOT_FIND_INFO Nicio informaţie găsită via Canal.
    CHANNEL_NOTIFY_FULL Acest canal este plin! Alege te rog altul.
    CHANNEL_PVP Duel liber
    CHANNEL_SELECT_CHANNEL Alege canalul
    CHANNEL_SELECT_REGION Selectează regiunea.
    CHANNEL_SELECT_SERVER Alege serverul
    CHANNEL_TEST_SERVER Testează serverul
    CHANNEL_TEST_SERVER_ADDR Test %s:%d
    CHANNELING_CANNOT_LOGOUT Nu poţi reveni la ecranul de login.
    CHANNEL_STATUS_OFF test
    CHANNEL_STATUS_NORMAL Normal
    CHANNEL_STATUS_BUSY Busy
    CHANNEL_STATUS_FULL Full

    intrrologin.py

    STATE_DICT = {
    0:localeInfo.CHANNEL_STATUS_OFF,
    1:localeInfo.CHANNEL_STATUS_NORMAL,
    2:localeInfo.CHANNEL_STATUS_BUSY,
    3:localeInfo.CHANNEL_STATUS_FULL
    }

    self.channelButtonList = []
    self.channelButtonList.append(GetObject("Channel1Button"))
    self.channelButtonList.append(GetObject("Channel2Button"))
    self.channelButtonList.append(GetObject("Channel3Button"))
    self.channelButtonList.append(GetObject("Channel4Button"))

    def NotifyChannelState(self, addrKey, state):
    try:
    addrKey = int(addrKey)
    except:
    return

    if addrKey < 1 or addrKey > len(self.channelButtonList):
    return

    status = str(STATE_DICT.get(state, STATE_DICT[0]))
    self.channelButtonList[addrKey - 1].SetText("%s %d (%s)" % (localeInfo.CHANNEL, addrKey, status))

    syslog.txt:
    0318 20:23:00556 :: mouseModule:357: RuntimeWarning: tp_compare didn't return -1 or -2 for exception

    0318 20:23:00556 :: Traceback (most recent call last):

    0318 20:23:00556 :: File "mouseModule.py", line 357, in Update

    0318 20:23:00557 :: TypeError
    0318 20:23:00557 :: :
    0318 20:23:00557 :: an integer is required
    0318 20:23:00557 ::

    0318 20:23:02206 :: Traceback (most recent call last):

    0318 20:23:02206 :: File "mouseModule.py", line 357, in Update

    0318 20:23:02207 :: TypeError
    0318 20:23:02207 :: :
    0318 20:23:02207 :: an integer is required
    0318 20:23:02207 ::
    Scrie răspuns

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Support”

    Informații

    Utilizatori ce navighează pe acest forum: Szyfrant și 2 vizitatori

    Discord ID copiat: