xy szint felett csak adott mapindexen kapjon expt

Indította kati8411, 2017-04-30, 17:28:18

Sziasztok!
Hogyan lehetne azt kivitelezni, hogy pl150-es játékos az eddigi pályákon ne kapjon exp-t ha mobot öl, hanem csak a megadott map indexen lévő pályákon?
Gondolom forrásban lehet rá valamit írni nem?
Választ előre is köszönöm!


Idézetet írta: 5310pati Dátum 2017-04-30, 17:35:54
LPCHARACTER CHARACTER::DistributeExp()

esetleg tudnád részletezni, hogy mit is csináljak ezzel?

Nem pont abban a fv-ben kell módosítani, de a fv 1. sora kérdezi le a mob EXP-jét így gondoltam jó kiindulási pont.
Ha kicsit tovább görgetsz látod, hogy továbbadja az EXP-t:
di->Distribute(this, iExp);
Majd ez szintén továbbadja, és eljutsz oda ahol piszkálnod kell ízlésed szerint:
GiveExp(ch, pAttacker, iExp);
Maga az EXP adás:
to->PointChange(POINT_EXP, iExp, true);
from->CreateFly(FLY_EXP, to);

Ez elé benyomsz 1 if-et és meg is vagy.

most akkor ha így rakom be akkor 150-esen nem kap dungeonban se exp-t illetve a 121 es indexnél kisebb mappons e igaz?

if (GetLevel() > 149 && GetMapIndex() > 10000 && GetMapIndex() < 121)
return false;



iExp = AdjustExpByLevel(to, iExp);

to->PointChange(POINT_EXP, iExp, true);
from->CreateFly(FLY_EXP, to);

2017-05-01, 14:12:23 #5 Utolsó szerkesztés: 2017-05-01, 14:15:35 Szerző: 5310pati
Ez egy szép kis ellentmondás és sose fog lefutni az if ág :D
GetMapIndex() > 10000
GetMapIndex() < 121
Tudsz mondani olyan számot ami nagyobb mint 10000 ÉS kisebb mint 121? ??? :o
Mert én nem :D
+ nem ártana azt is megadni, hogy kitől kérdezze le szintjét/mapindexét.
[spoiler]if (to->GetLevel() > 149 && (to->GetMapIndex() > 10000 || to->GetMapIndex() < 121))[/spoiler]
Valamint én csak azt a 2 sort vágnám be az if negáltjába, mivel utána még ott van a szerelmi pontok növekedése is, és az se fog lefutni, bár ezt te döntöd el.

tehát így:

if (to->GetLevel() > 119 && (to->GetMapIndex() > 10000 || to->GetMapIndex() < 121))
return false;
else
to->PointChange(POINT_EXP, iExp, true);
from->CreateFly(FLY_EXP, to);

Attól függ, hogy le akarod-e tiltani a szerelmi pont növekedést is az EXP-vel együtt.
Ha igen, akkor kell egy return(false nélkül mert nem BOOL hanem VOID a fv), ha nem akkor nem.
Minden esetre én így oldanám meg, ha tiltani akarod írsz egy else ágat return-nel.
if (to->GetLevel() < 150 && (to->GetMapIndex() < 10000 && to->GetMapIndex() > 121)) {
to->PointChange(POINT_EXP, iExp, true);
from->CreateFly(FLY_EXP, to);
}

tehát ha 150-es vagyok és a 122-es indexen darálok kapom ez exp-t így ugye?
(nagyon köszönöm, hogy közben magyarázod is így kezdem kapisgálni a dolgot)

:'( :-\ :-X
Nem kapsz EXP-t abban az esetben (to->GetLevel() < 150).

akkor nagyon félre értek valamit
nekem ugyebár az kéne, hogy 150-esen ha bemegyek egy 121-es map indexű mapra ne fejlődjek de a 122-esen igen

Ha 150-esen bemész a 121-es mapra nem kapsz EXP-t, de a 122-esen sem.
149-esen a 121-esen nem kapsz, de a 122-esen igen.

akkor úgy nem lehet megoldani ahogy én szeretném? :/

Már kajak nem értem, hogy miért kell mindent így túl bonyolítani.

Kicsit belezavarodtam :-X ::) ;D
if ((to->GetLevel() >= 150 && to->GetMapIndex() < 10000 && to->GetMapIndex() > 121) || (to->GetLevel() < 150)) {
to->PointChange(POINT_EXP, iExp, true);
from->CreateFly(FLY_EXP, to);
}

Lefelejtettem a másik felét az if-nek azért volt furcsa :D
Így ha 150-nél nagyobb ÉS 121 v 10000 map között van akkor kap EXP-t, vagy ha simán kisebb mint 150.

Idézetet írta: Red Dátum 2017-05-01, 19:31:41
Már kajak nem értem, hogy miért kell mindent így túl bonyolítani.
A problémám az, hogy eddigi szinteket tervezetten gyorsabban megszerezhetőre készítettem, de arra nem gondoltam, hogyha emelek a szintet és azokat a mobokat öli amivel eddig fejlődött akkor ugyan úgy gyorsan tud fejlődni mint eddig és ezért szeretném így megcsinálni! Ha esetleg más megoldást tudtok erre akkor szívesen hallgatom :) Ui.: 5310pati ne haragudj, hogy picit értetlen vagyok de már bele kavarodtam picit azokba amit írtál

Normálisan be kell állítani a moboknak a szintet és a exp.  Egy veled egy szintű mob maximum 10-15 szintet tud rajtad dobni de, ezt forrásban lehet állítani. Pl  150-es pályára raksz 140-es szintű mobokat azok max 150-155ig fognak téged szintelni.

Be van állítva, de így biztosabb !
Köszönöm a segítséget pati!