Page 1 of 1

Nepasikeičia kintamasis

Posted: 2020 Nov 15 01:44
by equel
Sveiki. Kadangi esu pradedantis šiame programavime bandžiau sukurti paprastą pluginą (komandą galima panaudoti vieną kartą per roundą, po roundo pabaigos turėtų vėl leisti panaudoti komandą bet rašo kad ji jau panaudota). Bet yra bėdelė. Pasibaigiant raundui kintamasis nepasikeičia į false. Kame gali būti problema? :/ Nežinau ar aš bukas ar kas XD Pridedu žemiau scripto greitą ,,eskizą"

Code: Select all

new komandaUsed[33]

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /ginklas", "ginklas")
	register_logevent("roundas", 2, "1=Round_End"); 
}

public ginklas(id)
{
	if( komandaUsed[id] )
	{
		client_print(id, print_chat, "jus jau panaudojote sia komanda")
		return PLUGIN_HANDLED
	}
	else
	{
		if(is_user_alive(id))
		{
			give_item(id, "weapon_m4a1")
			komandaUsed[id] = true;
			return PLUGIN_CONTINUE
		}
	}
}

public roundas(id)
{	
	komandaUsed[id] = false;
	client_print(0, print_chat, "baigesi roundas")
	return PLUGIN_HANDLED
}

Re: Nepasikeičia kintamasis

Posted: 2020 Nov 15 12:59
by psychical
RoundEnd logevent'as vykdomas tik 1 kartą - serveriui, o ne x kartų - kiekvienam žaidėjui. Tai reiškia, kad to evento metu turi naudoti ciklą kurio metu "perbėgi" per visus žaidėjus ir nustatai jiems reikšmę false PVZ.:

Code: Select all

for(new i=0; i < 32; i++) {
    if(is_user_connected(i)
        komandaUsed[i] = false;
}
Taip pat nepamiršk, kad žaidėjui atsijungus ir kitam prisijungus lygiai taip pat turi nustatyti false reiškę, kitu atveju ką tik prisijungęs žaidėjas gali gauti true reikšmę ir negalės pasinaudoti funkcija. Tam reiktų naudoti client_putinserver (mano pasiūlymu) daugelis rekomenduoja tai daryti atsijungiant su client_disconnect ant naujesnio client_disconnected, tačiau bent jau aš visada tai darau žaidėjui prisijungiant.

Re: Nepasikeičia kintamasis

Posted: 2020 Nov 15 14:44
by equel
Ačiū labai!! Viskas puikiai veikia. + karmos taškai