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
 

I.PO.CO.NICK - zdjęcie

I.PO.CO.NICK

Rejestracja: 15.01.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 05.08.2012 16:05
-----

#28024 Komendy

Napisane przez R3X w 14.12.2008 13:26

[Poziom]
W jaki sposób zaprojektować komendę, aby odpowiadała naszym wymaganiom?

Podstawą jest funkcja:

register_concmd ( const cmd[], const function[], flags=-1, info[]="")

Definiujemy samą komendę, przypisujemy jej funkcję wywoływaną po wpisaniu komendy. Reszta jest opcjonalna i opiszę niżej. Użyta może być poprzez dowolną konsolę.

oraz jej 'siostra'

register_clcmd ( const client_cmd[],const function[], flags=-1, info[]="" )

Działa tak samo, tylko komenda użyta może być jedynie w konsoli gracza.

-----
Argumenty:
const cmd[] lub client_cmd[] - nazwa komendy; zwykle z prefiksem (np. amx_)
const function[] - nazwa publicznej funkcji, obsługującej naszą komendę
flags=-1 - flagi potrzebne do użycia komendy
info[]="" - opis parametrów funkcji

Przykład:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_concmd("komenda1","fnKomenda1");
	register_concmd("komenda2","fnKomenda2",ADMIN_BAN);
	register_concmd("komenda3","fnKomenda3",ADMIN_BAN, "<tekst> <liczba>");
}

public fnKomenda1(id)
{
	console_print(id,"Uzyles komendy nr 1");
	return PLUGIN_HANDLED;
}
public fnKomenda2(id,level,cid)
{
	if (!cmd_access(id,level,cid,1))
		return PLUGIN_HANDLED;
	console_print(id,"Uzyles komendy nr 2");
	return PLUGIN_HANDLED;
}
public fnKomenda3(id,level,cid)
{
	if (!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
	new tekst[64],szliczba[4],iliczba;
	read_argv(1, tekst, 63);
	read_argv(2,szliczba,3);
	iliczba=str_to_num(szliczba);
	console_print(id, "Uzyles komendy nr 3 z parametrami: %s %d",tekst,iliczba);
	return PLUGIN_HANDLED;
}
Każda funkcja będąca wywoływana przez komendy powinna zwracać PLUGIN_HANDLED; trochę inaczej wygląda sprawa, jeśli komendy używamy przez czat.
return PLUGIN_HANDLED; nie pozwoli wysłać do czatu podanej komendy natomiast return PLUGIN_CONTINUE; tego nie zablokuje.

komenda1 - bez argumentów, dostęp ma każdyNie wymaga komentarza
komenda2 - bez argumentów, dostęp ma gracz z flagą ADMIN_BANWarto opisać tu działanie
if (!cmd_access(id,level,cid,1))
		return PLUGIN_HANDLED;
Na podstawie argumentów funkcji sprawdza czy osoba używająca komendy ma odpowiednie flagi.
Dodatkowo sprawdza ilość parametrów komendy - tablica parametrów zaczyna się nazwą komendy więc wymagamy 1 argumentu. Odpowiada też za komunikat o brakujących parametrach i braku dostępu.
komenda3 - z argumentami, dostęp ma gracz z flagą ADMIN_BANcmd_access jak wyżej

Użyłem tutaj funkcji :
read_argv(1, tekst, 63);
Jak wspomniałem wartość 0 to nazwa komendy, stąd prosimy o 1. Ta linia pobiera pierwszy parametr komendy i zapisuje do zmiennej 'tekst'. Pamiętamy o wolnym znaku na /0 (zmienna tekst ma 64 indeksy, a pobieramy 63 znaki).
Podobnie z drugim parametrem, który jednak używać będziemy jako liczby - dlatego pobieramy do stringai konwertujemy do liczby całkowitej funkcją
str_to_num();



Analizując ten tekst można się domyślić, że komendy o podobnej konstrukcji działania może obsługiwać jedna funkcja:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_concmd("komenda1","fnKomenda");
	register_concmd("komenda2","fnKomenda",ADMIN_BAN);
	register_concmd("komenda3","fnKomenda",ADMIN_BAN, "<tekst> <liczba>");
}
public fnKomenda(id,level,cid)
{
	new cmd[32];
	read_argv(0, cmd, 31);
	if(equal(cmd,"komenda1"))
	{
		console_print(id,"Uzyles komendy nr 1");
	}
	else if(equal(cmd,"komenda2"))
	{
		if (!cmd_access(id,level,cid,1))
			return PLUGIN_HANDLED;
		console_print(id,"Uzyles komendy nr 2");
	}
	else if(equal(cmd,"komenda3"))
	{
		if (!cmd_access(id,level,cid,3))
			return PLUGIN_HANDLED;
		new tekst[64],szliczba[4],iliczba;
		read_argv(1, tekst, 63);
		read_argv(2,szliczba,3);
		iliczba=str_to_num(szliczba);
		console_print(id, "Uzyles komendy nr 3 z parametrami: %s %d",tekst,iliczba);
	}
	return PLUGIN_HANDLED;
}


  • +
  • -
  • 6


