Duale 15515 8

O temacie

Autor Zkirtaem

Zaczęty 24.05.2009 roku

Wyświetleń 15515

Odpowiedzi 8

Zkirtaem

Zkirtaem

Moderator
Mięso
posty2171
Propsy1689
ProfesjaGracz
  • Moderator
  • Mięso

Zkirtaem
Moderator

Duale
2009-05-24, 13:41(Ostatnia zmiana: 2011-01-06, 13:28)
Cytat: Dekster#msgote author=Dekster
Społeczność internetowa, ba, ogólnie społeczność buduje się, gdy ludzie pomagają sobie nawzajem, nie oczekując nic wielkiego w zamian.

Skłoniło mnie to do pewnych refleksji. Nie będę się rozpisywał - po prostu dam duale. Metoda oczywiście nie jest tą, której używają w Czasie Zapłaty czy Gniewie Beliara - myślę, że to byłoby wobec CZ nieco nietaktowne, a wobec GB byłoby to zdradą
To po prostu prymityw wymyślony przeze mnie w kilka minut.

Nie napiszę tutaj, jak robić animację, czy cokolwiek innego. Po prostu - MDS, jak skompilować MDS i skrypt miecza.

Zaczynamy.

Miecz:
1.
Cytuj
INSTANCE dual1(C_Item)
{
    name              =    Dual;

    mainflag          =    ITEM_KAT_NF;
    flags              =    ITEM_SWD;
    material          =    MAT_WOOD;

    value              =    300;
   
    on_equip            =    Equip_dual;
    on_unequip            =    UnEquip_dual;

    damageTotal            =    130;
    damagetype            =    DAM_POINT;

    munition            =    dual2;

    cond_atr[2]         =    ATR_STRENGTH;
    cond_value[2]          =    65;
    visual              =    DUAL.3DS;

    description            = name;
    TEXT[2]                = NAME_Damage;                    COUNT[2]    = damageTotal;
    TEXT[3]          = NAME_Dex_needed;                COUNT[3]    = cond_value[2];
    TEXT[5]                = NAME_Value;                    COUNT[5]    = value;
};

FUNC INT Equip_dual()
{
    Mdl_ApplyOverlayMds(self,DUAL.mds);
};

FUNC VOID UnEquip_dual()
{
    Mdl_RemoveOverlayMds(self,DUAL.mds);
};

2.
Cytuj
INSTANCE dual2(C_Item)
{
    name              =    Dual;

    mainflag          =    ITEM_KAT_NF;
    flags              =    ITEM_SWD;
    material          =    MAT_WOOD;

    value              =    300;
   
    on_equip            =    Equip_dual;
    on_unequip            =    UnEquip_dual;

    damageTotal            =    130;
    damagetype            =    DAM_POINT;
    munition            =    dual1;
    cond_atr[2]         =    ATR_STRENGTH;
    cond_value[2]          =    65;
    visual              =    DUAL.3DS;

    description            = name;
    TEXT[2]                = NAME_Damage;                    COUNT[2]    = damageTotal;
    TEXT[3]          = NAME_Dex_needed;                COUNT[3]    = cond_value[2];
    TEXT[5]                = NAME_Value;                    COUNT[5]    = value;
};

MDS:

1. Robimy nowego MDSa <Folder=_Work\Data\ANIMS\NAZWAMDS.MDS>;
2. Jak robić MDSa, animacje, itepe? Nie napiszę.
3. Podczas wyciągania i chowania dodajemy:

Cytuj
//WYCIĄGANIE
            ani            (t_Run_2_1h            1    s_1h            0.1 0.0 M.    DUAL01.asc            F    1    3    FPS:10)
            ani            (s_1h                    1    s_1h            0.0 0.0 M.    DUAL01.asc            F    4    4    FPS:10)
            ani            (t_1h_2_1hRun            1    s_1hRun        0.0 0.1 M.    DUAL01.asc            F   1    7    FPS:10)
            {
                *eventTag        (5 DEF_FIGHTMODE    1H)
               *eventTag        (9    DEF_PLACE_MUNITION    ZS_LEFTHAND)
                *eventTag        (5    DEF_DRAWSOUND)
            }
         

            ani            (t_1hRun_2_1h            1    s_1h            0.1 0.0 M.    DUAL01.asc            R   1    7    FPS:10)
            {
                *eventTag        (5 DEF_FIGHTMODE    )
               *eventTag        (9    DEF_REMOVE_MUNITION)
                *eventTag        (5    DEF_UNDRAWSOUND)
            }
            aniAlias    (t_1h_2_Run            1    s_Run            0.0 0.1 M.    t_Run_2_1h                R)

