Skocz do zawartości

Błąd ''GameWindow' object has no attribute 'skillSelect'' podczas implementacji systemu iBeast - Skills Select

Opublikowano

syserr

 

0329 16:07:06141 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 16:07:06141 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
0329 16:07:16268 :: icon/item/71095.tga not found. CItemData::__SetIconImage
0329 16:07:16372 :: Traceback (most recent call last):

0329 16:07:16372 ::   File "networkModule.py", line 236, in SetGamePhase

0329 16:07:16372 ::   File "game.py", line 112, in __init__

0329 16:07:16372 ::   File "game.py", line 1879, in __ServerCommand_Build

0329 16:07:16372 :: AttributeError
0329 16:07:16372 :: : 
0329 16:07:16372 :: 'GameWindow' object has no attribute 'skillSelect'
0329 16:07:16372 :: 
 

Rozwiązane przez Sevence

Przejdź do rozwiązania

Featured Replies

Opublikowano

Pokaż plik game.py w spoilerze albo jako załącznik. 

 

W funkcji:

def __init__(self, stream):

 

Dodałeś?

			self.skillSelect = None

 

  • Sevence zmienił(a) tytuł na Błąd ''GameWindow' object has no attribute 'skillSelect'' podczas implementacji systemu iBeast - Skills Select
Opublikowano
  • Autor

Tak jest, ale teraz problem wygląda tak, że po wbiciu 5lvl nie pojawia się takie okienko:

 skills-select.png.fd2fbff823f0dd77c85998

Opublikowano

Masz jakieś błędy w sysser klienta gry? Jeśli tak wstaw je w spoilerze. Skompilowałeś questa, który wywołuje właśnie to okno wyboru umiejętności?

Opublikowano
  • Autor

Właśnie wygląda to tak; dodałem do questa i śmiga pokazuje mi questa ale pisze ze nie znaleziono komendy

 

Sysser:

Spoiler

0329 16:51:09219 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 16:51:09219 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
0329 16:51:18335 :: icon/item/71095.tga not found. CItemData::__SetIconImage
0329 16:51:25349 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 16:51:25349 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
0329 16:51:39321 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 16:51:39321 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
0329 16:51:44294 :: icon/item/71095.tga not found. CItemData::__SetIconImage
0329 16:52:50310 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 16:52:50310 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
 

 

Czy źle wprowadziłem do serwera ze nie działa?

 

Opublikowano

Gdzie wyskakuje taki komunikat, że nie znaleziono komendy? W pliku cmd.cpp poprawnie dodałeś nowe polecenia?

 

W strukturze:

struct command_info cmd_info[] =

 

Dodałeś te nowe komendy?

#ifdef ENABLE_SKILL_SELECT_FEATURE
	{ "selectskill_open",	do_selectskill_open,	0,	POS_DEAD,	GM_PLAYER	},
	{ "selectskill_select",		do_selectskill_select,			0,	POS_DEAD,	GM_PLAYER	},	
#endif

 

Czy plik game podmieniłeś na serwerze?

Opublikowano
  • Autor

aktualnie to nie moge wylaczyc serwera 

Spoiler

image.png.2e5fc03d96f96bd61cbb37200d52222a.png

dlatego własnie nie działa bo nie moge wylaczyc i wlaczyc

Edytowane przez maroin100

Opublikowano

Sprawdź, czy procesy są aktywne, poleceniem:

ps

 

Możesz spróbować wyłączyć w ten sposób jeśli skrypt nie działa poprawnie:

killall -9 game
Opublikowano
  • Autor

Wyłączyłem maszynę i włączyłem, ale to nic nie dało, dalej się pokazuje taki komunikat, że nie znaleziono ; dodałem komendy do pliku cmd.cpp

Spoiler

0329 17:13:06797 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 17:13:06797 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
0329 17:14:35494 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 17:14:35494 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
0329 17:14:44274 :: icon/item/71095.tga not found. CItemData::__SetIconImage
0329 17:16:55972 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=137) - Strange Skill Need Weapon(CLAW)
0329 17:16:55972 :: CPythonSkill::RegisterSkillDesc(dwSkillIndex=139) - Strange Skill Need Weapon(CLAW)
0329 17:16:02630 :: icon/item/71095.tga not found. CItemData::__SetIconImage
 

Opublikowano

Wybacz za takie trywalne pytanie, ale czy podmieniłeś plik game? Na chacie gry dostajesz informacje, że komendy nie znaleziono, tak?

 

Na górze pliku cmd.cpp dodałeś te dwa wpisy? 

ACMD(do_selectskill_open);
ACMD(do_selectskill_select);

 

Te błędy, które masz w sysser klienta gry nic nie mówią, nie mają związku z systemem skill selectu. Jeśli serwer odpowiada, że kokendy nie znaleziono to znaczy, że niepoprawnie zaimplementowałeś w game. Może zapomniałeś o czymś, ale wątpię, bo tam jest naprawdę bardzo mało do dodania. Inna opcja to nie podmieniłeś poprawnie game. Serwer gry, nie 'widzi' takiej komendy. 

Opublikowano
  • Autor

 Juz sie pogubiłem nie wiem czy dobrze to zrobiłem podesle ci tam gdzie miałem wpisac 

Spoiler

import mouseModule
import consoleModule
import localeInfo

import playerSettingModule
import interfaceModule

import musicInfo
import debugInfo
import stringCommander
if app.ENABLE_SKILL_SELECT_FEATURE:
    import uiselectskill

from _weakref import proxy

# SCREENSHOT_CWDSAVE
SCREENSHOT_CWDSAVE = True
SCREENSHOT_DIR = None

Spoiler

class GameWindow(ui.ScriptWindow):
    def __init__(self, stream):
        ui.ScriptWindow.__init__(self, "GAME")
        self.SetWindowName("game")
        net.SetPhaseWindow(net.PHASE_WINDOW_GAME, self)
        player.SetGameWindow(self)    
        self.quickSlotPageIndex = 5
        self.lastPKModeSendedTime = 0
        self.pressNumber = None
        if app.ENABLE_SKILL_SELECT_FEATURE:
            self.skillSelect = uiselectskill.SkillSelectWindow()
            self.skillSelect = None
            self.skillSelect.Hide()
        self.guildWarQuestionDialog = None
        self.interface = None
        self.targetBoard = None
        self.console = None
        self.mapNameShower = None
        self.affectShower = None
        self.playerGauge = None

Spoiler

        if constInfo.PVPMODE_TEST_ENABLE:
            self.testPKMode = ui.TextLine()
            self.testPKMode.SetFontName(localeInfo.UI_DEF_FONT)
            self.testPKMode.SetPosition(0, 15)
            self.testPKMode.SetWindowHorizontalAlignCenter()
            self.testPKMode.SetHorizontalAlignCenter()
            self.testPKMode.SetFeather()
            self.testPKMode.SetOutline()
            self.testPKMode.Show()

            self.testAlignment = ui.TextLine()
            self.testAlignment.SetFontName(localeInfo.UI_DEF_FONT)
            self.testAlignment.SetPosition(0, 35)
            self.testAlignment.SetWindowHorizontalAlignCenter()
            self.testAlignment.SetHorizontalAlignCenter()
            self.testAlignment.SetFeather()
            self.testAlignment.SetOutline()
            self.testAlignment.Show()
        self.__BuildKeyDict()
        self.__BuildDebugInfo()
        if app.ENABLE_SKILL_SELECT_FEATURE and self.skillSelect:
            self.skillSelect.Destroy()
            self.skillSelect = None

        # PRIVATE_SHOP_PRICE_LIST
        uiPrivateShopBuilder.Clear()
        # END_OF_PRIVATE_SHOP_PRICE_LIST
 

Spoiler

            "ConsoleEnable"            : self.__Console_Enable,
            "DayMode"                : self.__DayMode_Update,
            "PRESERVE_DayMode"        : self.__PRESERVE_DayMode_Update,
            "CloseRestartWindow"    : self.__RestartDialog_Close,
            "OpenPrivateShop"        : self.__PrivateShop_Open,
            "PartyHealReady"        : self.PartyHealReady,
            "ShowMeSafeboxPassword"    : self.AskSafeboxPassword,
            "CloseSafebox"            : self.CommandCloseSafebox,
            "selectskill_open"    : self.skillSelect.Open,

syserr ma błędy

Edytowane przez maroin100

Opublikowano

