Szerző Téma: [C++] Több mount bónusz egyszerre  (Megtekintve 532 alkalommal)

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 95
  • -Receive: 262
  • Hozzászólások: 428
  • Segített: 216
  • GothBoiClique
    • Facebook
[C++] Több mount bónusz egyszerre
« Dátum: 2017-08-01, 15:21:40 »
Sziasztok,
Sokatoknak feltűnhetett, hogy a pc.mount_bonus parancs használatával egyszerre egy bónuszt adhatunk csak a mountnak, ha egyms al többet írunk, sajnos felülírják egymást.

Az alábbi módosítások segítségével megcsináljuk, hogy 3 bónuszt is hozzáadhassatok.

Game file forrásában nyisd meg az affect.h fájlt, majd keress rá:
AFFECT_MOUNT_BONUS
Alá:
AFFECT_MOUNT_BONUS2
AFFECT_MOUNT_BONUS3

Ezután megnyitod a questlua_pc.cpp fájlt, és rákeresel:
pc_mount_bonus

A függvényt lecseréled erre:
int pc_mount_bonus(lua_State* L)
{
BYTE applyOn = static_cast<BYTE>(lua_tonumber(L, 1));
long value = static_cast<long>(lua_tonumber(L, 2));
long duration = static_cast<long>(lua_tonumber(L, 3));

LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

if( NULL != ch )
{
if(!lua_isnumber(L, 4))
{
ch->RemoveAffect(AFFECT_MOUNT_BONUS);
ch->AddAffect(AFFECT_MOUNT_BONUS, aApplyInfo[applyOn].bPointType, value, AFF_NONE, duration, 0, false);
}
else
{
if(lua_tonumber(L, 4) == 1)
{
ch->RemoveAffect(AFFECT_MOUNT_BONUS);
ch->AddAffect(AFFECT_MOUNT_BONUS, aApplyInfo[applyOn].bPointType, value, AFF_NONE, duration, 0, false);
}
else if(lua_tonumber(L, 4) == 2)
{
ch->RemoveAffect(AFFECT_MOUNT_BONUS2);
ch->AddAffect(AFFECT_MOUNT_BONUS2, aApplyInfo[applyOn].bPointType, value, AFF_NONE, duration, 0, false);
}
else if(lua_tonumber(L, 4) == 3)
{
ch->RemoveAffect(AFFECT_MOUNT_BONUS3);
ch->AddAffect(AFFECT_MOUNT_BONUS3, aApplyInfo[applyOn].bPointType, value, AFF_NONE, duration, 0, false);
}
}
}

return 0;
}

Ezután a pc_mount függvényben megkeresed ezt a részt:
ch->RemoveAffect(AFFECT_MOUNT_BONUS);

Alá:
ch->RemoveAffect(AFFECT_MOUNT_BONUS2);
ch->RemoveAffect(AFFECT_MOUNT_BONUS3);

Majd questben:
pc.mount_bonus(bónusz típus, érték, idő, sorszám)
A sorszám lehet 1, 2 vagy 3 is. Ha nem írtok sorszámot, akkor úgy fog működni, mint ezelőtt.
Pl ha 3 bónuszt akarnl hozzáadni:
pc.mount_bonus(apply.DEF_GRADE_BONUS,75,600,1)
pc.mount_bonus(apply.ATT_BONUS_TO_MONSTER,75,600,2)
pc.mount_bonus(apply.CRITICAL_PCT,75,600,3)

Remélem hasznotokra válik :*
« Utoljára szerkesztve: 2017-08-01, 15:27:09 írta Distraught »