IS safebox hiba (m)

Indította Noisa, 2015-03-30, 19:56:04

Sziasztok!
Van egy nagy próblémám, leáll a szerver ha megszeretném nyitni az item shop raktárat.
Addig eljut, hogy kéri a jelszót majd elkezd dolgozni és vége.
syserr
kliens
0330 19:32:58098 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010).  Automatic conversion will be attempted.

server
SYSERR: Mar 30 21:29:57.279763 :: LoadSkillMotion: Motion: Skill exist but no motion data for index 0 mob 3596 skill 257
SYSERR: Mar 30 21:29:57.280367 :: LoadSkillMotion: Motion: Skill exist but no motion data for index 1 mob 3596 skill 258
SYSERR: Mar 30 21:29:58.208426 :: heart_idle: losing 104 seconds. (lag occured)
SYSERR: Mar 30 21:31:36.369812 :: ModifyPoints: cannot find table by vnum 28504
SYSERR: Mar 30 21:36:28.187010 :: Process: SEQUENCE 47059000 mismatch 0xaf != 0x64 header 254
SYSERR: Mar 30 21:36:28.187121 :: Process: SEQUENCE_LOG [UNKNOWN]-------------
[254 : 0xaf]

db

SYSERR: Mar 30 21:27:53.665933 :: Start: TABLE_POSTFIX not configured use default

forrást használok és alap 40k warehouse quest ami a goldbart és a sima raktárat nyitja
quest stash begin
state start begin --Status when nothing is open
when warehouse_keeper.chat.gameforge.warehouse._10_npcChat  begin
say_title(gameforge.warehouse._20_sayTitle)
-- changed handling, after we get a new button to open the storeage directly
say(gameforge.warehouse._30_say)
wait()

if pc.gold < 500 then


say_title(gameforge.warehouse._20_sayTitle)
say(gameforge.warehouse._40_say)
else
local s =  select(gameforge.locale.stash.pay_ok, gameforge.locale.stash.pay_no)

if s == 1 then
pc.changegold(-500)
game.set_safebox_level(1)
set_state(use)
say_title(gameforge.subquest_26._30_sayTitle)
say(gameforge.warehouse._50_say)
say_reward(gameforge.warehouse._60_sayReward)
say(gameforge.warehouse._70_say)
else
say_title(gameforge.warehouse._20_sayTitle)
say(gameforge.warehouse._80_say)
end
end
end
when warehouse_keeper.chat.gameforge.warehouse._120_npcChat  begin
if pc.getqf("open_item_storage_count") < 3 then
say_title(gameforge.subquest_26._30_sayTitle)
say(gameforge.warehouse._140_say)
wait()
say_title(gameforge.subquest_26._30_sayTitle)
say_show_item(90013) -- icon of item
say(gameforge.warehouse._150_say)
wait()
pc.setqf("open_item_storage_count", pc.getqf("open_item_storage_count") + 1)
end

setskin(NOWINDOW)
game.open_mall()
end
end
state use begin
when warehouse_keeper.chat.gameforge.warehouse._90_npcChat begin
if pc.getqf("open_count") < 3 then
say_title(gameforge.subquest_26._30_sayTitle)
say(gameforge.warehouse._100_say)
wait()
say_title(gameforge.subquest_26._30_sayTitle)
say(gameforge.warehouse._110_say)
wait()
pc.setqf("open_count", pc.getqf("open_count") + 1)
end
setskin(NOWINDOW)
game.open_safebox()
end
when warehouse_keeper.chat.gameforge.warehouse._120_npcChat begin
if pc.getqf("open_item_storage_count") < 3 then
say_title(gameforge.subquest_26._30_sayTitle)
say(gameforge.warehouse._140_say)
    wait()
say_title(gameforge.subquest_26._30_sayTitle)
say_show_item(90013) -- icon of item
say(gameforge.warehouse._150_say)
wait()
pc.setqf("open_item_storage_count", pc.getqf("open_item_storage_count") + 1)
end

setskin(NOWINDOW)
game.open_mall()

end
when warehouse_keeper.chat.gameforge.locale.stash.buy_silver_and_gold_bar begin
npc.open_shop()
say_title(gameforge.subquest_26._30_sayTitle)
say(gameforge.warehouse._130_say)
end

end -- end_of_state: use
end -- end_of_quest


már próbáltam questet cserélni, db repair....
Ötlet?