#135520 Grawitacja na start

Napisane przez Szyfrant w 16.05.2010 01:13

[ZP] Grawitacja na start


Dołączona grafika
Przez pierwsze 15 sekund rundy mamy niską grawitację.
Oznaczyłem jako plugin Zombie gdyż jest on często używany na tym modzie.

Dołączona grafika

Standardowa

Dołączona grafika

Brak

Załączone pliki


  • +
  • -
  • 3


#117646 HLShield 2.6 (hlds_fuck & hlds_vcrash FIX, ŁATKA)

Napisane przez _Marcin w 09.03.2010 20:49

Niedawno zostały stworzone nowe exploity wykorzystujące to, że serwer przy otrzymaniu uszkodzonego pakietu serwer wyłącza się wyświetlając:
Host_Error: SV_ParseVoiceData: invalid incoming packet
lub
./hlds_run: line 321:  3997 Naruszenie ochrony pamięci   $HL_CMD
Informacje:
Błędy te istnieją od początku istnienia CS 1.6 (binarki 2738 dla HLDS), są zawarty w każdej następnej wersji serwera HLDS (prawodpoodobnie kolejna wersja będzie już spatchowana przez Valve).
Od tego błędu nie są wolne również serwery only Steam, a póki co Valve milczy w tej sprawie, tak więc instalacja tej poprawki dla serwerów only Steam jest również potrzebna.

Changelog:
2.6
- Nowość: Banowanie na firewallu atakujących IP (opcjonalne) (użycie via iptables) (pliki i instrukcję do włączenia tej opcji wydam na życzenie)
2.5
- Poprawione błędne wykrywanie ataków hlds_***
2.4
- Zabezpieczenie przed atakami hlds_***
2.3
- Dodana opcja logowania ataków do pliku hlshield.log
- Zabezpieczenie przed atakiem hlds_vcrash (exploit SV_ParseVoiceData)

O poprawce:
Poprawka sama w sobie jest bezinwazyjna, nie podmieniamy plików serwerowych, tak więc nie naruszamy prawa.
Chroni ona przed każdym do tej pory wykrytym exploitem, nie potrzebuje do tego żadnych dodatkowych programów typu. Metamod/dproto.
IP atakujących wraz z rodzajem ataku są zapisywane do pliku hlshield.log w głównym katalogu serwera.

UWAGA:
Poprawkę instaluje się bezinwazyjnie, nie są modyfikowane żadne pliki serwerowe, tak więc nie naruszamy licencji Valve.
Poprawka chroni również przed exploitem hlds_*** !
Poprawka ta nie chroni jednak serwera przed exploitem hlds_*** !
Aby uchronić serwer przed atakiem z owego skryptu należy zaktualizować dproto do nowej wersji 0.4.1 - instrukcja i download tutaj
Administratorzy serwerów only Steam będą zmuszeni poczekać na wydanie dla nich osobnego fixa.</span>

