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

Nauka pisania pluginów-problemProszę o pomoc


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
12 odpowiedzi w tym temacie

#1 Proziom1

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:30
  • Imię:Damian
  • Lokalizacja:Polska
Offline

Napisano 26.12.2014 15:17

Witam chciałem napisać taki plugin że gracz po wpisaniu w sayu /dodaj zostanie mu ustawione 130hp oraz 100 kamizelki.Jednak muszą być spełnione dwa warunki gracz musi być żywy oraz może wykorzystać to tylko raz na rundę.Napisałem coś takiego jednak kod nawet się nie kompiluje:

 

#include <amxmodx>
#include <fun>


#define PLUGIN "nauka"
#define VERSION "1.0"
#define AUTHOR "IntelCom"


new uzyl[33]


public plugin_init()


{
    register_plugin(PLUGIN, VERSION, AUTHOR)


    register_clcmd("say /ustaw","dane")
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0")


}
public client_connect(id){
    uzyl[id] = false
}


public dane (id)
{
if(is_user_alive(id) && uzyl(id))
{
set_user_health(id,130)
set_user_armor(id, 100)
client_print(id,print_chat, "Ustawiono Ci 130hp i 100armorra!")
uzyl[id]= true
}
else


 client_print(id,print_chat, "Niestety ale jestes niezywy albo wykorzystales juz ta komende w tej rundzie!")
}

Jakie więc błędy popełniłem i jak należało by to zapisać ?

 


  • +
  • -
  • 0

#2 Kobciu

    Zaawansowany

  • Użytkownik

Reputacja: 14
Początkujący

  • Postów:108
  • Lokalizacja:Polska
Offline

Napisano 26.12.2014 15:24

Errorow zadnych nie ma ?
  • +
  • -
  • 0

#3 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

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

Napisano 26.12.2014 15:34

Jeżeli korzystasz ze zmiennej tablicowej, to używasz nawiasów kwadratowych

->

uzyl (id) ----> uzyl[id]

Po drugie, gracz nigdy nie dostanie bonusów, przestudiuj jeszcze raz swój kod


Użytkownik Wielkie Jol edytował ten post 26.12.2014 15:35

  • +
  • -
  • 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.


#4 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 26.12.2014 15:39

dodatkowo
if(is_user_alive(id) && (uzyl[id]==false))
w przypadku gdzy dałeś samo uzyl[id] jest sprawdzane czy ma wartosc 1 == true;


Czyli reasumując wykonało by się to wtedy gdy już wcześniej to było wykonane.

Użytkownik xenos edytował ten post 26.12.2014 15:40

  • +
  • -
  • 1
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#5 Proziom1

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:30
  • Imię:Damian
  • Lokalizacja:Polska
Offline

Napisano 26.12.2014 15:50

Czyli jak należało by to zapisać wszystko ?


  • +
  • -
  • 0

#6 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

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

Napisano 26.12.2014 15:55

#include <amxmodx>
#include <fun>


#define PLUGIN "nauka"
#define VERSION "1.0"
#define AUTHOR "IntelCom"


new uzyl[33];


public plugin_init(){
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /ustaw","dane")
	register_event("HLTV", "NowaRunda", "a", "1=0", "2=0")
	
	
}
public client_connect(id){
	uzyl[id] = false
}


public dane (id){
	if(is_user_alive(id) && !uzyl[id]){
		set_user_health(id,130)
		set_user_armor(id, 100)
		client_print(id,print_chat, "Ustawiono Ci 130hp i 100armorra!")
		uzyl[id]= true
	}
	else
	client_print(id,print_chat, "Niestety ale jestes niezywy albo wykorzystales juz ta komende w tej rundzie!")
}

+ oczywiście musisz gdzieś ustawiać uzyl[id] na false podczas gry.


  • +
  • -
  • 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.


#7 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 26.12.2014 16:02

To nawet nie bedzie dzialalo Wielkie Jol. Zarejestrowany jest event HLTV a brak jego funkcji w kodzie.


  • +
  • -
  • 3

#8 Proziom1

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:30
  • Imię:Damian
  • Lokalizacja:Polska
Offline

Napisano 26.12.2014 16:05

No właśnie my się nie odwołujemy nigdzie do tej funkcji HLTV ?


  • +
  • -
  • 0

