Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - overdriven

Strony: [1]
1
Materiały / InfoBoxy
« dnia: 2024-09-23, 00:10 »
Po 5 latach wciąż działa elegancko.

Tylko czy ja coś robię źle, czy ta wersja nie ma animacji i automatycznego znikania? Jeśli nie ma, to czy jest gdzieś dostępna nowa wersja?

Bez tego wiadomości nakładają się na siebie:


Każdą wiadomość odpalam przez InfoBox:
InfoBox("aaa", -1);
Edit: Ok, wszystko jasne.
Zabrakło informacji o tym, których pakietów użyto i jak je zainicjalizować. Wg samego autora Ikarusa i Ninjy, obecnie zalecana metoda to inicjalizacja przez Ninję, lecz wtedy robi się to trochę inaczej niż przez Ikarusa.
Konkretnie przez LeGo_MergeFlags zamiast LeGo_Init. Najprościej upewnić się na działającym przykładzie. Tylko tutaj mamy LeGo_MergeFlags(LeGo_ConsoleCommands), w naszym przypadku potrzebujemy LeGo_MergeFlags(LeGo_Anim8 | ...) i parę innych, których autor skryptu niestety omieszkał wymienić (:

2
Skrypty / Zmiana pancerza zależnie od roździału
« dnia: 2023-02-19, 13:48 »
Dobra. Zrobiłem to w B_RefreshAtInsert. Podaję rozwiązanie jak by ktoś miał ten sam problem, albo do oceny jeśli jest coś do poprawy. Poniższy kod wymusi ubranie NPCa (Nadii) w dowolny armor (itar_vlkbabe_h) jeśli się do niej zbliżymy i zrobi to tylko jeden raz dzięki zapisywaniu/sprawdzaniu aivara i sprawdzaniu, czy ma już założone podane ubranie. Pewnie można byłoby pominąć jeden z tych dwóch warunków, ale dla pewności oba nie zaszkodzą. Dzięki trzymaniu tego w funkcji można używać wiele razy na dowolnym NPC.

Użycie funkcji w B_RefreshAtInsert:
func void B_RefreshAtInsert()
{
B_RefreshAtInsert_old();
// force outfit change on already started game
var C_NPC npcNadja; npcNadja = Hlp_GetNpc(VLK_435_NADJA);
EquipArmor(self, npcNadja, itar_vlkbabe_h);
}

Sama funkcja:
func void EquipArmor (var C_NPC CURRENT_NPC, var C_NPC NPC, var INT ARMOR)
{
// aivar 93 = is already wearing new armor
if(!CURRENT_NPC.aivar[93] && (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(CURRENT_NPC)))
{
var c_item currentArmor; currentArmor = Npc_GetEquippedArmor(CURRENT_NPC);
if(Hlp_GetInstanceID(currentArmor) != ARMOR)
{
   if(!Npc_GetInvItem(CURRENT_NPC, ARMOR))
   {
       CreateInvItem(CURRENT_NPC, ARMOR);
   };
   AI_EquipArmor(CURRENT_NPC, ARMOR);
};
CURRENT_NPC.aivar[93] = true;
};
};

Używam aivar 93, bo gram z Returningiem, ale w niezmodowanej grze może to być dowolny aivar pomiędzy 89-99.

Edit: jak tak o tym myślę to chyba by jednak przydało się pominąć tego aivara, bo jeśli po odpaleniu tej funkcji jakiś zewnętrzny kod z powrotem jej zmieni ubranie na inne to ten aivar nigdy nie zmieni się z powrotem na false i funkcja się już więcej nie odpali.

3
Skrypty / Zmiana pancerza zależnie od roździału
« dnia: 2023-02-18, 18:01 »
To by może i rozwiązało problem, ale to trochę przesada i wprowadziłoby inne problemy: jeśli mod był instalowany w połowie gry to oryginalny NPC mógł teoretycznie posiadać itemy, które otrzymał w trakcie gry, więc przy podmianie NPców by je stracił. Tak samo jeśli inny mod coś zmienia temu oryginalnemu NPCowi nie wiem czy byłoby to kompatybilne.

4
Skrypty / Zmiana pancerza zależnie od roździału
« dnia: 2023-02-18, 15:44 »
Cytuj
Można użyć Mdl_SetVisualBody i wtedy postać ubiera zbroję nawet jeśli jest poza zasięgiem, ale w wielu przypadkach mimo tego, że posiada zbroję założoną (w ekwipunku jest zaznaczona jako aktywna), to wizualnie stoi w samych gaciach i trzeba zapisać/wczytać grę.
Też mam z tym problem. Nawet nie wystarczy zapisać/wczytać gry, trzeba jeszcze zapisać/wczytać grę mając w zasięgu widzenia danego NPCa.

Naprawdę nie ma na to lepszego rozwiązania?

Wolałbym uniknąć robienia tego w B_RefreshAtInsert() :/ Zawsze to dodatkowy zbędny kod który będzie się odpalał za każdym razem gdy wyrenderuje się napotkany NPC (nawet jeśli będziemy sprawdzać czy to interesujący nas NPC), więc niezbyt to optymalne.

5
Pewnie już musztarda po obiedzie, ale polecam (w sumie każdemu, nie tylko w tym przypadku) appkę na androida Sound Search. Przykładasz telefon do głośnika i bez problemu powinna rozpoznać utwór.

6
Ukończone modyfikacje / [G2NK] zShowPickpockets
« dnia: 2023-02-18, 13:40 »
Jak dla mnie sztos, pomaga w przypomnieniu z którym NPC się jeszcze nie gadało, bo od pewnego poziomu i tak okrada się wszystkich jak leci.

7
Chcę dodać warunek do dialogu, który zależy od tego czy dany ork jest martwy. Normalnie pewnie użyłbym "Npc_IsDead(ORCWARRIOR_LOBART1)", ale nie chodzi mi o orka ORCWARRIOR_LOBART1 tylko o orka zwiadowcę w lesie (tego którego zabija się z Bartokiem na polowaniu), problem w tym że nie mogę go znaleźć w Story/NPC/Orc/Mst_OrcWarrior.d.

Po Story/Startup.d widzę że niektóre mobki są unikalne, np.
Wld_InsertNpc(canyonrazor01,"ADW_CANYON_MINE1_01");
Wld_InsertNpc(canyonrazor02,"ADW_CANYON_PATH_TO_LIBRARY_07A");
Wld_InsertNpc(canyonrazor04,"ADW_CANYON_PATH_TO_LIBRARY_36");

ale większość nie jest unikalna:
Wld_InsertNpc(orcwarrior_roam,"ADW_CANYON_ORCS_05");
Wld_InsertNpc(orcwarrior_roam,"ADW_CANYON_ORCS_05");

i pewnie tak samo jest z orkiem którego szukam.

Jak w takiej sytuacji sprawić żebym mógł w skryptach rozpoznać tego orka? Stworzyć jego instancję w Story/NPC/Orc/Mst_OrcWarrior.d i podmienić z orkiem no-namem który jest dodawany w jego miejscu?

Edit: ok, na podstawie dialogu z Bartokiem znalazłem że ten ork jednak ma swoją instancję i nazywa się orcwarrior_harad, ale co w przypadku gdyby interesował mnie jakiś nie-unikalny potwór który nie ma swojej własnej instancji?

Strony: [1]
Do góry