G1 Czasowe wzmocnienie- problem 2144 4

O temacie

Autor RKM

Zaczęty 6.02.2021 roku

Wyświetleń 2144

Odpowiedzi 4

RKM

RKM

Użytkownicy
posty73
Propsy39
ProfesjaProducent
  • Użytkownicy
Witam, postanowiłem zrobić sobie w gothicu czasowe premie do statystyk. Niestety napotkałem problem, mianowicie premia zostaje dodana ale po upływie czasu nie zostaje odjęta. Prosiłbym o pomoc kogoś zorientowanego w temacie.

Skrypt napoju wywołujący zmienne aktywujące funkcje:
Spoiler
INSTANCE ItFo_Potion_DEF_01(C_Item)
{
name = NAME_Trank;

mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;

value = Value_ManaEssenz;

visual = "ItFo_Potion_Mana_01.3ds";
material = MAT_GLAS;
on_state[0] = UseDEFPotion;
scemeName = "POTIONFAST";

description = "Esencja wzmacniająca obronę";
TEXT[1] = NAME_Bonus_Mana; COUNT[1] = Mana_Essenz;
TEXT[5] = NAME_Value; COUNT[5] = Value_ManaEssenz;
};

FUNC VOID UseDEFPotion()
{
if(DEFPREMIA == 4) && (zegardef == 3)
{
defdis = defdis +10;
DEFPREMIA = 1;
zegardef = 1;
};
};


defdis = defdis +10; // To odpowiada za pojawienie się ikonki ktróa pokazuje aktywne wzmocnienie
DEFPREMIA = 1; // To jest status zmiennej atywującej/dezaktywującej wzmocnienie
zegardef = 1; // To jest status zmiennej aktywującej liczenie czasu


Tutaj skrypt funkcji która w założniu miała sprawdzać status zmiennej i w zależności od niego przyznawać/odbierać bonus
Spoiler
func void premiestatystyk()
{
if(DEFPREMIA == 1) && (zegardef == 1)
{
self.protection [PROT_EDGE] += 15;
self.protection [PROT_BLUNT] += 15;
DEFPREMIA = 2;
zegardef = 2;
}
else if(DEFPREMIA == 2) && (zegardef ==3)
{
DEFPREMIA = 3;
}
else if(DEFPREMIA == 3)
{
self.protection [PROT_EDGE] -= 15;
self.protection [PROT_BLUNT] -= 15;
DEFPREMIA = 4;
defdis = 0;
};
};

A tutaj funkcja która miała liczyć czas (dodawanie wartości "+1" aż do osiągniecia 60)
func void defzegarf()
{
if(zegardef ==2)
{
liczzegardef = liczzegardef +1;
if (liczzegardef == 60)
{
zegardef =3;
liczzegardef = 0;
DEFPREMIA = 0;
};
};
};

Początkowe wartości zmiennych zainicjowane w startupie z wartościami DEFPREMIA = 4 oraz zegardef = 3

Funkcje wywoływane co 1 sekundę za pomocą frame function
 

outlander

outlander

Użytkownicy
posty452
Propsy224
ProfesjaReżyser
  • Użytkownicy
A próbowałeś tak:
self.protection [PROT_EDGE] = self.protection [PROT_EDGE] - 15;
self.protection [PROT_BLUNT] = self.protection [PROT_BLUNT] -15;
Może teraz zaskoczy.
 

RKM

RKM

Użytkownicy
posty73
Propsy39
ProfesjaProducent
  • Użytkownicy
Mogę w sumie spróbować ale nie wiem czy to pomoże ponieważ w w skryptach np. pierścieni jest tak samo i dział zarówno zakładanie jak i ściąganie, no i oczywiście zapomniałem dodać a wydaje mi się że to dość istotne że ikonka odpowiadającą za pokazywanie jaka premia jest aktywna również nie znika, więc chyba musi być coś nie tak że zmiennymi ale niestety brakuje mi pomysłów co to może być.
 

Nestarion

Nestarion

Użytkownicy
posty32
Propsy26
Profesjabrak
  • Użytkownicy
W funkcji liczącej czas ustawiasz

zegardef =3;
liczzegardef = 0;
DEFPREMIA = 0;

a w funkcji mającej zdjąc bonusy jest
else if(DEFPREMIA == 2) && (zegardef ==3)
więc te warunki nigdy nie zostają spełnione i funkcja nie leci dalej.
 

RKM

RKM

Użytkownicy
posty73
Propsy39
ProfesjaProducent
  • Użytkownicy
Faktycznie, aż głupio że nie zwróciłem uwagi na coś tak błachego, w sumie to najtrudniej dostrzec rzeczy najprostsze. Dzięki wielkie za pomoc.
 


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