Wymagania:
  • Serwer oparty na prot. 47 lub 48 (zarówno serwery Nonsteam jak i only Steam)
  • Serwer oparty o system Linux ( binarka 4617 )
Instalacja:
1) Wypakuj odpowiednią paczkę w głównym katalogu serwera
2) Jeśli punkt pierwszy został pomyślnie wykonany zrestartuj serwer (koniecznie restart, zmiana mapy odpada)

Jak rozpoznać wersję serwera?
Będąc na serwerze wpisz status (lub zdalnie rcon status), powinno Ci się pojawić mniej więcej coś takiego:
hostname:  Nazwa serwera
version :  48/1.1.2.6/Stdio 4617 secure  (10)
tcp/ip  :  80.54.30.248:27000
map     :  de_dust2 at: 0 x, 0 y, 0 z
players :  0 active (6 max)
W tym przypadku wersja serwera to 4617.

Błędy podmiany plików:
1) Jeśli podczas wypakowania paczki natrafisz na niemożność podmiany pliku hlds_run spróbuj go usunąć przed wgraniem paczki.
2) Jeśli powyższy krok udało się wykonać pomyślnie (plik hlds_run z paczki został wgrany na serwer) nadaj mu uprawnienia na wykonanie przez serwer (chmod 755 lub wyższy), jeśli natomiast nie udało się usunąć starego hlds_run'a poproś usługodawcę (hosting) o możliwość podmiany przez Ciebie lub niego samego.

Jaką paczkę pobrać ?
1) Jeśli mamy serwer pracujący na dwóch protokołach to zawsze wybieramy paczkę INTEL.
2) Jeśli nie mamy na sztywno ustawionej używanej binarki (-binary ./hlds_i686 - INTEL, ./hlds_amd - AMD) w linii startowej to pobieramy paczkę zgodnie z tym, na jakim procesorze pracuje serwer.
3) Jeśli nadal nie masz pewności jaką paczkę pobrać zacznij od paczki INTEL, jeśli serwer po restarcie nie będzie chciał się ponownie uruchomić zastosuj paczkę AMD.

Na skopiowanie poradnik udzielił mnie zgodę kam821 z FragArena.pl

Załączone pliki


  • +
  • -
  • 9


#62092 Server Messages v1.3a

Napisane przez Abes Mapper w 10.05.2009 12:50

Server Messages v1.3a
by Leon McVeran


Dołączona grafika
Jest to dość prosty plugin który ma na celu wyświetlanie różnych informacji w różny sposób :D
Pokazuje on ważne wiadomości, informacje i zasady na serwerze. Wszystkie te teksty wpisuje się do server_messages.txt (addons/amxmodx/data/lang)
Jego dobrą stroną jest wyświetlenie wiadomości na górze po prawej stronie w chmurce jak w Condition Zero.
Teksty automatyczne wyświetlają się tylko martwym.

(tam gdzie "pozycja" powinno być "tryb" ale przepadło xD)
Wyświetlić tekst można:

- w konsoli
Dołączona grafika

- na czacie
Dołączona grafika

- na środku ekranu
Dołączona grafika

- w hudzie
Dołączona grafika

- w chmurce (Tryb wiadomości - 4)
?Styl 0
Dołączona grafika

?Styl 1
Dołączona grafika

?Styl 2
Dołączona grafika

?Styl 3
Dołączona grafika

?Styl 4
Dołączona grafika

?Styl 5
Dołączona grafika

?Styl 6
Tak samo jak wyżej

?Styl 7
Tak samo jak wyżej

?Styl 8
Dołączona grafika
Na niektórych screenach jest napisane "Zasady 3:, Zasady 2: ale zmieniłem na "Zasada" bo jakoś tak było niepoprawnie gramatcznie :P

Dołączona grafika

Poprawne wartości dla "@grupa"
- dla wszystkich graczy: @A or @ALL
- dla wszystkich CT: @C, @CT or @COUNTER
- dla wszystkich Terro: @T, @TE, @TERROR or @TERRORIST

amx_server_msg <authid, nick, @grupa or #userid> <numer wiadomosci>
- pokaż konkretną wiadomość z server_messages.txt

amx_server_rule <authid, nick, @grupa or #userid> <numer zasady>
- pokaż konkretną zasade z server_messages.txt

amx_server_info <authid, nick, @grupa or #userid> <numer informacji>
- pokaż konkretną informacje server_messages.txt

amx_custom_msg <authid, nick, @grupa or #userid> <wiadomosc> <tryb> < styl (tylko jesli tryb ustawiony jest na 4)>
- pokaż swoją wiadomość do gracza lub grupy, nie trzeba koniecznie wpisywać trybu i stylu

amx_list_msg
- pokaż całą liste wszystkich wiadomości które są zapisane w server_messages.txt

amx_list_rule
- pokaż całą liste wszystkich zasad które są zapisane w server_messages.txt

amx_list_info
- pokaż całą liste wszystkich informacji które są zapisane wthe server_messages.txt


Dołączona grafika
server_msg_mode "3"
//tryb wyświetlania wiadomości (0 - konsola, 1 - chat, 2 - środek ekranu, 3 - hud, 4 - chmurka)

server_rule_mode "4"
//tryb wyświetlania zasad (0 - konsola, 1 - chat, 2 - środek ekranu, 3 - hud, 4 - chmurka)

server_info_mode "4"
//tryb wyświetlania informacji (0 - konsola, 1 - chat, 2 - środek ekranu, 3 - hud, 4 - chmurka)

server_msg_style "0"
//styl wyświetlania chmurki dla wiadomości (0 - domyślna informacja, 1 - przyjaciel zginął, 2 - wróg zginął, 3 - scenariusz, [4 - kupowanie, 5 - kariera, 6 - podpowiedź, 7 - podpowiedź w grze, 8 - koniec gry])

server_rule_style "3"
//styl wyświetlania chmurki dla zasad (0 - domyślna informacja, 1 - przyjaciel zginął, 2 - wróg zginął, 3 - scenariusz, [4 - kupowanie, 5 - kariera, 6 - podpowiedź, 7 - podpowiedź w grze, 8 - koniec gry])

server_info_style "0"
//styl wyświetlania chmurki dla informacji (0 - domyślna informacja, 1 - przyjaciel zginął, 2 - wróg zginął, 3 - scenariusz, [4 - kupowanie, 5 - kariera, 6 - podpowiedź, 7 - podpowiedź w grze, 8 - koniec gry])

server_msg_ondeath "1"
// automatycznie pokazuj wiadomości martwym

server_rule_ondeath "1"
//automatycznie pokazuj zasady martwym

server_info_ondeath "1"
//automatycznie pokazuj informacje martwym

server_msg_time "8"
//jak długo ma być wyświetlany tekst (w sekundach)

server_msg_delay "15"
//czas pomiędzy wyświetleniem dwóch wiadomości

server_rule_prefix "1"
//dodaj prefix "Zasada X:" przed tekstem zasad

server_restart_msg "0"
//pokaż wiadomość o restarcie kiedy gracz się łączy (tylko dla gracza który pierwszy raz wszedł na serwer)

server_force_playback "1"
//czy ma być odgrywany dźwięk(taki jak w Czero) gdy pojawi się chmurka

Dołączona grafika
Dodane zostały w pewnym sensie symbole. Zastępują one różne rzeczy:
#hostname# - nazwa serwera
#playername# - nick gracza
#nextmap# - następna mapa
#currentmap# - aktualna mapa
#time# - aktualny czas
#timeleft# - ile zostało do końca mapy
#playtime# - ile czasu gra gracz na serwerze

