Metin2 Hungarian Forum

Metin2 => Szerver készítés => Privát szerverek => Segítség => A témát indította: Red Dátum 2017-01-20, 19:49:46

Cím: Transmutation+Offlineshop(help)
Írta: Red Dátum 2017-01-20, 19:49:46
Sziasztok.

Beraktam a Transmutation systemet, működik is minden okés de, szeretném összehozni az offlineshoppal a systemet.
Kliensben már kiegészítettem amik kelletek, most jönne a forrás része ahol elakadtam.

offlineshop.cpp

Ebbe a részbe:
bool COfflineShop::AddGuest(LPCHARACTER ch, LPCHARACTER npc)
{
// If there is no ch, return false
if (!ch)
return false;

// If ch is exchanging, return false
if (ch->GetExchange())
return false;

// If target is shopping, return false
if (ch->GetShop())
return false;

// If target is look at private shop, return false
if (ch->GetMyShop())
return false;

// If target is look at offline shop, return false
if (ch->GetOfflineShop())
return false;

// If the npc is nullptr, return false
if (!npc)
return false;

// Start process
ch->SetOfflineShop(this);
m_map_guest.insert(GuestMapType::value_type(ch, false));

TPacketGCShop pack;
pack.header = HEADER_GC_OFFLINE_SHOP;
pack.subheader = SHOP_SUBHEADER_GC_START;

TPacketGCOfflineShopStart pack2;
memset(&pack2, 0, sizeof(pack2));
pack2.owner_vid = npc->GetVID();

#ifdef USE_LENTS_SHOULDER_SASH
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6,applytype0,applyvalue0,applytype1,applyvalue1,applytype2,applyvalue2,applytype3,applyvalue3,applytype4,applyvalue4,applytype5,applyvalue5,applytype6,applyvalue6,applytype7,applyvalue7 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), npc->GetOfflineShopRealOwner()));
#else
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), npc->GetOfflineShopRealOwner()));
#endif
if (pMsg->Get()->uiNumRows == 0)
{
DBManager::instance().DirectQuery("DELETE FROM player.offline_shop_npc WHERE owner_id = %u", npc->GetOfflineShopRealOwner());
ch->SetOfflineShop(NULL);
ch->SetOfflineShopOwner(NULL);
M2_DESTROY_CHARACTER(npc);
return false;
}

MYSQL_ROW row;
while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult)))
{
BYTE bPos = 0;
str_to_number(bPos, row[0]);

str_to_number(pack2.items[bPos].count, row[1]);
str_to_number(pack2.items[bPos].vnum, row[2]);
str_to_number(pack2.items[bPos].price, row[3]);

DWORD alSockets[ITEM_SOCKET_MAX_NUM];
for (int i = 0, n = 4; i < ITEM_SOCKET_MAX_NUM; ++i, n++)
str_to_number(alSockets[i], row[n]);

TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
for (int i = 0, iStartType = 7, iStartValue = 8; i < ITEM_ATTRIBUTE_MAX_NUM; ++i, iStartType += 2, iStartValue += 2)
{
str_to_number(aAttr[i].bType, row[iStartType]);
str_to_number(aAttr[i].sValue, row[iStartValue]);
}

thecore_memcpy(pack2.items[bPos].alSockets, alSockets, sizeof(pack2.items[bPos].alSockets));
thecore_memcpy(pack2.items[bPos].aAttr, aAttr, sizeof(pack2.items[bPos].aAttr));
}

pack.size = sizeof(pack) + sizeof(pack2);

if (ch->GetDesc())
{
ch->GetDesc()->BufferedPacket(&pack, sizeof(TPacketGCShop));
ch->GetDesc()->Packet(&pack2, sizeof(TPacketGCOfflineShopStart));
}

return true;
}



Kellene beleraknom ezt a thecore_memcpy-ek alatt:
#ifdef __CHANGE_LOOK_SYSTEM__
pack2.items[i].dwLookVnum = item.pkItem->GetItemLook();
#endif


[spoiler]De, lehet tévedek és ebben kell hozzáadni:
void COfflineShop::Refresh(LPCHARACTER ch)
{
TPacketGCShop pack;
pack.header = HEADER_GC_OFFLINE_SHOP;
pack.subheader = SHOP_SUBHEADER_GC_UPDATE_ITEM2;

TPacketGCOfflineShopStart pack2;
memset(&pack2, 0, sizeof(pack2));
pack2.owner_vid = 0;

#ifdef USE_LENTS_SHOULDER_SASH
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6,applytype0,applyvalue0,applytype1,applyvalue1,applytype2,applyvalue2,applytype3,applyvalue3,applytype4,applyvalue4,applytype5,applyvalue5,applytype6,applyvalue6,applytype7,applyvalue7 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), ch->GetPlayerID()));
#else
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), ch->GetPlayerID()));
#endif

