Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
Hkarta

[FUN] City Conquest

Recommended Posts

Hm, hlavně že všichni dáváte + rep, je vidět kolik lidí to doopravdy zkusilo - teď jsem zjistil že je tam malé typo, kvůli kterému to nemění z aliance na hordu. Během pár minut vyměním přílohu za jinou, kde to již bude opraveno.

 

edit: Je to tam, chyba byla v city_conquest_boss.cpp, entry == fields[2].GetInt32() místo entry == fields[2].GetInt32() || entry == fields[1].GetInt32()

 

Ještě si dovolím upozornit, že kdyby to padalo, je vhodné zkusit zakázat grid unload v configu. Určitě reportujte všechny bugy a názory. ;)

Edited by Hkarta

Share this post


Link to post
Share on other sites

No pekne, ale šak ked má nato Hkarta čas tak nech robí :)

Aspoň niekdo si tu našiel čas na prácu z emulátorom :)

Share this post


Link to post
Share on other sites

Pěkná práce, až někdy budu mít čas chvíli, tak to u sebe na localu určitě vyzkouším. :P:)

Share this post


Link to post
Share on other sites

Hkarto skvělá práce funguje to nádherně!!

 

Nešla by přidělat jaksi "podpora" gameobjectů? :-) Resp třeba po dobití města se tam spawnou vlajky příslušné frakce atd...

 

A ještě by mě zajímalo, jde takhle na náhodné místo přidělat takovou tu ikonku (např věže,atd..) na mapu? Barva té ikonky by se určovala podle toho komu daná pevnost patří.

Což by už fakt bylo dokonalé, plnohodnotný custom outdoor pvp systém. :D:)

 

 

 

 

Edit: Hkarto možná mám bug, jakmile chci dobít pevnost která byla obsazena opoziční frakcí, tak mi  ty portály tu možnost nedají.

Edited by hejsek

Share this post


Link to post
Share on other sites

  Hrozně rád bych to testnul, ale můj test server je neskutečnej sh*t :-(, nemůžu si tam dát GM level at dělám co dělám.  

to mi záhada ako to že ti to nejde :huh:

Share this post


Link to post
Share on other sites

to mi záhada ako to že ti to nejde :huh:

 

Už je to ok, chyba byla v configu věc o které jsem doted nevěděl. (Ten script funguje suprově).

Edited by hejsek

Share this post


Link to post
Share on other sites

Není to bug. Je tam 1h timer, kdybys četl celej post, tak bys to věděl.

 

viz:

 

city_capture_progress

city_id - id města

time - čas, hlídá se např kdy je možné znovu zaútočit na město

Zabije-li útočící strana kapitána města, změní se faction všech npc definovaných v db na vaši, a nové dobývání toho města může začít až za hodinu.

Jinak, ne, není možné přidat na mapu obrázek bez úpravy souborů klienta.

Gameobjecty by přidat šly, ale dělat to nebudu. ;) Někdo může, úpravám svého scriptu se nebráním, budu-li uveden jako autor této části.

 

edit: Chceš-li ten timer v rámci testování obejít, stačí v city_capture_progress přepsat u daného města time na 0.

Edited by Hkarta

Share this post


Link to post
Share on other sites

Není to bug. Je tam 1h timer, kdybys četl celej post, tak bys to věděl.

 

viz:

 

city_capture_progress

 

 

Jinak, ne, není možné přidat na mapu obrázek bez úpravy souborů klienta.

Gameobjecty by přidat šly, ale dělat to nebudu. ;) Někdo může, úpravám svého scriptu se nebráním, budu-li uveden jako autor této části.

 

Aha pardon. :), nevšiml jsem se jinak fakt GW. :)

Share this post


Link to post
Share on other sites

já měl při kompilace Failed, ale chyba bude asi u mě. všechny script/custom tam jsou cesta k nim ve ScriptLoaderu.cpp je a CityConquest.cpp a .h jsem dal do src/game/world/handlers ...dělám někde chybu? :unsure:

Share this post


Link to post
Share on other sites

