problem z kolejnym poziomem regeneracji 2151 0

O temacie

Autor Pawciow

Zaczęty 2.02.2010 roku

Wyświetleń 2151

Odpowiedzi 0

Pawciow

Pawciow

Użytkownicy
posty533
Propsy70
ProfesjaTłumacz
  • Użytkownicy
otóż tak, chciałbym zmodyfikować nieco moda do gothica 2 nk - manareload(żeby regeneracja jeszcze bardziej przypominała tą z gothica 3 :)  ) i dodać 3ci poziom regeneracji(jeden npc naucza 2ch 1wszych poziomów, a 2gi nauczałby tego 3ciego poziomu)

w pliku regenerate_time_not_learned (jest w folderze _misk) mam takie linijki
const int REGENERATE_TIME_NOT_LEARNED = 100;
const int REGENERATE_TIME_GRAD_0 = 5;
const int REGENERATE_TIME_GRAD_1 = 1;

1wsza (co 5 sekund regeneruje się 1 punkcik mana)i 2ga (co 1 sekundę regeneruje się 1 punkcik mana) to wiem

jeśli chciałbym wstawić 3ci poziom regeneracji to musiałbym dopisać linijkę np.

const int REGENERATE_TIME_GRAD_2 = ?; (ale co wpisać w miejsce "?") tak, żeby 3ci poziom regeneracji wyglądał w następujący sposób? (żeby mana nie regenerowała się na 3cim poziomie 1 punkcik co ileś sekund, tylko w zależności od nauczonego kręgu magii, co sekundę przywracało odpowiednią ilość mana tak, żeby nie przekroczyło się maksymalnej liczby punktów mana posiadanych przez bohatera? jak w funkcji poniżej-o ile jest ona dobra ;)  ), czy może tą linijkę const int REGENERATE_TIME_GRAD_2 = ?; zupełnie inaczej trzeba nazwać?

func int zs_recharger_loop()
{
if(Npc_GetStateTime(self) > 3)
{
Npc_SetStateTime(self,4);
if(hero.attribute[ATR_MANA] < hero.attribute[ATR_MANA_MAX])
{
if(Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 1)
{
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA] + 5;
};
if(Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 2)
{
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA] + 15;
};
if(Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 3)
{
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA] + 25;
};
if(Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 4)
{
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA] + 40;
};
if(Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 5)
{
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA] + 75;
};
if(Npc_GetTalentSkill(hero,NPC_TALENT_MAGE) == 6)
{
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA] + 100;
};
if(hero.attribute[ATR_MANA] > hero.attribute[ATR_MANA_MAX])
{
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA_MAX];
};
};

};
return LOOP_CONTINUE;
};

i jak wyglądałby wtedy ten plik?

func int b_teachplayertalentregenerate(var C_Npc slf,var C_Npc oth,var int grad)
{
var int kosten;
kosten = B_GetLearnCostTalent(oth,NPC_TALENT_REGENERATE,grad);
const string learn_topic_mana = "Regeneracja many";
if(oth.lp < kosten)
{
PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);
B_Say(slf,oth,"$NOLEARNNOPOINTS");
return FALSE;
};
if(grad == 0)
{
Log_CreateTopic(learn_topic_mana,LOG_NOTE);
B_LogEntry(learn_topic_mana,"Regeneracja mojej magicznej energii poprawiła się. ");
hero.attribute[ATR_REGENERATEMANA] = REGENERATE_TIME_GRAD_0;
Npc_SetTalentSkill(hero,21,1);
oth.lp = oth.lp - kosten;
};
if((grad == 1) && (hero.attribute[ATR_REGENERATEMANA] == REGENERATE_TIME_GRAD_0))
{
Log_CreateTopic(learn_topic_mana,LOG_NOTE);
B_LogEntry(learn_topic_mana,"Moja magiczna energia regeneruje się bardzo szybko. ");
hero.attribute[ATR_REGENERATEMANA] = REGENERATE_TIME_GRAD_1;
Npc_SetTalentSkill(hero,21,2);
oth.lp = oth.lp - kosten;
}
else if((grad == 1) && (hero.attribute[ATR_REGENERATEMANA] != REGENERATE_TIME_GRAD_0))
{
PrintScreen("Muszę najpierw nauczyć się pierwszego stopnia. ",-1,-1,FONT_ScreenSmall,2);
};
return TRUE;
if((grad == 2) && (hero.attribute[ATR_REGENERATEMANA] == REGENERATE_TIME_GRAD_1))
{
Log_CreateTopic(learn_topic_mana,LOG_NOTE);
B_LogEntry(learn_topic_mana,"Regeneracja mojej magicznej energii osiągnęła poziom mistrzowski. ");
hero.attribute[ATR_REGENERATEMANA] = REGENERATE_TIME_GRAD_2;
Npc_SetTalentSkill(hero,21,2);
oth.lp = oth.lp - kosten;
}
else if((grad == 2) && (hero.attribute[ATR_REGENERATEMANA] != REGENERATE_TIME_GRAD_1))
{
PrintScreen("Muszę najpierw nauczyć się drugiego stopnia. ",-1,-1,FONT_ScreenSmall,2);
};
return TRUE;
};