Aby dodać/zmienić wiadomości otwieramy server_messages.txt który znajduje się w addons/amxmodx/data/lang i szukamy:

SERVER_MSG_1 = Siema #playername# na #hostname#
SERVER_MSG_2 = Grasz juz #playtime# a jest godzina #time#
SERVER_MSG_3 = Nastepna mapa to #nextmap#nAdmin czuwa

SERVER_RULE_1 = Oszukiwanie zakonczy sie banem na zawsze
SERVER_RULE_2 = Nie udezamy, ani nie zabijamy swoich.nNie fleshujemy swoich oraz nie kampimy
SERVER_RULE_3 = Pamietaj admin ma zawsze racje.nPrzestrzegaj regulaminu!

SERVER_INFO_1 = (TO JEST PRZYKLADOWA INFORMACJA) Zapraszamy na:nwww.xxxx-xxxxxxx.pl
SERVER_INFO_2 = (TO JEST PRZYKLADOWA INFORMACJA nr2) Zapraszamy na:nwww.xxxx-xxxxxxx.pl
SERVER_INFO_3 = (TO JEST PRZYKLADOWA INFORMACJA nr3) Nowe ip serwera TP ****.****.****.**** ZAPISZ!


Tam gdzie "SERVER_MSG_X" wpisujemy jakąś wiadomość
Tam gdzie "SERVER_RULE_X" wpisujemy jakąś zasade
Tam gdzie "SERVER_INFO_X" wpisujemy jakąś informacje

\n - odpowiada za to że tekst będzie wyświetlony linijke niżej.

np.: Gdy wpiszesz

AXX.pl jest super! nOdwiedz nas!



będzie wyświetlone tak:

AMXX.pl jest super!
Odwiedz nas!


Dołączona grafika
Zawartość pliku required_files.rar należy wypakować do cstrike
Plugin instaluje się standardowo [ http://amxx.pl/viewtopic.php?t=20 ]

Dołączona grafika
Gracz który połączył się z serwerem po raz pierwszy może nie widzieć wiadomości. Musi się ponownie połączyć z serwerem lub zrestartować gre. Autor pracuje nad tym bugiem :P

Załączone pliki


  • +
  • -
  • 8


#275678 Inne dodawanie punktów

Napisane przez byCZUS w 30.07.2011 11:51

Witam,
dzisiaj przedstawię troszkę inny sposób dodawanie punktów statystyk niż w innych tutkach ;], wygląda to mniej więcej tak:

ncje45.jpg

Dokładniej chodzi o opcję numer: 1. Po jej kliknięciu liczba dodawanych punktów się zwiększa (można to dowolnie edytować).

A więc do dzieła, na samym początku musimy dodać jedną stałą z naszymi punktami i zmienną która będzie przechowywała informacje o tym co ile ma dodawać na pkt.
Pod:
 

new const maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120,
90, 2, 35, 90, 90,0, 100};

dodajemy coś takiego:
 

new const co_ile[] = { 1, 4, 8, 16, 24 } // Wlasnie tutaj zmieniamy co ile maja rosnac punkty.
new szybkosc_rozdania[33];

Następnym krokiem będzie edycja widoku statystyk i handler'a od tego. Szukamy

