←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Leczenie raz na rune pod danym klawiszem

  • +
  • -
1stADXionC - zdjęcie 1stADXionC 24.12.2016

Próbuję zrobić aby klasa pod klawiszem "e" mogła raz na rundę uleczyć się lecz mi nie wychodzi.

Co robię zle? 

 

new const nazwa[] = "Druid";
new const opis[] = "test";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_AWP)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;


new ma_klase[33];
new fiolka_lecznicza[33];


public plugin_init() 
{
register_plugin(nazwa, "1.0", "1stADXionC");


cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}


public cod_class_enabled(id)
{
ma_klase[id] = true;
fiolka_lecznicza[id] = 1;
}


public cod_class_disabled(id)
{
ma_klase[id] = false;
fiolka_lecznicza[id] = 0;
}


public cod_fiolka_used(id)
{
if(fiolka_lecznicza[id] > 1)
{ 
set_user_health( id, get_user_health( id ) + 80 );
Display_Fade(id, 1<<10, 1<<10 ,1<<14, 118, 253, 89, 230);
client_print(id, print_center, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
}
else
client_print(id, print_center, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");
}

 

Odpowiedz

  • +
  • -
tytusek - zdjęcie tytusek 24.12.2016

public cod_fiolka_used(id)

 

na

 

public cod_class_skill_used(id)

 

 

 

 

 

 

Odpowiedz

  • +
  • -
1stADXionC - zdjęcie 1stADXionC 24.12.2016

public cod_fiolka_used(id)

 

na

 

public cod_class_skill_used(id)

 

Do silnika dodałem:

register_clcmd("usefiolka", "UzyjFiolki");
register_clcmd("fiolka", "UzyjFiolki");


public UzyjFiolki(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;


new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[id]], "cod_fiolka_used", FP_CELL);
ExecuteForward(forward_handle, id, id);
DestroyForward(forward_handle);
return PLUGIN_HANDLED;
}
Odpowiedz

  • +
  • -
tytusek - zdjęcie tytusek 24.12.2016

ogólnie to działa i jedynie problem w tym ze chcesz aby raz na runde tak ? 

 

new const nazwa[] = "Druid";
new const opis[] = "test";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_AWP)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
 