i jak to wszystko połączyć, żeby się kupy trzymało?


edit: problem częściowo rozwiązany(z braku pomysłów XD)
const int REGENERATE_TIME_GRAD_2 = 0; (dałem wartość zero, co daje około 7 puncików mana na sekundę regeneracji)oraz

func int b_teachplayertalentregenerate(var C_Npc slf,var C_Npc oth,var int grad)
{
var int kosten;
kosten = B_GetLearnCostTalent(oth,NPC_TALENT_REGENERATE,grad);
const string learn_topic_mana = "Regeneracja many";
if(oth.lp < kosten)
{
PrintScreen(PRINT_NotEnoughLearnPoints,-1,-1,FONT_ScreenSmall,2);
B_Say(slf,oth,"$NOLEARNNOPOINTS");
return FALSE;
};
if(grad == 0)
{
Log_CreateTopic(learn_topic_mana,LOG_NOTE);
B_LogEntry(learn_topic_mana,"Regeneracja mojej magicznej energii poprawiła się. ");
hero.attribute[ATR_REGENERATEMANA] = REGENERATE_TIME_GRAD_0;
Npc_SetTalentSkill(hero,21,1);
oth.lp = oth.lp - kosten;
};
if((grad == 1) && (hero.attribute[ATR_REGENERATEMANA] == REGENERATE_TIME_GRAD_0))
{
Log_CreateTopic(learn_topic_mana,LOG_NOTE);
B_LogEntry(learn_topic_mana,"Moja magiczna energia regeneruje się bardzo szybko. ");
hero.attribute[ATR_REGENERATEMANA] = REGENERATE_TIME_GRAD_1;
Npc_SetTalentSkill(hero,21,2);
oth.lp = oth.lp - kosten;
}
else if((grad == 1) && (hero.attribute[ATR_REGENERATEMANA] != REGENERATE_TIME_GRAD_0))
{
PrintScreen("Muszę najpierw nauczyć się pierwszego stopnia. ",-1,-1,FONT_ScreenSmall,2);
};
<---usunąłem tę linijkę (bo inaczej bohater nie mógł się nauczyć skilla 3ciego poziomu):return TRUE; --->>>
if((grad == 2) && (hero.attribute[ATR_REGENERATEMANA] == REGENERATE_TIME_GRAD_1))
{
Log_CreateTopic(learn_topic_mana,LOG_NOTE);
B_LogEntry(learn_topic_mana,"Regeneracja mojej magicznej energii osiągnęła poziom mistrzowski. ");
hero.attribute[ATR_REGENERATEMANA] = REGENERATE_TIME_GRAD_2;
Npc_SetTalentSkill(hero,21,2);
oth.lp = oth.lp - kosten;
}
else if((grad == 2) && (hero.attribute[ATR_REGENERATEMANA] != REGENERATE_TIME_GRAD_1))
{
PrintScreen("Muszę najpierw nauczyć się drugiego stopnia. ",-1,-1,FONT_ScreenSmall,2);
};
return TRUE;
};


próbuję na wszystkie sposoby wstawiać ten kod funkcji(że mana regeneruje się w zależności od wyuczonego kręgu u bohatera, lecz zamiast regeneracji co sekundę 5 mana na 1wszym kręgu) do kodu powyżej, to regeneruje się 1 punkt mana co 5 sekund dla 1wszego kręgu....


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