MYSQL_ROW row;
while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult)))
{
BYTE bPos = 0;
str_to_number(bPos, row[0]);

str_to_number(pack2.items[bPos].count, row[1]);
str_to_number(pack2.items[bPos].vnum, row[2]);
str_to_number(pack2.items[bPos].price, row[3]);

DWORD alSockets[ITEM_SOCKET_MAX_NUM];
for (int i = 0, n = 4; i < ITEM_SOCKET_MAX_NUM; ++i, n++)
str_to_number(alSockets[i], row[n]);

TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
for (int i = 0, iStartType = 7, iStartValue = 8; i < ITEM_ATTRIBUTE_MAX_NUM; ++i, iStartType += 2, iStartValue += 2)
{
str_to_number(aAttr[i].bType, row[iStartType]);
str_to_number(aAttr[i].sValue, row[iStartValue]);
}

thecore_memcpy(pack2.items[bPos].alSockets, alSockets, sizeof(pack2.items[bPos].alSockets));
thecore_memcpy(pack2.items[bPos].aAttr, aAttr, sizeof(pack2.items[bPos].aAttr));
}

pack.size = sizeof(pack) + sizeof(pack2);

if (ch->GetDesc())
{
ch->GetDesc()->BufferedPacket(&pack, sizeof(TPacketGCShop));
ch->GetDesc()->Packet(&pack2, sizeof(TPacketGCOfflineShopStart));
}
}
[/spoiler]

Alapjáraton ezt a cuccot a shop.cpp-ből néztem ki és így szimplán nem fordul le.
Gondolom még a query részeket is ki kell egészítenem dwvnum oszloppal.


Ha, valaki tudna segíteni, útbaigazítani azt megköszönném.

Cím: Re:Transmutation+Offlineshop(help)
Írta: 5310pati Dátum 2017-01-20, 20:36:16
Esetleg ha leírnád a hibát amit fordításnál ír :o
Másrészt meg nemigazán látom értelmét a rendszernek. Kb ugyanaz mint a fegyver kosztüm.
Cím: Re:Transmutation+Offlineshop(help)
Írta: Red Dátum 2017-01-20, 21:01:23
error: using obsolete binding at 'i'
error: 'item' was not declared


Fegyver kosztümöket is tudom transmutálni pls.
Cím: Re:Transmutation+Offlineshop(help)
Írta: 5310pati Dátum 2017-01-20, 21:07:10
Idézetet írta: Red Dátum 2017-01-20, 21:01:23Fegyver kosztümöket is tudom transmutálni pls.
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fci.memecdn.com%2F9978963.jpg&hash=58d03e9aa73f0aac5561ef415198389ed9dd213b)
Annak aztán sok értelme van :-X :-X

Am az a baja, hogy nincs az "item" deklarálva abban a fv-ben, se "i", mivel az adatokat mysqlből szedi mint látod, és a "row"-ban vannak az adatok.
str_to_number(pack2.items[bPos].count, row[1]);
str_to_number(pack2.items[bPos].vnum, row[2]);
str_to_number(pack2.items[bPos].price, row[3]);

A SELECT-et kell bővítened, majd ezek alapján elmenteni a dwLookVnum változódba.
Am elég sok helyen bele kell piszkálnod offshopba, nem csak ebben a fv-ben. Én egy fokozat rendszert csináltam amihez kb ugyanott kell módosítani és jó pár hely volt offshopnál.
Cím: Re:Transmutation+Offlineshop(help)
Írta: Red Dátum 2017-01-20, 21:16:17
Ezt már egyszer megcsináltam és akkor más volt a hiba üzenet. Azt majd holnap bemásolom mára elteszem magam.
Cím: Re:Transmutation+Offlineshop(help)
Írta: 5310pati Dátum 2017-01-20, 21:19:17
Nyílván rosszul írtad meg.

