Tabela doświadczenia 11982 10

O temacie

Autor Polson

Zaczęty 21.07.2011 roku

Wyświetleń 11982

Odpowiedzi 10

Polson

Polson

Użytkownicy
posty4
Propsy1
  • Użytkownicy

Polson

Tabela doświadczenia
2011-07-21, 21:36(Ostatnia zmiana: 2011-07-22, 16:37)
Pytanie kieruje do osób, które potrafią zmienić tabele doświadczenia.
Chciałbym żeby doświadczenie postępowało tak jak w zwykłym Gothicu.

Gothic            /          Gothic MT 2.02
 1. 500............                    1. 500
 2. 1500  .........                   2. 1500
 3. 3000  .........                   3. 3000
 4. 5000   .........                  4. 5000
 5. 7500    .........                 5. 7500
 6. 10500  .......                  6. 10500
 7. 14000  .......                  7. 14000
 8. 18000   ......                 8. 22000
 9. 22500  ......                      9. 31000
10. 27500   ....                     10. 41000

Pogrubioną czcionką zaznaczyłem skok wymaganego doświadczenia na lvl.
Mam nadzieje, że ktoś może mi pomóc ;/
 

Kain

Kain

Użytkownicy
RAP-Fanatyk
posty311
Propsy100
  • Użytkownicy
  • RAP-Fanatyk

Kain

Tabela doświadczenia
#1 2011-07-22, 00:03(Ostatnia zmiana: 2011-07-22, 00:06)
To chyba nie ten dział tak sądzę...

dobrze sądzisz, już przeniosłem :ok:
 

Polson

Polson

Użytkownicy
posty4
Propsy1
  • Użytkownicy
Trzeba przyznać, że mi bardzo pomogliście...
 

EdekSumo

EdekSumo

Wyspa Khorinis
posty1739
Propsy925
ProfesjaLvl designer
  • Wyspa Khorinis
Bo nikt nie będzie da Cb całego moda przerabiał :ayfkm:
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Zmień plik B_GiveXP.d znajdujący się w katalogu C:\Program Files\Piranha Bytes\Gothic\_Work\Data\Scripts\Content\Story\B\

Polson

Polson

Użytkownicy
posty4
Propsy1
  • Użytkownicy
@Adanos
Nie za bardzo wiem co dalej?

const int   LP_PER_LEVEL            = 10;   // Lernpunkte pro Spieler-Stufe
//const int   HP_PER_LEVEL            = 15;   // Lebenspunkte pro Spieler-Stufe
const int   XP_PER_LEVEL_UNCONSCIOUS   = 5;   // Erfahrungspunkte für das Besiegen eines Gegners (pro Level Gegners)
const int   XP_PER_LEVEL_DEAD         = 10;   // Erfahrungspunkte für das Töten eines Gegners (pro Level Gegners)


func void B_GiveXP (var int add_xp)
{
   PrintDebugNpc   (PD_ZS_FRAME,   "B_GiveXP");

   var int   HP_PER_LEVEL;
   
   if (hero.level > 40)
   {
      HP_PER_LEVEL = 1;
   }else
   if (hero.level > 30)
   {
      HP_PER_LEVEL = 5;
         }else
   if (hero.level > 20)
   {
      HP_PER_LEVEL = 10;
   }else
   if (hero.level > 10)
   {
      HP_PER_LEVEL = 10;
   }else
   {
      HP_PER_LEVEL = 15;
   };
   
   if (hero.level == 0)
   {
      hero.exp_next = 500;
   };
   //----------------------------------------------------------------------------
   hero.exp = hero.exp + add_xp;

   //----------------------------------------------------------------------------
   var string msg;
   msg = NAME_XPGained;
   msg = ConcatStrings(msg,   IntToString(add_xp));
   PrintScreen   (msg, -1,_YPOS_MESSAGE_XPGAINED,"font_old_10_white.tga",_TIME_MESSAGE_XPGAINED);

   //----------------------------------------------------------------------------
   if ( hero.exp >= hero.exp_next ) // ( XP > (500*((hero.level+2)/2)*(hero.level+1)) )
   {
      hero.level = hero.level+1;
      hero.exp_next = hero.exp_next +((hero.level+1)*500*((hero.level/7)+1));
      hero.attribute[ATR_HITPOINTS_MAX] = hero.attribute[ATR_HITPOINTS_MAX]+HP_PER_LEVEL;
      hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS]+HP_PER_LEVEL;
      hero.LP = hero.LP + LP_PER_LEVEL;            //+ hero.level;
      PrintScreen      (NAME_LevelUp, -1,_YPOS_MESSAGE_LEVELUP,"font_old_20_white.tga",_TIME_MESSAGE_LEVELUP);
      Snd_Play      ("LevelUp");
   };
};

func void B_DeathXP()
{
   PrintDebugNpc      (PD_ZS_FRAME,   "B_DeathXP");
   PrintGlobals      (PD_ZS_CHECK);
   
   if   C_NpcIsHuman(self)
   &&   Npc_WasInState(self, ZS_Unconscious)
   {
      PrintDebugNpc   (PD_ZS_CHECK,   "...Opfer ist bewußtloser Mensch!");
      // SN: keine XP für Finishing-Move!!!
   }
   else
   {
      PrintDebugNpc   (PD_ZS_CHECK,   "...Opfer ist entweder nicht bewußtlos oder kein Mensch!");
      B_GiveXP (self.level * XP_PER_LEVEL_DEAD);
   };
};

func void B_UnconciousXP()
{
   PrintDebugNpc   (PD_ZS_FRAME,   "B_UnconciousXP");
   PrintGlobals   (PD_ZS_CHECK);
      
   //-------- Erfahrung nur beim ersten Sieg über Menschen --------
   if   !C_NpcIsHuman(self)
   ||   !self.aivar[AIV_WASDEFEATEDBYSC]
   {
      PrintDebugNpc   (PD_ZS_CHECK,   "...erster Sieg!");
      B_GiveXP (self.level * XP_PER_LEVEL_DEAD);      // die vollen XP beim Sieg vergeben, da finishing-Move keine XPs mehr ergibt!
   };
};
 

krupam

krupam

Użytkownicy
posty105
Propsy43
Profesjabrak
  • Użytkownicy
if ( hero.exp >= hero.exp_next ) // ( XP > (500*((hero.level+2)/2)*(hero.level+1)) )
{
hero.level = hero.level+1;
hero.exp_next = hero.exp_next +((hero.level+1)*500*((hero.level/7)+1));
hero.attribute[ATR_HITPOINTS_MAX] = hero.attribute[ATR_HITPOINTS_MAX]+HP_PER_LEVEL;
hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS]+HP_PER_LEVEL;
hero.LP = hero.LP + LP_PER_LEVEL; //+ hero.level;
PrintScreen (NAME_LevelUp, -1,_YPOS_MESSAGE_LEVELUP,"font_old_20_white.tga",_TIME_MESSAGE_LEVELUP);
Snd_Play ("LevelUp");
};

Masz linijkę:
hero.exp_next = hero.exp_next +((hero.level+1)*500*((hero.level/7)+1));Zmieniasz jak chcesz i masz.
 

Polson

Polson

Użytkownicy
posty4
Propsy1
  • Użytkownicy

Polson

Tabela doświadczenia
#7 2011-07-23, 20:25(Ostatnia zmiana: 2011-07-24, 02:09)
Zamieniłem, ale nadal jest to samo.

Może jest jakiś błąd?

@edit

Dopiero teraz się dowiedziałem, że źle to robie, mało tego nawet z pomocą poradnika nie wiem jak to zrobić. Nie wiem nawet jak zacząć.

Dasz rade pomóc za pomocą GG albo Skype?
 

JellyBorn

JellyBorn

Użytkownicy
posty3
Profesjabrak
  • Użytkownicy
Odkopuję i to mocno, natomiast nie bardzo mogę znaleźć rozwiązanie mojego problemu. Wydaje mi się, że robię wszystko dokładnie tak, jak powinienem. Za pomocą materiałów dodatkowych w MT 2.02 zmieniam plik odpowiadający za tabelę doświadczenia, tworzę plik .mod VDFS'em, następnie wklejam go w odpowiednie miejsce w folderze Gothica i zmieniam pliki źródłowe moda, uwzględniając mój odpowiadający za skrypty zamiast pierwotnego. Mimo wszystko nadal nic to nie zmienia. ;x Nie chciałem zakładać nowego wątku, bo ten bezpośrednio dotyczy dokładnie tego samego. :D
 

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Jak zapakowałeś skrypty? I czy są one skompilowane?
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

JellyBorn

JellyBorn

Użytkownicy
posty3
Profesjabrak
  • Użytkownicy
Oho, to chyba już wiem co poszło nie tak, bo nie zrobiłem ani jednego, ani drugiego. :D
 


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