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  
Xmat

Jak na permanentní viditelnost toulce?

Recommended Posts

Zdravím,

 

chtěl bych se zeptat, zda (a případně jak) lze udělat, aby byl toulec vidět na zádech i v případě, že nemám vytažený luk. Vím, že třeba nějaké offhand knížky, které se u pasu normálně nezobrazují, šly udělat tak, aby byly viditelné i když byly "zandané zbraně". Budu velmi vděčný, když mi poradíte cokoliv, co může vést k vyřešení této věci (pzn. hlášek jako "pohraj si se sheath" mě ušetřete, děkuji. Pohrál jsem si s tím víc než dost.)

 

Děkuji

  • Upvote 1

Share this post


Link to post
Share on other sites

Počkej počkej.. Jak to myslíš? Chceš aby se quiver zobrazoval na hráči bez ohledu na to, jakou má v ruce zbraň?

Něco mě totiž napadlo, tak bych si to chtěl ujasnit, než se do toho pustím.

 

PS: ten sheath je nejspíš třeba upravit i v DBC, ale nevím, nikdy jsem se s tím netrápil. :huh:

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Ano, přesně tak jsem to myslel. Aby byl toulec prostě stále vidět, jako např. chestka.

Share this post


Link to post
Share on other sites

Pokusil bych se něco na to napsat (C++). Ale to může znamenat, že se pak nebudou zobrazovat na zádech zbraně, sheild atd..

Nevím jestli jde zobrazit víc jak jednu věc v jedný pozici na hráči. Spíš ne, než jo.

 

EDIT: V souboru player.cpp jsou funkce

void Player::SetSheath( SheathState sheathed )

a

void Player::SetVirtualItemSlot( uint8 i, Item* item)

 

Ve funkci SetSheath to půjde nastavit, ale musíš zjistit co to dělá. Jsou tam 3 sloty.

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Tak v téhle metodě se fakt nevyznám. Nemohl by ses na to mrknout konkrétně? :) Prosííím :D

Share this post


Link to post
Share on other sites

nema to i neco s dbc? zalezi jaky item mas a podle toho ovlyvni i danej model jestli to videt je nebo ne

 

sry za typos, pisu na fonu, snazim se pomoct taky by si to hodilo skusim si stahnut zdrojaky na firemny notas a dohledat to :unsure: :unsure:

Share this post


Link to post
Share on other sites

Hele, možná by stačilo přidat pár řádek do funkce uint8 Player::FindEquipSlot

 

 

