#include <amxmodx>
#include <amxmisc>
#define PLUGIN "static"
#define VERSION "1.0"
#define AUTHOR "grankee"
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    jedynka()
    dwojka()
    jedynka()
    jedynka()
    dwojka()
    dwojka()
}
public jedynka()
{
    static liczba //domyślnie zmienna statyczna zawsze przyjmuje wartość początkową 0
        liczba=liczba+2
    client_print(1,print_chat,"zmienna liczba z funkcji jedynka ma wartosc:%d",liczba)
}
public dwojka()
{
    static liczba2
        liczba2++
    client_print(1,print_chat,"zmienna liczba z funkcji dwojka ma wartosc:%d",liczba2)
}
w rezultacie graczowi o id=1 zostanie wyprintowanezmienna liczba z funkcji jedynka ma wartosc:2 zmienna liczba z funkcji dwojka ma wartosc:1 zmienna liczba z funkcji jedynka ma wartosc:4 zmienna liczba z funkcji jedynka ma wartosc:6 zmienna liczba z funkcji dwojka ma wartosc:2 zmienna liczba z funkcji dwojka ma wartosc:3
Jak zapewne zauważyliście "przydomek" static sprawia, że zmienna zadeklarowana wewnątrz funkcji mimo iż jest lokalna nie przestaje istnieć w momencie gdy kończy się jej zakres ważności.
Czyli z polskiego na nasze to będzie tak: po każdym wykonaniu się funkcji wartość zmiennej zadeklarowanej jako static zostaje zamrożona, aż do momentu kolejnego wykonania tej funkcji, wtedy jest odmrażana i ma taką wartość jak miała w momencie zamrożenia.
W tym miejscu przypominam, że pluginy ładowane są co mapę i aby zachować wartość zmiennej na następną mapę niezbędny jest zapis do pliku.
Zmienna globalna jest widziana przez cały czas wykonywania kodu, jednak widziana w każdym miejscu programu co często jest zbędne, dlatego jeśli chcemy zmienną widzieć tylko w danym zakresie kodu, ale tak by przy następnym wykonywaniu go zmienna "wiedziała" jaką ostatnio miała wartość i takową posiadała to używamy zmiennej static.
Użytkownik grankee edytował ten post 02.05.2010 22:44


 Forum
 
Forum
 Użytkownicy
 
Użytkownicy
 Kalendarz
 
Kalendarz
 Dodatki SourceMod
 
Dodatki SourceMod



 
	 
					

 
				
				



![:]](https://amxx.pl/public/style_emoticons/default/cwaniak.gif)

 
				
				 
				
				 
				
				








