Narzędzia, skrypty, problemy techniczne
#16
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/fo...fikationen
Odpowiedz
#17
Я видел. Эти патчи потребуют установку Ninja.
У всех свои патчи
Русские - Systempack/Union
Немцы - Ninja
Odpowiedz
#18
Erwin - możesz być zainteresowany - narzędzie edytorskie https://worldofplayers.ru/threads/40530/...st-1064072
„Primus in orbe deos fecit timor..."

                                                                                  
                                 
Odpowiedz
#19
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/th...hts-Rechts
Odpowiedz
#20
(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ć.
Odpowiedz
#21
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........
К сожалению, я не вижу ничего подобного в стандартной игре.
Odpowiedz
#22
bmarvinb
zstrigger nazwa
Odpowiedz
#23
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/Application...hests.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ć?
Odpowiedz
#24
Попробуй вот так.
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
Odpowiedz
#25
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ę.
Odpowiedz
#26
Попробуй так

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
Odpowiedz
#27
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?
Odpowiedz
#28
(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,
Odpowiedz
#29
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.
Odpowiedz
#30
(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);
};
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 5 gości