#9 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

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

Napisano 26.12.2014 16:13

To nawet nie bedzie dzialalo Wielkie Jol. Zarejestrowany jest event HLTV a brak jego funkcji w kodzie.

Dlatego jako wskazówkę napisałem, że gdzieś musi ustawiać zmienną na false. Wszystkiego nie można za kogoś zrobić, niech ludzie sami poglowkuja

Proziok właśnie musisz się odwołać, inaczej nie dość, że będziesz miał errory bo nigdzie nie korzystasz z funkcji hltv, to jeszcze gracz będzie mógł użyć komendy raz - po połączeniu się z serwerem ( bo tylko wtedy zmienna będzie ustawiona na false )

Użytkownik Wielkie Jol edytował ten post 26.12.2014 16:15

  • +
  • -
  • 3

"Ż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.


#10 he1st

    Diablo Mody i te sprawy ;3

  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 26.12.2014 16:42

No właśnie my się nie odwołujemy nigdzie do tej funkcji HLTV ?

Nigdzie się nie odwołujemy, ale jednak w kodzie dałeś event HLTV

register_event("HLTV", "NowaRunda", "a", "1=0", "2=0")

 

Ogólnie tak jak Wielkie Jol napisał. Ten Kod nie zadziała poprawnie ;)


Użytkownik MS.Zer0. edytował ten post 26.12.2014 16:45

  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#11 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 27.12.2014 05:50


że będziesz miał errory bo nigdzie nie korzystasz z funkcji hltv, to jeszcze gracz będzie mógł użyć komendy raz - po połączeniu się z serwerem ( bo tylko wtedy zmienna będzie ustawiona na false )

 

A ja twierdzę, że żadnych errorów nie zobaczysz oraz że przy odrobinie niefarta nawet raz nie użyjesz.


  • +
  • -
  • 0

#12 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 10:25

 


że będziesz miał errory bo nigdzie nie korzystasz z funkcji hltv, to jeszcze gracz będzie mógł użyć komendy raz - po połączeniu się z serwerem ( bo tylko wtedy zmienna będzie ustawiona na false )

 

A ja twierdzę, że żadnych errorów nie zobaczysz oraz że przy odrobinie niefarta nawet raz nie użyjesz.

 

Errory będą, bo zarejestrowałeś event, który co rundę odnosi się do funkcji, której nigdzie nie ma. 

 

A dlaczego twierdzisz, że przy odrobinie niefarta nawet raz nie użyje tego bonusu?


Wielkie Jol (27.12.2014 10:26):
Wstawiłem plugin tylko z zarejestrowanym eventem na swój serwer, by mieć pewność, że jest tak jak mówię i taki jest wynik:
L 12/27/2014 - 10:23:04: Function "Event_HLTV" was not found
radim (27.12.2014 10:30):
A komendy możesz użyć?
Wielkie Jol (27.12.2014 10:51):
Tak, a niby dlaczego nie?
radim (27.12.2014 11:27):
Tak pytam bo wydawało mi się że jak rejestruje się funkcje która nie jest 'użyta' to kolidowało to z całym pluginem w wyniku czego cały plugin nie działał.
Wielkie Jol (27.12.2014 12:01):
Nieee, wszystko gra tak jak grać powinno, tylko problem jest właśnie z tym, że dostajemy przy każdym ładowaniu się pluginu błąd, że korzysta on z funkcji, która jest niby zarejestrowana, a tak w rzeczywistości nie ma się do czego odnieść w kodzie.

  • +
  • -
  • 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.


#13 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

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

Napisano 27.12.2014 18:12


Tak pytam bo wydawało mi się że jak rejestruje się funkcje która nie jest 'użyta' to kolidowało to z całym pluginem w wyniku czego cały plugin nie działał.

 

 

Dokładnie to miałem na myśli, pewnie by tak było, gdyby najpierw był zarejestrowany event(do którego nie ma funkcji) a potem komenda.

 

 

 


L 12/27/2014 - 10:23:04: Function "Event_HLTV" was not found

 

Faktycznie jest taki zapis w error logach, miałem na myśli, że ani podczas eventu ani już tym bardziej kompilacji nie ma żadnych errorów, ale nie napisałem dość szczegółowo.


  • +
  • -
  • 0




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

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