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

Nem elérhető Distraught

  • Professional
  • ***
  • Thank You
  • -Given: 102
  • -Receive: 313
  • Hozzászólások: 521
  • Segített: 265
  • 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 egymás 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 több bónuszt is adhassatok hozzá.

Game file forrásában nyisd meg az affect.h fájlt, majd keress rá:
AFFECT_MOUNT_BONUS
Alá:
AFFECT_MOUNT_BONUS_START = 543,
AFFECT_MOUNT_BONUS_END = 553,

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)
{
if(!(lua_isnumber(L,1) && lua_isnumber(L,2) && lua_isnumber(L,3)))
return 0;
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));
int bonID = lua_isnumber(L,4) ? lua_tonumber(L, 4) : 0;

if(AFFECT_MOUNT_BONUS_START + bonID > AFFECT_MOUNT_BONUS_END)
return 0;

LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if(!ch)
return 0;

if(ch->FindAffect(AFFECT_MOUNT_BONUS_START + bonID))
ch->RemoveAffect(AFFECT_MOUNT_BONUS_START + bonID);
ch->AddAffect(AFFECT_MOUNT_BONUS_START + bonID, 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);

Cseréld ki:
for(int i = AFFECT_MOUNT_BONUS_START;i <= AFFECT_MOUNT_BONUS_END; ++i)
if(ch->FindAffect(i))
ch->RemoveAffect(i);

Majd questben:
pc.mount_bonus(bónusz típus, érték, idő, sorszám)
A sorszám lehet 1...10, vagy ha átírod az AFFECT_MOUNT_BONUS_END-et nagyobbra, akkor nyilván nagyobb szám is (a START és END különbsége). 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: 2018-07-14, 12:17:45 írta Distraught »