Niestety, moje próby napisania czegoś w tym języku opieram czysto o swoją wiedzę z Pythona, która jak widać niestety nie pomaga tu. Ale tego, że nie mogę się dobrać do tablicy nie rozumiem, biorąc pod uwagę fakt, że w species.d właśnie w ten sposób ją wypełniają.
Ciekawa sprawa, zmieniłem mój kod, wklejając dokładnie to co napisałeś. Jednak postać dalej może spędzić pod wodą tylko 30 sekund.
Manualne zmienienie w pliku species.d
DIVE_TIME [GIL_HUMAN] = 30;
na 5 daje efekt skrócenia czasu oddychania. Zakładam, że niezależnie od modyfikacji zmiennej .divectr, wartość czasu pod wodą nie może przekroczyć tego, który jest przypisany do gildii "człowiek". Czy więc jest opcja, by zmodyfikować to dynamicznie w grze?
Aha, żeby nie było wątpliwości, mój kod to
func void SetLongerBreath(){
var oCNpc her; her = Hlp_GetNpc (hero);
her.divectr = her.divetime;
};
i funkcja ta się wykonuje gdy wypije Bezi miksturkę szybkości póki co.
FUNC VOID UseItPo_Speed()
{
Mdl_ApplyOverlayMDSTimed (self, "HUMANS_SPRINT.MDS", Time_Speed);
SetLongerBreath();
};
EDIT:
zmienna .divectr odpowiada za obecny poziom paska oddychania. Jej wartość, gdy jest równa dive_time zwyczajnie oznacza, że mamy pełny pasek oddychania. Sam czas maksymalny jest zależny właśnie od wartości, którą podałem u góry - tak mi wyszło z obserwacji metodą prób i błędów.
EDIT2:
Metodą obejścia tego pewnie byłoby, gdybym zrobił funkcję, która co sekundę powiedzmy dodaje trochę do wartości .divectr i jeśli nie da się zmodyfikować DIVE_TIME, to pewnie w ten sposób to rozwiążę... Choć nie powiem, szybkie zmodyfikowanie jednej wartości jest zwyczajnie prostsze i szybsze do napisania
