A scriptet én csináltam a worldserver.conf támogatásban BlueRák segített
I. Lépés
A world.h-ban keressük meg ezt a két sort kb a 380 körül van
RATE_MOVESPEED,
MAX_RATES,
Majd szúrjuk be a következő kettőt ahogy itt látjátok:
RATE_MOVESPEED,
MAX_RATES,
CONFIG_XP_FOR_PVP_LOW_RATE,
CONFIG_XP_FOR_PVP_HIGH_RATE
II. Lépés.
A world.cpp-ben keressük meg ezt a sort kb 1156 körül.
m_int_configs[CONFIG_MAX_RESULTS_LOOKUP_COMMANDS] = sConfig->GetIntDefault("Command.LookupMaxResults", 0);
Szúrjuk be ezt a 3 sort utána:
// custom
rate_values[CONFIG_XP_FOR_PVP_LOW_RATE] = sConfig->GetFloatDefault("Xp.For.Pvp.Low.Rate", 1.0f);
rate_values[CONFIG_XP_FOR_PVP_HIGH_RATE] = sConfig->GetFloatDefault("Xp.For.Pvp.High.Rate", 1.0f);
III. Lépés.
Keressük meg a következő sort a ScriptMgr.h-ban pontosan a 656. sor
virtual void OnPVPKill(Player* /*killer*/, Player* /*killed*/) { }
Cseréljük ki erre:
virtual void OnPVPKill(Player* killer, Player* killed)
{
uint32 LowRate = sWorld->getRate(CONFIG_XP_FOR_PVP_LOW_RATE);
uint32 HighRate = sWorld->getRate(CONFIG_XP_FOR_PVP_HIGH_RATE);
uint32 killerlvl = killer->getLevel();
uint32 killedlvl = killed->getLevel();
int32 diff = killerlvl-killedlvl;
uint32 XPLow = (killedlvl*5+45)*(1+0.05*diff)*LowRate;
uint32 XPHigh = (killedlvl*5+45)*(1+0.05*diff)*HighRate;
uint32 minusgold = killer->GetMoney()-(diff*10000);
uint32 plusgold = killed->GetMoney()+(diff*10000);
uint32 killergold = killer->GetMoney();
uint32 killedgold = killed->GetMoney();
uint32 plusgold2= killedgold+killergold;
if (killerlvl < killedlvl +1)
killer->GiveXP(XPHigh , killed);
else
if (diff > 10)
if (killergold > minusgold)
{
killer->SetMoney(minusgold);
killed->SetMoney(plusgold);
}
else
{
killed->SetMoney(plusgold2);
killer->SetMoney(0);
}
else
if(0 < diff && diff <10)
killer->GiveXP(XPLow , killed);
return;
}
IV. Lépés.
A worldserver.confban keressük meg azokat a sorokar ahol a rete szorzók vannak és illesszük be ezt a kettőt.
Xp.For.Pvp.Low.Rate = X
Xp.For.Pvp.High.Rate = X
Az X a szorzót jelenti tetszés szerint lehet megadni.
Működése röviden:
Ha nagyobb karakter öl kisebbet akkor a confban megadott Low.Rate szorzó szerinti XP-t kap
- ha nagyobb a szint különbség mint 10 akkor a szintkülönpségnek megfelelő gold levonódik és a megölt karakter kapja meg
- viszont ha a karakternek nincs annyi goldja mint a szintkülönbség akkor 0 pénze lesz és amennyi volt azt megkapja a megölt karakter
- Ha kisebb karakter öl nagyobbat akkor a confban megadott High.Rate szorzó szerinti XP-t kap
szep koszi ;)
Nekem annyi problémám akadt vele, hogy nem tudom, hogy hova rakjam be ezt:
Idéz//This function is called when the player kills another player
void OnPVPKill(Player * /*killer*/, Player * /*killed*/)
{
}
Új trinity-m van és nincs a "Scripting" mappába olyan, hogy "Custom".
A kérdésem az lenne, hogy hova rakjam a scriptet?
(Próbáltam utánanézni google-ön, de nem jártam sok sikerrel.)
Az új trinityből kivették a file-t és a hook-ot is. Most már nem tudod használni.
Köszönöm a gyors választ!
Nem lehet valahogy megoldani, hogy mégis működjön?
Talán máshol megvannak még ezek a hookok, keress rá a teljes "solution"-ban a függvény nevére, hátha dob valamit, ha nem akkor kérdezz rá tc fórumon. :)
// handle npc/player kill
virtual void HandleKill(Player * killer, Unit * killed);
virtual void HandleKillImpl(Player * /*killer*/, Unit * /*killed*/) {}
\trinitycore\src\server\game\OutdoorPvP\OutdoorPvP.h
Tal
// handle npc/player kill
virtual void HandleKill(Player * killer, Unit * killed);
szerintem ez lesz az
Jah és ha sikerül összehozni akkor a régebbi emukhoz és az újakhoz is akkor hozzájárulok vele a Gnome-Lak gyűjteményéhez :) Sőt bármivel ami megtetszik és hasznos.
Idézetet írta: Chaze117 Dátum 2010 október 25, 03:08:37 DÉLUTÁN
// handle npc/player kill
virtual void HandleKill(Player * killer, Unit * killed);
szerintem ez lesz az
Jah és ha sikerül összehozni akkor a régebbi emukhoz és az újakhoz is akkor hozzájárulok vele a Gnome-Lak gyűjteményéhez :) Sőt bármivel ami megtetszik és hasznos.
Regisztrálj be, és küld be ha úgy döntöttél, hogy megosztod velünk. :)
Frissítve !
Szép :)
Üdvözletem!
Elolvastam csak most nem fogtam fel hogy ha nekem http://infobarkacs.hu/index.php/topic,5710.0.html amit itt írnak az új verziója van meg nekem akkor mit kéne csinálnom hogy mennyen??????Vagy pont ezt írtátok hogy ezt nem lehet megcsinálni vagy van rá valami megoldás??
Előre is köszönöm
Üdv Locu
De megoldható épp frissítve lett a topic szal azt tedd ami le van írva :)
Hát "nagyon szép a kód" xd virtuál tipust deklarálni.. Ne vedd piszkálódásnak, csak szúrja a szemem : )
Idézetet írta: Insomnia Dátum 2012 május 28, 05:12:52 DÉLUTÁN
Hát "nagyon szép a kód" xd virtuál tipust deklarálni.. Ne vedd piszkálódásnak, csak szúrja a szemem : )
Nem értelek mi a gond ezzel.
Idéz
A virtuális függvények deklarálásának szintaktikája nagyon egyszerû: a függvénymezõ elsõ deklarálásakor helyezzük el a virtual típusmódosító szót is.
Látszik, hogy nem nagyon érted a dolgot. :)
Ezzel nincs is így baj, azzal van baj, hogy virtuális függvényt deklarálsz.
A virtuális függvények használata.
Parent osztályban: virtual void majdeldontiachild();
Child osztályban: override void majdeldontiachild() { /*csinálok valamit*/ }
: )
Idézetet írta: Insomnia Dátum 2012 május 28, 05:12:52 DÉLUTÁN
Hát "nagyon szép a kód" xd virtuál tipust deklarálni.. Ne vedd piszkálódásnak, csak szúrja a szemem : )
Ha megnézed ez eredeti TC deklaráció szal én csak megírtam mi történjen nem én deklaráltam ;)