Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Informacja na czacie po użyciu komendy


  • Zamknięty Temat jest zamknięty
9 odpowiedzi w tym temacie

#1 IntelCom

    Wszechwiedzący

  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.12.2014 15:52

Witam,

 

Mam taki kod, i jak zrobić by po użyciu komendy /dodajhp po raz 2++ w rundzie na say'u pojawiała się informacja "Niestety uzyles juz tego polecenia, bedziesz mogl go uzyc ponownie w kolejnej rundzie".

#include <amxmodx>
#include <fun>


#define PLUGIN "PLUG"
#define VERSION "1.0"
#define AUTHOR "Dawid"

new uzyl[33]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /dodajhp","hp")
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
}
public client_connect(id)
{
uzyl[id]=false
}
public hp(id)
{
if(is_user_alive(id) && is_user_connected(id) && !uzyl[id])
{
set_user_health(id, 150)
client_print(id, print_chat, "Ustawiono Ci 150hp");
uzyl[id]=true
}
else
 client_print(id,print_chat, "Niestety, ale jestes niezywy i nie mozesz uzyc tej komendy");
}

public NowaRunda()
{
for(new id = 1; id <= get_maxplayers(); id++)
{
uzyl[id] = false
}
}

Bo w tym momencie wyświetlany się komunikat "Niestety, ale jestes niezywy i nie mozesz uzyc tej komendy".Tak ma zostać, ale tylko dla gracza, który jest nie żywy.

 

Z góry dzięki za pomoc ;)


Użytkownik IntelCom edytował ten post 27.12.2014 15:53

  • +
  • -
  • 0

#2 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 27.12.2014 15:58

Rozloz else na dwa warunki, Sprawdź czy gracz nie żyje i sprawdź czy użył komendy więcej niż x razy w ciągu rundy. Jeżeli warunek któryś z podanych jest spełniony wyświetl komunikat i wstrzymaj dalsze działanie. Natomiast jeżeli żaden z powyższych warunków się nie spełnił to znaczy, że geacz może użyć komendy.

Jeżeli sprawdzasz, czy gracz żyje, nie musisz sprawdzać, czy jest połączony z serwerem, bo nie może być nie połączony a zarazem żywy.
  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#3 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.12.2014 16:21

Zrobiłem to w ten sposób jednak, plugin nie chce się skompilować.

#include <amxmodx>
#include <fun>


#define PLUGIN "PLUG"
#define VERSION "1.0"
#define AUTHOR "Dawid"

new uzyl[33]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /dodajhp","hp")
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
}
public client_connect(id)
{
uzyl[id]=false
}
public hp(id)
{
if(is_user_alive(id) && !uzyl[id])
{
set_user_health(id, 150)
client_print(id, print_chat, "Ustawiono Ci 150hp");
uzyl[id]=true
}
else
if(!is_user_alive(id))
 client_print(id,print_chat, "Niestety, ale jestes niezywy i nie mozesz uzyc tej komendy");
}
if(uzyl[id])
client_print(id,print_chat, "Niestety uzyles juz tego polecenia, bedziesz mogl go uzyc ponownie w kolejnej rundzie");

public NowaRunda()
{
for(new id = 1; id <= get_maxplayers(); id++)
{
uzyl[id] = false
}
}

  • +
  • -
  • 0

#4 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 27.12.2014 16:24

1. Sprawdź czy gracz nie żyje, jeżeli tak daj wiadomość, wstrzymaj działanie.
2. Sprawdź czy gracz użył komendy, jeżeli tak, wstrzymaj działanie.
3. Wszystko ok, gracz spełnia warunki, teraz możesz mu przyznać bonusy.
  • +
  • -
  • 1

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#5 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.12.2014 16:42

Poprawiłem, niestety nadal plugin się nie kompiluje.

#include <amxmodx>
#include <fun>


#define PLUGIN "PLUG"
#define VERSION "1.0"
#define AUTHOR "Dawid"