Üdv!
Meg van a hiba. Mégpedig az itemshop raktár nem kezelte a 6 követ és kifagyott a kliens ha az itemshop raktárra kattintott az ember.
clientmanager.cpp
char szQuery[512];
snprintf(szQuery, sizeof(szQuery),
"SELECT id, window+0, pos, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5, "


DWORD dwSocket5 = 0;

if (pItemTable->bType == ITEM_UNIQUE)
{
if (pItemAward->dwSocket5 != 0)
dwSocket5 = pItemAward->dwSocket5;
else
dwSocket5 = pItemTable->alValues[0];
}

else
{
switch (dwItemVnum)
{
case 72723: case 72724: case 72725: case 72726:
case 72727: case 72728: case 72729: case 72730:
// ą«˝Ăą«˝ĂÇĎÁö¸¸ ŔĚŔüżˇ ÇĎ´ř °É °íġ±â´Â ą«Ľ·°í...
// ±×·ˇĽ­ ±×łÉ Çϵĺ ÄÚµů. Ľ±ą° »óŔÚżë ŔÚµżą°ľŕ ľĆŔĚĹ۵é.
case 76004: case 76005: case 76021: case 76022:
case 79012: case 79013:
if (pItemAward->dwSocket5 == 0)
{
dwSocket5 = pItemTable->alValues[0];
}
else
{
dwSocket5 = pItemAward->dwSocket5;
}
break;
}
}

snprintf(szQuery, sizeof(szQuery),
"INSERT INTO item%s (id, owner_id, window, pos, vnum, count, socket0, socket1, socket2, socket3, socket4, socket5,) "
"VALUES(%u, %u, '%s', %d, %u, %u, %u, %u, %u, %u, %u, %u)",
GetTablePostfix(),
GainItemID(),
pi->account_id,
pi->ip[0] == 0 ? "SAFEBOX" : "MALL",
iPos,
pItemAward->dwVnum, pItemAward->dwCount, pItemAward->dwSocket0, pItemAward->dwSocket1, pItemAward->dwSocket2, pItemAward->dwSocket3, pItemAward->dwSocket4, dwSocket5);
}

if (pRes->uiAffectedRows == 0 || pRes->uiInsertID == 0 || pRes->uiAffectedRows == (uint32_t)-1)
break;

item.id = pmsg->Get()->uiInsertID;
item.window = pi->ip[0] == 0 ? SAFEBOX : MALL,
item.pos = iPos;
item.count = pItemAward->dwCount;
item.vnum = pItemAward->dwVnum;
item.alSockets[0] = pItemAward->dwSocket0;
item.alSockets[1] = pItemAward->dwSocket1;
item.alSockets[2] = pItemAward->dwSocket2;
item.alSockets[3] = pItemAward->dwSocket3;
item.alSockets[4] = pItemAward->dwSocket4;
item.alSockets[5] = dwSocket5;
s_items.push_back(item);

char szQuery[512];

snprintf(szQuery, sizeof(szQuery),
"REPLACE INTO item%s (id, owner_id, window, pos, count, vnum, socket0, socket1, socket2, socket3, socket4, socket5, "
"attrtype0, attrvalue0, "
"attrtype1, attrvalue1, "
"attrtype2, attrvalue2, "
"attrtype3, attrvalue3, "
"attrtype4, attrvalue4, "
"attrtype5, attrvalue5, "
"attrtype6, attrvalue6) "
"VALUES(%u, %u, %d, %d, %u, %u, %ld, %ld, %ld, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)",
GetTablePostfix(),
p->id,
p->owner,
p->window,
p->pos,
p->count,
p->vnum,
p->alSockets[0],
p->alSockets[1],
p->alSockets[2],
p->alSockets[3],
p->alSockets[4],
p->alSockets[5],
p->aAttr[0].bType, p->aAttr[0].sValue,
p->aAttr[1].bType, p->aAttr[1].sValue,
p->aAttr[2].bType, p->aAttr[2].sValue,
p->aAttr[3].bType, p->aAttr[3].sValue,
p->aAttr[4].bType, p->aAttr[4].sValue,
p->aAttr[5].bType, p->aAttr[5].sValue,
p->aAttr[6].bType, p->aAttr[6].sValue);

CDBManager::instance().ReturnQuery(szQuery, QID_ITEM_SAVE, pkPeer->GetHandle(), NULL);
}

itemawardmanager.cpp
void ItemAwardManager::RequestLoad()
{
char szQuery[QUERY_MAX_LEN];
snprintf(szQuery, sizeof(szQuery), "SELECT id,login,vnum,count,socket0,socket1,socket2,socket3,socket4,socket5,mall,why FROM item_award WHERE taken_time IS NULL and id > %d", g_dwLastCachedItemAwardID);
CDBManager::instance().ReturnQuery(szQuery, QID_ITEM_AWARD_LOAD, 0, NULL);
}

if (m_map_award.find(dwID) != m_map_award.end())
continue;

TItemAward * kData = new TItemAward;
memset(kData, 0, sizeof(TItemAward));

kData->dwID = dwID;
trim_and_lower(row[col++], kData->szLogin, sizeof(kData->szLogin));
str_to_number(kData->dwVnum, row[col++]);
str_to_number(kData->dwCount, row[col++]);
str_to_number(kData->dwSocket0, row[col++]);
str_to_number(kData->dwSocket1, row[col++]);
str_to_number(kData->dwSocket2, row[col++]);
str_to_number(kData->dwSocket3, row[col++]);
str_to_number(kData->dwSocket4, row[col++]);
str_to_number(kData->dwSocket5, row[col++]);
str_to_number(kData->bMall, row[col++]);

itemawardmanager.h
typedef struct SItemAward
{
    DWORD dwID;
    char szLogin[LOGIN_MAX_LEN+1];
    DWORD dwVnum;
    DWORD dwCount;
    DWORD dwSocket0;
    DWORD dwSocket1;
    DWORD dwSocket2;
DWORD dwSocket3;
DWORD dwSocket4;
DWORD dwSocket5;
    char szWhy[ITEM_AWARD_WHY_MAX_LEN+1];
    bool bTaken;
    bool bMall;

Azt hiszem ennyit változtattam, Remélem hasznos a leírás :)