Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.
Testy nowej platformy wystartowały chcesz pomóc kształtować nowa wersje portalu - daj znać na priv a podrzucimy dostęp do wczesnej wersji

Problemy przy wdrożeniu systemu - Dungeon Info System

Featured Replies

Opublikowano

Witam panowie potrzebuje pomocy , dodałem sobie system z tego tematu:

 

Po dodaniu gdy klikam na przycisk na minimapie nic się nie otwiera i takie błędy mam w syserr

 

Ch1:

SYSERR: Dec  8 16:51:02 :: RunState: LUA_ERROR: ...sr/home/mt2/share/locale/poland/quest/dungeonLib.lua:114: attempt to call field `get_my_rank' (a nil value)
SYSERR: Dec  8 16:51:02 :: WriteRunningStateToSyserr: LUA_ERROR: quest dungeon_manager.start click

 

Client:

Spoiler

 

Dungeonlib.lua:

https://pastebin.com/QmEJsCxL

 

dungeon_manager.quest:

https://pastebin.com/5mPrGjHS

 

uiDungeonInfo.py:

https://pastebin.com/BQ9yUjSj

 

Proszę o pomoc

Rozwiązane przez Sevence

Opublikowano

Ten problem z uruchomieniem GUI wynika przez funkcję podaną w logu 'get_my_rank', która nie zwraca wartości. Spróbuj dodać do niej logi i sprawdź co tam zwraca.

 

Przykładowo: 

CKod został skopiowany
int dungeon_get_my_rank(lua_State* L){	// DungeonMapIndex, RankingType (Completed|FinishTime|HighestDamage)	if (!lua_tonumber(L, 1) || !lua_tonumber(L, 2))	{		sys_err("Invalid argument");		return 0;	} 	LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();	DWORD pid = ch->GetPlayerID(); 	sys_log(0, "dungeon rank input - map_index=%d, rank_type=%d", map_index, rank_type); 	int map_index = int(lua_tonumber(L, 1));	BYTE rank_type = int(lua_tonumber(L, 2)); 	if (map_index <= 0 || rank_type <= 0)	{		sys_err("Invalid rank arguments");		return 0;	} 	char szQuery[1024];	snprintf(szQuery, sizeof(szQuery), "SELECT "		"completed, time, damage FROM dungeon_ranking%s WHERE pid = '%u' AND dungeon_index = '%d'", get_table_postfix(), pid, map_index);			std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery(szQuery)); 	if (pMsg->Get()->uiNumRows > 0)	{		MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult); 		int points = 0;		if (rank_type == 1)			str_to_number(points, row[0]); // completed		else if (rank_type == 2)			str_to_number(points, row[1]); // time		else if (rank_type == 3)			str_to_number(points, row[2]); // damage 		sys_log(0, "query result=%d for rank_type=%d", result, rank_type); 		lua_pushnumber(L, points); 	}	else	{		sys_log(0, "no result for map_index=%d, rank_type=%d", map_index, rank_type); 		lua_pushnumber(L, 0);	} 	return 1;}

 

 

Opublikowano
W dniu 8.12.2024 o 15:15, Sevence napisał(a):

Ten problem z uruchomieniem GUI wynika przez funkcję podaną w logu 'get_my_rank', która nie zwraca wartości. Spróbuj dodać do niej logi i sprawdź co tam zwraca.

 

Przykładowo: 

CKod został skopiowany
int dungeon_get_my_rank(lua_State* L){	// DungeonMapIndex, RankingType (Completed|FinishTime|HighestDamage)	if (!lua_tonumber(L, 1) || !lua_tonumber(L, 2))	{		sys_err("Invalid argument");		return 0;	} 	LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();	DWORD pid = ch->GetPlayerID(); 	sys_log(0, "dungeon rank input - map_index=%d, rank_type=%d", map_index, rank_type); 	int map_index = int(lua_tonumber(L, 1));	BYTE rank_type = int(lua_tonumber(L, 2)); 	if (map_index <= 0 || rank_type <= 0)	{		sys_err("Invalid rank arguments");		return 0;	} 	char szQuery[1024];	snprintf(szQuery, sizeof(szQuery), "SELECT "		"completed, time, damage FROM dungeon_ranking%s WHERE pid = '%u' AND dungeon_index = '%d'", get_table_postfix(), pid, map_index);			std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery(szQuery)); 	if (pMsg->Get()->uiNumRows > 0)	{		MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult); 		int points = 0;		if (rank_type == 1)			str_to_number(points, row[0]); // completed		else if (rank_type == 2)			str_to_number(points, row[1]); // time		else if (rank_type == 3)			str_to_number(points, row[2]); // damage 		sys_log(0, "query result=%d for rank_type=%d", result, rank_type); 		lua_pushnumber(L, points); 	}	else	{		sys_log(0, "no result for map_index=%d, rank_type=%d", map_index, rank_type); 		lua_pushnumber(L, 0);	} 	return 1;}

 

 

Chryste, przecież przez ten kod kacu byłby w stanie bazę wywalić swoim skryptem  😄

 

Opublikowano
  • Autor

Rozwiązane został tylko błąd w Client

 

1208 16:28:04498 :: Cannot find item by 0

 

image.png.7f0044b737a222cd0ddf4f0eccacc9f8.png

Opublikowano
W dniu 8.12.2024 o 15:29, TIMEK napisał(a):

Rozwiązane został tylko błąd w Client

 

1208 16:28:04498 :: Cannot find item by 0

To podziel się rozwiązaniem dla innych, którzy będą mieli ten sam problem. Ten błąd cannot find item by 0 obstawiam, że wynika z braku określonej przepustki, ale nie jestem pewien. 

Opublikowano

Taki super system, że wali błędami, gdy się ustawia dungeon bez wymaganej przepustki? 😄

 

W dniu 8.12.2024 o 15:29, TIMEK napisał(a):

Rozwiązane został tylko błąd w Client

 

1208 16:28:04498 :: Cannot find item by 0

 

image.png.7f0044b737a222cd0ddf4f0eccacc9f8.png

 

Znajdź w ui tego systemu coś w stylu:

TextKod został skopiowany
item.SelecItem([...]) # w miejscu [...] może być coś w stylu: ItemVnum, item_vnum, ItemIndex, etc.

 

Poprzedź tę linijkę takim warunkiem:

TextKod został skopiowany
if item_vnum: # item_vnum dostosuj pod siebie

 

Opublikowano
  • Autor

Błąd wynika z własnej głupoty xD Poprostu nie podmieniłem plików db i game po kompilacji sam nie wiem jak to się stało xD

Opublikowano
W dniu 8.12.2024 o 15:36, TIMEK napisał(a):

Błąd wynika z własnej głupoty xD Poprostu nie podmieniłem plików db i game po kompilacji sam nie wiem jak to się stało xD

A już myślałem, ze z tego tematu wyniknie jakiś konkretne rozwiązanie. ;x

 

W dniu 8.12.2024 o 15:35, KoYGeR napisał(a):

Znajdź w ui tego systemu coś w stylu:

TextKod został skopiowany
item.SelecItem([...]) # w miejscu [...] może być coś w stylu: ItemVnum, item_vnum, ItemIndex, etc.

W sensie, że próbuje ustawić przedmiot na slocie w GUI, który nie jest ustawiony? 

Opublikowano
PythonKod został skopiowany
		if dungeonItemVnum > 0:			self.SetItemSlot(dungeonItemVnum, dungeonItemCount)		else:			self.SetItemSlot(0, 0)			self.dungeonInfoItemSlot.SetCoverButton(0, self.ITEM_SLOT_ENABLE, self.ITEM_SLOT_ENABLE, self.ITEM_SLOT_ENABLE, self.ITEM_SLOT_ENABLE, False, False)			self.dungeonInfoItemSlot.SetAlwaysRenderCoverButton(0) 	def SetItemSlot(self, itemVnum, itemCount):		itemIndex = itemVnum		itemCount = itemCount 		self.dungeonInfoItemSlot.SetItemSlot(0, itemIndex, itemCount)		item.SelectItem(itemVnum) 		self.dungeonItemToolTip = uiToolTip.ItemToolTip()		self.dungeonItemToolTip.AppendTextLine(item.GetItemName(), self.TOOLTIP_SPECIAL_COLOR)		self.dungeonItemToolTip.AppendDescription(item.GetItemDescription(), 26)		self.dungeonItemToolTip.AlignHorizonalCenter()

 

Czy tylko mnie to bawi? 😄

Opublikowano
W dniu 8.12.2024 o 15:16, KoYGeR napisał(a):

Chryste, przecież przez ten kod kacu byłby w stanie bazę wywalić swoim skryptem  😄

 

Swoim xD? Jak on kodować nie potrafi, system nie warty dodania tak jak pisali chłopaki up ;)

Opublikowano
W dniu 8.12.2024 o 15:38, KoYGeR napisał(a):
CKod został skopiowany
	def SetItemSlot(self, itemVnum, itemCount):		itemIndex = itemVnum		itemCount = itemCount 		self.dungeonInfoItemSlot.SetItemSlot(0, itemIndex, itemCount)		item.SelectItem(itemVnum) 		self.dungeonItemToolTip = uiToolTip.ItemToolTip()		self.dungeonItemToolTip.AppendTextLine(item.GetItemName(), self.TOOLTIP_SPECIAL_COLOR)		self.dungeonItemToolTip.AppendDescription(item.GetItemDescription(), 26)		self.dungeonItemToolTip.AlignHorizonalCenter()

 

Czy tylko mnie to bawi? 😄

Też mnie bawi, ciekaw jestem co autor miał na myśli, tworząc te zmienne lokalne i jeszcze je tak samo nazwać. 😆

Opublikowano
W dniu 8.12.2024 o 15:48, KoYGeR napisał(a):

KacMorderca od HL bota  : )

Hl'a koduje Guto jeżeli chodzi o c++ itd a Cycu python'a KacMorderca nie ma elementarnej wiedzy na temat programowania (to nie jest hejt tylko stwierdzenie faktu) tam z nimi siedzi jeszcze Noriaki to też coś tam im ogarnia. Zajmuje się supportem u nich i odwalaniem na priv wersji hl'a na serwerach

Edytowane przez HeskuGame

Opublikowano
  • Autor

Ale to dziwne po kliknięciu na teleport albo ranking pokazuje coś takiego

image.png?ex=67571349&is=6755c1c9&hm=f3d22cbc5a73dbb2518eec90e0f9ef3de38d0142715a96af8defb9d6a498ae1a&

 

I wali takimi błędami a przeciez mam split w kodzie:

 

SYSERR: Dec  8 17:53:35 :: RunState: LUA_ERROR: [string "dungeon_manager"]:2: attempt to call global `split' (a nil value)
SYSERR: Dec  8 17:53:35 :: WriteRunningStateToSyserr: LUA_ERROR: quest dungeon_manager.start click
SYSERR: Dec  8 17:53:38 :: Input: no quest running for pc, cannot process input : 1

