*Descriere:
Cu modificarile de mai jos, membrii GM pot da upgrade la un item la fierar/bless/metal magic/etc., fara sa aiba materialele necesare pt upgrade in inventar.
*Poze / Video:
*Link download / Code:
In service.h adaugam:
Deschide char_item.cpp si cauta functia:
Mai jos vei gasi:
Adauga:
Mai jos cauta:
Mai jos vei gasi:
Inlocuieste cu:
Mai jos vei gasi:
Inlocuieste cu:
Cauta:
Inlocuieste cu:
Mai jos vei gasi:
Inlocuieste cu:
Mai jos vei gasi:
Inlocuieste cu:
Mai jos vei gasi:
Inlocuieste cu:
Cauta:
Adauga:
Cauta:
Inlocuieste cu:
Mai jos ai:
Adauga:
Trebuie sa arate asa:
Cauta:
Adauga inainte:
Acum cauta:
Inlocuieste cu:
Acum cauta:
Inlocuieste asa:
Acum cauta:
Inlocuieste asa:
Cauta:
Inlocuieste cu:
Cauta:
Inlocuieste cu:
Exemplu full daca nu te descurci:
Cu modificarile de mai jos, membrii GM pot da upgrade la un item la fierar/bless/metal magic/etc., fara sa aiba materialele necesare pt upgrade in inventar.
*Poze / Video:
*Link download / Code:
In service.h adaugam:
Cod: Selectaţi tot
#define GM_UPGRADE_BYPASSCod: Selectaţi tot
bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
{Cod: Selectaţi tot
const TRefineTable * prt = CRefineManager::instance().GetRefineRecipe(item->GetRefineSet());
if (!prt)
return false;
DWORD result_vnum = item->GetRefinedVnum();
// REFINE_COST
long long cost = ComputeRefineFee(prt->cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos cauta:
Cod: Selectaţi tot
if (item->GetType() == ITEM_USE && item->GetSubType() == USE_TUNING)
return false;
TItemTable * pProto = ITEM_MANAGER::instance().GetTable(item->GetRefinedVnum());
if (!pProto)
{
sys_err("DoRefine NOT GET ITEM PROTO %d", item->GetRefinedVnum());
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ÀÌ ¾ÆÀÌÅÛÀº °³·®ÇÒ ¼ö ¾ø½À´Ï´Ù."));
return false;
}Cod: Selectaţi tot
if (GetGold() < cost) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos vei gasi:
Cod: Selectaţi tot
if (!bMoneyOnly && !RefineChance) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, item->GetVnum(), -cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos vei gasi:
Cod: Selectaţi tot
PayRefineFee(cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos vei gasi:
Cod: Selectaţi tot
DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, item->GetVnum(), -cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos vei gasi:
Cod: Selectaţi tot
PayRefineFee(cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
const TRefineTable * prt = CRefineManager::instance().GetRefineRecipe(item->GetRefineSet());
if (!prt)
return false; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
if (GetGold() < prt->cost) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mai jos ai:
Cod: Selectaţi tot
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°³·®À» Çϱâ À§ÇÑ µ·ÀÌ ºÎÁ·ÇÕ´Ï´Ù."));
return false;
} Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Trebuie sa arate asa:
Cod: Selectaţi tot
#ifdef GM_UPGRADE_BYPASS
if (!bGMFree)
#endif
{
for (int i = 0; i < prt->material_count; ++i)
{
if (CountSpecifyItem(prt->materials[i].vnum) < prt->materials[i].count)
{
if (test_server)
{
ChatPacket(CHAT_TYPE_INFO, "Find %d, count %d, require %d",
prt->materials[i].vnum, CountSpecifyItem(prt->materials[i].vnum), prt->materials[i].count);
}
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°³·®À» Çϱâ À§ÇÑ Àç·á°¡ ºÎÁ·ÇÕ´Ï´Ù."));
return false;
}
}
for (int i = 0; i < prt->material_count; ++i)
RemoveSpecifyItem(prt->materials[i].vnum, prt->materials[i].count);
}Cod: Selectaţi tot
pkItemScroll->SetCount(pkItemScroll->GetCount() - 1); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum cauta:
Cod: Selectaţi tot
DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, item->GetVnum(), -prt->cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum cauta:
Cod: Selectaţi tot
PayRefineFee(prt->cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum cauta:
Cod: Selectaţi tot
DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, item->GetVnum(), -prt->cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
PayRefineFee(prt->cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
PayRefineFee(prt->cost); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Exemplu full daca nu te descurci:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.