uint8 Player::FindEquipSlot( ItemPrototype const* proto, uint32 slot, bool swap ) const
{
   uint8 pClass = getClass();

   uint8 slots[4];
   slots[0] = NULL_SLOT;
   slots[1] = NULL_SLOT;
   slots[2] = NULL_SLOT;
   slots[3] = NULL_SLOT;
   switch( proto->InventoryType )
   {
       case INVTYPE_HEAD:
           slots[0] = EQUIPMENT_SLOT_HEAD;
           break;
       case INVTYPE_NECK:
           slots[0] = EQUIPMENT_SLOT_NECK;
           break;
       case INVTYPE_SHOULDERS:
           slots[0] = EQUIPMENT_SLOT_SHOULDERS;
           break;
       case INVTYPE_BODY:
           slots[0] = EQUIPMENT_SLOT_BODY;
           break;
       case INVTYPE_CHEST:
           slots[0] = EQUIPMENT_SLOT_CHEST;
           break;
       case INVTYPE_ROBE:
           slots[0] = EQUIPMENT_SLOT_CHEST;
           break;
       case INVTYPE_WAIST:
           slots[0] = EQUIPMENT_SLOT_WAIST;
           break;
       case INVTYPE_LEGS:
           slots[0] = EQUIPMENT_SLOT_LEGS;
           break;
       case INVTYPE_FEET:
           slots[0] = EQUIPMENT_SLOT_FEET;
           break;
       case INVTYPE_WRISTS:
           slots[0] = EQUIPMENT_SLOT_WRISTS;
           break;
       case INVTYPE_HANDS:
           slots[0] = EQUIPMENT_SLOT_HANDS;
           break;
       case INVTYPE_FINGER:
           slots[0] = EQUIPMENT_SLOT_FINGER1;
           slots[1] = EQUIPMENT_SLOT_FINGER2;
           break;
       case INVTYPE_TRINKET:
           slots[0] = EQUIPMENT_SLOT_TRINKET1;
           slots[1] = EQUIPMENT_SLOT_TRINKET2;
           break;
       case INVTYPE_CLOAK:
           slots[0] =  EQUIPMENT_SLOT_BACK;
           break;
       case INVTYPE_WEAPON:
       {
           slots[0] = EQUIPMENT_SLOT_MAINHAND;

           // suggest offhand slot only if know dual wielding
           // (this will be replace mainhand weapon at auto equip instead unwonted "you don't known dual wielding" ...
           if(CanDualWield())
               slots[1] = EQUIPMENT_SLOT_OFFHAND;
           break;
       };
       case INVTYPE_SHIELD:
           slots[0] = EQUIPMENT_SLOT_OFFHAND;
           break;
       case INVTYPE_RANGED:
           slots[0] = EQUIPMENT_SLOT_RANGED;
           break;
       case INVTYPE_2HWEAPON:
           slots[0] = EQUIPMENT_SLOT_MAINHAND;
           if (CanDualWield() && CanTitanGrip())
               slots[1] = EQUIPMENT_SLOT_OFFHAND;
           break;
       case INVTYPE_TABARD:
           slots[0] = EQUIPMENT_SLOT_TABARD;
           break;
       case INVTYPE_WEAPONMAINHAND:
           slots[0] = EQUIPMENT_SLOT_MAINHAND;
           break;
       case INVTYPE_WEAPONOFFHAND:
           slots[0] = EQUIPMENT_SLOT_OFFHAND;
           break;
       case INVTYPE_HOLDABLE:
           slots[0] = EQUIPMENT_SLOT_OFFHAND;
           break;
       case INVTYPE_THROWN:
           slots[0] = EQUIPMENT_SLOT_RANGED;
           break;
       case INVTYPE_RANGEDRIGHT:
           slots[0] = EQUIPMENT_SLOT_RANGED;
           break;
       case INVTYPE_BAG:
           slots[0] = INVENTORY_SLOT_BAG_START + 0;
           slots[1] = INVENTORY_SLOT_BAG_START + 1;
           slots[2] = INVENTORY_SLOT_BAG_START + 2;
           slots[3] = INVENTORY_SLOT_BAG_START + 3;
           break;
       case INVTYPE_RELIC:
       {
           switch(proto->SubClass)
           {
               case ITEM_SUBCLASS_ARMOR_LIBRAM:
                   if (pClass == CLASS_PALADIN)
                       slots[0] = EQUIPMENT_SLOT_RANGED;
                   break;
               case ITEM_SUBCLASS_ARMOR_IDOL:
                   if (pClass == CLASS_DRUID)
                       slots[0] = EQUIPMENT_SLOT_RANGED;
                   break;
               case ITEM_SUBCLASS_ARMOR_TOTEM:
                   if (pClass == CLASS_SHAMAN)
                       slots[0] = EQUIPMENT_SLOT_RANGED;
                   break;
               case ITEM_SUBCLASS_ARMOR_MISC:
                   if (pClass == CLASS_WARLOCK)
                       slots[0] = EQUIPMENT_SLOT_RANGED;
                   break;
               case ITEM_SUBCLASS_ARMOR_SIGIL:
                   if (pClass == CLASS_DEATH_KNIGHT)
                       slots[0] = EQUIPMENT_SLOT_RANGED;
                   break;
           }
           break;
       }
+// WLK - PRIDANO ---->>
+        case INVTYPE_QUIVER:
+            slots[0] = EQUIPMENT_SLOT_OFFHAND;
+            break;
+// <<---- WLK - PRIDANO
       default :
           return NULL_SLOT;
   }

   if( slot != NULL_SLOT )
   {
       if( swap || !GetItemByPos( INVENTORY_SLOT_BAG_0, slot ) )
       {
           for (int i = 0; i < 4; ++i)
           {
               if ( slots[i] == slot )
                   return slot;
           }
       }
   }
   else
   {
       // search free slot at first
       for (int i = 0; i < 4; ++i)
       {
           if ( slots[i] != NULL_SLOT && !GetItemByPos( INVENTORY_SLOT_BAG_0, slots[i] ) )
           {
               // in case 2hand equipped weapon (without titan grip) offhand slot empty but not free
               if(slots[i]!=EQUIPMENT_SLOT_OFFHAND || !IsTwoHandUsed())
                   return slots[i];
           }
       }

       // if not found free and can swap return first appropriate from used
       for (int i = 0; i < 4; ++i)
       {
           if ( slots[i] != NULL_SLOT && swap )
               return slots[i];
       }
   }

   // no free position
   return NULL_SLOT;
}

 

Je to tam napsaný, tam jak je poznámka a + před řádkama.. To plusko pochopitelně smaž.

Je třeba to vychytat, aby se to nekopalo s ostatníma věcma. Jestli to bude fungovat, to opravdu nevím. Vyzkoušej to.

 

EDIT:

to STONERSVK: O tohle se asi fakt stará core - data jsou v pořádku a nic v DB by se menit nemělo. Už jenom záleží na tom, kam to core nahodí.

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Sakra. :mid_bow_arrow: Tak to bude ještě jinde. Já se na to kouknu, až bude čas. :mellow:

 

EDIT:

Vyzkoušej třeba rovnou použít funkci

SetVirtualItemSlot(0, idItemu);

nebo

SetVirtualItemSlot(1, idItemu);

a nebo

SetVirtualItemSlot(2, idItemu);

 

Nevím ale kde by bylo dobrý jí vyvolat ani jestli bude v pohodě.. :pinch: Ale jsou to jenom pitomý dohady..

Edited by Wolf Officious

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  

×