Doufám že to tu ještě není. Nejedná se o mou práci, nicméně myslím, že by to mohlo některé uživatele zajímat.
Původní návod (v angličtině) je zde.
[Návod] Vlastní flight path bez zásahu do klienta
Zrovna včera večer jsem se k tomu dostal a hned jsem začal hledat, jak by to šlo udělat, protože teleport prostě není cool.
No, k mému milému překvapení je to až směšně jednoduché - a nejlepší na tom je, že se obejdete bez jakéhokoliv zásahu do klienta.
Co budete potřebovat?
váš oblíbený dbc editor, u mě pořád vítězí blumův starý dbc mole (v příloze)
zdojové kódy trinitycore
trochu trpělivosti
vyextrahované dbc soubory
Jak na to?
Připravte si následující dbc soubory:
TaxiNodes.DBC
TaxiPath.DBC
TaxiPathNode.DBC
Otevřte TaxiNodes.DBC a na jeho konec přidejte dva záznamy. Jeden jakožto začátek cestu, druhý jako konec.
U mě je to záznam NetherTop (pracovní název pro vrchní plošinu v Stormspire) a DuelArea, který se nachází u její základy.
Co se obsahu políček týče:
ID - musí být unikátní, doporučuji prostě o 1 zvýšit poslední hodnotu
map_id, x, y, z - asi netřeba vysvětlovat; jen dodám že se jedná o souřadnice, na které vás to po zapnutí trasy přenese - výchozí bod.
c5 - název koncového bodu
Potom vás zajímají už jen dvě poslední políčka, tj id mounta hordy a aliance, který bude na dané trase použit - můžete použít některou z již použitých hodnot
Zapamatujte si ID obou záznamů.
Teď otevřete TaxiPath.DBC - tohle je ta nejjednoduší část.
Co se políček týče:
ID - musí být unikátní, doporučuji prostě o 1 zvýšit poslední hodnotu
from - ID z přechozího kroku. Určuje, odkud poletíte
to - ID z přechozího kroku. Určuje, kam poletíte
price - cena v copperech za přepravu (nejsem si jistý, jestli se využije, možná bude třeba peníze manuálně odebrat ve scriptu uvedeném níže)
Zapamatujte si ID.
Teď příjde ta nejveselejší část. Logněte se do hry a připravte si souřadnice, po kterých váš nový líták bude vozit hráče (pokud by je měl vozit i nazpátek, udělejte to pro oba směry).
Jakmile souřadnice máte připravené, můžete si otevřít TaxiPathNode.DBC a jednotlivé body do něj zanést.
K políčkům:
c0 - musí být unikátní, doporučuji prostě o 1 zvýšit poslední hodnotu
path - hodnota ID z předešlého kroku
index - pořadí, v jakém hráč přes body poletí. U každé trasy vždy začínejte 0!
x, y, z - souřadnice bodu
Došli jste až sem? Gratuluji! To nejhorší už je za vámi. Přepište serverová dbc těmi upravenými a proveďte poslední krok: vytvoření ingame scriptu flight mastera.
Jedná se o úplně jednoduchý gossip npc scriptík; takže npc musí mít unit_flag nastaven na 1.
class custom_taxi_top : public CreatureScript
{
public:
custom_taxi_top()
: CreatureScript("custom_taxi_top")
{
}
bool OnGossipHello(Player* player, Creature* creature)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, "Duel area", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Good bye", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->PlayerTalkClass->SendGossipMenu(907, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
{
player->PlayerTalkClass->ClearMenus();
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->ActivateTaxiPathTo(1979);
}
else if (action == GOSSIP_ACTION_INFO_DEF+2)
{
player->CLOSE_GOSSIP_MENU();
}
return true;
}
};
void AddSC_custom_taxi_top()
{
new custom_taxi_top();
}
Script si samozřejmě můžete přejmenovat, nezapomnte ho přidat do scriptloaderu a scriptname npc. Jediná důležitá věc v něm je řádek
player->ActivateTaxiPathTo(1979);
kde číslo 1979 nahraďte ID cesty z TaxiPath.DBC.
Zkompilujte emulátor, spawnněte npc - a užívejte si vaší nové letecké cesty!
dbcmole.rar