Opublikowano

Jesteś pewien, że masz funkcję split w questlib? 

 

LuaKod został skopiowany
function split(string_,delimiter)    local result = { }    local from  = 1    local delim_from, delim_to = string.find( string_, delimiter, from  )    while delim_from do        table.insert( result, string.sub( string_, from , delim_from-1 ) )        from  = delim_to + 1        delim_from, delim_to = string.find( string_, delimiter, from  )    end    table.insert( result, string.sub( string_, from  ) )    return resultend

 

Opublikowano
  • Autor
W dniu 8.12.2024 o 16:19, Sevence napisał(a):

Jesteś pewien, że masz funkcję split w questlib? 

 

LuaKod został skopiowany
function split(string_,delimiter)    local result = { }    local from  = 1    local delim_from, delim_to = string.find( string_, delimiter, from  )    while delim_from do        table.insert( result, string.sub( string_, from , delim_from-1 ) )        from  = delim_to + 1        delim_from, delim_to = string.find( string_, delimiter, from  )    end    table.insert( result, string.sub( string_, from  ) )    return resultend

 

No tak mi chodziło o quest_functions ale dzięki działa

Opublikowano
  • Autor

Tylko dziwne okienko mi wyskakuje podczas teleportacji i jak wciskam ranking a syserr czysty

image.png?ex=67571349&is=6755c1c9&hm=f3d22cbc5a73dbb2518eec90e0f9ef3de38d0142715a96af8defb9d6a498ae1a&

Opublikowano
  • Rozwiązanie

🔍Szukaj: 'root -> game.py'

PythonKod został skopiowany
	def OpenQuestWindow(self, skin, idx):		self.interface.OpenQuestWindow(skin, idx)

 

♻️Zamień:

PythonKod został skopiowany
	def OpenQuestWindow(self, skin, idx):		if constInfo.INPUT_IGNORE == 1:			return		else:			self.interface.OpenQuestWindow(skin, idx)
Opublikowano
  • Autor
W dniu 8.12.2024 o 17:02, Sevence napisał(a):

🔍Szukaj: 'root -> game.py'

PythonKod został skopiowany
	def OpenQuestWindow(self, skin, idx):		self.interface.OpenQuestWindow(skin, idx)

 

♻️Zamień:

PythonKod został skopiowany
	def OpenQuestWindow(self, skin, idx):		if constInfo.INPUT_IGNORE == 1:			return		else:			self.interface.OpenQuestWindow(skin, idx)

Działa Dzięki wielkie

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

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.