new ma_klase[33];
new fiolka_lecznicza[33];
 
 
public plugin_init() 
{
register_plugin(nazwa, "1.0", "1stADXionC");
 
register_logevent("Koniec_Rundy", 2, "1=Round_End")
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
 
public cod_class_enabled(id)
{
ma_klase[id] = true;
fiolka_lecznicza[id] = 1;
}
 
 
public cod_class_disabled(id)
{
ma_klase[id] = false;
fiolka_lecznicza[id] = 0;
}
 
 
public cod_fiolka_used(id)
{
if(fiolka_lecznicza[id]==1)
set_user_health( id, get_user_health( id ) + 80 );
Display_Fade(id, 1<<10, 1<<10 ,1<<14, 118, 253, 89, 230);
client_print(id, print_center, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
fiolka_lecznicza[id]=0;
}
else
client_print(id, print_center, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");
}
public Koniec_Rundy(){
for(new i =1;i<33;i++){
fiolka_lecznicza[i] = 1;
}
}

 

Odpowiedz

  • +
  • -
1stADXionC - zdjęcie 1stADXionC 24.12.2016



 

ogólnie to działa i jedynie problem w tym ze chcesz aby raz na runde tak ? 

 

new const nazwa[] = "Druid";
new const opis[] = "test";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_AWP)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
 
new ma_klase[33];
new fiolka_lecznicza[33];
 
 
public plugin_init() 
{
register_plugin(nazwa, "1.0", "1stADXionC");
 
register_logevent("Koniec_Rundy", 2, "1=Round_End")
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
 
public cod_class_enabled(id)
{
ma_klase[id] = true;
fiolka_lecznicza[id] = 1;
}
 
 
public cod_class_disabled(id)
{
ma_klase[id] = false;
fiolka_lecznicza[id] = 0;
}
 
 
public cod_fiolka_used(id)
{
if(fiolka_lecznicza[id]==1)
set_user_health( id, get_user_health( id ) + 80 );
Display_Fade(id, 1<<10, 1<<10 ,1<<14, 118, 253, 89, 230);
client_print(id, print_center, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
fiolka_lecznicza[id]=0;
}
else
client_print(id, print_center, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");
}
public Koniec_Rundy(){
for(new i =1;i<33;i++){
fiolka_lecznicza[i] = 1;
}
}

 

w silniku mam:

 


register_clcmd("useperk", "UzyjFiolki");
register_clcmd("radio3", "UzyjFiolki");

czyli powinienem fiołki uzyć klawiszem "c" lecz niestety tak sie nie dzieje.

Odpowiedz

  • +
  • -
tytusek - zdjęcie tytusek 24.12.2016

no wiesz nie musisz miec zbindowane pod c radio3

najlepiej dla pewnosci wpisz recznie radio3 w consoli i zobacz czy uleczy 

 

ewentualnie mozesz jeszcze tak sprobowac

new const nazwa[] = "Druid";
new const opis[] = "test";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_AWP)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
 
new ma_klase[33];
new fiolka_lecznicza[33];
 
 
public plugin_init() 
{
register_plugin(nazwa, "1.0", "1stADXionC");
register_clcmd("useperk", "UzyjFiolki");
register_clcmd("radio3", "UzyjFiolki");
register_logevent("Koniec_Rundy", 2, "1=Round_End")
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
 
public cod_class_enabled(id)
{
ma_klase[id] = true;
fiolka_lecznicza[id] = 1;
}
 
 
public cod_class_disabled(id)
{
ma_klase[id] = false;
fiolka_lecznicza[id] = 0;
}
 
 
public UzyjFiolki(id)
{
if(fiolka_lecznicza[id]==1)
set_user_health( id, get_user_health( id ) + 80 );
Display_Fade(id, 1<<10, 1<<10 ,1<<14, 118, 253, 89, 230);
client_print(id, print_center, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
fiolka_lecznicza[id]=0;
}
else
client_print(id, print_center, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");
}
public Koniec_Rundy(){
for(new i =1;i<33;i++){
fiolka_lecznicza[i] = 1;
}
}
Odpowiedz

1stADXionC - zdjęcie 1stADXionC 26.12.2016



 

no wiesz nie musisz miec zbindowane pod c radio3

najlepiej dla pewnosci wpisz recznie radio3 w consoli i zobacz czy uleczy 

 

ewentualnie mozesz jeszcze tak sprobowac

new const nazwa[] = "Druid";
new const opis[] = "test";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_AWP)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
 
new ma_klase[33];
new fiolka_lecznicza[33];
 
 
public plugin_init() 
{
register_plugin(nazwa, "1.0", "1stADXionC");
register_clcmd("useperk", "UzyjFiolki");
register_clcmd("radio3", "UzyjFiolki");
register_logevent("Koniec_Rundy", 2, "1=Round_End")
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
 
public cod_class_enabled(id)
{
ma_klase[id] = true;
fiolka_lecznicza[id] = 1;
}
 
 
public cod_class_disabled(id)
{
ma_klase[id] = false;
fiolka_lecznicza[id] = 0;
}
 
 
public UzyjFiolki(id)
{
if(fiolka_lecznicza[id]==1)
set_user_health( id, get_user_health( id ) + 80 );
Display_Fade(id, 1<<10, 1<<10 ,1<<14, 118, 253, 89, 230);
client_print(id, print_center, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
fiolka_lecznicza[id]=0;
}
else
client_print(id, print_center, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");
}
public Koniec_Rundy(){
for(new i =1;i<33;i++){
fiolka_lecznicza[i] = 1;
}
}

 

 

Dzięki działa, lecz nie wyświetla informacji oraz można użyć wiele razy

Odpowiedz

tytusek - zdjęcie tytusek 26.12.2016

new const nazwa[] = "Druid";
new const opis[] = "test";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_AWP)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
 
new ma_klase[33];
new fiolka_lecznicza[33];
 
 
public plugin_init() {
register_plugin(nazwa, "1.0", "1stADXionC");
register_clcmd("useperk", "UzyjFiolki");
register_clcmd("radio3", "UzyjFiolki");
register_logevent("Koniec_Rundy", 2, "1=Round_End")
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
 
public cod_class_enabled(id){
  ma_klase[id] = true;
  fiolka_lecznicza[id] = 1;
}
 
 
public cod_class_disabled(id){
   ma_klase[id] = false;
   fiolka_lecznicza[id] = 0;
}
 
 
public UzyjFiolki(id){
   if(fiolka_lecznicza[id] && ma_klase[id]){ 
   set_user_health( id, get_user_health( id ) + 80 );
   Display_Fade(id, 1<<10, 1<<10 ,1<<14, 118, 253, 89, 230);
   client_print(id, print_center, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
   fiolka_lecznicza[id]--;
   }
   else
   client_print(id, print_center, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");
 
}
public Koniec_Rundy(){
for(new i =1;i<33;i++){
fiolka_lecznicza[i] = 1;
}
}
Odpowiedz

1stADXionC - zdjęcie 1stADXionC 26.12.2016

new const nazwa[] = "Druid";
new const opis[] = "test";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_AWP)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie = 20;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
 
 
new ma_klase[33];
new fiolka_lecznicza[33];
 
 
public plugin_init() {
register_plugin(nazwa, "1.0", "1stADXionC");
register_clcmd("useperk", "UzyjFiolki");
register_clcmd("radio3", "UzyjFiolki");
register_logevent("Koniec_Rundy", 2, "1=Round_End")
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
 
public cod_class_enabled(id){
  ma_klase[id] = true;
  fiolka_lecznicza[id] = 1;
}
 
 
public cod_class_disabled(id){
   ma_klase[id] = false;
   fiolka_lecznicza[id] = 0;
}
 
 
public UzyjFiolki(id){
   if(fiolka_lecznicza[id] && ma_klase[id]){ 
   set_user_health( id, get_user_health( id ) + 80 );
   Display_Fade(id, 1<<10, 1<<10 ,1<<14, 118, 253, 89, 230);
   client_print(id, print_center, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
   fiolka_lecznicza[id]--;
   }
   else
   client_print(id, print_center, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");
 
}
public Koniec_Rundy(){
for(new i =1;i<33;i++){
fiolka_lecznicza[i] = 1;
}
}

 

 

Dzięki działa, lecz został mały problem.

gdy używamy fiolki wyświetla się tekst w konsoli: 

 
Unknown command: fiolka
 
Jak zrobić aby fiołki mogła używać tylko klasa druid.
 
public UzyjFiolki(id)
{
if(!is_user_alive(id) || !is_user_connected(id) || ma_klase[id])
return PLUGIN_CONTINUE;


new zdrowie = get_user_health(id);
new maxzdrowie = cod_get_user_health(id)+100


set_dhudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2);


if(fiolka_lecznicza[id])
{ 
new nowe_zdrowie = (zdrowie+80);
if(nowe_zdrowie < maxzdrowie)
{
fiolka_lecznicza[id]--;
set_user_health(id, nowe_zdrowie);
show_dhudmessage(id, "[Druid] Fiolka lecznicza jednorazowo uleczyla Cie o 80 HP");
}
if(nowe_zdrowie >= maxzdrowie && zdrowie != maxzdrowie)
{
fiolka_lecznicza[id]--;
set_user_health(id, maxzdrowie);
show_dhudmessage(id, "[Druid] Jestes w pelni uleczony!");
}
}
else
show_dhudmessage(id, "[Druid] Fiolki leczniczej mozesz uzyc raz na runde");


return PLUGIN_CONTINUE;
}

 


Użytkownik 1stADXionC edytował ten post 26.12.2016 22:43
Odpowiedz

NEQU# - zdjęcie NEQU# 26.12.2016

Klasę sprawdzasz bodajże cod_get_user_class, ale już nie pamiętam, jednak jeżeli jest dodana w klasie to raczej nie ma szans aby inna klasa jej użyła. Jeżeli nadal chcesz, aby można było użyć fiolki na E łap.

public client_PostThink(id)
{
	static Button
	Button = get_user_button(id)
	
	if(Button & IN_USE)
	{
		UzyjFiolki(id)
	}
}

Użytkownik NEQU# edytował ten post 26.12.2016 23:12
Odpowiedz

1stADXionC - zdjęcie 1stADXionC 26.12.2016

A jest możliwość zamiast na E to na V!
Odpowiedz

NEQU# - zdjęcie NEQU# 26.12.2016

Raczej nie za bardzo, chyba że dodasz funkcję na bind, i automatycznie będziesz ją bindować pod V każdemu kto wybierze klase, tyle że teraz na większości ns`ów to nie zadziała.

 

https://amxx.pl/doku...get_user_button

 

zawsze możesz moc zrobić pod X, perki pod C. Zarejestruj sobie tą apteczne pod radio2 i standardowo na X będzie.

 

 


Użytkownik NEQU# edytował ten post 26.12.2016 23:40
Odpowiedz
Udostępnij Udostępnij