←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Pobieranie wartosci cvaru przy zmiennej

  • +
  • -
Filip1512 - zdjęcie Filip1512 22.09.2012

Czesć,
w wolnym czasie piszę i uzupełniam sobie mój własny plugin (coś w stylu ruletki, lecz pisane od 0 i inaczej działa), ale do rzeczy.
Chciałałem do nowej zmiennej zadeklarować wartość z cvaru, a później tą zmienną użyć w colorchat.

Dokładniej to wygląda tak:

Na samej górze zadeklarowałem zmienną (linijka 17)

new malo_kasy = get_cvar_num("kasa_bonus");


A w colorchacie

ColorChat(id, YELLOW, "Potrzebujesz %d$, aby moc skorzystac z bonusu!", malo_kasy)


Lecz przy kompilacji wyskakuje mi błąd

Error: Must be a constant expression; assumed zero on line 17



Odpowiedz

  • +
  • -
Raen - zdjęcie Raen 22.09.2012

masz cvary czy pcvary?
jeśli pcvary to zamień na
new malo_kasy = get_pcvar_num("kasa_bonus");
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 22.09.2012

Przykłądowo takowy public się kompiluje.
public write(id)
{
new malo_kasy = get_cvar_num("kasa_bonus");
ColorChat(id, NORMAL, "Potrzebujesz %d $, aby moc skorzystac z bonusu!", malo_kasy)
}

Moje pytanie brzmi - gdzie masz new malo_kasy a gdzie Wypisywanie?
Odpowiedz

  • +
  • -
Filip1512 - zdjęcie Filip1512 22.09.2012

Cvary, bo nie wiem jak działają pcvary (nigdzie nie mogłem znaleść opisu czy czegoś, a podobno pcvary są szybsze...)

register_cvar("kasa_bonus", "16000")



CheQ, poczekaj, wkleje całe SMA

Spoiler


Oczywiśćie najpierw malo_kasy wypisałem nad colorchatem, ale wtedy mi wyskakują takie błędy:

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Declaration of a local variable must appear in a compound block on line 106
Error: Undefined symbol "malo_kasy" on line 106
Warning: Loose indentation on line 107
Error: Undefined symbol "malo_kasy" on line 107

3 Errors.


Użytkownik `NN edytował ten post 22.09.2012 12:58
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 22.09.2012


#include <amxmodx>

#include <amxmisc>

#include <fakemeta_util>

#include <colorchat>

#include <fun>

#include <cstrike>

#define PLUGIN "Bonus za kase by Filip"

#define VERSION "1.0"

#define AUTHOR "Filip / `NN"

new bool:freeze[33];

new bool:bActive;

new bool:speed150[33];

new malo_kasy;

public plugin_init() {

	    register_plugin(PLUGIN, VERSION, AUTHOR)

	    register_event("CurWeapon","speed150a","be", "1=1")

	    register_logevent("PoczatekRundy", 2, "1=Round_Start");  //  poczatek rundy

	    register_logevent("round_end", 2, "1=Round_End")					    // koniec rundy

	    register_clcmd("say /bonus", "bonus")

	    register_cvar("kasa_bonus", "16000")

	    register_cvar("czas_bonus", "60")



malo_kasy = get_cvar_num("kasa_bonus");

}



// tu sie zaczyna sprawdzanie, komenda moze byc uzyta tylko przez okreslony w cvarze czas



public PoczatekRundy(){

	    bActive = true;

	    set_task(float(get_cvar_num("czas_bonus")), "end", 322);

}

public end(){

	    bActive = false;

	    for(new i; i<=32; i++)

	    {

			    if(is_user_connected(i))

			    {

					    freeze[i] = false;

					    speed150[i] = false;

			    }

	    }

}

public round_end(){

	    remove_task(322);	   // jesli runda bedzie trwala mniej niz podany czas, moze byc problem, wiec trzeba usunac taska

}

// koniec sprawdzania



public bonus(id){

	    if(bActive){

			    if(cs_get_user_money(id)>=get_cvar_num("kasa_bonus"))

			    {

					    new los

					    los = random_num(0,5)

					    switch(los){

							    case 0: {

									    ColorChat(id, RED, "Nie masz ani kasy, ani bonusu i wolno biegasz")

									    cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)

									    set_user_maxspeed(id, 150.0)

									    speed150[id] = true;

							    }

							    case 1: {

									    ColorChat(id, GREEN, "Wygrywasz flare i mniejsza grawitacje!")

									    cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)

									    set_user_gravity(id, 0.5)

									    give_item(id, "weapon_smokegrenade")

							    }

							    case 2: {

									    ColorChat(id, GREEN, "Wygrywasz MP5!")

									    cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)

									    give_item(id, "weapon_mp5navy")

									    give_item(id, "ammo_9mm")

							    }

							    case 3: {

									    ColorChat(id, GREEN, "Wygrywasz Scouta!")

									    cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)

									    give_item(id, "weapon_scout")

									    give_item(id, "ammo_762nato")

							    }

							    case 4: {

									    ColorChat(id, RED, "Nie mozesz sie ruszac przez 5 sekund!")

									    cs_set_user_money(id, (cs_get_user_money(id)-get_cvar_num("kasa_bonus")), 1)

									    freeze[id] = true

									    set_task(5.0, "zamrozenie", id)

							    }

							    case 5: {

									    ColorChat(id, BLUE, "Nie masz ani kasy, ani bonusu - Nic sie nie dzieje!")

									    cs_set_user_money(id, 0, 1)

							    }

					    }

			    }

			    else if(cs_get_user_money(id)<get_cvar_num("kasa_bonus"))

					    ColorChat(id, YELLOW, "Potrzebujesz %d$, aby moc skorzystac z bonusu!", malo_kasy)

	    }

	    else

			    ColorChat(id, RED, "Za pozno, sprobuj w nastepnej rundzie <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />")

}



public speed150a(id){

	    if(speed150[id] == true)

	    {

			    set_user_maxspeed(id, 150.0)  

	    }

}



public CurWeapon(id){

	    if(!is_user_alive(id)){

			    return PLUGIN_CONTINUE;

	    }

	    if(freeze[id] == true){

			    set_user_maxspeed(id, 0.1);

	    }



	    return PLUGIN_CONTINUE;

}

public zamrozenie(id){

	    set_user_maxspeed(id);

}

Odpowiedz

  • +
  • -
Filip1512 - zdjęcie Filip1512 22.09.2012

Ok działa, dzięki (wiem co zmieniłeś, żeby nie było) :)
Teraz kolejne pytania, skoro sma jest już wyżej podane.
Spoiler


////edit

STWORZYŁEM NOWY TEMAT ( http://amxx.pl/topic...funkcja-freeze/ ), TEN MOŻNA ZAMKNĄĆ
Użytkownik `NN edytował ten post 22.09.2012 13:41
Odpowiedz