Itemy ze skrzyni do ekwipunku npc 3040 4

O temacie

Autor IceMan

Zaczęty 16.04.2020 roku

Wyświetleń 3040

Odpowiedzi 4

IceMan

IceMan

Użytkownicy
posty67
Profesjabrak
  • Użytkownicy

IceMan

Itemy ze skrzyni do ekwipunku npc
2020-04-16, 14:45(Ostatnia zmiana: 2020-04-17, 13:01)
Witam,
Korzystając z poradnika Avallacha z linku: https://themodders.org/index.php?topic=20123.0

Dodałem coś od siebie, żeby u handlarza nie usuwało w ekwipunku pancerzy, aby nie siedział na golasa xD
Skrypt po prostu bada, czy jesteśmy w kategorii pancerzy. /// skrypt zmieniony teraz bada czy item który ma być usunięty to założony pancerz jeżeli tak to nie usuwa.

Zrobiłem tak, że itemy po zakończeniu dialogu przenoszą się do specjalnej skrzyni, ale nie wiem jak to zrobić w odwrotną stronę żeby po rozpoczęciu handlu u NPC te itemy powróciły ze skrzyni do ekwipinku. Poniżej skrypt:

func void Npc_ClearInventoryLoop (var c_npc npc, var int category)
{
        print(ConcatStrings("Czyszczenie eq: ", npc.name));
        var int amount;
        amount = Npc_GetInvItemBySlot (npc, category, 0);
var c_Item armor;
var c_Item weapon;
armor = Npc_GetEquippedArmor(npc);
        print(ConcatStrings(item.name, IntToString(amount)));
        if (amount>0 && Hlp_GetInstanceID(item) != Hlp_GetInstanceID(armor))
        {
Mob_CreateItems ("FISK_CHEST", Hlp_GetInstanceID (item), amount) ;
NPC_RemoveInvItems (npc, Hlp_GetInstanceID (item), amount);
                Npc_ClearInventoryLoop(npc, category);
        }
        else if (category < INV_CAT_MAX-1)
        {
                print(ConcatStrings("Zmiana kategorii na: ", IntToString(category+1)));
                Npc_ClearInventoryLoop(npc, category+1);

        };
};

Czy jest jakaś funkcja, która usuwała by itemy ze skrzyni lub je przenosiła? u NPC mamy NPC_RemoveInvItems natomiast co do skrzyni widzę tylko Mob_CreateItems lub Mob_HasItems. Bawiłem się troche z Mob_HasItems, ale póki co bezskutecznie, myślałem, żeby zrobić coś takiego żeby funkcja badała jakie i ile itemów jest w skrzyni tutaj już chyba nie ma kategorii (brak podziału) a następnie tworzyć je w ekwipunku npc i usuwać ze skrzyni. Ktoś ma jakąś rade?
 

IceMan

IceMan

Użytkownicy
posty67
Profesjabrak
  • Użytkownicy
Czy ktoś ma jakiś pomysł jak to można zrobić? Kombinuje ale nic
 

Splash

Splash

Moderator
posty4208
Propsy3410
ProfesjaNierób
  • Moderator
Nie testowałem, ale powinno działać:
func void Npc_TransferInvToChestLoop(var c_npc npc, var int category, var string chestName)
{
        print(ConcatStrings("Czyszczenie eq: ", npc.name);
        var int amount;
        amount = Npc_GetInvItemBySlot (npc, category, 0);
        print(ConcatStrings(item.name, IntToString(amount));
        if (amount>0)
        {
                NPC_RemoveInvItems (npc, Hlp_GetInstanceID (item), amount);
                Mob_CreateItems(chestName, Hlp_GetInstanceID (item), amount);
                Npc_TransferInvToChestLoop(npc, category, chestName);
        }
        else if (category < INV_CAT_MAX-1)
        {
                print(ConcatStrings("Zmiana kategorii na: ", IntToString(category+1));
                Npc_TransferInvToChestLoop(npc, category+1, chestName);
        };
};

func void Npc_TransferInvToChest(var c_npc npc, var string chestName)
{
        Npc_TransferInvToChestLoop(npc, 0, chestName);
};

W Spacerze musisz ustawić nazwę w polu vobName (nie mylić z focusName), które potem musisz w pisać w argumencie chestName
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

IceMan

IceMan

Użytkownicy
posty67
Profesjabrak
  • Użytkownicy
Hmm, tak działa tylko że transferuje do skrzyni, a ja chciałem ze skrzyni do npc
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1153
ProfesjaProgramista
  • Złote Wrota
Bez Ikarusa / Uniona jest to chyba niemożliwe, bo nie ma funkcji która pobiera pierwszy przedmiot ze skrzynki.
Npc_GetInvItemBySlot (self, cat, 0);   // Istnieje
Mob_GetInvItemBySlot (vob, cat, 0); // Nie istnieje
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry