Duale (To NIE prośba o gotowe duale, proszę pierw przeczytać) 7297 10

O temacie

Autor Unelith

Zaczęty 26.10.2014 roku

Wyświetleń 7297

Odpowiedzi 10

Unelith

Unelith

Użytkownicy
posty40
  • Użytkownicy
Pisałem o tym już półtorej roku temu, więc myślę że nikt się nie obrazi jak stworzę nowy wątek na ten sam temat, gdyż nie dostałem ani jednej odpowiedzi.

Z pomocą pewnego tematu (http://themodders.org/index.php?/topic/15047-duale/) (dokładniej chodzi mi o post Alexiora) zrobiłem sobie duale. Jednak mam z nimi pewien problem.

Czasami podczas chowania broni, dual po prostu wypada na ziemię. Nie dzieje się to zawsze, jak stoję spokojnie i spacją wyciągam broń, jest git. Jednak kiedy użyję klawisza 1, lub wyciągam miecz obracając się, oraz czasami w biegu, broń klonuje się na ziemie, zostając w slocie kuszy, bądź z tego slotu znika całkowicie. Tak więc pomyślałem, że może tutaj ktoś pomoże mi coś wykombinować aby temu zapobiec.

Kod mieczy:
http://wklej.org/id/1025085/
(Za długi żeby tu wklejać)

MDS (a raczej jego kawałek, który zmodyfikowałem):
ani      ("T_1H_2_1HRUN"        1               "S_1HRUN"        0.0 0.0  M. "HUM_1HSDRAWT3.ASC"           F  3  10)         
{
*eventTag (3 "DEF_FIGHTMODE"  "1H")
*eventTag (3 "DEF_REMOVE_ITEM" "ZS_CROSSBOW" "dual3")
*eventTag (3 "DEF_REMOVE_ITEM" "ZS_LEFTHAND" "dual3")
*eventTag (8 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "dual3")
*eventTag (3 "DEF_DRAWSOUND")     
}
ani      ("T_1HRUN_2_1H"        1               "S_1H"           0.0 0.0  M. "HUM_1HSDRAWT3.ASC"           R  3  10)         
{
*eventTag (3 "DEF_FIGHTMODE") 
*eventTag (2 "DEF_REMOVE_ITEM" "ZS_LEFTHAND" "dual3")
*eventTag (3 "DEF_CREATE_ITEM" "ZS_CROSSBOW" "dual3")
*eventTag (3 "DEF_UNDRAWSOUND")
}
ani ("t_Move_2_1hMove" 2 "" 0.2 0.2 M. "Hum_1hS_MoveReady_M01.asc" F 1 24)
{
*eventTag (6 "DEF_FIGHTMODE" "1H")
*eventTag (6 "DEF_REMOVE_ITEM" "ZS_CROSSBOW" "dual3")
*eventTag (6 "DEF_REMOVE_ITEM" "ZS_LEFTHAND" "dual3")
*eventTag (9 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "dual3")
*eventTag (6 "DEF_DRAWSOUND")
}
ani ("t_1hMove_2_Move" 2 "" 0.2 0.2 M. "Hum_1hS_MoveReady_M01.asc" R 1 24)
{
*eventTag (6 "DEF_UNDRAWSOUND")
*eventTag (2 "DEF_REMOVE_ITEM" "ZS_LEFTHAND" "dual3")
*eventTag (3 "DEF_CREATE_ITEM" "ZS_CROSSBOW" "dual3")
*eventTag (6 "DEF_FIGHTMODE")
}

Próbowałem dodać eventy do
ani      ("T_RUN_2_1H"          1               "S_1H"           0.0 0.0  M. "HUM_1HSDRAWT3.ASC"           F  1  1)       Jednakże wtedy bronie mi często całkowicie znikały losowo, więc chyba nie tędy droga.

I od razu mówię:
  • Wiem że one będą wyglądały kijowo, ale zależy mi póki co na tym aby chociaż działały poprawnie, właściwe animacje się zrobi kiedy indziej
  • Wiem że w ten sposób bym musiał nowy MDS dla każdej kolejnej pary duali, no i właśnie wtedy występowałyby one JEDYNIE w parach, ale mi to nie przeszkadza ponieważ mi wystarczy tylko jedna para duali.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Rozwiązanie Alexika było naprawdę fatalne - da się to zrobić prościej i skuteczniej, jestem nawet prawie pewien że gdzieś to opisałem.
Z debugowaniem mds'a raczej nikt ci nie pomoże, to może być problem po stronie silnika gry wynikający z nietypowego zastosowania mdsa. To co ja widzę niepokojącego, to że w obu animacjach masz takie coś:
   *eventTag (3 "DEF_REMOVE_ITEM" "ZS_LEFTHAND" "dual3")
   *eventTag (8 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "dual3")
Co wydaje się nie mieć żadnego sensu.

Prosty i działający sposób:
zrób drugi miecz na slocie kuszy, przy zakładaniu go zakładaj overlay mds który przy wyciąganiu broni 1h przerzuca do prawej ręki zawartość slotu kuszy, a przy chowaniu tej broni robi na odwrót. Duale gotowe (trzeba tylko dorobić animacje i obsługę obrażeń).

Unelith

Unelith

Użytkownicy
posty40
  • Użytkownicy
Z tego co dobrze pamiętam, ale raczej pamiętam źle bo to było dawno, to umieściłem tam te linijki myśląc że to "może coś da", bez nich prawdopodobnie lepiej nie było, mógłbym w sumie spróbować te linijki usunąć, ale skoro mówisz że jest łatwiejszy sposób, to na czym on by miał się opierać?

EDIT: Dobrze, już widzę w poprzednim poście, tutaj robiłem nieco podobnie, chociaż widzę teraz że dziwne flagi dałem temu mieczowi drugiemu, no nic, za chwilę napiszę rezultat.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Właściwie nawet nie musisz robić specjalnego miecza, na razie to może być zwyczajna kusza. Po prostu w on_equip daj nakładanie overlay mds'a.

Do przerzucania między slotami użyj tego:
*eventSwapMesh (5 "ZS_CROSSBOW" "ZS_LEFTHAND")Jakby nie działało, to pokaż tutaj co wykombinowałeś.

Unelith

Unelith

Użytkownicy
posty40
  • Użytkownicy
Właśnie zdążyłem wykombinować jakiego eventu użyć, mam coś takiego:
        ani      ("T_RUN_2_1H"          1               "S_1H"           0.0 0.0  M. "HUM_1HSDRAWT3.ASC"           F  1  1)
        ani      ("S_1H"                1               "S_1H"           0.0 0.0  M. "HUM_1HSDRAWT3.ASC"           F  2  2)          
        ani      ("T_1H_2_1HRUN"        1               "S_1HRUN"        0.0 0.0  M. "HUM_1HSDRAWT3.ASC"           F  3  10)         
        {
            *eventTag (3 "DEF_FIGHTMODE"  "1H")
            *eventTag (3 "DEF_SWAPMESH" "ZS_CROSSBOW" "ZS_LEFTHAND")
            *eventTag (3 "DEF_DRAWSOUND")      
        }
        ani      ("T_1HRUN_2_1H"        1               "S_1H"           0.0 0.0  M. "HUM_1HSDRAWT3.ASC"           R  3  10)         
        {
            *eventTag (3 "DEF_FIGHTMODE")  
            *eventTag (3 "DEF_SWAPMESH" "ZS_CROSSBOW" "ZS_LEFTHAND")
            *eventTag (3 "DEF_UNDRAWSOUND")
        }
        aniAlias ("T_1H_2_RUN"          1               "S_RUN"          0.0 0.1  M. "T_RUN_2_1H"                  R)    
        ani            ("t_Move_2_1hMove"        2    ""                0.2    0.2    M.    "Hum_1hS_MoveReady_M01.asc"    F    1    24)
        {
            *eventTag        (6 "DEF_FIGHTMODE" "1H")
            *eventTag (6 "DEF_SWAPMESH" "ZS_CROSSBOW" "ZS_LEFTHAND")
            *eventTag        (6 "DEF_DRAWSOUND")
        }
        ani            ("t_1hMove_2_Move"        2    ""                0.2    0.2    M.    "Hum_1hS_MoveReady_M01.asc"    R    1    24)
        {
            *eventTag        (6 "DEF_UNDRAWSOUND")
            *eventTag (6 "DEF_SWAPMESH" "ZS_CROSSBOW" "ZS_LEFTHAND")
            *eventTag        (6 "DEF_FIGHTMODE")
        }      

I podobny problem co wtedy. Działa jak wyjmuję spacją, pod warunkiem że się nie poruszam. Jak biegnę i wyjmę miecz to mnie unieruchamia w stanie biegu. Jak wyciągam klikając 1, to najpierw mi wyjmuje tylko jeden miecz, ten główny, a jak schowam z pomocą 1 to wtedy nagle mi przełazi miecz ze slotu kuszy do jednej ręki, kiedy już nie jestem w stanie walki.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
To znaczy że definitywnie coś pojebałeś z tym przy których animkach mają dziać się eventy :D
Po co dajesz w overlaymdsie animacje których nie modyfikujesz? (T_RUN_2_1H, S_1H). Ogólnie jest tu więdzej dziwnych rzeczy.

Ma to wyglądać tak:
Nadpisujesz tylko animacje wyciągania i chowania broni i w nich dodajesz eventSwapMesh.

Wrzuć gdzieś standardowy humans.mds i mistrzowski overlay walki 1h to ci pomogę. Mój Gothic i mds'y już dawno padły ofiarą formatowania dysku.

Unelith

Unelith

Użytkownicy
posty40
  • Użytkownicy
Wycinek z humans.mds:
    // 1H - WEAPON
            ani            ("t_Run_2_1h"            1    "s_1h"            0.1 0.0 M.    "Hum_1hSDrawT0.asc"            F    1    3)
            ani            ("s_1h"                    1    "s_1h"            0.0 0.0 M.    "Hum_1hSDrawT0.asc"            F    4    4)
            ani            ("t_1h_2_1hRun"            1    "s_1hRun"        0.0 0.2 M.    "Hum_1hSDrawT0.asc"            F   5    24)
            {
                *eventTag        (5 "DEF_FIGHTMODE"    "1H")
                *eventTag        (5    "DEF_DRAWSOUND")
            }

            ani            ("t_1hRun_2_1h"            1    "s_1h"            0.0 0.0 M.    "Hum_1hSDrawT0.asc"            R     5    24)
            {
                *eventTag        (5    "DEF_UNDRAWSOUND")
                *eventTag        (5    "DEF_FIGHTMODE"    "")
            }
            aniAlias    ("t_1h_2_Run"            1    ""                0.0 0.2 M.    "t_Run_2_1h"                R)

        // Schwert beim Rennen ziehen
            ani            ("t_Move_2_1hMove"        2    ""                0.2    0.2    M.    "Hum_1hS_MoveReady_M01.asc"    F    1    24)
            {
                *eventTag        (6 "DEF_FIGHTMODE"    "1H")
                *eventTag        (6    "DEF_DRAWSOUND")
            }
            ani            ("t_1hMove_2_Move"        2    ""                0.2    0.2    M.    "Hum_1hS_MoveReady_M01.asc"    R    1    24)
            {
                *eventTag        (6    "DEF_UNDRAWSOUND")
                *eventTag        (6 "DEF_FIGHTMODE"    "")
            }
Wycinek z overlaya:
            ani            ("t_Run_2_1h"            1    "s_1h"            0.0 0.0 M.    "Hum_1hSDrawT3.asc"            F    1    1)
            ani            ("s_1h"                    1    "s_1h"            0.0 0.0 M.    "Hum_1hSDrawT3.asc"            F    2    2)
            ani            ("t_1h_2_1hRun"            1    "s_1hRun"        0.0 0.0 M.    "Hum_1hSDrawT3.asc"            F   3    10)
            {
                *eventTag        (3 "DEF_FIGHTMODE"    "1H")
                *eventTag        (3    "DEF_DRAWSOUND")
            }
            
            ani            ("t_1hRun_2_1h"            1    "s_1h"            0.0 0.0 M.    "Hum_1hSDrawT3.asc"            R   3    10)
            {
                *eventTag        (3 "DEF_FIGHTMODE"    "")
                *eventTag        (3    "DEF_UNDRAWSOUND")
            }
            aniAlias    ("t_1h_2_Run"            1    "s_Run"            0.0 0.1 M.    "t_Run_2_1h"                R)
Przy dodawaniu tego eventu sugerowałem się obecnością DRAW/UNDRAW_SOUND oraz DEF_FIGHTMODE.
 



inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Spróbuj tego:
Model ("HuS")
{
   meshAndTree ("Hum_Body_Naked0.ASC" DONT_USE_MESH)
   aniEnum
   {
      modelTag ("DEF_HIT_LIMB" "zs_RightHand")
      ani   ("t_1h_2_1hRun"      1   "s_1hRun"   0.0 0.0 M.   "Hum_1hSDrawT3.asc"         F   3   10)
      {
         *eventTag      (3   "DEF_FIGHTMODE"   "1H")
         *eventTag      (3   "DEF_DRAWSOUND")
         *eventSwapMesh   (3               "ZS_CROSSBOW"   "ZS_LEFTHAND")
         *eventTag      (5   "DEF_SWAPMESH"   "ZS_CROSSBOW"   "ZS_LEFTHAND")
      }
     
      ani   ("t_Move_2_1hMove"   2   ""         0.2   0.2   M.   "Hum_1hS_MoveReady_M01.asc"   F   1   24)
      {
         *eventTag      (6   "DEF_FIGHTMODE"   "1H")
         *eventTag      (6   "DEF_DRAWSOUND")
         *eventSwapMesh   (6               "ZS_CROSSBOW"   "ZS_LEFTHAND")
         *eventTag      (6   "DEF_SWAPMESH"   "ZS_CROSSBOW"   "ZS_LEFTHAND")
      }
     
      ani   ("t_1hRun_2_1h"      1   "s_1h"      0.0 0.0 M.   "Hum_1hSDrawT3.asc"         R   3   10)
      {
         *eventTag      (3   "DEF_FIGHTMODE"   "")
         *eventTag      (3   "DEF_UNDRAWSOUND")
         *eventSwapMesh   (6               "ZS_LEFTHAND"   "ZS_CROSSBOW")
         *eventTag      (6   "DEF_SWAPMESH"   "ZS_LEFTHAND"   "ZS_CROSSBOW")
      }
      ani   ("t_1hMove_2_Move"   2   ""         0.2   0.2   M.   "Hum_1hS_MoveReady_M01.asc"   R   1   24)
      {
         *eventTag      (6   "DEF_UNDRAWSOUND")
         *eventTag      (6   "DEF_FIGHTMODE"   "")
         *eventSwapMesh   (6               "ZS_LEFTHAND"   "ZS_CROSSBOW")
         *eventTag      (6   "DEF_SWAPMESH"   "ZS_LEFTHAND"   "ZS_CROSSBOW")
      }
   }
}
EventTag DEF_SWAPMESH to mój wynalazek z silnika, nie był nigdy użyty w oryginalnych mds'ach i zaznaczyem to w tutorialu (nawet nie wiem czy działa). Dodałem tak na wszelki wypadek, możesz spróbować go usunąć. Zamiast niego powinno używać się raczej eventSwapMesh.

Unelith

Unelith

Użytkownicy
posty40
  • Użytkownicy
Działa! Po usunięciu eventTag DEF_SWAPMESH, czyli ostatecznie w takiej formie:
Model ("HuS")
{
   meshAndTree ("Hum_Body_Naked0.ASC" DONT_USE_MESH)
   aniEnum
   {
      modelTag ("DEF_HIT_LIMB" "zs_RightHand")
      ani   ("t_1h_2_1hRun"      1   "s_1hRun"   0.0 0.0 M.   "Hum_1hSDrawT3.asc"         F   3   10)
      {
         *eventTag      (3   "DEF_FIGHTMODE"   "1H")
         *eventTag      (3   "DEF_DRAWSOUND")
         *eventSwapMesh   (3               "ZS_CROSSBOW"   "ZS_LEFTHAND")
      }
      
      ani   ("t_Move_2_1hMove"   2   ""         0.2   0.2   M.   "Hum_1hS_MoveReady_M01.asc"   F   1   24)
      {
         *eventTag      (6   "DEF_FIGHTMODE"   "1H")
         *eventTag      (6   "DEF_DRAWSOUND")
         *eventSwapMesh   (6               "ZS_CROSSBOW"   "ZS_LEFTHAND")
      }
      
      ani   ("t_1hRun_2_1h"      1   "s_1h"      0.0 0.0 M.   "Hum_1hSDrawT3.asc"         R   3   10)
      {
         *eventTag      (3   "DEF_FIGHTMODE"   "")
         *eventTag      (3   "DEF_UNDRAWSOUND")
         *eventSwapMesh   (6               "ZS_LEFTHAND"   "ZS_CROSSBOW")
      }
      ani   ("t_1hMove_2_Move"   2   ""         0.2   0.2   M.   "Hum_1hS_MoveReady_M01.asc"   R   1   24)
      {
         *eventTag      (6   "DEF_UNDRAWSOUND")
         *eventTag      (6   "DEF_FIGHTMODE"   "")
         *eventSwapMesh   (6               "ZS_LEFTHAND"   "ZS_CROSSBOW")
      }
   }
}
 


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