public PrzydzielPunkty(id)
{
new inteligencja[65];
new zdrowie[60];
new wytrzymalosc[60];
new kondycja[60];
new tytul[25];
format(inteligencja, charsmax(inteligencja), "Inteligencja: \r%i \y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1));
format(zdrowie, charsmax(zdrowie), "Zdrowie: \r%i \y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1));
format(wytrzymalosc, charsmax(wytrzymalosc), "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1));
format(kondycja, charsmax(kondycja), "Kondycja: \r%i \y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1));
format(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]);
new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
menu_additem(menu, inteligencja);
menu_additem(menu, zdrowie);
menu_additem(menu, wytrzymalosc);
menu_additem(menu, kondycja);
menu_setprop(menu, MPROP_EXIT, 0);
menu_display(id, menu);
}
i zamieniamy na

public PrzydzielPunkty(id)
{
new szybkosc[60];
new inteligencja[65];
new zdrowie[60];
new wytrzymalosc[60];
new kondycja[60];
new tytul[25];

format(szybkosc, charsmax(szybkosc), "Ile dodawac: \r%d \y(Ile pkt dodac do statow)", co_ile[szybkosc_rozdania[id]]);
format(inteligencja, charsmax(inteligencja), "Inteligencja: \r%i \y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1));
format(zdrowie, charsmax(zdrowie), "Zdrowie: \r%i \y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1));
format(wytrzymalosc, charsmax(wytrzymalosc), "Wytrzymalosc: \r%i \y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1));
format(kondycja, charsmax(kondycja), "Kondycja: \r%i \y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1));
format(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]);
new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
menu_additem(menu, szybkosc);
menu_addblank(menu, 0);
menu_additem(menu, inteligencja);
menu_additem(menu, zdrowie);
menu_additem(menu, wytrzymalosc);
menu_additem(menu, kondycja);
menu_setprop(menu, MPROP_EXIT, 0);
menu_display(id, menu);
}
Wygląd naszego menu z punktami został już zmieniony teraz, handler, znajduje się on nieco niżej, dokładnie chodzi o to:

public PrzydzielPunkty_Handler(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

if(punkty_gracza[id] < 1)
return PLUGIN_CONTINUE;

new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);

switch(item)
{
case 0:
{
if(inteligencja_gracza[id] < limit_poziomu/2)
{
inteligencja_gracza[id]++;
punkty_gracza[id]--;
}
else
client_print(id, print_chat, "[COD:MW] Maxymalny poziom inteligencji osiagniety");


}
case 1:
{
if(zdrowie_gracza[id] < limit_poziomu/2)
{
zdrowie_gracza[id]++;
punkty_gracza[id]--;
}
else
client_print(id, print_chat, "[COD:MW] Maxymalny poziom sily osiagniety");
}
case 2:
{
if(wytrzymalosc_gracza[id] < limit_poziomu/2)
{
wytrzymalosc_gracza[id]++;
punkty_gracza[id]--;
}
else
client_print(id, print_chat, "[COD:MW] Maxymalny poziom zrecznosci osiagniety");

}
case 3:
{
if(kondycja_gracza[id] < limit_poziomu/2)
{
kondycja_gracza[id]++;
punkty_gracza[id]--;
}
else
client_print(id, print_chat, "[COD:MW] Maxymalny poziom kondycji osiagniety");
}
}

if(punkty_gracza[id] > 0)
PrzydzielPunkty(id);

return PLUGIN_CONTINUE;
}
zamieniamy na

public PrzydzielPunkty_Handler(id, menu, item) {
client_cmd(id, "spk QTM_CodMod/select");

if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

if(punkty_gracza[id] < 1)
return PLUGIN_CONTINUE;

new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
new ilosc = (co_ile[szybkosc_rozdania[id]] > punkty_gracza[id]) ? punkty_gracza[id] : co_ile[szybkosc_rozdania[id]]

switch(item) {
case 0: {
if(szybkosc_rozdania[id] < charsmax(co_ile)) szybkosc_rozdania[id]++;
else szybkosc_rozdania[id] = 0;
}
case 1: {
if(inteligencja_gracza[id]+ilosc <= limit_poziomu/2) {
inteligencja_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[COD:MW] Maxymalny poziom inteligencji osiagniety");
}
case 2: {
if(zdrowie_gracza[id]+ilosc <= limit_poziomu/2) {
zdrowie_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[COD:MW] Maxymalny poziom sily osiagniety");
}
case 3: {
if(wytrzymalosc_gracza[id]+ilosc <= limit_poziomu/2) {
wytrzymalosc_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[COD:MW] Maxymalny poziom zrecznosci osiagniety");
}
case 4: {
if(kondycja_gracza[id]+ilosc <= limit_poziomu/2) {
kondycja_gracza[id]+=ilosc;
punkty_gracza[id]-=ilosc;
} else client_print(id, print_chat, "[COD:MW] Maxymalny poziom kondycji osiagniety");
}
}

if(punkty_gracza[id] > 0)
PrzydzielPunkty(id);

return PLUGIN_CONTINUE;
}

No i to tyle, wystarczy teraz przekompilować kod i wgrać plugin. ;]
  • +
  • -
  • 75


#306114 [ROZWIĄZANE] szukam pluginu autorespawn

Napisane przez Hiroshima w 10.10.2011 20:07

#include <amxmodx>

#include <hamsandwich>

 

 

#define PLUGIN "Auto Respawn"

#define AUTHOR "hiroshima"

#define VERSION "1.0"

 

public plugin_init()

{

register_plugin(PLUGIN, VERSION, AUTHOR);

RegisterHam(Ham_Killed, "player","Killed", 1);

}

 

public Killed(id)

set_task(3.0, "Respawn", id);

 

public Respawn(id)

ExecuteHamB(Ham_CS_RoundRespawn, id);

  • +
  • -
  • 1


#354157 Crahy na serwerze

Napisane przez Klakier w 26.01.2012 21:41


01/26/2012 - 14:39:10: [META] dll: Loaded plugin 'AntiDlFile': AntiDlFile v1.4 2010/10/18, Rulzy
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'MySQL'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'mysql_amxx_i386.so'
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'SQLite'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'sqlite_amxx_i386.so'
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'Fun'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'fun_amxx_i386.so'
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'Engine'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'engine_amxx_i386.so'
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'FakeMeta'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'fakemeta_amxx_i386.so'
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'CStrike'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'cstrike_amxx_i386.so'
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'CSX'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'csx_amxx_i386.so'
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Not loading plugin 'Ham Sandwich'; already loaded (status=running)
L 01/26/2012 - 14:39:10: [META] ERROR: dll: Failed to load plugin 'hamsandwich_amxx_i386.so'


wychodzi na to ze nie masz tych plikow w folderze ?
  • +
  • -
  • 1


#354318 Crahy na serwerze

Napisane przez Klakier w 27.01.2012 14:45

zainstaluj od nowa dproto
  • +
  • -
  • 1


#312683 Klasa Punisher

Napisane przez _nothing_ w 23.10.2011 22:42

Dołączona grafika
Jest to Klasa, która posiada Miniguna takiego jak na screenie. Pomysł na klasę wziął się z tego tematu :
http://amxx.pl/topic...klasa-cod-nowy/ przez użytkownika http://amxx.pl/user/18177-gilek/ . Nazwałem go Punisher .

Funkcje Klasy :

* Dostaje MiniGuna oraz Deagle
* ma 130 HP
* 15 kondycji
* 20 wytrzymałości

Dołączona grafika
Dołączona grafika

Dołączona grafika
amx_ammo_mini - ilość amunicji w MiniGunie (domyślnie 600)
amx_speed_mini - Prędkość pocisków polecam 0.9 (max 0.1)
amx_minigun_damage - Mnożnik obrażeń (domyślnie 1.2)
amx_oneround - Tylko 1 MiniGun w ciągu rundy ? (0 - nie , 1 - tak) - zostawić na 0

Dołączona grafika
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <hamsandwich>
#include <amxmisc>
#include <fun>
#include <codmod>
#include <ColorChat>
Dołączona grafika
codclass_punisher.amxx wrzucamy do /plugin

Na końcu plugins-codmod.ini dopisujemy : codclass_punisher.amxx

Modele, Dźwieki.rar wrzucamy według archiwum czyli modele do /models i sound do /sound

Dołączona grafika

Załączone pliki




#332074 [ROZWIĄZANE] Błąd level na wartosci ujemnej

Napisane przez Goliath w 09.12.2011 19:42

Dlaczego mi to tak robi?

Dlatego, że przekraczasz maksymalną wartość zmiennych w Pawn'ie, czyli: 2147483647. Zrób to, co napisałem w poprzednim poście (chociaż trochę...), a następnie sprawdź, czy będzie pasować. Jak? Podnieś do kwadratu wartość cvaru cod_maxlevel i pomnóż wynik przez wartość cvaru cod_levelratio. Jeżeli ostateczny wynik nie przekracza magicznej liczby 2147483647, to jest dobrze, w przeciwnym przypadku zmniejszaj je jeszcze bardziej.

PS. Po co robisz kolejnego fast-exp'a? Przyjemniej się gra na mniejszych levelach, gdzie każdy gracz ma mniej/więcej równe szanse.
  • +
  • -
  • 4


#353400 [ROZWIĄZANE] Dodanie lvl

Napisane przez System'ek w 24.01.2012 20:44

http://amxx.pl/topic...dmin-menu-v-15/ otóż proszę


#349662 [ROZWIĄZANE] Pomoc z rakietami + Z Dmg w m3

Napisane przez Alechandro w 15.01.2012 12:16

na wywalenie broni mam perk z którego wyciagniesz sobie kod pozdro :^D

Załączone pliki


  • +
  • -
  • 1


#349720 [ROZWIĄZANE] Pomoc z rakietami + Z Dmg w m3

Napisane przez radim w 15.01.2012 13:32

1.To:


public cod_class_enabled(id)
			ilosc_rakiet_gracza[id] = 2;
zamieniasz na:


public cod_class_enabled(id)
{
ColorChat(id, GREEN, "Klasa stworzona przez I.PO.CO.NICK");
if(!(get_user_flags(id) & ADMIN_LEVEL_C))
{
  client_print(id, print_chat, "[%s] Nie masz uprawnien, aby uzywac tej klasy.", nazwa)
  return COD_STOP;
}
ilosc_rakiet_gracza[id] = 2;
ma_klase[id] = true;
return COD_CONTINUE;

}

2.
if(weapon == CSW_M3 && damage > 1.0 && random_num(0,0) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 1.0, idinflictor, damagebits);
a.) gdy dodasz ten kod to będzie zabijało za każdym razem bez względu ile ma się hp.

b.) aby usunąc 1/x to nie dodajesz żadnego 0 tylko po prostu kasujesz:

random_num(0,0) == 1

czyli ma to wyglądać tak:

if(weapon == CSW_M3)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 1.0, idinflictor, damagebits)

c.) Jeśli chcesz aby zadawało m3 np. +20 dmg + inteligencja to robisz to tak:

if(weapon == CSW_M3 && damage > 1.0 && random_num(0,0) == 1)
cod_inflict_damage(idattacker, this, 20.0, 1.0, idinflictor, damagebits)
20.0 - stałe dodatkowe obrażenia

1.0 - ile dmg ma dodawać za każdy punkt inteligencji

3.
#include <amxmodx>
#include <codmod>

new const perk_name[] = "Wyrzucenie Broni";
new const perk_desc[] = "Masz 1/4 szans na wyrzucenie broni przeciwnika";

new bool:ma_perk[33];

public plugin_init()
{
	register_plugin(perk_name, "1.0", "QTM_Peyote");

	cod_register_perk(perk_name, perk_desc);

	register_event("Damage", "Damage", "b", "2!=0");	
}

public cod_perk_enabled(id, wartosc)
	ma_perk[id] = true;

public cod_perk_disabled(id)
	ma_perk[id] = false;

public Damage(id)
{
	new idattacker = get_user_attacker(id);

	if(!is_user_alive(idattacker))
		return;

	if(!ma_perk[idattacker])
		return;

	if(random_num(1, 4) != 1)
		return;

	client_cmd(id, "drop");
}


  • +
  • -
  • 1