To co przedstawiłeś to kod, który miałeś dodać do klienta gry. Musisz zrobić jeszcze edycję w źródle gry i skompilować następnie zamienić nowo utworzony plik game na serwerze w katalogu share. W kodzie klienta gry masz wszystko poprawnie zaimplementowane. Problemem jest z silnikiem gry (game), który nie widzi nowej komendy, która powinna zostać wywołana w kliencie gry i otworzyć okno wyboru. 

 

Czy wprowadzałeś zmiany do źródła gry i rekompikowałeś game?

Opublikowano
  • Autor

nie rozumiem mozesz jasniej? komplikacje robiłem

Opublikowano

Masz źródło gry tych plików serwerowych, które posiadasz? Jeśli tak, musisz wprowadzić zmiany w kodzie źródłowym game w plikach cmd.cpp i cmd_general.cpp oraz dodać definicję do service.h następnie skompilować game i podmienić w plikach serwerowych. Inaczej nie będzie dostępna nowa komenda, którą wywołujesz w queście skill_select.lua

Opublikowano
  • Autor

gdzieś znajde sysser komplikacji plikow db i game? bo chciałem zobaczyc błędy ale nie umiem sie doszukac

 

Opublikowano

Nie mam pojęcia to wszystko zależy od plików oraz skryptu. Jakim poleceniem kompilujesz game? Czy robisz to przez skrypt, czy bezpośrednio w terminalu? 

Opublikowano
  • Autor

bezposrednio

 

Opublikowano

To błędy powinny wyskoczyć w terminalu. Możesz podesłać screena z ostatnich linii podczas procesu kompilacji? 

Opublikowano
  • Autor

wgrałem skrypt od Paszki na kompikacje itp i mi sie nie tworzy plik game 😒

Opublikowano

Otwórz skrypt którym kompilujesz i tam powinna być nazwa pliku i lokalizacja logów.

Opublikowano
  • Autor
Spoiler

image.png.628189a1d1f2761b12fe165697abd658.png

 

Opublikowano

Otwórz ten skrypt i zobacz w jakiej lokalizacji są logi z procesu kompilacji. Zapewne tam gdzie wygenerowany plik game albo katalog wyżej. Nie używałem tych plików więc ciężko mi powiedzieć, musisz to sprawdzić w kodzie skryptu kompilacji. 

Opublikowano
  • Autor
Spoiler
#!/bin/sh
cd /usr/src/mainline_released/mainline_sg/Srcs/Server && sh compile.sh

kod komplikacji

 

Opublikowano

Przejdź do tego katalogu cd /usr/src/mainline_released/mainline_sg/Srcs/Serve i otwórz skrypt compile.sh w nim będziesz mieć ścieżkę do plików txt z logami kompilacji.

Opublikowano
  • Autor
Spoiler

#!/bin/sh

echo -e "\033[32m \n  
Menu Kompilacji:
Lista mozliwosci kompilacji: \n 
1 - DB & GAME\n 
2 - DB\n
3 - GAME\n
4 - Automatycznia Podmiana DB & GAME\n
 


Wpisz wybrana cyfre:"
read wybor
case $wybor in 

    1*)
        cd /usr/src/mainline_released/mainline_sg/Srcs/Server/db/src
        sh build_db.sh
        sleep 2
        cd /usr/src/mainline_released/mainline_sg/Srcs/Server/game/src
        sh build.sh
        echo "########### Budowanie DB & GAME Zakończone ###########"
    ;;
    2*)
        cd /usr/src/mainline_released/mainline_sg/Srcs/Server/db/src
        sh build_db.sh
    ;;
    3*)
        cd /usr/src/mainline_released/mainline_sg/Srcs/Server/game/src
        sh build.sh
    ;;
    4*)
        mv -f /usr/src/mainline_released/mainline_sg/Srcs/Server/db/db /usr/home/mt2/db/ 2>/dev/null
        echo "########### Plik DB Został Przeniesiony ###########"
        sleep 2
        mv -f /usr/src/mainline_released/mainline_sg/Srcs/Server/game/game /usr/home/mt2/share 2>/dev/null
        echo "########### Plik GAME Został Przeniesiony ###########"
        sleep 2
    ;;

esac
 

ja nie widze .edit

 

Edytowane przez maroin100

Opublikowano

Kurcze, ale tu odnośników, dobrze to w pliku build.sh powinno być określony plik logów. 

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.