Pobieranie wartości zmiennej z drugiej funkcji 3396 2

O temacie

Autor IceMan

Zaczęty 28.09.2019 roku

Wyświetleń 3396

Odpowiedzi 2

IceMan

IceMan

Użytkownicy
posty68
Propsy11
Profesjabrak
  • Użytkownicy
Witam,
Uczę się o zmiennych, stałych i funkcjach w grze i napisałem sobie taki skrypt w funkcji pierwszej, który przy nauce atrybutu np. siły liczy ile pkt zostało wydanych. Chciałem zrobić to w celu żeby w drugiej funkcji móc zaczerpnąć z tej zmiennej z pierwszej funkcji po to żeby obliczyło mi czy próg wydawania PN powinien zostać zwiększony czy też nie. Zaimplementowałem system nauki atrybutów i walki z G2NK do G1, ale tego mi właśnie brakowało, bo chce żeby funkcja brała pod uwagę nie aktualną siłę, tylko ten mój licznik w celu takim żeby nie występowały błędy jak w przypadku kiedy bohater ma na sobie np pierścień dający bonus +5. Wszystko jest fajnie licznik w funkcji która dodaje pkt atrybutów zlicza mi ile już zainwestowałem, ale teraz nie wiem jak zaciągnąć ją do drugiej funkcji która oblicza wydatek PN.

Proszę jeśli ktoś mógłby mi to wytłumaczyć.

Fragment pierwszej funkcji:

func void B_RaiseAttribute(var C_Npc oth,var int attrib,var int points)
{
var int licznik;
var string concatText;
var string concatText2;
if(attrib == ATR_STRENGTH)
{
oth.attribute[ATR_STRENGTH] = oth.attribute[ATR_STRENGTH] + points;
concatText = ConcatStrings(NAME_RaiseStrength,IntToString(points));
PrintScreen(concatText,-1,-1,"FONT_OLD_20_WHITE.TGA",4);
licznik = licznik + points; ///////////licznik elegancko zlicza wszystko
concatText2 = ConcatStrings("licznik wynosi: ",IntToString(licznik)); /////////zamiana inta na stringa
PrintS_Ext(ConcatText2,RGBA(255, 0,   0,   255)); ////////////to tak dla sprawdzenia czy działa
};

Fragment drugiego:

func int B_GetLearnCostAttribute(var C_Npc oth,var int attribut)
{
var int licznik;
licznik = B_RaiseAttribute(licznik); ///////////Przy tym wywala błąd "func does not return an int"
var int kosten;
kosten = 0;
if(attribut == ATR_STRENGTH)
{
if(licznik >= 80)
{
kosten = 4;
}
else if(licznik >= 50)
{
kosten = 3;
}
else if(licznik >= 20)
{
kosten = 2;
}
else
{
kosten = 1;
};
};

Rozumiem, że coś chodzi chyba o typ funkcji? Ale zmiana na FUNC INT nic nie robi. Wydaje mi się że nie do końca rozumiem to, więc jeśli ktoś mógłby pomoc to byłbym wdzięczny  :)
 

Splash

Splash

Moderator
posty4209
Propsy3412
ProfesjaNierób
  • Moderator
Zrób zmienną licznik globalną zamiast lokalnej. Taką poza funkcją, łopatologicznie mówiąc.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

IceMan

IceMan

Użytkownicy
posty68
Propsy11
Profesjabrak
  • Użytkownicy
Boże nie pomyślałem, a to było takie proste... :facepalm:
Dzięki wielkie Splash! :) :ok:

Temat do zamknięcia.
 


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