Informatikai Barkács Fórum

WORLD OF WARCRAFT SZERVER => Script => A témát indította: Chaze117 Dátum 2010 július 31, 02:43:47 DÉLELŐTT

Cím: [Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Chaze117 Dátum 2010 július 31, 02:43:47 DÉLELŐTT
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
Cím: Re:[Trinity Only] PVP-ért XP
Írta: Skyline Dátum 2010 július 31, 11:53:46 DÉLELŐTT
szep koszi ;)
Cím: Re:[Trinity Only] PVP-ért XP
Írta: Dusi124 Dátum 2010 szeptember 25, 02:02:30 DÉLUTÁN
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.)
Cím: Re:[Trinity Only] PVP-ért XP
Írta: $0undX Dátum 2010 szeptember 25, 02:10:23 DÉLUTÁN
Az új trinityből kivették a file-t és a hook-ot is. Most már nem tudod használni.
Cím: Re:[Trinity Only] PVP-ért XP
Írta: Dusi124 Dátum 2010 szeptember 25, 02:18:39 DÉLUTÁN
Köszönöm a gyors választ!
Nem lehet valahogy megoldani, hogy mégis működjön?
Cím: Re:[Trinity Only] PVP-ért XP
Írta: $0undX Dátum 2010 szeptember 25, 03:31:44 DÉLUTÁ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.  :)
Cím: Re:[Trinity Only] PVP-
Írta: ident Dátum 2010 szeptember 29, 06:14:20 DÉLUTÁN
        // 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
Cím: Re:[Trinity Only] PVP-ért XP
Í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.
Cím: Re:[Trinity Only] PVP-ért XP
Írta: Action Dátum 2010 október 25, 10:40:41 DÉLUTÁN
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. :)
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Chaze117 Dátum 2011 július 16, 04:12:06 DÉLUTÁN
Frissítve !
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Bluerák Dátum 2011 július 16, 11:04:49 DÉLUTÁN
Szép  :)
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Locutus Dátum 2011 augusztus 27, 09:36:47 DÉLELŐTT
Ü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
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Chaze117 Dátum 2011 november 14, 01:40:02 DÉLELŐTT
De megoldható épp frissítve lett a topic szal azt tedd ami le van írva :)
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Í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 : )
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Bluerák Dátum 2012 május 28, 05:57:19 DÉLUTÁN
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. :)
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Insomnia Dátum 2012 május 28, 08:48:53 DÉLUTÁN
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*/ }

: )
Cím: Re:[Trinity Only] PVP-ért XP mostmár 3.3.5a-ra is
Írta: Chaze117 Dátum 2013 augusztus 02, 07:33:29 DÉLUTÁN
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  ;)