[spoiler]Am még mindig nem értem mi értelme van ennek a rendszernek amikor ott vannak a kosztümök. :-X[/spoiler]
Cím: Re:Transmutation+Offlineshop(help)
Írta: TheSLESH Dátum 2017-01-20, 21:30:40
Pati, mit nem értesz? Ez egy fegyver kosztümjének a kosztüm fegyvere. Hát szerintem teljesen egyértelmű.
Van egy kardod felszerelve, amire ha felveszel egy kosztüm fegyvert akkor egy harmadik kinézete lesz a tárgyadnak, egy zseniális rendszer.
Cím: Re:Transmutation+Offlineshop(help)
Írta: 5310pati Dátum 2017-01-20, 21:34:40
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fi3.kym-cdn.com%2Fentries%2Ficons%2Foriginal%2F000%2F006%2F482%2Ftemplate.jpg&hash=57b22ba35c9a058998bb7a2649cca7d2689838d6)
Én mit nem értek? Te mit nem értesz...
Azt mondtam nem értem mi értelme van ennek. Nem azt hogy mi ez a rendszer.
Cím: Re:Transmutation+Offlineshop(help)
Írta: masodikbela Dátum 2017-01-20, 21:35:37
 :'(
Cím: Re:Transmutation+Offlineshop(help)
Írta: D4RR3 Dátum 2017-01-21, 05:39:01
Kemény programozok mindenhol, mindenki csak renccsereket készít.. #sosad :'(
Cím: Re:Transmutation+Offlineshop(help)
Írta: Red Dátum 2017-01-21, 09:49:13
Na programozó istenek.

így nézz ki a offlineshop.cpp:

bool COfflineShop::AddGuest(LPCHARACTER ch, LPCHARACTER npc)
{
// If there is no ch, return false
if (!ch)
return false;

// If ch is exchanging, return false
if (ch->GetExchange())
return false;

// If target is shopping, return false
if (ch->GetShop())
return false;

// If target is look at private shop, return false
if (ch->GetMyShop())
return false;

// If target is look at offline shop, return false
if (ch->GetOfflineShop())
return false;

// If the npc is nullptr, return false
if (!npc)
return false;

// Start process
ch->SetOfflineShop(this);
m_map_guest.insert(GuestMapType::value_type(ch, false));

TPacketGCShop pack;
pack.header = HEADER_GC_OFFLINE_SHOP;
pack.subheader = SHOP_SUBHEADER_GC_START;

TPacketGCOfflineShopStart pack2;
memset(&pack2, 0, sizeof(pack2));
pack2.owner_vid = npc->GetVID();

#ifdef USE_LENTS_SHOULDER_SASH
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6,applytype0,applyvalue0,applytype1,applyvalue1,applytype2,applyvalue2,applytype3,applyvalue3,applytype4,applyvalue4,applytype5,applyvalue5,applytype6,applyvalue6,applytype7,applyvalue7 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), npc->GetOfflineShopRealOwner()));
#else
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), npc->GetOfflineShopRealOwner()));
#endif
if (pMsg->Get()->uiNumRows == 0)
{
DBManager::instance().DirectQuery("DELETE FROM player.offline_shop_npc WHERE owner_id = %u", npc->GetOfflineShopRealOwner());
ch->SetOfflineShop(NULL);
ch->SetOfflineShopOwner(NULL);
M2_DESTROY_CHARACTER(npc);
return false;
}

MYSQL_ROW row;
while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult)))
{
BYTE bPos = 0;
str_to_number(bPos, row[0]);

str_to_number(pack2.items[bPos].count, row[1]);
str_to_number(pack2.items[bPos].vnum, row[2]);
str_to_number(pack2.items[bPos].price, row[3]);
#ifdef __CHANGE_LOOK_SYSTEM__
str_to_number(pack2.items[bPos].dwLookVnum, row[4]);
#endif

DWORD alSockets[ITEM_SOCKET_MAX_NUM];
for (int i = 0, n = 4; i < ITEM_SOCKET_MAX_NUM; ++i, n++)
str_to_number(alSockets[i], row[n]);

TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
for (int i = 0, iStartType = 7, iStartValue = 8; i < ITEM_ATTRIBUTE_MAX_NUM; ++i, iStartType += 2, iStartValue += 2)
{
str_to_number(aAttr[i].bType, row[iStartType]);
str_to_number(aAttr[i].sValue, row[iStartValue]);
}

thecore_memcpy(pack2.items[bPos].alSockets, alSockets, sizeof(pack2.items[bPos].alSockets));
thecore_memcpy(pack2.items[bPos].aAttr, aAttr, sizeof(pack2.items[bPos].aAttr));
#ifdef __CHANGE_LOOK_SYSTEM__
pack2.items[bPos].dwLookVnum = item.pkItem->GetItemLook();
#endif
}

