modyfikacja systemu walki (modyfikacja klawiszologi) 4298 6

O temacie

Autor Gizbor17

Zaczęty 2.09.2017 roku

Wyświetleń 4298

Odpowiedzi 6

Gizbor17

Gizbor17

Użytkownicy
janusz grafiki
posty352
Propsy493
ProfesjaGrafik 3D
  • Użytkownicy
  • janusz grafiki
chciałbym sobie zmodyfikowac gothicowy system walki w sposób stworzenia nowych i modyfikacji starych skrótów klawiszowych używanych do wykonywania bloków i ciosów
a mianowicie
ciosy: lpm+w,s,a,d
bloki: ppm+w,s,a,d
czyli jak przeciwnik wykona cios lpm+a to trzeba wcisnąc w odpowiednim momencie ppm+a. Czy jest możliwość zrobienia tego bez pakietów skryptowych i czy dużo roboty by z tym było?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Ikarusem dałoby radę, ale byłoby masa bugów. Jeśli będziesz chciał to zmodyfikować bez bugów, to najlepiej będzie użyć AST.

Będziesz musiał:
- Znaleźć odpowiedni(e) adres(y)
- Wyłączyć bądź nadpisać (nadpisanie łatwiejsze) istniejącą funkcję
- Umożliwić używanie nowego systemu (oraz zaimplementowanie go) wszystkim npc, nie tylko hero
- Napisać nowe FAI (w zasadzie to napisać, jak npc z danym FAI mają się zachowywać, jak atakować itp.)

Raczej tyle.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Gizbor17

Gizbor17

Użytkownicy
janusz grafiki
posty352
Propsy493
ProfesjaGrafik 3D
  • Użytkownicy
  • janusz grafiki
 

carelion

carelion

RaveN Studio
Moete Kita Zo!
posty153
Propsy73
Profesjabrak
  • RaveN Studio
  • Moete Kita Zo!
Ja natomiast bym w momencie zadania obrażeń sprawdzał czy osoba atakująca ma odpaloną animacje dla ataku lpm+a oraz czy osoba otrzymująca obrażenia ma animacje ppm+a, jeśli tak to zmniejszałbym bądź usuwał obrażenia lub inne rzeczy które chcesz :ok:
 

Gizbor17

Gizbor17

Użytkownicy
janusz grafiki
posty352
Propsy493
ProfesjaGrafik 3D
  • Użytkownicy
  • janusz grafiki
dobra to ile zajęłoby czasu wam skrypterom wprowadzenia takich zmian w tym systemie? @carelion @Bogdan Zwei
 

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Ile czasu? Zależy, jak szybko kto pisze :D
Nie wiem, czy za pomocą zwykłych skryptów da się pobrać wykonywaną animację.
Znalazłem taką funkcję:
AI_PlayAniBS ( VAR C_NPC npc, VAR STRING aniname, VAR INT bodystate ) { };
Może w B_AssessDamage.d trzeba dopisać coś takiego:
     if (AI_PlayAniBS (other, "T_1HATTACKL" , BS_HIT) == TRUE) // jeśli napastnik uderza od prawej do lewej
       && (MEM_KeyState(KEY_A)==KEY_PRESSED) // gracz nacisnął A
       && (MEM_KeyState(KEY_PPM)==KEY_PRESSED) // i PPM (nie wiem, jaki kod ma PPM)
     {
          hero.protection[PROT_BLUNT] = hero.protection[PROT_BLUNT] + 20; // chwilowo zwiększamy jego ochronę
  hero.protection[PROT_EDGE] = hero.protection[PROT_BLUNT] + 20; // (bo ochronił się z dobrej strony)
          HERO_MA_DODANEGO_PROTA = TRUE; // zapisujemy zmienną, żeby potem przywrócić protection
     };

I w TickTocku jeśli nie ma nacisnietych obu klawiszy, a ma 'dodanego prota', trzeba go odjąć.
     if (HERO_MA_DODANEGO_PROTA == TRUE)
       && !(MEM_KeyState(KEY_A)==KEY_PRESSED)
       && !(MEM_KeyState(KEY_PPM)==KEY_PRESSED)
     {
          hero.protection[PROT_BLUNT] = hero.protection[PROT_BLUNT] - 20;
  hero.protection[PROT_EDGE] = hero.protection[PROT_BLUNT] - 20;
          HERO_MA_DODANEGO_PROTA = FALSE;
     };

Może to jakaś droga do osiągnięcia żądanego efektu?
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
AST nie Ikarusem. W AST można wyłączyć oryginalne funkcje i napisać je od zera. Cały problem polega na tym, że ataki bronią są zapisane w Managerze który według mnie jest bardzo zagmatwany. Po pierwsze trzeba zrobić Hook na HandleEvent lub zCInput aby wyłączyć rejestrowanie starych ciosów. Potem należy  napisać nowy system rejestracji ciosów. Gdy cały system będzie działał podobnie jak oryginalny ( wszystko będzie zsynchronizowane) nastąpi najgorsza rzecz czyli przepisanie całej sztucznej inteligencji dla walki wręcz. To by było tyle.
 

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