Drużyna Spolszczenia
Narzędzia, skrypty, problemy techniczne - Wersja do druku

+- Drużyna Spolszczenia (http://druzynaspolszczenia.pl)
+-- Dział: Gothic - modyfikacje (http://druzynaspolszczenia.pl/forumdisplay.php?fid=11)
+--- Dział: Gothic - programy/texture-pack (http://druzynaspolszczenia.pl/forumdisplay.php?fid=26)
+--- Wątek: Narzędzia, skrypty, problemy techniczne (/showthread.php?tid=2894)

Strony: 1 2 3 4 5 6 7 8 9 10 11


RE: Narzędzia, skrypty, problemy techniczne - Erwin - 15.11.2019

Niestety nie pomogło, jak i kilka innych sposobów wyczytanych w internecie, ale dzięki za podpowiedź.
К сожалению, это не помогло, как и несколько других способов, прочитанных в интернете, но спасибо за подсказку.

Po wielu minutach, czy nawet godzinach spędzonych przy tym problemie, doszedłem do rozwiązania.
Powodem była niepoprawnie zainstalowana jedna z bibliotek C++, a dokładnie wersja 2012.
Po przeinstalowaniu gra odpaliła na dx11, potem coś zaktualizowałem i pojawił się jakiś inny błąd, ale to już nieważne.

Niestety mój "nowy" laptop, podobnie jak stary, podstawowy komputer stacjonarny jest również wyposażony w zintegrowaną kartę graficzną, tylko o wiele lepszą. Gothic nie działa wydajnie na takich kartach, więc odpalenie go na dx11 zakończyło się porażką ( bardzo niski poziom fps ). Z tego co widziałem na filmikach dla porównania, to chodziło to mniej więcej tak samo jak Wiedźmin 3 na tym modelu laptopa, także dx11 w Gothicu dalej dla mnie odpada, ale nie to było głównym celem zakupu nowego laptopa.

После нескольких минут или даже часов, проведенных с этой проблемой, я пришел к решению.

Причина была неправильно установлена одна из библиотек C++, а именно версия 2012.
После переустановки игра запустилась на dx11, затем я что-то обновил, и появилась другая ошибка, но это уже не имеет значения.

К сожалению, мой "новый" ноутбук, как и старый, базовый настольный компьютер также оснащен встроенной видеокартой, только намного лучше. Готика не работает эффективно на таких картах, так что стрельбы его на dx11 закончилась провалом ( очень низкий уровень fps ). Из того что я видел в кино для сравнения, это было примерно так же, как и Ведьмак 3 на этой модели ноутбука, а также dx11 в Gothicu дальше для меня отпадает, но не это было основной целью покупки нового ноутбука

Mud-freak nawrzucał jakiś patchy na Wog'u. Może N1kX coś Cię zainteresuje, jak jeszcze nie widziałeś.

https://forum.worldofplayers.de/forum/forums/101-Modifikationen


RE: Narzędzia, skrypty, problemy techniczne - N1kX - 22.11.2019

Я видел. Эти патчи потребуют установку Ninja.
У всех свои патчи
Русские - Systempack/Union
Немцы - Ninja


RE: Narzędzia, skrypty, problemy techniczne - Tituf - 06.12.2019

Erwin - możesz być zainteresowany - narzędzie edytorskie https://worldofplayers.ru/threads/40530/page-21#post-1064072


RE: Narzędzia, skrypty, problemy techniczne - Erwin - 06.12.2019

Tak, dzięki. Widziałem to kiedyś, jednak wtedy, wymagania systemowe tego programu przerastały mój sprzęt. Może teraz przyjrzę się temu bliżej, choć to dopiero jakaś wersja robocza.

N1kX, czy pakiet Ninja będzie działał z Przeznaczeniem?
Wynalazłem taki patch i chciałem go w przyszłości sprawdzić w grze.

https://forum.worldofplayers.de/forum/threads/1547380-Patch-PickLockHelper-Nie-wieder-Links-Rechts-Rechts


RE: Narzędzia, skrypty, problemy techniczne - N1kX - 17.12.2019

(16.12.2019, 18:48:50)Erwin napisał(a): N1kX, czy pakiet Ninja będzie działał z Przeznaczeniem?
Wynalazłem taki patch i chciałem go w przyszłości sprawdzić w grze.

W przyszłości można spróbować.


RE: Narzędzia, skrypty, problemy techniczne - Erwin - 09.01.2020

Czy można za pomocą konsoli wywołać ruch danego movera?
W dialogu, to się daje na końcu - Wld_SendTrigger("nazwa"), ale czy jest tez komenda do konsoli?
W Dark Saga było coś takiego, że sie wpisywało SENDTRIGGER........
Niestety nie widzę nic podobnego w standardowej grze.

Можно ли с помощью консоли вызвать движение данного Mover?
В диалоге, это дает в конце - Wld_SendTrigger("имя"), но да, это команда в консоли?

В Dark Saga было что-то такое, что wpisywało SENDTRIGGER........
К сожалению, я не вижу ничего подобного в стандартной игре.


RE: Narzędzia, skrypty, problemy techniczne - N1kX - 09.01.2020

bmarvinb
zstrigger nazwa


RE: Narzędzia, skrypty, problemy techniczne - Erwin - 09.01.2020

Nie działa u mnie  Smutny Próbowałem w dwóch miejscach, ale pokazuje "unknown command".
Не работает для меня Грустно, что я пытался в двух местах, но это показывает "неизвестная команда".

Działa - ZTRIGGER bez s  :)

Komendy do konsoli:

Dogrzebałem się do takiej stronki:
http://www.gothic-library.ru/Applications/MOB/Chests.html
Widać, że jest to jakaś faza rozwojowa tego narzędzia, ale kiedyś jak to skończą, może okazać się przydatne, komasując wiele rzeczy w jednym miejscu.

Я копался в этом сайте:
http://www.gothic-library.ru/Applications/MOB/Chests.html
Вы можете видеть, что это какая-то фаза развития этого инструмента, но когда-нибудь, когда они закончатся, может быть полезно поставить много вещей на одно место.

Mam takie pytanie. Jest brama i jest ona otwierana przyciskiem. Żeby nacisnąć przycisk potrzebny jest przedmiot - dla testu jabłko ITFO_APPLE.
Do tego mam zrobioną funkcję w startup, aby po użyciu przycisku, przedmiot aktywujący został usuniety z ekwipunku.


func void ADW_PORTAL()
{
Npc_RemoveInvItems (hero ,ITFO_APPLE, 1);
Snd_Play ("MFX_TELEKINESIS_STARTINVEST");
};


To jest kawałek oryginalnej funkcji z Jarkendaru z questu o kamieniach ogniskujących i platformach teleportacyjnych. Wszystko jest dobrze, kiedy mam np. dwa jabłka w ekwipunku wtedy jedno usuwane - zostaje jedno, ale jak mam tylko jedno jabłko w inwentarzu, to już mi się ono nie usuwa. Jak to rozwiązać?


RE: Narzędzia, skrypty, problemy techniczne - N1kX - 13.02.2020

Попробуй вот так.
func void ADW_PORTAL()
{
if(Npc_HasItems(hero,ITFO_APPLE) > 2)
{
Npc_RemoveInvItems (hero ,ITFO_APPLE, 1);
}
else if(Npc_HasItems(hero,ITFO_APPLE) == 1)
{
Npc_RemoveInvItems(hero,ITFO_APPLE,Npc_HasItems(hero,ITFO_APPLE));
};

Snd_Play ("MFX_TELEKINESIS_STARTINVEST");
};

Насчет пьедестала и фокусирующих камнях, предмет удаляется там без функции
useWithItem=string:ITMI_FOCUS


RE: Narzędzia, skrypty, problemy techniczne - Erwin - 13.02.2020

Nie działa  Smutny 
Dalej jak mam dwa to jedno usuwa, ale jak już mam tylko jedno to zostaje w ekwipunku.

Tam jest taka funkcja:

func void ADW_PORTALTEMPEL_FOCUS_FUNC ()//Joly: kommt, wenn ein Focusstein in ein Sockel eingesetzt wird.

{
Npc_RemoveInvItems (hero ,ItMi_Focus, 1);
TriggeredTeleporterADW = (TriggeredTeleporterADW + 1);
Snd_Play ("MFX_TELEKINESIS_STARTINVEST");

if (TriggeredTeleporterADW >= 5)
{
SC_ADW_ActivatedAllTelePortStones = TRUE;
};


if (ADW_PORTALTEMPEL_FOCUS_FUNC_OneTime == FALSE)
&& (Npc_GetDistToWP(hero,"ADW_PORTALTEMPEL_TELEPORTSTATION") < 3000)
{
if ((Npc_IsDead(Stoneguardian_NailedPortalADW1))== FALSE)
&& (Stoneguardian_NailedPortalADW1.aivar[AIV_EnemyOverride] == TRUE)
{
Snd_Play ("THRILLJINGLE_02"); 
};
B_AWAKE_STONEGUARDIAN (Stoneguardian_NailedPortalADW1);
ADW_PORTALTEMPEL_FOCUS_FUNC_OneTime = TRUE;
};
};  

Na obecną chwilę, nie mam pomysłu jak rozwiązać ten mój problem, ale jeszcze pomyślę.


RE: Narzędzia, skrypty, problemy techniczne - N1kX - 13.02.2020

Попробуй так

var int adw_prtlremove;

func void ADW_PORTAL()
{
if(adw_prtlremove ==FALSE)
{
if(Npc_HasItems(hero,ITFO_APPLE))
{
Npc_RemoveInvItems(hero,ITFO_APPLE,1);
};
Snd_Play ("MFX_TELEKINESIS_STARTINVEST");
adw_prtlremove = true;
};
};

Ну или совсем просто, у самого mobinter объекта добавь удаляемый предмет
useWithItem=string:ITFO_APPLE


RE: Narzędzia, skrypty, problemy techniczne - Erwin - 13.02.2020

Funkcja działa, tak jak poprzednia, czyli przy jednym jabłku, nie jest ono usuwane  Smutny

W Spacer'ze, w oknie przycisku aktywującego, jak wpisuje mu w useWithItem    string:ITFO_APPLE, to w ogóle nie usuwa, a =string:ITFO_APPLE wpisać nie mogę, bo pokazuje jakiś błąd   Smutny

No i wyczytałem w temacie na TM, że się tak nie da. Faktycznie, jak się usunie z useWithItem przy przycisku to jabłko, to wtedy nawet przy jednym egzemplarzu jest ono usuwane, co raczej średnio mnie urządza, bo przycisk wtedy można aktywować bez wymaganego przedmiotu. Z drugiej strony, w Nocy Kruka, Merdarion daje nam po jednym kamieniu ogniskującym do aktywacji platform i tam jakoś to działa. To chyba jakaś skryptowa wyższa matematyka dla mnie.

Zacząłem grzebać w Spacer'ze przy przycisku aktywującym z opcją conditionFunc i faktycznie, może i coś by się tu dało zdziałać, ale marny ze mnie skrypter.

Tu jest ten temat:
https://themodders.org/index.php?topic=22003.0

A czy animacje np otwieranie skrzyni, modlitwa, wciśnięcie przycisku mają jakieś swoje nazwy i można skryptem zmusić bohatera żeby odegrał taką animację? Jeśli są, to gdzie znaleźć ich nazwy?


RE: Narzędzia, skrypty, problemy techniczne - N1kX - 14.02.2020

(14.02.2020, 10:58:10)Erwin napisał(a): A czy animacje np otwieranie skrzyni, modlitwa, wciśnięcie przycisku mają jakieś swoje nazwy i można skryptem zmusić bohatera żeby odegrał taką animację? Jeśli są, to gdzie znaleźć ich nazwy?

Конечно. \_WORK\DATA\ANIMS\MDS_MOBSI
все mds файлы, открываешь в блокноте. Пример это сундуки в храме Аданоса.
Там они запускают скрипт только в положении открытого S1
То есть, в названии функции должно быть окончание _S1
Пример, когда просыпаются каменные стражи в Предо
func void open_adanostempelchest_02_func_s1()
{
if(OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime == FALSE)
{
//new
var C_NPC StoneGuardianAdanos_09A;
var C_NPC StoneGuardianAdanos_09C;
var C_NPC StoneGuardianAdanos_09E;
StoneGuardianAdanos_09A = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09A);
StoneGuardianAdanos_09C = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09C);
StoneGuardianAdanos_09E = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09E);
//end
/*b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09A);
b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09C);
b_awake_stoneguardian(Stoneguardian_TREASUREPITS_09E);
if((Npc_IsDead(Stoneguardian_TREASUREPITS_09A) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09C) == FALSE) || (Npc_IsDead(Stoneguardian_TREASUREPITS_09E) == FALSE))*/
b_awake_stoneguardian(StoneGuardianAdanos_09A);
b_awake_stoneguardian(StoneGuardianAdanos_09C);
b_awake_stoneguardian(StoneGuardianAdanos_09E);
if((Npc_IsDead(StoneGuardianAdanos_09A) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09E) == FALSE))
{
Snd_Play("THRILLJINGLE_02");
};
if(Kapitel > 2)
{
var C_NPC StoneGuardianAdanos_09B;
var C_NPC StoneGuardianAdanos_09D;
var C_NPC StoneGuardianAdanos_09F;
StoneGuardianAdanos_09B = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09B);
StoneGuardianAdanos_09D = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09D);
StoneGuardianAdanos_09F = Hlp_GetNpc(Stoneguardian_TREASUREPITS_09F);
b_awake_stoneguardian(StoneGuardianAdanos_09B);
b_awake_stoneguardian(StoneGuardianAdanos_09D);
b_awake_stoneguardian(StoneGuardianAdanos_09F);
};
if((Npc_IsDead(StoneGuardianAdanos_09A) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09C) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09E) == FALSE))
{
Snd_Play("THRILLJINGLE_02");
}
else if((Npc_IsDead(StoneGuardianAdanos_09B) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09D) == FALSE) || (Npc_IsDead(StoneGuardianAdanos_09F) == FALSE))
{
if(Kapitel > 2)
{
Snd_Play("THRILLJINGLE_03");
};
};
OPEN_ADANOSTEMPELCHEST_02_FUNC_OneTime = TRUE;
};
};
А в сундуке/двери/кнопке и пр должно быть написано без S1
focusName=string:MOBNAME_CHEST
hitpoints=int:10
damage=int:0
moveable=bool:0
takeable=bool:0
focusOverride=bool:0
soundMaterial=enum:0
visualDestroyed=string:
owner=string:
ownerGuild=string:
isDestroyed=bool:0
stateNum=int:1
triggerTarget=string:ADW_ADANOS_KILLEDROOM_MASTER
useWithItem=string:
conditionFunc=string:
onStateFunc=string:OPEN_ADANOSTEMPELCHEST_02_FUNC
rewind=bool:0
locked=bool:-1
keyInstance=string:
pickLockStr=string:RLLRRLL
contains=string:ItWr_OneHStonePlate3_Addon,ItWr_HitPointStonePlate2_Addon,ITPO_MANA_03:3,ItMi_GoldNecklace,ItMi_GoldCandleHolder,ItMi_GoldPlate,


