[G2NK] Przedmiot na określony poziom 4045 12

O temacie

Autor Shuieel™

Zaczęty 17.12.2011 roku

Wyświetleń 4045

Odpowiedzi 12

Shuieel™

Shuieel™

Użytkownicy
posty4
  • Użytkownicy
Witam, niedawno zacząłem pisać trochu skrypty do Gothic2 Noc Kruka, wg. poradników Czip17's obecnie w pisaniu banalnych skryptów broni zbroi itp.. jestem jasno-zielony, lecz chcę teraz zrobić coś więcej.
Dokładniej chodzi mi o broń/zbroje etc. Na określony poziom, bo ta cała wymagana siła/ zręczność mnie już nudzi .

Więc próbując z własnego doświadczenia zrobiłem na przykładzie tak:

INSTANCE angel_sword (C_Item)
{
name = "Miecz Posłańca";  

mainflag = ITEM_KAT_NF;
flags = ITEM_SWD;
material = MAT_METAL;

value = 1441;

damageTotal   = 194;
damagetype = DAM_EDGE;
range     =   120;

hero.level          =   35; // o ten fragment się rozchodzi. :P <---------------

cond_atr[2]   = ATR_DEXTERITY;
cond_value[2]   = 100;
visual = "ItMw_065_1h_sword_bastard_03.3DS";

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

Biorąc przykład ze skryptu pewnej runy, sądziłem że się uda, lecz tak nie było.

Przy kompilowaniu skryptu Spacerem wszystko idzie ładnie, lecz gdy wpisuję w grze kod na broń, wywala mi "Acces Vailation" czy jt.

Więc moje pytane jest nast. Czy wie ktoś jak zrobić broń na dany poziom? Gdy postać spełnia wymagany lev. zakłada broń, a jeśli nie spełnia wymagań nic się nie dzieje, lub wywala że za mały poziom.
Nie wiem czy zrobić to za pomocą warunku czy inaczej.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
INSTANCE ItMw_1h_Sld_Sword (C_Item)
{
name = "Kiepski miecz";  //SÖLDNER

mainflag = ITEM_KAT_NF;
flags = ITEM_AXE;
material = MAT_METAL;

value = Value_Sld1hSchwert;

damageTotal   = Damage_Sld1hSchwert;
damagetype = DAM_EDGE;
range     =   RANGE_Sld1hSchwert;

cond_atr[2]   = Level;         // Potrzebny poziom
cond_value[2]   = 35;            // Wymagany poziom
visual = "ItMw_025_1h_sld_sword_01.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;
};

Nie wiem czy działa, bo nie próbowałem.
 
: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.

Demonical Monk

Demonical Monk

Użytkownicy
posty145
Propsy152
  • Użytkownicy
Jak zwykle pieprzysz. ATR_DEXTERITY na pierwszy rzut oka wygląda na enumerację, szybkie przeszukiwanie plików...

Constants.d:
//
// NPC ATTRIBUTES
//

const int ATR_HITPOINTS =  0; // Lebenspunkte
const int ATR_HITPOINTS_MAX =  1; // Max. Lebenspunkte
const int ATR_MANA =  2; // Mana Mana
const int ATR_MANA_MAX =  3; // Mana Max

const int ATR_STRENGTH =  4; // Stärke
const int ATR_DEXTERITY =  5; // Geschick
const int ATR_REGENERATEHP =  6; // Regenerierung von HP alle x sekunden
const int ATR_REGENERATEMANA =  7;   // Regenerierung von Mana alle x sekunden

const int ATR_INDEX_MAX =  8;

cond_atr zapewne wyłącznie powyższe wartości łyknie, zanim znowu zaczniesz prawić głupoty sprawdź i nie odstawiaj rytuałów, albo trzymaj się z dala od tego działu.
 


Shuieel™

Shuieel™

Użytkownicy
posty4
  • Użytkownicy
INSTANCE angel_sword (C_Item)
{      
        name                            =       "Miecz Posłańca";  

        mainflag                        =       ITEM_KAT_NF;
        flags                           =       ITEM_SWD;      
        material                        =       MAT_METAL;

        value                           =       1441;

        damageTotal             =       194;
        damagetype                      =       DAM_EDGE;      
        range                           =       120;    
       
        cond_atr[2]             =       ATR_DEXTERITY;
        cond_value[2]           =       100;
        visual                          =       "ItMw_065_1h_sword_bastard_03.3DS";
       
        on_equip = Equip_mojeee;
on_unequip = UnEquip_mojeee;
       
        description                     = name;
        TEXT[2]                         = NAME_Damage;                                  COUNT[2]        =     damageTotal;
        TEXT[3]                         = NAME_Dex_needed;                              COUNT[3]        = cond_value[2];
        TEXT[4]                         = NAME_OneHanded;
        TEXT[5]                         = NAME_Value;                                   COUNT[5]        = value;
};

FUNC VOID Equip_mojeee()
    {
    if(hero.level == 35)
 
    };

FUNC VOID UnEquip_mojeee()
{
         
};

Okej, moje wstępne przemyślenia, dalej nie wiem o co bg. ; d
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

[G2NK] Przedmiot na określony poziom
#5 2011-12-17, 18:36(Ostatnia zmiana: 2011-12-17, 18:40)
Świetnie, ale to oczywiście za mało. To co jest pod itemem wymień na:
FUNC VOID Equip_mojeee()
    {
    if(self == hero && hero.level <= 35)
        {
        AI_UnequipWeapons(hero);
        print("Wymagany poziom: 35");
        };
    };
Funkcja on_uneqip nie jest w ogóle potrzebna, ale też nie przeszkadza.

Shuieel™

Shuieel™

Użytkownicy
posty4
  • Użytkownicy
Avallach, dziękuję za pomoc, lecz Twój kod nie działa, postać na 0 lvl'u normalnie zakłada broń.
Pokombinuję z Twoim kodem, być może się uda. :>

FUNC VOID Equip_mojeee()
    {
    if(hero.level == 35)
        {
        print("Broń Epicka");
        }else{
AI_UnequipWeapons(hero);
        print("Wymagany poziom: 35");
};
    };

Przekształciłem na swój sposób i działa.  ^^  Dziekuję wszystkim za pomoc ; *
 

Zysk

Zysk

Użytkownicy
posty606
Propsy451
  • Użytkownicy
self == hero jest nie poprawne. Zastąp przez Npc_isPlayer(self)
 

Silver

Silver

Użytkownicy
posty109
Propsy14
ProfesjaGracz
  • Użytkownicy
do usunięcia
 

Zysk

Zysk

Użytkownicy
posty606
Propsy451
  • Użytkownicy
Nie, dobrze napisał - jeśli level mały to zdejmij broń.
 

Silver

Silver

Użytkownicy
posty109
Propsy14
ProfesjaGracz
  • Użytkownicy
sory moja wina, nie uważnie przeczytałem skrypt
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

[G2NK] Przedmiot na określony poziom
#11 2011-12-17, 19:48(Ostatnia zmiana: 2011-12-17, 20:13)
self == hero jest nie poprawne. Zastąp przez Npc_isPlayer(self)
Dlaczego miałoby to nie być poprawne? Hero to zmienna przyporządkowywana przez grę do aktualnie sterowanej postaci, a self do postaci która jest podmiotem danej funkcji (w tym przypadku zakładającej broń).

Zysk

Zysk

Użytkownicy
posty606
Propsy451
  • Użytkownicy
Nie pamiętam na jakim poziomie to się wywala, ale porównywanie npców w ten sposób jest błędem. Dlatego w moim starożytnym tutorialu była funkcja CmpNpc. ( http://themodders.org/index.php?/topic/100-magiczna-bron/ ).
 


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