Végtelen piros/kék/lila/zöld ital

Indította Losmark10, 2018-05-14, 09:43:58

Hali,

Azt szeretném megkérdezni, hogy hogyan tudom végteleníteni a piros/kék/lila/zöld italokat?
A válaszokat előre is köszönöm!

Kikeresd char_item.cpp-ben a kód alapján, és meglátod, hogy hol von le az összeből -1-et és a kivonást kell megszüntetni. Csak utána arra ügyelj, hogy egy darab potit rakj a kereskedésbe :D


Vörös és kékital:
27001   Vörös Ital(Kicsi)
27002   Vörös ital(Közepes)
27003   Vörös Ital(Nagy)
27004   Kék Ital(Kicsi)
27005   Kék Ital(Közepes)
27006   Kék Ital(Nagy)
[spoiler]case USE_POTION:
if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
{
if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit") > 0)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ĂŔ忡Ľ­ »çżëÇĎ˝Ç Ľö ľř˝Ŕ´Ď´Ů."));
return false;
}

switch (item->GetVnum())
{
case 27001 :
case 27002 :
case 27003 :
case 27004 :
case 27005 :
case 27006 :
if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit_count") < 10000)
{
if (m_nPotionLimit <= 0)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»çżë Á¦ÇŃ·®Ŕ» ĂĘ°úÇĎż´˝Ŕ´Ď´Ů."));
return false;
}
}
break;

default :
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ĂŔ忡Ľ­ »çżëÇĎ˝Ç Ľö ľř˝Ŕ´Ď´Ů."));
return false;
}
}

if (item->GetValue(1) != 0)
{
if (GetPoint(POINT_SP_RECOVERY) + GetSP() >= GetMaxSP())
{
return false;
}

PointChange(POINT_SP_RECOVERY, item->GetValue(1) * MIN(200, (100 + GetPoint(POINT_POTION_BONUS))) / 100);
StartAffectEvent();
EffectPacket(SE_SPUP_BLUE);
}

if (item->GetValue(0) != 0)
{
if (GetPoint(POINT_HP_RECOVERY) + GetHP() >= GetMaxHP())
{
return false;
}

PointChange(POINT_HP_RECOVERY, item->GetValue(0) * MIN(200, (100 + GetPoint(POINT_POTION_BONUS))) / 100);
StartAffectEvent();
EffectPacket(SE_HPUP_RED);
}

if (GetDungeon())
GetDungeon()->UsePotion(this);

if (GetWarMap())
GetWarMap()->UsePotion(this, item);

item->SetCount(item->GetCount() - 1);
m_nPotionLimit--;
break;
[/spoiler]

Kikommentezed ezt a sort:   
item->SetCount(item->GetCount() - 1);







Zöld és Lila ital:

[spoiler] case ITEM_USE:
{
if (item->GetVnum() > 50800 && item->GetVnum() <= 50820)
{
if (test_server)
sys_log (0, "ADD addtional effect : vnum(%d) subtype(%d)", item->GetOriginalVnum(), item->GetSubType());

int affect_type = AFFECT_EXP_BONUS_EURO_FREE;
int apply_type = aApplyInfo[item->GetValue(0)].bPointType;
int apply_value = item->GetValue(2);
int apply_duration = item->GetValue(1);

switch (item->GetSubType())
{
case USE_ABILITY_UP:

#ifdef ENABLE_YMIR_AFFECT_FIX
if ((CheckTimeUsed(item) == false)) { return false; }
#endif

if (FindAffect(affect_type, apply_type))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ŔĚąĚ Čż°ú°ˇ °É·Á ŔÖ˝Ŕ´Ď´Ů."));
return false;
}

{
switch (item->GetValue(0))
{
case APPLY_MOV_SPEED:
AddAffect(affect_type, apply_type, apply_value, AFF_MOV_SPEED_POTION, apply_duration, 0, true, true);
EffectPacket(SE_DXUP_PURPLE); //purple potion
break;

case APPLY_ATT_SPEED:
AddAffect(affect_type, apply_type, apply_value, AFF_ATT_SPEED_POTION, apply_duration, 0, true, true);
EffectPacket(SE_SPEEDUP_GREEN); //green potion
break;

case APPLY_STR:
case APPLY_DEX:
case APPLY_CON:
case APPLY_INT:
case APPLY_CAST_SPEED:
case APPLY_RESIST_MAGIC:
case APPLY_ATT_GRADE_BONUS:
case APPLY_DEF_GRADE_BONUS:
AddAffect(affect_type, apply_type, apply_value, 0, apply_duration, 0, true, true);
break;
}
}

if (GetDungeon())
GetDungeon()->UsePotion(this);

if (GetWarMap())
GetWarMap()->UsePotion(this, item);

item->SetCount(item->GetCount() - 1);
break;
[/spoiler]



Szintén kikommentezed ezt a sort:
item->SetCount(item->GetCount() - 1);