RE: Narzędzia, skrypty, problemy techniczne - Erwin - 14.02.2020

No, powiedzmy, że coś chyba zrozumiałem  :) ale nie do końca o to mi chodzi. 

Dla przykładu:
Mam miksturę, wypijam ją. Użycie mikstury aktywuje skrypt, po którym bohater wykonuje animację modlitwy, czyli klęka na ziemi.

Drugi przykład:
Naciskam przycisk. uruchamia sie skrypt, który każe bohaterowi wykonać animację otwierania skrzyni.

Coś takiego mi chodzi, czyli żeby w skrypcie dać jakoś komendę na wykonanie wybranej animacji.

Pewnie trochę naokoło mi to wyszło, bo da się zrobić prościej, ale Twój post pomógł rozwiązać mój wczorajszy problem.

W przycisku w onStateFunc dałem sobie FUNC_PORTAL i napisałem sobie skrypt do tego:

func void FUNC_PORTAL_S1()

{
if (Npc_HasItems (hero, ITFO_APPLE)>=1) 
{
Npc_RemoveInvItems (hero ,ITFO_APPLE, 1);
Snd_Play ("MFX_TELEKINESIS_STARTINVEST");
Wld_SendTrigger("TEST1");
};
if (Npc_HasItems (hero, ITFO_APPLE)==0) 
{
PLAYER_MOB_MISSING_KEY ();
};
};