pack.size = sizeof(pack) + sizeof(pack2);

if (ch->GetDesc())
{
ch->GetDesc()->BufferedPacket(&pack, sizeof(TPacketGCShop));
ch->GetDesc()->Packet(&pack2, sizeof(TPacketGCOfflineShopStart));
}

return true;
}


Packet.h-ban ezt:
struct packet_offline_shop_item

Kiegészítettem ezzel:
#ifdef __CHANGE_LOOK_SYSTEM__
DWORD dwLookVnum;
#endif


És ennyi az error:
error: 'item' was not declared in this scope

Ha, a bPos helyett i-t használok a dwLookVnum-nak akkor error:
error: 'i' was not declared in this scope
error: 'item' was not declared in this scope


Cím: Re:Transmutation+Offlineshop(help)
Írta: Step Dátum 2017-01-21, 10:09:25
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FxqTg5a9.png&hash=f063a24cfcae019c34d08bab6e6cd45601575d8f)
Itt van ez az "item" de sajnos ezzel így abba a funkcióban nem tud mit kezdeni.
Cím: Re:Transmutation+Offlineshop(help)
Írta: Red Dátum 2017-01-21, 10:17:02
Igen Stepi ez az én bajom. Ezért is nyitottam a témát.

NEM AZÉRT, HOGY VAN-E ÉRTELME A SYSTEMNEK PLS.
Cím: Re:Transmutation+Offlineshop(help)
Írta: 5310pati Dátum 2017-01-21, 10:19:29
bool COfflineShop::AddGuest(LPCHARACTER ch, LPCHARACTER npc)
{
// If there is no ch, return false
if (!ch)
return false;

// If ch is exchanging, return false
if (ch->GetExchange())
return false;

// If target is shopping, return false
if (ch->GetShop())
return false;

// If target is look at private shop, return false
if (ch->GetMyShop())
return false;

// If target is look at offline shop, return false
if (ch->GetOfflineShop())
return false;

// If the npc is nullptr, return false
if (!npc)
return false;

// Start process
ch->SetOfflineShop(this);
m_map_guest.insert(GuestMapType::value_type(ch, false));

TPacketGCShop pack;
pack.header = HEADER_GC_OFFLINE_SHOP;
pack.subheader = SHOP_SUBHEADER_GC_START;

TPacketGCOfflineShopStart pack2;
memset(&pack2, 0, sizeof(pack2));
pack2.owner_vid = npc->GetVID();

#ifdef USE_LENTS_SHOULDER_SASH
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6,applytype0,applyvalue0,applytype1,applyvalue1,applytype2,applyvalue2,applytype3,applyvalue3,applytype4,applyvalue4,applytype5,applyvalue5,applytype6,applyvalue6,applytype7,applyvalue7 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), npc->GetOfflineShopRealOwner()));
#else
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT pos,count,vnum,price,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 FROM %soffline_shop_item WHERE owner_id = %u", get_table_postfix(), npc->GetOfflineShopRealOwner()));
#endif
if (pMsg->Get()->uiNumRows == 0)
{
DBManager::instance().DirectQuery("DELETE FROM player.offline_shop_npc WHERE owner_id = %u", npc->GetOfflineShopRealOwner());
ch->SetOfflineShop(NULL);
ch->SetOfflineShopOwner(NULL);
M2_DESTROY_CHARACTER(npc);
return false;
}

MYSQL_ROW row;
while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult)))
{
BYTE bPos = 0;
str_to_number(bPos, row[0]);

str_to_number(pack2.items[bPos].count, row[1]);
str_to_number(pack2.items[bPos].vnum, row[2]);
str_to_number(pack2.items[bPos].price, row[3]);
#ifdef __CHANGE_LOOK_SYSTEM__
str_to_number(pack2.items[bPos].dwLookVnum, row[4]);
#endif

DWORD alSockets[ITEM_SOCKET_MAX_NUM];
for (int i = 0, n = 4; i < ITEM_SOCKET_MAX_NUM; ++i, n++)
str_to_number(alSockets[i], row[n]);

TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
for (int i = 0, iStartType = 7, iStartValue = 8; i < ITEM_ATTRIBUTE_MAX_NUM; ++i, iStartType += 2, iStartValue += 2)
{
str_to_number(aAttr[i].bType, row[iStartType]);
str_to_number(aAttr[i].sValue, row[iStartValue]);
}

thecore_memcpy(pack2.items[bPos].alSockets, alSockets, sizeof(pack2.items[bPos].alSockets));
thecore_memcpy(pack2.items[bPos].aAttr, aAttr, sizeof(pack2.items[bPos].aAttr));
#ifdef __CHANGE_LOOK_SYSTEM__
pack2.items[bPos].dwLookVnum = item.pkItem->GetItemLook();
#endif
}

