Kowalstwo 2313 18

O temacie

Autor CichoCiemnyGra

Zaczęty 1.01.2014 roku

Wyświetleń 2313

Odpowiedzi 18

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Witam. Chcialbym sie nauczyc robic skrypt, w ktorym robie wlasne miecze na kowadle. Zrobilem miecz, oraz skrypt do miecza, ale chcialbym, aby ten miecz robilo sie na kowadle, a nawet nie wiem jak sie nazywa plik ze skryptem kowalstwa. Prosze o pomoc.
 

szpaqszpaq

szpaqszpaq

Użytkownicy
posty33
Propsy6
ProfesjaGracz
  • Użytkownicy
Zobacz sobie to:
http://themodders.org/index.php?topic=99.0
A plik z monologiem do kowalstwa to SmithWeapon.d
 
Oi

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy

CichoCiemnyGra

Kowalstwo
#2 2014-01-01, 17:42(Ostatnia zmiana: 2014-01-01, 20:23)
Kopiowalem i wkleilem na samym dole skrypt miecza (ItMw_2H_Special_04) zmienilem to co trzeba, ale wykrywa mi problem:

INSTANCE PC_Mod_ItMw_2H_CzarnaRuda (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_Mod_ItMw_2H_CzarnaRuda_Condition;
   information      = PC_Mod_ItMw_2H_CzarnaRuda_Info;
   permanent      = TRUE;
};

FUNC INT PC_Mod_ItMw_2H_CzarnaRuda_Condition()
{   
   if((PLAYER_MOBSI_PRODUCTION   ==   MOBSI_SMITHWEAPON)
   && (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE))          //PROBLEM TO: [WEAPON_2H_CzarnaRuda]
   && (Erzwaffen == TRUE)
   {   
      return TRUE;
   };
};

FUNC VOID PC_Mod_ItMw_2H_CzarnaRuda_Info ()
{
   if (Npc_HasItems  (hero, ItMi_Zeitspalt_Addon) >= 4)
   && (Npc_HasItems  (hero, ItMiSwordbladehot) >= 1)
   && (Npc_HasItems  (hero, ItAt_DragonBlood) >= 2)
   && (Npc_HasItems  (hero, ItMi_Nugget) >= 2)
   {
      Npc_RemoveInvItems  (hero,ItMi_Zeitspalt_Addon,4);
      Npc_RemoveInvItems  (hero,ItMiSwordbladehot,1);
      Npc_RemoveInvItems  (hero,ItAt_DragonBlood,2);
      Npc_RemoveInvItems  (hero,ItMi_Nugget,2);
      
      CreateInvItems       (hero,Mod_ItMw_2H_CzarnaRuda,1);
      Print (PRINT_SmithSuccess);
   }
   else
   {
      Print (PRINT_ProdItemsMissing);
      CreateInvItems (self, ItMiSwordRaw,1);
   };   
   B_ENDPRODUCTIONDIALOG ();
   Erzwaffen = FALSE;
};

Prosze o pomoc.
 

szpaqszpaq

szpaqszpaq

Użytkownicy
posty33
Propsy6
ProfesjaGracz
  • Użytkownicy
Aż tak się w to nie zagłębiałem ale:
1. WEAPON_2H_CzarnaRuda musi byc zadeklrarowaną zmienną const int, jest to tylko indeks tablicy PLAYER_TALENT_SMITH.
2. Tablica PLAYER_TALENT_SMITH ma rozmiar 13 czyli indeks od 0-12
var int player_talent_smith[MAX_WEAPONS];
const int MAX_WEAPONS = 13;
Nigdy tego nie próbowałem ale jakbym miał zgadywać to zwiększ MAX_WEAPONS z 13 na 14 żeby zrobić dodatkowwego slota na swój miecz.
Pamiętaj żeby w którymś momencie ustawić PLAYER_TALENT_SMITH[twój slot] na true żeby bohater umiał wykuć twój miecz.
 
Oi

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
A wiesz, moze gdzie to Max_Weapons zmienic ?
 

szpaqszpaq

szpaqszpaq

Użytkownicy
posty33
Propsy6
ProfesjaGracz
  • Użytkownicy
Jeśli jeszcze nie masz to zainstaluj sobie gothic sourcer LINK Super program to skryptowania. Wszystkie funkcje, zmienne, instancje masz jak na tacy + kompilacja + normalne wyświetlanie błędów. Max_Weapons masz w constansts.d linijka 720
 
Oi

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy

CichoCiemnyGra

Kowalstwo
#6 2014-01-02, 11:17(Ostatnia zmiana: 2014-01-02, 12:15)
Zwiekszylem Max_Weapons z 13 na 20, ale nadal mam ten sam problem.

U:PAR: Unknow identifier: WEAPON_2H_CZARNARUDA ( line 622 )
W SmithWeapons.d jest jeszcze description. Mysle, ze to przez to mam ten problem.
Kopiowalem, wkleilem ponizej, i zmienilem pare nazw:
Kopiowalem:

PC_ItMw_2H_Special_04.description  =  ConcatStrings (NAME_ItMw_2H_Special_04, PRINT_Smith_2H_Special_04);
I zmienilem na:
PC_Mod_ItMw_2H_CzarnaRuda.description  =  ConcatStrings (NAME_Mod_ItMw_2H_CzarnaRuda, PRINT_Smith_2H_CzarnaRuda);
Jak to mam, to jest problem:
U:PAR: Unknow identifier: DESCRIPTION ( line iles tam )

Post połączony: 2014-01-02, 11:21
Co do programu, to ogarne go po zrobieniu tego skryptu :)

Post połączony: 2014-01-02, 12:15
W constants.d trzeba bylo napisac [WEAPON_*] z SmithWeapon.d. Jednak, gdy podchodze do kowadla i chce wykuc moj miecz, to nie widac nazwy miecza, oraz jego skladnikow, jest puste pole. np:
Magiczne ostrze na smoki (skladniki)
Duze magiczne ostrze na smoki (skladniki)
PUSTE POLE (nic nie widac, nawet skladnikow)
Wstecz
Koniec
Po napisaniu description, jest problem:
U:PAR: Unknow identifier: DESCRIPTION ( line 603 )
 

szpaqszpaq

szpaqszpaq

Użytkownicy
posty33
Propsy6
ProfesjaGracz
  • Użytkownicy
Unknown identifier znaczy zmienna niezadeklarowana. Na razie nie mam czasu. Potem się zagłębie i ci wytłumaczę wszystko.
 
Oi

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Chociaz mi powiedz co zrobic, aby bylo widac nazwy na kowadle.
 

Splash

Splash

Moderator
posty4135
Propsy3344
ProfesjaNierób
  • Moderator
Wywal to :
Cytuj
&& (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE))
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Tu chodzi o cos takiego:
http://iv.pl/images/28182334050937557299.jpg
Jest puste pole, wstecz i koniec. Nie widac nazwy miecza oraz skladnikow, ale jak klikne w to puste pole, to ten miecz sie tworzy. Mi chodzi o:
PC_ItMw_2H_Special_04.description  =  ConcatStrings (NAME_ItMw_2H_Special_04, PRINT_Smith_2H_Special_04);
(NAME_ItMw_2H_Special_04, PRINT_Smith_2H_Special_04)
NAME = Duze magiczne ostrze na smoki, PRINT = (skladniki)
 

Splash

Splash

Moderator
posty4135
Propsy3344
ProfesjaNierób
  • Moderator
Cytuj
INSTANCE PC_Mod_ItMw_2H_CzarnaRuda (C_INFO)
{
    npc                = PC_Hero;
    nr                = 900;
    condition        = PC_Mod_ItMw_2H_CzarnaRuda_Condition;
    information        = PC_Mod_ItMw_2H_CzarnaRuda_Info;
    permanent        = TRUE;
    description        = "Nazwa miecza";
};

FUNC INT PC_Mod_ItMw_2H_CzarnaRuda_Condition()
{    
    if (PLAYER_MOBSI_PRODUCTION == MOBSI_SMITHWEAPON)
    {    
        return TRUE;
    };
};

FUNC VOID PC_Mod_ItMw_2H_CzarnaRuda_Info ()
{
    if (Npc_HasItems  (hero, ItMi_Zeitspalt_Addon) >= 4)
    && (Npc_HasItems  (hero, ItMiSwordbladehot) >= 1)
    && (Npc_HasItems  (hero, ItAt_DragonBlood) >= 2)
    && (Npc_HasItems  (hero, ItMi_Nugget) >= 2)
    {
    Npc_RemoveInvItems  (hero,ItMi_Zeitspalt_Addon,4);
    Npc_RemoveInvItems  (hero,ItMiSwordbladehot,1);
    Npc_RemoveInvItems  (hero,ItAt_DragonBlood,2);
    Npc_RemoveInvItems  (hero,ItMi_Nugget,2);
    CreateInvItems (hero, Mod_ItMw_2H_CzarnaRuda,1);
    Print (PRINT_SmithSuccess);
    }
    else
    {
    Print (PRINT_ProdItemsMissing);
    CreateInvItems (self, ItMiSwordRaw,1);
    };    
    B_ENDPRODUCTIONDIALOG ();
    Erzwaffen = FALSE;
};
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Jak sie to usunie to chyba nie bedzie sie moglo nauczyc kuc tej broni ??
&& (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE))
 

Splash

Splash

Moderator
posty4135
Propsy3344
ProfesjaNierób
  • Moderator
Tak, ale jest kilka sposobów aby można było się nauczyć wykuwania jej. Np. zmienne lub aivary, które są lepsze, bo je można przypisać danej postaci, ale ich liczba jest ograniczona chyba do 99, a jest ich chyba 87.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
A jak bym ta linijke dodal to co by sie stalo ??
Jaki jest inny sposob nauczenia sie:

&& (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE))
Jestem zielony :/
 

Splash

Splash

Moderator
posty4135
Propsy3344
ProfesjaNierób
  • Moderator