new uzyl[33]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /dodajhp","hp")
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
}
public client_connect(id)
{
uzyl[id]=false
}
public hp(id)
{
if(!is_user_alive(id))
{
client_print(id, print_chat, "Niestety, ale jestes niezywy i nie mozesz uzyc tej komendy");
return PLUGIN_CONTINUE;
}
if(uzyl[id])
{ 
client_print(id,print_chat, "Niestety uzyles juz tego polecenia, bedziesz mogl go uzyc ponownie w kolejnej rundzie");
return PLUGIN_CONTINUE; 
}
if(is_user_alive(id) && !uzyl[id])
{
set_user_health(id, 150)
client_print(id,print_chat, "Dodano Ci 150HP!");
uzyl[id]=true
}
public NowaRunda()
{
for(new id = 1; id <= get_maxplayers(); id++)
{
uzyl[id] = false
}
}

  • +
  • -
  • 0

#6 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 27.12.2014 18:49

1.nie zamknales funkcji hp

2.uzywaj tabulatorów, bo to co tutaj podałeś trąci nieczytelnością mimo zaledwie niecałych 50 linijek kodu

3.po co sprawdzasz dwa razy to samo? przeczytaj komentarz w kodzie

#include <amxmodx>
#include <fun>


#define PLUGIN "PLUG"
#define VERSION "1.0"
#define AUTHOR "Dawid"

new uzyl[33]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /dodajhp","hp")
	register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
}
public client_connect(id)
{
	uzyl[id]=false
}
public hp(id)
{
	if(!is_user_alive(id))
	{
		client_print(id, print_chat, "Niestety, ale jestes niezywy i nie mozesz uzyc tej komendy");
		return PLUGIN_CONTINUE;
	}
	if(uzyl[id])
	{ 
		client_print(id,print_chat, "Niestety uzyles juz tego polecenia, bedziesz mogl go uzyc ponownie w kolejnej rundzie");
		return PLUGIN_CONTINUE; 
	}
	if(is_user_alive(id) && !uzyl[id])//po co Ci to? sprawdzałeś już wyżej, gdyby nie były te warunki spełnione to by kod nie doszedł do tego miejsca
	{
		set_user_health(id, 150)
		client_print(id,print_chat, "Dodano Ci 150HP!");
		uzyl[id]=true
	}
}
public NowaRunda()
{
	for(new id = 1; id <= get_maxplayers(); id++)
	{
		uzyl[id] = false
	}
}

  • +
  • -
  • 1

#7 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.12.2014 23:09

Czyli wystarczyło by użyć "else" (w przeciwnym wypadku) zamiast tego 3 warunku, a efekt będzie ten sam.Tyle, że kod będzie bardziej optymalny?
  • +
  • -
  • 0

#8 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 27.12.2014 23:14

w ogóle nie potrzeba tam warunku, czytaj i myśl

#include <amxmodx>
#include <fun>


#define PLUGIN "PLUG"
#define VERSION "1.0"
#define AUTHOR "Dawid"

new uzyl[33]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /dodajhp","hp")
	register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
}
public client_connect(id)
{
	uzyl[id]=false
}
public hp(id)
{
	if(!is_user_alive(id))//sprawdzasz czy gracz jest martwy
	{
		client_print(id, print_chat, "Niestety, ale jestes niezywy i nie mozesz uzyc tej komendy");
		return PLUGIN_CONTINUE;//gracz byl martwy wiec tym przerywasz wykonywanie tego kodu, wszystko co jest w tej funkcji ponizej nie zostanie juz wykonane
	}//jezeli gracz jest martwy to kod nie dojdzie do tego miejsca, czyli musi byc zywy jesli kod jeszcze sie tutaj wykonuje
	if(uzyl[id])//jezeli uzyl juz w tej rundzie...
	{ 
		client_print(id,print_chat, "Niestety uzyles juz tego polecenia, bedziesz mogl go uzyc ponownie w kolejnej rundzie");
		return PLUGIN_CONTINUE; //gracz juz uzyl wiec tym przerywasz wykonywanie tego kodu, wszystko co jest w tej funkcji ponizej nie zostanie juz wykonane
	}//jezeli uzyl juz w tej rundzie to kod nie dojdzie do tego miejsca
	
	//tutaj robisz już co chcesz bez warunków, bo skoro program jest w tym miejscu kodu to znaczy, że nie został wcześniej przerwany z powodu "bo gracz nie zyje" albo "bo gracz użył"
	set_user_health(id, 150)
	client_print(id,print_chat, "Dodano Ci 150HP!");
	uzyl[id]=true
	
}
public NowaRunda()
{
	for(new id = 1; id <= get_maxplayers(); id++)
	{
		uzyl[id] = false
	}
}

  • +
  • -
  • 1

#9 IntelCom

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 100
Zaawansowany

  • Postów:500
  • GG:
  • Imię:Dawid
  • Lokalizacja:Opole
Offline

Napisano 27.12.2014 23:29

Zrozumiałem :)

Wielkie dzięki za pomoc :)
  • +
  • -
  • 0

#10 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 28.12.2014 09:46

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych