Wywoływanie skryptu 2980 13

O temacie

Autor Mr Prezesinho

Zaczęty 12.08.2009 roku

Wyświetleń 2980

Odpowiedzi 13

Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy

Mr Prezesinho

Wywoływanie skryptu
2009-08-12, 14:31(Ostatnia zmiana: 2009-08-12, 14:46)
Witam,
Dawno tu nie zaglądałem, a widzę, że sporo osób próbuje zrobić umiejętność regeneracja. Ja też postanowiłem spróbować. Niestety nie wiem jak wywołać np. 5hp na 1 sekundę. Chodzi mi o właściwe napisanie zmiennych. Sam próbowałem kilka razy, niestety bez rezultatu.

Z góry dzięki :lol2:


[Gothic I]
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.



Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy
Tak, wiem, czytałem go, ale na końcu autor napisał cyt. "
Aha, i jeszcze trzeba zrobić zmienną która się zwiększa o 1 i jeśli ma np: watrość 8 (w przypadku skrypty co 1/8 sec) to skrypt się wywołuje (regeneracja np: 1 hp/sec ), ale to już chyba sami potraficie zrobić"

Właśnie z tym nie mogę sobie poradzić.
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.


Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Wywoływanie skryptu
#3 2009-08-13, 11:40(Ostatnia zmiana: 2009-08-13, 11:47)
Na początku tego tutorialu pisze:
var int level_regeneracji;
const int HP_lvl_1 = 1;
const int HP_lvl_2 = 3;
const int HP_lvl_3 = 5;
// można zrobić jeszcze więcej levelów;)

To są stałe, no i jedna zmienna. Możesz zmienić wartości na jaką chcesz.

EDIT A jeśli chodzi ci o tą zmienną, to robisz jakąś zmienną.
var int zmienna;i później
if (hero.attribute[ATR_HITPOINTS] > 0)
   {
 zmienna +=1;
 if (level_regeneracji == 1) && (zmienna == 8)
 {
 hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_lvl_1;
 zmienna = 0;
 };
   };

Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy
To są zmienne do dodawania HP, ale nie wiem jak napisać zmienną czasu, w jakim ma się regenerować to hp, czyli np.
const int HP_lvl_3 = 5; czyli 5 hp żeby regenerowało się np. w 3 sec. aż do naładowania całego hp
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.



Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy
Ok dzięki.
Zaraz sprawdzę:lol2:
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.


Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy
// ******************
// B_TeachRegenerate
// ******************

var int Reglvl;
Reglvl = 1;

var int PerSec;
PerSec = 1;

const int HP_lvl;
HP_lvl = 5;

func int B_TeachRegenerate (var C_NPC slf, var C_NPC oth, var int regenerate)
{
   // ------ Kosten festlegen ------
   var int kosten;
   kosten = B_GetLearnCostTalent(oth, NPC_TALENT_REGENERATE, regenerate);
   
   
   // EXIT IF...
   
   // Złe parametry
   if (slf.attribute[ATR_MANA_MAX] < 100) && (slf.attribute[ATR_HITPOINTS_MAX] < 500)
   {
      PrintScreen   (PRINT_NotEnoughHpMn, -1, -1, FONT_Screen, 2);
      return FALSE;
   };
   
   // Za mała ilość punktów nauki
   if (oth.lp < kosten)
   {
      PrintScreen   (PRINT_NotEnoughLP, -1, -1, FONT_Screen, 2);
      B_Say (slf, oth, "$NOLEARNNOPOINTS");
      
      return FALSE;
   };
   
   
   // FUNC
   
   // ------ Lernpunkte abziehen ------         
   oth.lp = oth.lp - kosten;
   
   // ------ Kreis setzen ------
   Npc_SetTalentSkill (self, NPC_TALENT_REGENERATE, 1);
   Log_CreateTopic (TOPIC_TalentRegenerate,LOG_NOTE);
   B_LogEntry (TOPIC_TalentRegenerate,"Ponoć gdy osiągnie się szczyt skupienia można doprowadzić stan swojego ducha do samoregeneracji ciała i duszy.");

   
   // ------ Regenerate ------

   if (oth.lp >= kosten) && (slf.attribute[ATR_MANA_MAX] >= 100) && (slf.attribute[ATR_HITPOINTS_MAX] >= 500) && (Reglvl == 1)
   {

     Npc_SetTalentSkill    (self, NPC_TALENT_REGENERATE, 1);
          hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_lvl/PerSec;

      if (hero.attribute[ATR_HITPOINTS]>hero.attribute[ATR_HITPOINTS_max])
      {
            hero.attribute[ATR_HITPOINTS]=hero.attribute[ATR_HITPOINTS_max];

      };

if (hero.attribute[ATR_HITPOINTS] > 0)
   {
      PerSec +=1;
      if (Reglvl == 1) && (PerSec == 1)
      {
          hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_lvl;
          PerSec = 0;
      };
   };


      PrintScreen           (PRINT_LearnRegenerate, -1, -1, FONT_Screen, 2);
      B_LogEntry              (TOPIC_TalentRegenerate,"Osiągnąłem stan całkowitego skupienia umysłu. Od teraz moje ciało i dusza współdziałają, by nawzajem się odnowić.");
      return TRUE;

        if (true)
        {
                Wld_SendTrigger("TICK_TOCK");   };
        };
   };

};

Nie wiem co jest nie tak. Po za tym, gdy włączam grę nie wyskakuje żaden błąd (w moim przypadku to dziwne). Czy zrobienie paczki z modem nie wystarczy, aby nowo napisany skill działał?
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.


Dracon

Dracon

Użytkownicy
posty1068
Propsy904
Profesjabrak
  • Użytkownicy

Dracon

Wywoływanie skryptu
#8 2009-08-13, 12:12(Ostatnia zmiana: 2009-08-13, 12:13)
Cytat: Rasarus\'
Czy zrobienie paczki z modem nie wystarczy, aby nowo napisany skill działał?
Nie

Przed tą linijką:
// ------ Regenerate ------chyba trzeba dać:
func void tick_tock ()
{
...
};
 
,,Dobry, to człowiek, który nie ukrywa siedzącego w nim zwierzęcia. A taki co usiłuje udawać dobrego, jest wręcz niebezpieczny. Najgroźniejsi są ci, którzy sami głęboko wierzą, że są dobrzy. Odrażający, ohydny przestępca może zamordować jednego człowieka, dziesięciu, stu, ale nigdy nie zabija milionów. Miliony mordują ci, którzy mają się za samą dobroć.''

Wiktor Suworow, Akwarium

Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy
i w funkcji pomiedzy{} trzeba wpisać to?:
func void tick_tock ()

if (hero.attribute[ATR_HITPOINTS] > 0)
{
PerSec +=1;
if (Reglvl == 1) && (PerSec == 1)
{
hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_lvl;
PerSec = 0;

};
};
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.


Dracon

Dracon

Użytkownicy
posty1068
Propsy904
Profesjabrak
  • Użytkownicy
Spróbuj od // ------ Regenerate ------do końca.
 
,,Dobry, to człowiek, który nie ukrywa siedzącego w nim zwierzęcia. A taki co usiłuje udawać dobrego, jest wręcz niebezpieczny. Najgroźniejsi są ci, którzy sami głęboko wierzą, że są dobrzy. Odrażający, ohydny przestępca może zamordować jednego człowieka, dziesięciu, stu, ale nigdy nie zabija milionów. Miliony mordują ci, którzy mają się za samą dobroć.''

Wiktor Suworow, Akwarium

Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy

Mr Prezesinho

Wywoływanie skryptu
#11 2009-08-13, 13:42(Ostatnia zmiana: 2009-08-21, 10:47)
Dziwne, wydaję mi się, że powinienem mieć plik "B_GetLearnCostTalent.d", ale gdy go wyszukuje wyskakuje tylko ten z gII. Podczas włączania gry wyskakuje mi błąd, że kosten = B_GetLearnCostTalent(oth, NPC_TALENT_REGENERATE, regenerate); jest niezdefiniowany, chociaż w pliku B_TeachMagicCircle wszystko jest tak samo i działa.

EDIT//Z tym sobie poradziłem. Dodałem nowy plik.
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.


Mr Prezesinho

Mr Prezesinho

Użytkownicy
posty162
Propsy1
  • Użytkownicy

Mr Prezesinho

Wywoływanie skryptu
#12 2009-08-21, 10:45(Ostatnia zmiana: 2009-08-21, 11:26)
Sory za double reply, ale nikt tego nie czyta od dłuższego czasu :D  

Teraz mam inny problem.Wyskakuje błąd, którego praktycznie nie powinno być oto screen:



A oto skrypt:
// ******************
// B_TeachRegenerate
// ******************

var int level_regeneracji;
const int HP_lvl_1 = 5;
var int PerSec;

func int B_TeachRegenerate (var C_NPC slf, var C_NPC oth, var int regenerate)
{
// ------ Kosten festlegen ------
var int kosten;
kosten = B_GetLearnCostTalent(oth, NPC_TALENT_REGENERATE, regenerate);


// EXIT IF...

// Złe parametry
if (slf.attribute[ATR_MANA_MAX] < 100) && (slf.attribute[ATR_HITPOINTS_MAX] < 500)
{
PrintScreen ("Twoja energia życiowa/magiczna jest zbyt niska", -1, -1, _STR_FONT_ONSCREEN, 2);
return FALSE;
};

// Za mała ilość punktów nauki
if (oth.lp < kosten)
{
PrintScreen ("Za mało punktów umiejętności", -1, -1, _STR_FONT_ONSCREEN, 2);
B_Say (slf, oth, "$NOLEARNNOPOINTS");

return FALSE;
};

oth.lp = oth.lp - kosten;

Npc_SetTalentSkill (self, NPC_TALENT_REGENERATE, 1);
Log_CreateTopic (GE_TalentRegenerate,LOG_NOTE);
B_LogEntry (GE_TalentRegenerate,"Ponoć gdy osiągnie się szczyt skupienia można doprowadzić stan swojego ducha do samoregeneracji ciała i duszy.");
};

func void tick_tock ()
{
 if (hero.attribute[ATR_HITPOINTS] > 0)
   {
 PerSec +=1;
   };
 if (level_regeneracji == 1) && (PerSec == 1)
 {
 hero.attribute[ATR_HITPOINTS] = (hero.attribute[ATR_HITPOINTS] + HP_lvl_1);
 PerSec = 0;
 };

if (oth.lp >= kosten) && (slf.attribute[ATR_MANA_MAX] >= 100) && (slf.attribute[ATR_HITPOINTS_MAX] >= 500) && (level_regeneracji == 1)
   {

 Npc_SetTalentSkill (self, NPC_TALENT_REGENERATE, 1);
 hero.attribute[ATR_HITPOINTS] = (hero.attribute[ATR_HITPOINTS] + HP_level_1);
   };
 if (hero.attribute[ATR_HITPOINTS]>hero.attribute[ATR_HITPOINTS_MAX])
 {
hero.attribute[ATR_HITPOINTS] = (hero.attribute[ATR_HITPOINTS_MAX]);

PrintScreen (PRINT_LearnRegenerate, -1, -1, FONT_Screen, 2);
B_LogEntry  (GE_TalentRegenerate,"Osiągnąłem stan całkowitego skupienia umysłu. Od teraz moje ciało i dusza współdziałają, by nawzajem się odnowić.");

Wld_SendTrigger("TICK_TOCK");
 };
};

TAGI CODE!!!!!!,
Adanos
 
89% graczy uważa, że najważniejsza jest grafika, jeśli uważasz, że te sygnatury nie mają sensu wklej to do podpisu.


pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy

pawbuj

Wywoływanie skryptu
#13 2009-09-02, 21:34(Ostatnia zmiana: 2009-09-03, 11:22)
ok, ale jak połączyc to z dialogiem np. diega?

aby diego dał nam ta umiejętność.
 


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