Możesz zrobić tak :
Np. w pliku z monologiem zrobić aivar. Tylko nie rób go funkcji tylko poza nią. Np. na samej górze pliku.
Cytuj
const int AIV_ModSword = 89;
W funkcji dialogu nauczania :
Cytuj
self.aivar[AIV_ModSword] = true;
lub jeśli ma się uczyć tych broni po kolei
Cytuj
self.aivar[AIV_ModSword] = +1;
i zamiast tego
Cytuj
&& (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE))
Napisać to :
Cytuj
&& (hero.aivar[AIV_ModSword] == true)
albo
Cytuj
&& (hero.aivar[AIV_ModSword] == 1)

1 lub więcej zależnie od stopnia nauczenia.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy

CichoCiemnyGra

Kowalstwo
#16 2014-01-02, 17:20(Ostatnia zmiana: 2014-01-02, 20:45)
const int AIV_ModSword = 89; mam napisac w SmithWeapon.d Przy robieniu nowych mieczy zwiekszyc liczbe 89 ?
self.aivar[AIV_ModSword] = true; mam napisac w constants.d

INSTANCE PC_Mod_ItMw_2H_CzarnaRuda (C_INFO)
{
    npc              = PC_Hero;
    nr               = 900; - Przy robieniu nowych mieczy, zwiekszyc liczbe ?
    condition        = PC_Mod_ItMw_2H_CzarnaRuda_Condition;
    information      = PC_Mod_ItMw_2H_CzarnaRuda_Info;
    permanent        = TRUE;
    description      = "Miecz z czarnej rudy";
};

FUNC INT PC_Mod_ItMw_2H_CzarnaRuda_Condition()
{   
   if((PLAYER_MOBSI_PRODUCTION   ==   MOBSI_SMITHWEAPON)
   && (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE)) - Zamienic na: && (hero.aivar[AIV_ModSword] == true)
   && (Erzwaffen == TRUE)
   {   
      return TRUE;
   };
};

[AIV_ModSword] - Zamiast ModSword mozna napisac co sie chce ?

Pierwszy raz robie zmienne i nie wiem czy tak ma byc :/

Post połączony: 2014-01-02, 17:37
To sie bedzie uczyc z kartki, wiec   self.aivar[AIV_ModSword] = +1;   jest niepotrzebne
 

szpaqszpaq

szpaqszpaq

Użytkownicy
posty33
Propsy6
ProfesjaGracz
  • Użytkownicy

szpaqszpaq

Kowalstwo
#17 2014-01-02, 23:47(Ostatnia zmiana: 2014-01-03, 00:02)
Właśnie próbowałem zrobić własny monolog do robienia miecza i oto minimalne wymagania:
1. Własny slot w tablicy player_talent_smith (plik constants.d)
    a. zwiększ zmienną MAX_WEAPONS np. const int MAX_WEAPONS = 14;
    b. dopisz stałą która będzie odpowiadać za umiejętność wykucia twojego miecza np. const int WEAPON_2H_CzarnaRuda = 13;
2. W momencie kiedy bohater nauczy się wykuwać ten miecz ustawić ją na TRUE: player_talent_smith[WEAPON_2H_CzarnaRuda] = TRUE;
3. Stworzyć monolog (w tym przypadku gracz wykuwa topór barbarzyński):
    a. Tworzenie miecza:
Cytuj
instance PC_super(C_Info)
{
    npc = PC_Hero;
    //nazwa funkcji warunkowej żeby opcja pojawiła się w menu
    condition = PC_super_con;
    information = PC_super_info;
    description = "Wykuj topór"
    permanent = TRUE;
};

////Funkcja warunkowa: Normalwaffen == TRUE oznaczna że opcja pojawi się w broni zwykłej
////PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE oznacza ze bohater potrafi wykuć ten konkretny miecz
////w tym przypadku funkcja nie sprawdza czy bohater posiada jakieś przedmioty, miecz jest darmowy
func int PC_super_con()
{
    if((PLAYER_MOBSI_PRODUCTION == MOBSI_SmithWeapon) && (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE) && (Normalwaffen == TRUE))
    {
        return TRUE;
    };
};

//funkcja która zostanie wywołana bo wybraniu opcji  "Wykuj topór"
//w tym przypadku dodawany jest nowy miecz który nic nie kosztuje (nie zabiera żadnych surowców)
func void PC_super_info()
{

    CreateInvItems(hero,ItMw_Barbarenstreitaxt,1);
    Print(PRINT_SmithSuccess);
    b_endproductiondialog();
    Normalwaffen = FALSE;
};
To chyba wszystko
 
Oi

CichoCiemnyGra

CichoCiemnyGra

Użytkownicy
posty51
Propsy2
Profesjabrak
  • Użytkownicy
Juz mam. Wystarczy dopisac "description".
INSTANCE PC_Mod_ItMw_2H_CzarnaRuda (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_Mod_ItMw_2H_CzarnaRuda_Condition;
   information      = PC_Mod_ItMw_2H_CzarnaRuda_Info;
   permanent      = TRUE;
   description      = "Nazwa Miecza (skladniki)";
};
To moze zostac:
&& (PLAYER_TALENT_SMITH[WEAPON_2H_CzarnaRuda] == TRUE))

Dzieki za pomoc :)
 


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