pack.size = sizeof(pack) + sizeof(pack2);

if (ch->GetDesc())
{
ch->GetDesc()->BufferedPacket(&pack, sizeof(TPacketGCShop));
ch->GetDesc()->Packet(&pack2, sizeof(TPacketGCOfflineShopStart));
}

return true;
}

Ha ezt használod akkor baj van mert nem bővítetted a SELECT query-t.
Amit így elment a lookvnum változódba a socket0 értéke.
+ ez a rész felesleges ha már átírtad hogy a row-ból kapjon értéket:
#ifdef __CHANGE_LOOK_SYSTEM__
pack2.items[bPos].dwLookVnum = item.pkItem->GetItemLook();
#endif
Cím: Re:Transmutation+Offlineshop(help)
Írta: Step Dátum 2017-01-21, 10:21:45
Írj fölé egy:
LPITEM item;
et

#ifdef __CHANGE_LOOK_SYSTEM__
    LPITEM item;
    pack2.items[bPos].dwLookVnum = item.pkItem->GetItemLook();
#endif
Cím: Re:Transmutation+Offlineshop(help)
Írta: 5310pati Dátum 2017-01-21, 10:23:14
Ezzel csak eltünik az errort, de nem fog működni a dolog, mivel az "item" nem kapott értéket. :-X

Valamit előbb lehagytam, hogy ha a row[4]-ből akarod olvasni az lookvnum értékét, akkor a 2 következő ciklus kezdeti értékét is növelned kell 1-el, hogy ne csússzanak el az adatok.

Üzenet összefésülés: 2017-01-21, 10:25:33

De ha mindenképp ennyire LPITEM-el szeretnétek megoldani akkor így:
LPITEM item = GetInventoryItem(bPos);
if (!item)
return false;
else
pack2.items[bPos].dwLookVnum = item->GetItemLook();

Bár ez is csak tárgy berakásnál működik ugye, mert ami boltba van arra nem jó a GetInventoryItem fv.
Cím: Re:Transmutation+Offlineshop(help)
Írta: Red Dátum 2017-01-21, 10:43:20
Rendben eddig okés minden. Még 1 kérdésem lenne.
Ennek a résznek a végére, hogy adjam hozzá a dwVnum-ot?
int iUpdateLen = snprintf(szValues, sizeof(szValues), "%u,%u,%d,%u,%lld,%u", pkItem->GetID(), ch->GetPlayerID(), bDisplayPos, pkItem->GetCount(), llPrice, pkItem->GetVnum());

Azt vágom, hogy a funkció elején hozzá kell adni a void-ba meg a h fájlban is, csak az érdekelnek ennek a végére, hogy írjam be mert, nem nagyon akarja nekem elfogadni sehogy.

Cím: Re:Transmutation+Offlineshop(help)
Írta: 5310pati Dátum 2017-01-21, 10:56:39
Hát ha el akarod menteni berakáskor a lookvnum értékét akkor nem ártana.
Arra figyelj h char.cpp-ben is bővíteni kell a berakást. Nekem legalábbis ott is van, mivel az felel a bolt nyitásért, a offshop_manager meg a nyitva lévő boltba való tárgy hozzáadásért.
Cím: Re:Transmutation+Offlineshop(help)
Írta: Red Dátum 2017-01-21, 11:01:28
Jah char.cpp-ben is megtalálható ugyan ez a rész.
int iLen = snprintf(szColumns, sizeof(szColumns), "id,owner_id,pos,count,price,vnum");
int iUpdateLen = snprintf(szValues, sizeof(szValues), "%u,%u,%d,%u,%lld,%u", pkItem->GetID(), GetPlayerID(), (pTable + i)->display_pos, pkItem->GetCount(), (pTable + i)->price, pkItem->GetVnum());
EhPortal 1.39 © 2025, WebDev