pc_mount bug

Indította Rock, 2018-04-04, 22:02:19

Sziasztok!

Nem szeretném pontosan leírni, hogy hogyan, de kilehet "buggoltatni" a pc.mount funkciót úgy, hogy átváltozva szállnak fel a mountra.
(Lényeg annyi, hogy login közben nem vagy átváltozva, és utólag változol át, viszont emiatt a "késés" miatt mountra tudsz addig szállni.)

Fél napig próbálkoztam beállítani, hogy átváltozva ne lehessen mountra szállni, azonban nem jött össze.

Valakinek van erre egy konkrét ötlete?

Szóval amikor beloginol hamarabb felszáll a mountra, minthogy átváltozna?

C++ programmer at Gameloft

Szerintem hasonló a jelenség mint a harmatok esetében. Vegas írt rá egy gusztustalan fixet, azt némi bővítéssel erre is lehetne alkalmazni (de én inkább teljes kód újraírást javasolnék a fixnek).
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"

Idézetet írta: Distraught Dátum 2018-04-04, 22:22:56
Szóval amikor beloginol hamarabb felszáll a mountra, minthogy átváltozna?

Igen, késleltéssel megtudom oldani, de nem szeretnék ilyen buherált megoldásokat.
Addig már eljutottam, hogy ha átvan változva leszedje az "affect"-et, de viszont ha nincs átváltozva nem engedi felszállni, szóval még nem az igazi.

átváltozás függvényt return-öld az elején, ha mounton van, vagy pedig unmountold

C++ programmer at Gameloft

Idézetet írta: Distraught Dátum 2018-04-04, 22:43:20
átváltozás függvényt return-öld az elején, ha mounton van, vagy pedig unmountold

Próbáltam, azonban mivel előbb száll fel a mountra a karakter, mint hogy polyzna, emiatt nem ért lényegében semmit.
Próbálkoztam azzal, hogy a polyitem-hez írok valamit, de elakadtam benne. Az elmélet meglenne, de nem tudtam össze szedni/megírni rendesen a kódot.

próbáld meg, hogy a char_affect.cpp-ben a AddAffect függvény elejére hozzáírod ezt:
if(dwType==AFFECT_POLYMORPH && GetMountVnum()) return false;

C++ programmer at Gameloft

Vagy ha ez nem jó, akkor mondjuk az átváltozás unmountoljon is, ezzel tutira jó lesz.
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"

akkor pedig picit hosszabb lesz:

if(dwType==AFFECT_POLYMORPH && GetMountVnum())
{
RemoveAffect(AFFECT_MOUNT);
RemoveAffect(AFFECT_MOUNT_BONUS);
if(IsHorseRiding()) StopRiding();
}

C++ programmer at Gameloft

Idézetet írta: Distraught Dátum 2018-04-04, 23:18:30
akkor pedig picit hosszabb lesz:

if(dwType==AFFECT_POLYMORPH && GetMountVnum())
{
RemoveAffect(AFFECT_MOUNT);
RemoveAffect(AFFECT_MOUNT_BONUS);
if(IsHorseRiding()) StopRiding();
}


Hozzáadtam a CHARACTER::AddAffect részhez, azonban semmi hatása nem volt sajnos..

próbáld meg a polymorph.cpp-ben a PolymorphCharacter függvényhez hozzáadni

C++ programmer at Gameloft

Idézetet írta: Distraught Dátum 2018-04-04, 23:43:55
próbáld meg a polymorph.cpp-ben a PolymorphCharacter függvényhez hozzáadni

Az a baj, hogy ebben nincs deklarálva a legtöbb "függvény".
Idéz
polymorph.cpp: In member function 'bool CPolymorphUtils::PolymorphCharacter(CHARACTER*, CItem*, const CMob*)':
polymorph.cpp:43: error: 'dwType' was not declared in this scope
polymorph.cpp:43: error: 'GetMountVnum' was not declared in this scope
polymorph.cpp:45: error: 'RemoveAffect' was not declared in this scope
polymorph.cpp:47: error: 'IsHorseRiding' was not declared in this scope
polymorph.cpp:47: error: 'StopRiding' was not declared in this scope

vagy várj, menj vissza az addeffectbe és ezt írd bele:
if(dwType==AFFECT_POLYMORPH && GetMountVnum())
{
   quest::CQuestManager::instance().Unmount(GetPlayerID());
   MountVnum(0);
}

meg includeold az elején a questmanager-t

C++ programmer at Gameloft

Idézetet írta: Distraught Dátum 2018-04-04, 23:51:01
vagy várj, menj vissza az addeffectbe és ezt írd bele:
if(dwType==AFFECT_POLYMORPH && GetMountVnum())
{
   quest::CQuestManager::instance().Unmount(GetPlayerID());
   MountVnum(0);
}

meg includeold az elején a questmanager-t

Sajnos ez sem jó.
Dobtam egy PM-et arról, hogyan csinálják.