-
Announcements
-
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. -
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 -
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. -
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:
-
filipoliko
-
Content count
343 -
Joined
-
Last visited
-
Days Won
12
Posts posted by filipoliko
-
-
-
PHP dynamika
in Web
Zkus použít frames/iframes. Pár roků zpátky jsme pomocí toho dělali celý webovky, můžeš si tím rozdělit stránku na několik částí a každou načítat, jen když si určíš. -- http://www.jakpsatweb.cz/html/ramy.html
-
Zkus napsat na e-mail [email protected] , portál 100ka měl dřív TBC server, ale už skoro rok zpátky zrušenej, je možný, že mají volnej hosting. Sice bych byl o dost radši, kdyby se tam obnovilo TBCčko(fun), ale nikde není nikdo, kdo by se takovýho serveru ujal a já už na to nemám čas, ani chuť :-) GL
-
Konečně portál na úrovni. Přeji hodně štěstí.
-
Už na to nemám čas/chuť, zdrojáky --> https://bitbucket.org/Filipoliko/artharonemu + http://www.oregoncore.com/index.php/topic/2008-non-controllable-pet-autoattack-hackfix/
// Questy na totemy jdou už od pradávna, musí fungovat O.o
- 2
-
Trochu sem to zkusil, ale nijak moc se to nepovedlo, ale pokud ti to stačí .)
-
Na TC fórku taky jeden (možná víc) je.. http://www.trinitycore.org/f/topic/631-passive-anticheat-system/page__st__220 máš tam aj patch .)
btw. Nekoukal sem teda do kódu, ale funkcemi mi příjde dost podobnej s tím wolfovím, je možný, že z něj teda vychází a bude jenom trochu nadupanější za ten rok vývoje
-
Hmm
No nejsem spokojen..
-
Na filebeamu jsou teď viry, co sem četl, nechceš to prosimtě hodit jinam? :-)
Jinak GJ
-
-
DELETE FROM creature WHERE guid IN (SELECT guid FROM game_event_creature WHERE event=48);
A když ut to uděláš, tak není od věci smazat idčka i z game_event_creature..
DELETE FROM game_event_creature WHERE event=48;
-
ok, tak můj poslední nápad(asi) :X
void OnPlayerEnter(Player* player) { QueryResult result = CharacterDatabase.PQuery("SELECT icc FROM characters WHERE guid='%u'", player->GetGUIDLow()); uint32 icc_id = (*result)[0].GetUInt32(); if (icc_id == 0) { player->TeleportTo(571.0f, 5790.0f, 2071.47998f, 636.065002f, 3.475029f, 0); player->GetSession()->SendNotification("You haven't got any permission for this instance!"); } else { if (!TeamInInstance) { TeamInInstance = player->GetTeam(); } } }
- 1
-
zkus takhle snad ani není potřeba ten cyklus, když máš jen jednu hodnotu ..
void OnPlayerEnter(Player* player) { QueryResult result = CharacterDatabase.PQuery("SELECT icc FROM characters WHERE guid='%u'", player->GetGUIDLow()); if (result == 0) { player->TeleportTo(571.0f, 5790.0f, 2071.47998f, 636.065002f, 3.475029f, 0); player->GetSession()->SendNotification("You haven't got any permission for this instance!"); } else { if (!TeamInInstance) { TeamInInstance = player->GetTeam(); } } }
-
...
PS: Všimli jste si toho TODO? Možná by stálo za zvážení dopsat tam ten systém posílání itemů poštou, když hráč nemá místo v bágu. Co vy na to?
Koukal jsem teď na to, jak to proplést s fcí SendMailTo, ale nějak jsem se nedopátral k tomu jak přiřadit k mailu item.
Nejspíš by šlo uplně jednoduše to udělat pomoci tabulky mail_external..
bool Player::AddItem(uint32 itemId, uint32 count) { uint32 noSpaceForCount = 0; uint32 origCount = count; ItemPosCountVec dest; uint8 msg = CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, count, &noSpaceForCount); if (msg != EQUIP_ERR_OK) // convert to possible store amount count = noSpaceForCount; if (count == 0 || dest.empty()) // can't add any { WorldDatabase.PExecute("INSERT INTO mail_external VALUES (NULL,%u,'Support','Here it is.',0,%u,%u)",GetGuid(),itemId,origCount) ChatHandler(this).PSendSysMessage("You don't have any space in your bags. Check mailbox."); return true; } Item* item = StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId)); if (item) SendNewItem(item, count, true, false); else return false; return true; }
-- Pokud chápu dobře, tak count nabere před posláním mail hodnotu noSpaceForCount, tak jsem přihodil pomocnou proměnnou. PS: šlo by to udělat krásněji, ale nevím vůbec, jestli s mail_external je to dobrej nápad:P
- 2
-
Anticheat v tom není, možná v budoucnu :-)
.. jinak díky
-
Přináším vám sem malý repack, kterému jsem dal, jelikož ho mám v plánu nadále vyvíjet, pracovní název ArtharonEMU. Jde o fork OregonCore s přidanýma několika opravama, které nejsou dostatečně čistě, aby byli přidány do OC repozitáře.
Repack obsahuje:
- Poslední revizi OC (1476)
- Opraven spell polymorph (regenerace 20% životů / sec, namísto 33%)
- Opraven spell Totemic Recall
- Částečně opraven spell inferno
- Opraven spell Explosive trap
- Opraven talent Frost warding
- Opraven talent Fire warding
- Opraven spell Emprowed corruption
- Opraven první tick totemů
- Opraven spell Expose weakness
- Opraven quest The Scryer's Scryer
- Opraven quest As the Crow Flies
- A další opravy u spellů..
- Přidáno Teleport NPC
- Přidáno GuildHouse npc
- Ukládání GM logů do databáze (characters->gm_logs)
- Logování získaných, či zničených itemů do databáse (od jakého Item Levelu se budou itemy logovat nastavíte ve WorldConfigu)
- Struktura realmd databáse upravena do podoby TriniyCore2, tj. kompatibilita multirealmů (OC+TC2)
Jak repack rozběhat?
- Stáhněte a rozbalte repack
- V MySQL vytvořte 3 databáze: characters, realmd, world.
- Do characters database nahrajte characters.sql (najdete v repacku ve složce "SQL")
- Do realmd database nahrajte realmd.sql (najdete v repacku ve složce "SQL")
- Stáhněte a rozbalte OregonDB + Updatepack.
- Nahrajte do world database ODB0.0.7_1419_1.sql (Najdete ho po rozbalení OregonDB)
- Dále tam nahrajte C_ODB0072_3.sql (updatepack)
- A nakonec všechny updaty, které naleznete přiložené v repacku ve složce SQL/world - updates
- Tím je nahraná database.
- Pomocí extractorů, které naleznete také v repacku, si vyextractujte mapy a dbc, případně i vmapy, ty pak přetáhněte k repacku.
- Nyní jen přejmenujte configy z oregoncore.conf.dist/oregonrealm.conf.dist na oregoncore.conf/oregonrealm.conf a upravte si je dle potřeb, především však přihlašovací údaje k databasi.
- Ještě nezapomeňte přidat realm do database (realmd->realmlist)
- Teď jen spusťte oregon-realm.exe a oregon-core.exe a můžete hrát :-)
Download
Aktuální vývoj, zdrojové kódy a podrobněji rozepsané opravy naleznete na repozitáři ArtharonEMU.
- 13
- Poslední revizi OC (1476)
-
Patch opravuje quest The Scryer's Scryer.
Core:
diff -r dbd97508aefc -r 3520da75bacf src/game/GameObject.cpp --- a/src/game/GameObject.cpp Sun Oct 02 17:05:38 2011 +0200 +++ b/src/game/GameObject.cpp Sun Oct 02 18:58:50 2011 +0200 @@ -1074,6 +1074,9 @@ if (info->camera.eventID) GetMap()->ScriptsStart(sEventScripts, info->camera.eventID, player, this); + if (GetEntry() == 187578) + SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE); + return; } //fishing bobber
SQL:
UPDATE gameobject_template SET type=13, data1=164, data2=16547 WHERE entry = 187578;
- 4
-
Po aplikaci tohoto patche se už nestane, že se hráč po vstupu do SwP objeví na balkónku nad vchodem.
Testováno na poslední revizi.
Core:
# HG changeset patch # User Filipoliko # Date 1316955174 -7200 # Node ID eb27e211a7f520aafb34bfa8d6303c43ce5a2d84 # Parent 5c5fa18894c6197b9c7a6c9a1f5a97f579f71c30 Sunwell: [hack]Fixed player position on enter. diff -r 5c5fa18894c6 -r eb27e211a7f5 src/game/ScriptLoader.cpp --- a/src/game/ScriptLoader.cpp Sun Sep 25 00:17:16 2011 -0400 +++ b/src/game/ScriptLoader.cpp Sun Sep 25 14:52:54 2011 +0200 @@ -29,6 +29,7 @@ void AddSC_npc_innkeeper(); void AddSC_npcs_special(); void AddSC_npc_taxi(); +void AddSC_npcs_custom(); //eastern kingdoms void AddSC_alterac_valley(); //Alterac Valley @@ -383,6 +384,7 @@ // AddSC_custom_example(); // AddSC_custom_gossip_codebox(); // AddSC_test(); + AddSC_areatrigger_scripts(); AddSC_boss_emeriss(); AddSC_boss_taerar(); @@ -395,6 +397,7 @@ AddSC_npc_innkeeper(); AddSC_npcs_special(); AddSC_npc_taxi(); + AddSC_npcs_custom(); //eastern kingdoms AddSC_alterac_valley(); //Alterac Valley diff -r 5c5fa18894c6 -r eb27e211a7f5 src/scripts/World/npcs_custom.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/scripts/World/npcs_custom.cpp Sun Sep 25 14:52:54 2011 +0200 @@ -0,0 +1,52 @@ +/* ScriptData +SDName: Npcs_custom +SD%Complete: 100 +SDComment: Custom non-blizzlike scripts. +SDCategory: NPCs +EndScriptData +*/ + +/* ContentData +npc_sunwell_enter_recall 100% Teleport player, which enter SWP first to the right position. +EndContentData */ + +#include "ScriptPCH.h" +#include "ScriptedEscortAI.h" + +/*###### +## npc_sunwell_enter_recall +######*/ + +struct npc_sunwell_enter_recall : public ScriptedAI +{ + npc_sunwell_enter_recall(Creature *c) : ScriptedAI(c) {me->SetVisibility(VISIBILITY_OFF); Reset();} + void Reset() {} + void Aggro(Unit * /*who*/){} + void MoveInLineOfSight(Unit *who) + { + if (who->GetTypeId() != TYPEID_PLAYER || me->IsWithinDistInMap(who, 5.0f) || !me->IsWithinLOSInMap(who)) + return; + + + Player* player = (Player *) who; + if(player->GetSession()->GetSecurity() < SEC_MODERATOR) + player->TeleportTo(580, 1790.65f, 925.67f, 15.15f, 3.1f); + } + void UpdateAI(const uint32 diff){} +}; + +CreatureAI* GetAI_npc_sunwell_enter_recall(Creature* pCreature) +{ + return new npc_sunwell_enter_recall (pCreature); +} + +void AddSC_npcs_custom() +{ + Script *newscript; + + newscript = new Script; + newscript->Name = "npc_sunwell_enter_recall"; + newscript->GetAI = &GetAI_npc_sunwell_enter_recall; + newscript->RegisterSelf(); +} +
SQL:
-- Creature template DELETE FROM `creature_template` WHERE (`entry`=900001); INSERT INTO `creature_template` (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (900001, 0, 10045, 10045, 10045, 10045, 'Sunwell trigger', 'Visible only for GM', '', 70, 70, 1, 1, 0, 0, 0, 35, 35, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 0, 1, 0, 0, 0, 'npc_sunwell_enter_recall'); -- Spawn position DELETE FROM `creature` WHERE `id`=900001; INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`DeathState`,`MovementType`) VALUES (NULL, 900001, 580, 1, 0, 0, 1790.65, 925.67, 39.8824, 3.1, 25, 0, 0, 1, 0, 0, 0);
- 3
-
Btw, o prázdnínách, to co tu píšeš(2 roky webhosting + rok .eu doména) šlo koupit za 324Kč(10% sleva pro fanoušky na FB) od wedosu :-)
-
Dej si .gm off
- 1
-
Design parádní, akorád, když děláš design, tak ti hodně doporučuju strukturovat to do složek a odělit jima header, menu, main content, patičku,... a taky vhodně pojmenovávat jednotlivé vrstvy pro lepší orientaci. Hodně to ulehčí kódování. Jinak GJ :-)
-
#include "ScriptPCH.h" #define TEXT "Vítej na Sitix BG Serveru!" class npc_say : public CreatureScript { public: npc_say() : CreatureScript("npc_say") { } struct example_creatureAI : public ScriptedAI { npc_sayAI(Creature* c) : ScriptedAI(c) {} uint32 m_uiSayTimer; // Timer for random chat void Reset() { m_uiSayTimer = 60000; } +/- void UpdateAI(const uint32 diff) { //Random Say timer +/- if (m_uiSayTimer <= diff) { DoScriptText(TEXT, me); m_uiSayTimer = 60000; // 60sekund - 1 000 = 1s } + else + m_uiSayTimer -= diff; }; CreatureAI* GetAI(Creature* creature) const { return new npc_sayAI(creature); } }; void AddSC_npc_say() { new npc_say(); };
-
Zkusil bych totok, ale asi bude dělat problémy zkusit se má vše :X
/***** player.cpp *****/ @@ -7642,6 +7642,11 @@ duel->opponent->duel = NULL; delete duel; duel = NULL; + if(area && area->isSanctuary) + { + SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); + CombatStopWithPets(); + } } //---------------------------------------------------------// @@ -19139,6 +19144,8 @@ duel->startTime = currTime; duel->opponent->duel->startTimer = 0; duel->opponent->duel->startTime = currTime; + if(area && area->isSanctuary) + RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); } Pet* Player::GetPet() const
-
Já osobně s úpravou DBC mám problém
Takže používám cestu v core, třeba někomu pomůže :-)
/************ player.cpp ************/ @@ -7375,7 +7375,7 @@ // previously this was in UpdateZone (but after UpdateArea) so nothing will break pvpInfo.inNoPvPArea = false; - if (area && area->IsSanctuary()) // in sanctuary + if (area && area->IsSanctuary() || GetZoneId(ZoneID)) // in sanctuary { SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); pvpInfo.inNoPvPArea = true;
Hledám Developera
in Poptávka
Posted · Report reply
Ahoj, mohl bys dát nějaký bližší info o serveru?