proste si to uloz niekde do src a cestu v ScriptMGR.cpp zadaj ako #include "../../src/a dalej/CityConquest.h"; , je to taký problém? A zadaj to vo všetkých súboroch ktoré includujú CityConquest.h :D, je to jako cesta vo Windowse :D, nikdy si stym nerobil ?

Share this post


Link to post
Share on other sites

Inu, koukal jsem jak vypadá projekt ve visual studiu a fyzické umístění souborů je trochu jiné než u linuxu (všechno je naházený v jedný složce). Tohle je sice psaný na windowsech, ale za použití linuxové struktury projektu, protože jsem neměl windowsáckou solution, ale jen src složku a nechtělo se mi tahat celou revizi znova. Můžeš zkusit v city_conquest_generic, boss a spawner přepsat ten include z

#include "../../game/CityConquestMgr.h"

na

#include "CityConquestMgr.h"

nebo něco v tom stylu. Jestli máš někde chybu tak imho v includech.

Share this post


Link to post
Share on other sites
Guest Zendi

Vytvoří knihovny.\trinitycore__Win32_Release\TrinityCore.lib a objekt .\trinitycore__Win32_Release\TrinityCore.exp

game.lib(ScriptMgr.obj) : error LNK2019: Odkaz na nevyřešené vnější symbol "public: void __thiscall CityConquestMgr::LoadCities(void)" (?LoadCities@CityConquestMgr@@QAEXXZ) funkce "public: void __thiscall ScriptMgr::ScriptsInit(void)" (?ScriptsInit@ScriptMgr@@QAEXXZ)

game.lib(ScriptMgr.obj) : error LNK2001: neurčeno vnější symbol ""class CityConquestMgr CityConquest" (?CityConquest@@3VCityConquestMgr@@A)"

..\..\bin\Win32_Release\TrinityCore.exe : fatal error LNK1120: 2 neurčeno vnějších prvků

 

Help me!!!

Share this post


Link to post
Share on other sites

Wrong include path/you have put files in wrong location (check their physical location, not what visualstudio says in its tree view).

Share this post


Link to post
Share on other sites

Ahoj Hkarto mám takový dotaz, je možná aby vždy když město dobije druhá frakce, spawnuli se unikátní NPC s unikátním ID a ty druhé se smazali? Ne pouze jen měnit frakci. Umí to ten script?

Nebo je to potřeba připsat?

Předem děkuji za odpověd :)

Share this post


Link to post
Share on other sites

Neumí. ;)

Co by se do toho dalo snadno dopsat je změna modelu (pro každou frakci jinej).

Edited by Hkarta

Share this post


Link to post
Share on other sites

Neumí. wink.gif

Co by se do toho dalo snadno dopsat je změna modelu (pro každou frakci jinej).

 

 

Mohl by jsi to udělat prosím? :)

Share this post


Link to post
Share on other sites

Popř. se to dá snadno řešit přes změnu visible na ON/OFF smile.gif

 

 

Mě to také napadlo, bohužel to neumím. :)

Share this post


Link to post
Share on other sites

(otevři spoiler)

 

 

  • Nejdříve si uprav tabulku city_capture_creatures, přidej do ní dvě políčka
    • model_A
    • model_H

    Obě dvě budou mít typ int

    [*]Teď si uprav CityConquestMgr.h, řádky označené + přidej, bez toho +

    class Spawn
    {
    public:
    Creature *creature;
    int faction_A;
    int faction_H;
    +	int model_A;
    +	int model_H;
    Spawn(void);
    private:
    void GetCreatureData(int entry);
    };

    [*]Teď si uprav CityConquestMgr.cpp, řádky s + přidat, s - odebrat

    void CityConquestMgr::RegisterCreature(Creature * creature, int type)
    {
    QueryResult_AutoPtr result;
    if (type == 0)
    {
    	outstring_log("CQM: Creature Registered - %u", creature->GetEntry());
    	result
    -			= WorldDatabase.PQuery("SELECT city_id, faction_A, faction_H FROM city_capture_creatures WHERE entry = %u",
    -			//                             0        1          2 
    +			= WorldDatabase.PQuery("SELECT city_id, faction_A, faction_H, model_A, model_H FROM city_capture_creatures WHERE entry = %u",
    +			//                             0        1          2          3+       4+
    		creature->GetEntry());
    	if (result)
    	{
    		Field *fields = result->Fetch();
    		Cities::iterator l;
    		for (l = cities.begin(); l != cities.end(); ++l)
    		{
    			City *ct = *l;
    			if (ct->id == fields[0].GetInt32())
    			{
    				Spawn *spawn = new Spawn();
    				spawn->creature = creature;
    				spawn->faction_A = fields[1].GetInt32();
    				spawn->faction_H = fields[2].GetInt32();
    +					spawn->model_A = fields[3].GetInt32(); //+
    +					spawn->model_H = fields[4].GetInt32(); //+
    
    				spawn->creature->setFaction(spawn->faction_A);
    
    				if (ct->controlled == 1)
    				{
    					spawn->creature->setFaction(spawn->faction_H);
    +						spawn->creature->SetDisplayId(spawn->model_H); //+
    +						spawn->creature->SetNativeDisplayId(spawn->model_H); //+
    					if(CreatureInfo const *cinfo = spawn->creature->GetCreatureInfo())
    					{
    						const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_H;
    						const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_H;
    					}
    					WorldDatabase.PExecuteLog("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_H, spawn->faction_H, spawn->creature->GetEntry());
    				}
    				else if (ct->controlled == 0)
    				{
    					spawn->creature->setFaction(spawn->faction_A);
    +						spawn->creature->SetDisplayId(spawn->model_A); //+
    +						spawn->creature->SetNativeDisplayId(spawn->model_A); //+
    					if(CreatureInfo const *cinfo = spawn->creature->GetCreatureInfo())
    					{
    						const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_A;
    						const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_A;
    					}
    					WorldDatabase.PExecuteLog("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_A, spawn->faction_A, spawn->creature->GetEntry());
    				}
    
    				ct->spawns.push_back(spawn);
    				return;
    			}
    		}
    	}
    }
    else if (type == 1 || type == 2)

    [*]A ještě jednou CityConquestMgr.cpp

    void CityConquestMgr::SwitchFaction(int id)
    {
    City * city = GetCityFromId(id);
    
    if (city->active)
    {
    	Spawns::iterator l;
    	for (l = city->spawns.begin(); l != city->spawns.end(); ++l)
    	{
    		Spawn *spawn = *l;
    		if (city->controlled == 1)
    		{
    			spawn->creature->setFaction(spawn->faction_A);
    +				spawn->creature->SetDisplayId(spawn->model_A); //+
    +				spawn->creature->SetNativeDisplayId(spawn->model_A); //+
    			if(CreatureInfo const *cinfo = spawn->creature->GetCreatureInfo())
    			{
    				const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_A;
    				const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_A;
    			}
    			WorldDatabase.PExecuteLog("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_A, spawn->faction_A, spawn->creature->GetEntry());
    		}
    		else if (city->controlled == 0)
    		{
    			spawn->creature->setFaction(spawn->faction_H);
    +				spawn->creature->SetDisplayId(spawn->model_H); //+
    +				spawn->creature->SetNativeDisplayId(spawn->model_H); //+
    			if(CreatureInfo const *cinfo = spawn->creature->GetCreatureInfo())
    			{
    				const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_H;
    				const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_H;
    			}
    			WorldDatabase.PExecuteLog("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_H, spawn->faction_H, spawn->creature->GetEntry());
    		}
    	}

 

 

A to by mělo stačit. Netestováno, ale imho to bude fungovat.

Jen dodám že ten model musíš nastavit u všech příšerek, jinak to crashne ;)

Edited by Hkarta
  • Upvote 2

Share this post


Link to post
Share on other sites

Mě to také napadlo, bohužel to neumím. :)

 

creature->SetVisibility(VISIBILITY_OFF); a creature->SetVisibility(VISIBILITY_ON);

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×