i teraz jest w porządku. Co prawda bohater mówi, że potrzebuje właściwego klucza, ale tylko taką komendę znalazłem na necie, także dziękuję  winner Nie znałem tego, że te końcówki _S1 są potrzebne.


RE: Narzędzia, skrypty, problemy techniczne - N1kX - 14.02.2020

(14.02.2020, 11:44:24)Erwin napisał(a): Dla przykładu:
Mam miksturę, wypijam ją. Użycie mikstury aktywuje skrypt, po którym bohater wykonuje animację modlitwy, czyli klęka na ziemi.

instance ItPo_Prayer_01(C_Item)
{
name = "Зелье молитвы";
mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;
value = 100;
visual = "ItPo_Mana_01.3ds";
material = MAT_GLAS;
on_state[0] = UseItPo_Prayer_01;
scemeName = "POTIONFAST";
wear = WEAR_EFFECT;
effect = "SPELLFX_MANAPOTION";
description = name;
text[1] = NAME_Bonus_Mana;
text[5] = NAME_Value;
count[5] = value;
};

func void UseItPo_Prayer_01()
{
Mdl_ApplyOverlayMdsTimed(self,"T_STAND_2_PRAY.MDS",3000);
};

Попробуй вот так. Герой должен начать молится, когда выпьет зелье.

Mdl_ApplyOverlayMdsTimed - применить overlay к НПС на указанное время
Есть проще
instance ItPo_Prayer_01(C_Item)
{
name = "Зелье молитвы";
mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;
value = 100;
visual = "ItPo_Mana_01.3ds";
material = MAT_GLAS;
on_state[0] = UseItPo_Prayer_01;
scemeName = "POTIONFAST";
wear = WEAR_EFFECT;
effect = "SPELLFX_MANAPOTION";
description = name;
text[1] = NAME_Bonus_Mana;
text[5] = NAME_Value;
count[5] = value;
};

func void UseItPo_Prayer_01()
{
AI_PlayAniBS(self,"T_STAND_2_PRAY",BS_SIT);
};