Amen, szczęść Boże, do widzenia. Dodam jeszcze na koniec, że ta metoda nie nadaje się do normalnego moda - drugi miecz jest wyciągany znikąd, nie da się wybrać, jaki miecz ma być tym drugim, nie widać go na ciele postaci, po prostu czysto techniczna zabawka.

A jak chcesz to gdzieś skopiować, to ja jestem autorem - i tak pisz.



Masz problem - pisz w Pytaniach/problemach, na GG/PW NIE ODPOWIADAM.



edicik:
tu zrobię listę żałosnych ludzi. Już mam jednego:

http://replays.pl/forum/temat/9150/
 

Alexior

Alexior

Użytkownicy
posty94
Propsy61
  • Użytkownicy

Alexior

Duale
#1 2011-08-18, 23:15(Ostatnia zmiana: 2011-08-19, 09:29)
Witam wszystkich, jako iż jest to mój pierwszy tutorial proszę o wyrozumiałość...
A więc tak tworzymy sobie miecz:
instance dual_01 (dual)
{
name ="Dual";

mainflag =ITEM_KAT_MAGIC;
flags =ITEM_BELT | ITEM_MULTI;
material =MAT_METAL;

value =5000;

damageTotal =200;
damagetype =DAM_EDGE;
range     = Range_Rubinklinge;

on_equip = Equip_dual;
on_unequip = unEquip_dual;

cond_atr[2]   = ATR_STRENGTH;
cond_value[2]   = 10;
visual ="Jakiś_tam_miecz.3ds";

description = name;
TEXT[2] = NAME_Damage; COUNT[2] = damageTotal;
TEXT[3] = NAME_Str_needed; COUNT[3] = cond_value[2];
TEXT[4] = NAME_OneHanded;
TEXT[5] = NAME_Value; COUNT[5] = value;
};

Wyjaśnień chyba nie potrzeba.. jeżeli tak macie inne tutoriale o tym. :D
Musimy dodać jeszcze funkcje equip i unequip czyli:
FUNC INT Equip_dual()
{
AI_ReadyMeleeWeapon(self);

AI_RemoveWeapon(self);

Mdl_ApplyOverlayMds(self,"HumanS_Duals.mds");
};

FUNC VOID UnEquip_dual()
{
Mdl_RemoveOverlayMds(self,"HumanS_Duals.mds");
};

ReadyMeleeWeapon jest po to żeby broń pojawiła się nam na plecach.
RemoveWeapon aby ja schował, bo nie chcemy przy każdym założeniu by ją wyciągał...

Teraz tworzymy MDS, a w nim dodajemy (podczas animacji: biegania, wyciągania,chowania miecza itp.).
// Przy wyciaganiu bieganiu itp.
*eventTag (3  "DEF_REMOVE_ITEM" "ZS_CROSSBOW" "Instance Itema")
*eventTag (3  "DEF_REMOVE_ITEM" "ZS_LEFTHAND" "Instance Itema")
// Na wszelki wypadek usuwamy oba :)
*eventTag (8 "DEF_CREATE_ITEM" "ZS_LEFTHAND" "Instance Itema")
//Przy chowaniu
*eventTag (3  "DEF_REMOVE_ITEM" "ZS_LEFTHAND" "Instance Itema")
*eventTag (2 "DEF_CREATE_ITEM" "ZS_CROSSBOW" "Instance Itema")
// Mozna zamiast ZS_CROSSBOW dac inne np. ZS_SHIELD, ZS_LONGSWORD, ZS_SWORD itp.

Kompilujemy MDS'a i skrypt, włączamy grę i cieszymy się dualami. :)

Pozwalam na kopiowanie pod warunkiem dopisania, że jestem autorem.
Mogłem coś pominąć, jeżeli tak proszę o info.
Pozdrawiam Alexior
 

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator
Skoro definiujesz instance w mds'ie, to to będą albo duale w których przez całą grę jest tylko jeden "lewy" miecz. Nawet jeśli tworzyć mnóstwo tych overlay mds'ów, to i tak miecze występowałyby tylko parami (że dany prawy jest zawsze z danym lewym). Lewego miecza w ogóle tutaj nie zakładasz. Trochę słaby sposób. Rozumiem że testowane?

Zkirtaem

Zkirtaem

Moderator
Mięso
posty2171
Propsy1689
ProfesjaGracz
  • Moderator
  • Mięso

Zkirtaem
Moderator

Duale
#3 2011-08-19, 14:50(Ostatnia zmiana: 2011-08-19, 15:06)
To dobry sposób, tylko wymagający niewielkiej przeróbki:

1. Zrobić, żeby dual był "kuszą" - żeby zakładał się na ZS_CROSSBOW;
2. w funkcjach zakładania i zdejmowania przydałoby się dodać odtwarzanie animacji przenoszącej go z ZS_CROSSBOW do ZS_GDZIETAMSOBIECHCEMY i w drugą stronę przy zdejmowaniu;

W sumie chyba tyle. Jest wtedy parę problemów, bo przy wpadaniu do wody i umieraniu miecz zostaje w ręku i nie wypada, ale i tak jest fajnie. of korz mds ma obejmować walkę mieczem jednoręcznym, ale z dodaną drugą łapą.


...czekajzaraz, przeczytałem tutek jeszcze raz. W jaki sposób zakładasz dual jako PAS, a potem przenosisz go z KUSZY na inny zs?
 


Alexior

Alexior

Użytkownicy
posty94
Propsy61
  • Użytkownicy

Alexior

Duale
#5 2011-08-19, 19:30(Ostatnia zmiana: 2011-08-19, 19:34)
To proste, może wyjaśnię to krok po kroku. :D
1. Zakładamy jakiś sword, pojawia on nam się przy boku tam gdzie powinien być.
2. Zakładamy drugą broń która jest pasem o wyglądzie miecza.
3. Pas (miecz nr.2) przy zakladaniu od razu wyciąga nam broń co się równa z tym, że miecz pojawi się nam na slocie do kuszy co jest zawarte w mds. :)
4. Gdy wyciągamy broń, normalny miecz pojawi się w prawej, a drugi miecz (pas) zostanie usunięty z poprzedniego miejsca (ZS_CROSSBOW - kuszy) i pojawi się w lewym ręku itd.
5. Nie jest to jakieś skomplikowanie ale wiadomo za prostotę się coś płaci... :D  a zapłatą będą bugi.

@Avallach - Nie jest do niczego, można ją dopracować - dzięki czemu będą to całkiem niezłe duale.
Osobiście uważam, że wariant z kuszą jest niezły ale nie można wtedy założyć żadnej broni dystansowej co jest dla mnie kompletną porażka, jedyne wyjście jest takie, żeby próbować, aż się uda. :)
EDIT:
Testowane, u mnie wszystko działa. Nie są to w pełni duale... wiadomo tych w pełni sprawnych tutaj nie dodam. :)
Może twoja metoda jest lepsza, aczkolwiek ta może przydać się do wielu innych rzeczy, nie będę tutaj wymieniał jakich, sami się domyślcie.
 

Zkirtaem

Zkirtaem

Moderator
Mięso
posty2171
Propsy1689
ProfesjaGracz
  • Moderator
  • Mięso
ale w jaki sposób zakładasz pas, a dual pojawia się na zs_crossbow to wciąż nie łapię : |
 

Alexior

Alexior

Użytkownicy
posty94
Propsy61
  • Użytkownicy
Po prostu, zakładasz pas odpala się funkcja wyciągania broni, w której zawarte jest pojawienie się modelu 3DS na ZS_CROSSBOW. Dzieję się to tak - zakładasz broń, odpalana jest funkcja wyciągania, w której jest zawarte ze bron pojawia sie na plecach dzieki create item, a potem jest ona chowana, wszystko jest w EQUIP.
za wszelakie b ledy przepraszam ale jestem troche po promilach i wiecie jak to jest :D
Pozdro ziomy z themodders,
oraz szacun dla tych, którzy modują i się nie poddają. :)
 

inż. Avallach

inż. Avallach

Administrator
posty7662
Propsy5238
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Duale
#8 2014-10-26, 14:16(Ostatnia zmiana: 2014-10-26, 14:22)
Napisane w 5 minut w odpowiedzi na ten temat duale:
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")
      }
   }
}
To właśnie jest metoda z kuszą o której pisałem parę postów wyżej (ponad 3 lata temu :lol2:).
Sposób użycia: zrób kuszę która wygląda jak miecz i która w on_equip nakłada na postać powyższy overlaymds (i która nie ma ustawionej amunicji).

Bronie będą wtedy wyciągane na raz. We własnym zakresie trzeba skombinować animacje, wymagania i zwiększanie obrażeń. Da się zrobić żeby każdy miecz mógł być użyty jako "lewy", ale to już więcej roboty.

Dość ironiczne jest to że nigdy nie napisałem tego kiedy ludzie prosili o gotowca, zrobiłem to dopiero w odpowiedzi na temat "To NIE prośba o gotowe duale" :lol2:


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