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
 

Pogodynka ;* - zdjęcie

Pogodynka ;*

Rejestracja: 29.10.2011
Aktualnie: Nieaktywny
Poza forum Ostatnio: 23.11.2016 22:14
*****

#688 Alternative End Round Sounds

Napisane przez bicek w 30.01.2008 11:03

Alternative End Round Sounds
Opis Pluginu:
Alternative End Round Sounds to kontynuacja pluginu roundsounds czyli muzyka na koniec rundy. Plugin działa z plikami *.mp3 jak i *.wav zaleca się stosowanie plików .mp3 z .wav jest więcej problemów. Plugin ma dużo funkcji i jest bardzo prosty w obsłudze.

Instalacja:
Zawartość archiwum wrzucamy do addons/amxmodx do plugins.ini dopisujemy
alt_end_round_sounds.amxx
do folderu soundmisc wrzucamy nasza muzykę i konfigurujemy plugin.

Konfiguracja:
plik roundsound.ini:
ten plik odpowiada za listę utworów które mają się odtwarzać po każdej rundzie, oddzielne dla ct i tt

utwory dopisujesz w następujący sposób
składnia: "plik z muzyką" "drużyna"
"sound/misc/ctwinnar2.wav" "CT"
"sound/misc/twinnar2.wav" "T"

plik prefix-prefixmap.ini:
plik edytujemy tylko wtedy gdy chcemy mieć inną muzykę do wybranych grup map np. zmieniasz nazwę pliku z prefix-prefixmap.ini na cs_.ini i dodajesz wybrana listę
utworów tą samą metodą co w roundsound.ini, od tej pory na wszystkich mapach cs_ będą grane utwory które są wpisane w ten plik.

plik mapname.ini:
praktycznie taka sama zasada działania jak prefix-prefixmap.ini tylko, że plik odpowiada za konkretną mapę, zmieniasz nazwę pliku na de_dus.ini i dopisujesz tam swoją listę utworów do mapy de_dust.

Cvar'y:
ers_enabled <iNum> //czy plugin ma działać 0 - wyłączony / 1 - właczony, oryginalnie 1

ers_player_toggle <iNum> //komenda "/roundsound" (dzięki tej komendzie każdy gracz będzie mógł wyłączyć i włączyć sobie muzykę na koniec rundy) 0 - wyłączona / 1 - właczona, oryginalnie 1

erc_time_ads <iTime> // czas w sekundach co ile ma wyświetlać w czacie informacje o "/roundsound" 0 - wyłączony, oryginalnie 120

erc_random_precache <iMaxTeam or iMax_T-iMax_CT> //ilość plików muzycznych na drużynę, przykład:
gdy do obu drużyn przypisane są po dwa utwory:
erc_random_precache "2"
lub gdy dla Terro są przypisana 2 pliki a dla CT 3 pliki:
erc_random_precache "2-3"

Załączone pliki




#316717 Największe obr.

Napisane przez Pawlak093 w 02.11.2011 06:38

odblokuj miscstats.amxx ; bunch of events announcement for Counter-Strike w plugins.ini
I ustaw to w amxmodmenu - 9 - 5 (ustawienia statystyk) - gdzieś tak :P


#38124 Flagi admina

Napisane przez rS. w 27.01.2009 13:51

Masz tutaj także wytłumaczeni flag jeżeli potrzebujesz coś więcej :

a – immunitet (gracz z tą flagą ma immunitet czyli nie może być kickowany, banowany, slapowany itp. Zaleca się nie dawanie tej flagi nikomu. Co najwyżej sobie.

b – rezerwacja slotu (gracz dostaje rezerwacje slotu)

c – amx_kick (admin z tą flagą może kopać ludzi z serwera)

d – amx_ban i amx_unban (admin z tą flagą może banować i odbanowywac graczy)

e – amx_slay i amx_slap (admin z tą flagą może slayować i slapować graczy)

f – amx_map (admin z tą flagą może zmieniać mapę)

g – amx_cvar (admin z tą flagą może zmieniać ustawienia serwera [nie wszystkie!])

h – amx_cfg (admin z tą flagą może uruchamiać configi serwera)

i – amx_chat (admin z tą flagą może używać kolorowych napisów)

j – amx_vote (admin z tą flagą może uruchamiać glosowania)

k – dostęp do sv_password (admin z tą flagą może ustawić hasło na serwerze)

l – dostęp do amx_rcon (admin z tą flagą może wykonywać polecenia na konsoli samego serwera poprzez amx_cvar)

m – własny poziom A

n – własny poziom B

o – własny poziom C

p – własny poziom

D – (Flagi te są używane przez dodatkowe pluginy. Poziom A ma najniższy priorytet, poziom H najwyższy.)

q – własny poziom E

r – własny poziom F

s – własny poziom G

t – własny poziom H

u – menu access (admin z tą flagą może używać menu)

z – użytkownik (flaga do oznaczenia NIE admin, zwykłego użytkownika)

Flagi Konta:

a – rozłącz gracza przy podaniu złego hasła

b – tag klanowy

c – użytkownik na STEAMID

d – użytkownik na IP

e – hasło do konta nie jest sprawdzane (wymagany jest tylko nick / ip / steamid admina)
  • +
  • -
  • 2


#38100 Flagi admina

Napisane przez MafiaDL w 27.01.2009 08:12

#define ADMIN_ALL        /* wszyscy */

#define ADMIN_IMMUNITY    /* flag "a" */

#define ADMIN_RESERVATION    /* flag "b" */

#define ADMIN_KICK        /* flag "c" */

#define ADMIN_BAN        /* flag "d" */

#define ADMIN_SLAY        /* flag "e" */

#define ADMIN_MAP        /* flag "f" */

#define ADMIN_CVAR        /* flag "g" */

#define ADMIN_CFG        /* flag "h" */

#define ADMIN_CHAT        /* flag "i" */

#define ADMIN_VOTE        /* flag "j" */

#define ADMIN_PASSWORD    /* flag "k" */

#define ADMIN_RCON        /* flag "l" */

#define ADMIN_LEVEL_A        /* flag "m" */

#define ADMIN_LEVEL_B        /* flag "n" */

#define ADMIN_LEVEL_C    /* flag "o" */

#define ADMIN_LEVEL_D    /* flag "p" */

#define ADMIN_LEVEL_E        /* flag "q" */

#define ADMIN_LEVEL_F        /* flag "r" */

#define ADMIN_LEVEL_G    /* flag "s" */

#define ADMIN_LEVEL_H        /* flag "t" */

#define ADMIN_MENU        /* flag "u" */

#define ADMIN_ADMIN        /* flag "y" */

#define ADMIN_USER        /* flag "z" */
A jakie dałeś flagi
  • +
  • -
  • 4


#476429 RoundSound By Virmidia (80 Utworów!!) Vol1

Napisane przez Sollek w 08.11.2012 14:04

Zaczynając chcę powiedzieć, że ten RoundSound nie jest wykonany przez Ciebie. Tylko wszedłeś sobie w cstrike/sound/misc i poprzemieniałeś nazwę. Dowód?

http://i1227.photobu...SollekCK/rs.png
http://i1227.photobu...ollekCK/rs2.png

Kto normalny Robi paczkę dźwięków prawie 1,5 roku ?

Jeżeli Administracji się nie podoba to co napisałem to Przepraszam. Ale nie lubię jak ktoś mnie brzydko powiedziawszy robi w "ch*ja"
  • +
  • -
  • 2


#5907 Jak zainstalować PodBot'y do Amx Mod X

Napisane przez baku w 17.05.2008 16:16

A więc najpierw sciągasz PodBoty :
http://www.sendspace.pl/file/acJqww7E/

Wrzucasz je do cstrike/addons

Następnie w addons/metamod/plugins.ini dopisujesz linike :
;; PodBot
win32 addons/podbot/podbot_mm.dll
linux addons/podbot/podbot_mm_i386.so
Wchodzimy do: /cstrike/addons/podbot i otwieramy notatnikiem podbot.cfg. Szukamy linijki pb_password "pomiędzy cudzysłowami wpisz twoje hasło"

Teraz załączasz cs'a i w konsoli wpisujesz :
setinfo _pbadminpw "tutaj wpisz hasło ktore wpisałeś w podbot.cfg"
A tu zrób sobie binda na menu :
bind "=" "pb menu"
Pod przyciskiem = masz podbota

I to wszystko ;]


Tutorial wykonany dla www.amxx.pl
Copyright � 2008 baku. Kopiowanie zabronione.

  • +
  • -
  • 114


#441151 Fake Team Bot v1.3

Napisane przez Grease w 05.08.2012 16:34

A działa to tak, że poprostu dodaje bota na serwer? Przydało by mi się do gry z wujkiem na moim serwie. Leci plusik !


Tak dodaje po jednym niewidocznym i nieżywym bocie do każdej drużyny.
Jeśli chcesz mieć normalne boty zapraszam tu: http://amxx.pl/topic...y-do-amx-mod-x/
  • +
  • -
  • 1


#360863 Fake Team Bot v1.3

Napisane przez sebul w 08.02.2012 21:57

opis
To samo co tutaj http://amxx.pl/topic...e-team-bot-v11/ tylko z jedną ważną przeróbką. Plugin dodaje boty gdy na serwerze jest mniej graczy niż X (edytowane cvarem), ale także kickuje je, gdy warunek ten nie zostanie spełniony, czyli gdy jest więcej graczy. Stan graczy sprawdzany jest co kilka sekund, więc na boty trzeba czasami trochę poczekać. Sam mam ten plugin u siebie na serwerze, co prawda na początku było w nim parę bugów, ale zostały one już chyba naprawione, bo od dłuższego czasu wszystko jest ok.

cvary
dm_fakebot_min_player "8" // poniżej ilu graczy ma być na serwerze, aby boty się dodały

instalacja
Standardowa.

download

Załączone pliki


  • +
  • -
  • 12


#361878 [ROZWIĄZANE] Za dobry sprzęt ?

Napisane przez Waleq w 10.02.2012 18:16

Tryb zgodności z Windows XP SP2 powinien pomóc.
  • +
  • -
  • 1


#257298 Kompilacja Diablo Onyke

Napisane przez Onyke w 09.06.2011 20:23

0nYk3, jeśli można - podeślij swojego color chata :)

Załączone pliki


  • +
  • -
  • 9


#334 [AMXX] GunGame

Napisane przez sWH? w 14.01.2008 19:13

GunGame 1.7b
Wersja 1.17b

Najnowsza wersja (v2.13) dostępna pod tym adresem! http://avalanche.gun...rg/download.php


Opis:
Podstawowa zasada w GunGame jest to ze: musisz zabic przeciwnika ta bronia jaka masz zeby zdobyc wyzszy level. Zaczynasz od pistoletów, szotganów, mp5 etc. dopóki przeciwnik nie zdobedzie najwyzszego levelu. Aby awanasowac musisz zabic zdanej broni kilka przeciwników.


Plugin zawiera:

* Turbo mode (gg_turbo, domyslnie 0) po zabiciu gracza dostajesz poziom, a kazdy nastepny poziom to inna bron
* Knife Pro (gg_knife_pro, domyslnie 0) pozwala na "kradniecie" innym leveli poprzez zabijanie ich nozem.
* Deathmatch mode (gg_dm, domyslnie 0) czyli jak cie zabije to sie odradzasz i tak w kólko. Nie musisz czekac do konca rundy.

Instalacja pluginu:
Plugin wymaga AMXX w wersji 1.76 lub wyzszej!


1. Sciagasz paczke, do której link podał kolega na gorze, rozpakowujesz gdzie chcesz.
2. Plik gungame.amxx wrzucasz do

addons/amxmodx/plugins

3. Nastepnie wchodzisz do pliku

addons/amxmodx/configs/plugins.ini

gdzie na koncu dopisujesz linijke

gungame.amxx

Ok, plugin zainstalowany. Teraz pora na config (nie musisz tego robic jesli odpowiadaja Ci domyslne ustawienia

1. Ze sciagnietej wczesniej paczki kopujesz plik

gungame.cfg

do katalogu

addons/amxmodx/configs

No i zrobione, teraz jesli chcesz to ustawiasz w nim co chcesz i jak chcesz

Jesli chcesz miec dla GunGame oddzielny mapcycle, to w folderze /cstrike (dla cs 1.6) lub /czero (dla cs: cz) tworzysz plik

gungame_mapcycle.txt

I w nim wypisujesz mapki dla GunGame...
I w nim wypisujesz mapki dla GunGame...

Instalacja dzwieków dla GunGame

1. W sciagnietej paczce jest plik gg_sounds.zip , rozpakuj go.
2. Wklej dzwieki do folderu /sounds


Źródło: Konkurencyjne Forum ;-) Z Moja Edycja

Pozdrawiam

Załączone pliki


  • +
  • -
  • 2


#69839 Tworzenie menu

Napisane przez R3X w 27.06.2009 17:39

Tworzenie menu

Stary temat składa się tylko z jednej części i autor chyba nie zamierza kontynuować, więc opiszę tworzenie menu od podstaw.

Kilka słów wstępu.
Najpierw zajrzyj do komend i operacji bitowych. Pisząc tutorial zakładam, że czytelnik wie jak budować komendy i co to jest suma bitowa.
W przykładowych źródłach celowo pomijam stałe nagłówki (#include, #define) w celu zmniejszenia objętości tekstu. Kod bez nich się nie skompiluje!


Po pierwsze trzeba wiedzieć, że mamy do dyspozycji 2 metody tworzenia menu:
  • tzw. stara↵ - ręczna, wymaga więcej przygotowania, ale jest elastyczniejsza
  • tzw. nowa↵ - korzystamy z przygotowanych zasobów, za organizację menu odpowiadają natywne funkcje AMXX

Formatowanie

Niezależnie od metody, treść menu formatujemy tymi samymi znakami, a oto one:

^n - nowa linia
^t - tabulator
\w - dalszy tekst będzie miał kolor biały
\y - dalszy tekst będzie miał kolor z&#243;łty
\r - dalszy tekst będzie miał kolor czerwony
\d - dalszy tekst będzie miał kolor szary
\R - dalszy tekst będzie wyr&#243;wnany do prawej

Przykładowe (stare) menu

\yWidzisz to menu?^n^n\w1. Tak^t2. Nie

na początku y, więc tekst do następnego znaku zmiany koloru będzie żółty
jako kolejne rozpoznajemy ^n, czyli po nagłówku "Widzisz to menu?" przechodzimy do nowej linii
następny ^n tworzy linijkę odstępu
teraz mamy w, czyli dalszy tekst będzie biały
ostatni jest ^t, który oddzieli opcję 'tak' od 'nie'

Efekt:

menu1.JPG






Metoda 1

Nasze menu jest pokazywane przy użyciu funkcji
show_menu ( index, keys, const menu[], time = -1, title[] = "" )
index - id gracza
keys - suma odpowiadająca używanym klawiszom, tylko te, które się w niej zawierają będą rozpoznawane przez menu
const menu[] - treść menu, czyli to co zostanie pokazane graczowi
time - czas utrzymania menu na ekranie w sekundach, -1 oznacza, aż do naciśnięcia klawisza z menu
title[] - tytuł, potrzebny do rozpoznania menu

Korzystając z wcześniejszego przykładu menu:
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("mymenu","mymenu");
}
public mymenu(id){
	show_menu(id, MENU_KEY_1| MENU_KEY_2, "yWidzisz to menu?^n^nw1. Tak^t2. Nie");
	return PLUGIN_HANDLED;
}
Z nowości mamy:

MENU_KEY_1| MENU_KEY_2

jest to suma bitowa stałych MENU_KEY_1 i MENU_KEY_2. Pierwsza odpowiada klawiszowi 1 (slot1), druga klawiszowi 2 (slot2). Razem stanowią zbiór klawiszy przechwytywanych przez menu.

Ogólnie mamy do dyspozycji 10 klawiszy:
#define MENU_KEY_1		(1<<0)
#define MENU_KEY_2		(1<<1)
#define MENU_KEY_3		(1<<2)
#define MENU_KEY_4		(1<<3)
#define MENU_KEY_5		(1<<4)
#define MENU_KEY_6		(1<<5)
#define MENU_KEY_7		(1<<6)
#define MENU_KEY_8		(1<<7)
#define MENU_KEY_9		(1<<8)
#define MENU_KEY_0		(1<<9)

Ok, pokazaliśmy graczowi menu, zdefiniowaliśmy klawisze, na które menu reaguje. Pora na przechwycenie zdarzeń menu.

Najpierw musimy przypisać naszemu menu jakąś publiczną funkcję. Służy do tego funkcja z
register_menu ( title[], keys, function[], outside=0 )
title - tytuł, potrzebny do rozpoznania menu, musi być dokładnie taki sam jak w show_menu
keys - suma klawiszy, powinna zawierać wszystkie możliwe do użycia w naszym menu klawiszy (np. gdy jedna z opcji jest dostępna tylko dla żywych graczy, jej klawisz również powinien być zsumowany)
function - nazwa publicznej funkcji, do której zostanie przekazane id i klawisz
outside - zmienimy na 1, gdy menu będzie z zewnętrznego źródła (inny plugin, silnik gry)

Kod powinien wyglądać tak:
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("mymenu","mymenu");
	
	register_menu("MyMenu",MENU_KEY_1|MENU_KEY_2,"cbMyMenu");
}
public mymenu(id){
	show_menu(id,MENU_KEY_1|MENU_KEY_2, "yWidzisz to menu?^n^nw1. Tak^t2. Nie",-1,"MyMenu");
	return PLUGIN_HANDLED;
}
public cbMyMenu(id, key){
}

Suma klawiszy powtarza się, więc użyjmy stałej. Argumenty funkcji cbMyMenu to id gracza i użyty klawisz. Przyciski numerowane są od zera, więc naciśnięcie 1 prześle key=0, naciśnięcie 2 prześle key=1 itd. Dość mylące rozwiązanie, zwłaszcza patrząc na klawisz 0, dla którego key=9 Dołączona grafika
#define MYMENU_KEYS MENU_KEY_1|MENU_KEY_2
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("mymenu","mymenu");
	
	register_menu("MyMenu",MYMENU_KEYS,"cbMyMenu");
}
public mymenu(id){
	show_menu(id, MYMENU_KEYS, "yWidzisz to menu?^n^nw1. Tak^t2. Nie", -1, "MyMenu");
	return PLUGIN_HANDLED;
}
public cbMyMenu(id, key){
	client_print(id, print_chat, "Wybrales opcje: %d", key+1);
}
Aby przypisać operacje danemu klawiszowi wygodnie jest zastosować switch().
#define MYMENU_KEYS MENU_KEY_1|MENU_KEY_2
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("mymenu","mymenu");
	
	register_menu("MyMenu",MYMENU_KEYS,"cbMyMenu");
}
public mymenu(id){
	show_menu(id,MYMENU_KEYS, "yWidzisz to menu?^n^nw1. Tak^t2. Nie",-1,"MyMenu");
	return PLUGIN_HANDLED;
}
public cbMyMenu(id, key){
	switch(key){
		case 0:{
			client_print(id, print_chat, "Wybrales opcje Tak");
		}
		case 1:{
			client_print(id, print_chat, "Wybrales opcje Nie");
		}
	}
}

Oczywiście można dodać opcję Anuluj, dodając do sumy klawisz 0 i zmienić nieco treść menu. Nie trzeba dodawać case 9:, gdyż menu automatycznie zamknie się po złapaniu klawisza i nie ma potrzeby wykonywania innych czynności. Gdy chcesz zachować menu na wierzchu nawet po naciśnięciu klawisza za strukturą switch wywołaj funkcję mymenu(id), która ponownie je wyświetli.

------------------------------------------------------------------------------------------------------------------------------------------------


Metoda 2

Nowy styl stworzenia menu pozwala na dynamiczne nim zarządzanie. Tworzeniem treści menu zajmują się przygotowane funkcję, nasza praca polega na dostarczeniu informacji.

Pierwszą operacją jest stworzenie uchwytu. Pozostałe operacje wymagają do niego odwołania. Jeśli pokazujemy wszystkim to samo menu uchwyt może mieć zasięg globalny, a menu utworzone w plugin_init(). W innym razie menu tworzymy tuż przed wyświetleniem. Główna funkcja to:
menu_create ( title[], handler[], ml=0 )
title[] - tytuł, tutaj służy również za nagłówek menu (jeśli nie podamy własnego)
handler[] - nazwa publicznej funkcji, do której przekazywane będą informacje z menu
ml=0 - przestało być używane, nie podajemy

Podawanie klawiszy, na które reaguje menu jest niepotrzebne. Funkcja wyświetlająca potrafi rozpoznać niezbędne klawisze, zależnie od dostępnych opcji.

new gMyMenu
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	gMyMenu=menu_create("Jak sie przywitasz?","cbMyMenu");	
}
public cbMyMenu(id, menu, item){
 
}

Tym razem funkcja cbMyMenu ma aż 3 argumenty: id - index gracza, menu - uchwyt menu, oraz item. Ten ostatni argument zawiera numer wybranej opcji (numerowane od zera). Pozwala np. za pomocą switch() przyporządkować operacje danej opcji. Jest to szczególnie wygodne przy menu wielostronnym. Trzeba pamiętać, że wartość item może być mniejsza od zera - opcja wyjścia z menu to item=-3.

Do dodawania opcji służy funkcja:
menu_additem(menu, const name[], const info[]="", paccess=0, callback=-1);
menu - uchwyt menu
const name[] - tekst opcji
const info[] - informacja wewnętrzna, w większości menu wartość nieistotna
paccess - poziom dostępu do menu, tak samo jak w przypadku komend, np. ADMIN_BAN
callback - w tym miejscu możemy przypisać funkcję kontrolną, o której później

new gMyMenu;
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	gMyMenu=menu_create("Jak sie przywitasz?","cbMyMenu");
	menu_additem(gMyMenu,"Witam");//item=0
	menu_additem(gMyMenu,"Czesc");//item=1
	menu_additem(gMyMenu,"Przyszedl Admin :D","",ADMIN_CHAT);//item=2
}
public cbMyMenu(id, menu, item){
	switch(item){
		case 0:{
			client_cmd(id, "say Witam");
		}
		case 1:{
			client_cmd(id, "say Czesc");
		}
		case 2:{
			client_cmd(id, "say Przyszedl Admin :D");
		}
	}
}

Mamy menu pokażmy je graczowi.
menu_display(id, menu, page=0);
id - index gracza
menu - uchwyt menu
page - podstrona menu

new gMyMenu;
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("mymenu","mymenu");
	
	gMyMenu=menu_create("Jak sie przywitasz?","cbMyMenu");
	menu_additem(gMyMenu,"Witam");//item=0
	menu_additem(gMyMenu,"Czesc");//item=1
	menu_additem(gMyMenu,"Przyszedl Admin :D","",ADMIN_CHAT);//item=2
		
}
public mymenu(id){
	menu_display(id, gMyMenu,0);
	return PLUGIN_HANDLED;
}
public cbMyMenu(id, menu, item){
	switch(item){
		case 0:{
			client_cmd(id, "say Witam");
		}
		case 1:{
			client_cmd(id, "say Czesc");
		}
		case 2:{
			client_cmd(id, "say Przyszedl Admin :D");
		}
	}
}

menu2.JPG





Żeby pokazać więcej o nowym stylu menu przeniosę uchwyt i tworzenie do mymenu(id). Podstawą różnicą jest potrzeba zniszczenia menu po zakończeniu pracy.
menu_destroy ( menu )
menu - uchwyt menu

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("mymenu","mymenu");	
}
public mymenu(id){
	new MyMenu=menu_create("Jak sie przywitasz?","cbMyMenu");
	
	menu_additem(MyMenu,"Witam");//item=0
	menu_additem(MyMenu,"Czesc");//item=1
	menu_additem(MyMenu,"Przyszedl Admin :D","",ADMIN_CHAT);//item=2
	
	menu_display(id, MyMenu,0);
	return PLUGIN_HANDLED;
}
public cbMyMenu(id, menu, item){
	switch(item){
		case 0:{
			client_cmd(id, "say Witam");
		}
		case 1:{
			client_cmd(id, "say Czesc");
		}
		case 2:{
			client_cmd(id, "say Przyszedl Admin :D");
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

menu_destroy() sprawia, że nasz uchwyt staje się bezużyteczny, czyści pamięć zajmowaną dotychczas przez menu. Oczywiście zamiast go niszczyć, możemy zostawić menu na ekranie. Wystraczy w cbMyMenu ponownie wywołać menu_display(). Wtedy nie powinniśmy dopuścić do wywołania menu_destroy a zwrócić nie PLUGIN_HANDLE tylko PLUGIN_CONTINUE, np. tak:

public cbMyMenu(id, menu, item){
	switch(item){
		case 0:{
			client_cmd(id, "say Witam");
			menu_display(id, menu);
			return PLUGIN_CONTINUE;
		}
		case 1:{
			client_cmd(id, "say Czesc");
		}
		case 2:{
			client_cmd(id, "say Przyszedl Admin :D");
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
Efekt: Gdy wybierzemy "Witam" menu pozostanie na ekranie.


Funkcja kontrolna

Do każdej z opcji możemy przypisać taką funkcję. Będzie ona decydować czy dana opcja jest aktywna (biała) czy nieaktywna (szara, bez reakcji na swój przycisk).

Najpierw utwórzmy uchwyt, tym razem dla publicznej funkcji.
menu_makecallback(const function[])
zwróconą wartość przekażemy do menu_additem:

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("mymenu","mymenu");	
}
public mymenu(id){
	new MyMenu=menu_create("Jak sie przywitasz?","cbMyMenu");
	new MyMenuFun=menu_makecallback("mcbMyMenu");
	
	menu_additem(MyMenu,"Witam","",0,MyMenuFun);//item=0
	menu_additem(MyMenu,"Czesc","",0,MyMenuFun);//item=1
	menu_additem(MyMenu,"Przyszedl Admin :D","",ADMIN_CHAT,MyMenuFun);//item=2
	
	menu_display(id, MyMenu,0);
	return PLUGIN_HANDLED;
}
public cbMyMenu(id, menu, item){
	switch(item){
		case 0:{
			client_cmd(id, "say Witam");
		}
		case 1:{
			client_cmd(id, "say Czesc");
		}
		case 2:{
			client_cmd(id, "say Przyszedl Admin :D");
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public mcbMyMenu(id, menu, item){
	return ITEM_ENABLED;
}
Przypisana funkcja ma taką postać. Zwracana wartość decyduje o aktywności opcji. Ta funkcja sprawi, że wszystkie opcje będą aktywne. Zwrócenie ITEM_DISABLED spowoduje brak aktywności wszystkich/danej opcji zależnie od zastosowania.
public mcbMyMenu(id, menu, item){
	return ITEM_ENABLED;
}

Np. przez taką funkcję
public mcbMyMenu(id, menu, item){
	if(item==1)
		return ITEM_DISABLED;
	return ITEM_ENABLED;
}
Opcja "Czesc" będzie nieaktywna:

menu3.JPG






Dostosowanie

W starym stylu wygląd menu znacznie bardziej zależy od nas, jednak projektowanie menu o kilku stronach może być kłopotliwe. Nowa metoda tworzenia mimo schematycznej budowy ma kilka opcji, które pozwalają dostosować treść menu, ale oczywiście w mniejszym stopniu.

Potrzebuje nowej funkcji:
menu_setprop(menu, prop, ...);
menu - uchwyt menu
prop - wartość z listy:
#define MPROP_PERPAGE	1		/* Liczba opcji na stronę (param1 = liczba, 0=bez stronnicowania, 7=domyślnie) */
#define MPROP_BACKNAME	2		/* Nazwa opcji Back/Wstecz (param1 = tekst) */
#define MPROP_NEXTNAME	3		/* Nazwa opcji Next/Dalej (param1 = tekst) */
#define MPROP_EXITNAME	4		/* Nazwa opcji Exit/Wyjście (param1 = tekst) */
#define MPROP_TITLE	5		/* Nagł&#243;wek menu (param1 = tekst) */
#define MPROP_EXIT	6		/* Opcja wyjścia? (param1 = liczba, MEXIT_ALL - zawsze, MEXIT_NEVER- nidgy) */
#define MPROP_NOCOLORS	8		/* Czy usunąć automatyczne kolory(param1 = liczba, 0=domyślnie) */
#define MPROP_NUMBER_COLOR	10	/* Kolor opis&#243;w przycisk&#243;w (param1 = tekst, "r"=domyślny) */

Przykład użycia:
public mymenu(id){
	new MyMenu=menu_create("Jak sie przywitasz?","cbMyMenu");
	new MyMenuFun=menu_makecallback("mcbMyMenu");
	
	menu_additem(MyMenu,"Witam","",0,MyMenuFun);//item=0
	menu_additem(MyMenu,"Czesc","",0,MyMenuFun);//item=1
	menu_additem(MyMenu,"Przyszedl Admin :D","",ADMIN_CHAT,MyMenuFun);//item=2
	
	//opcja wyjścia "Wyjście" zamiast "Exit"
	menu_setprop(MyMenu,MPROP_EXITNAME,"Wyjscie");
 
	//zawsze pokaż opcję wyjścia
	menu_setprop(MyMenu,MPROP_EXIT,MEXIT_ALL);
 
	//kolor cyfry przycisku zmień na ż&#243;łty
	menu_setprop(MyMenu,MPROP_NUMBER_COLOR,"y");
	
	
	menu_display(id, MyMenu,0);
	return PLUGIN_HANDLED;
}

Rezultat:

menu4.JPG






Podsumowanie

Stare menu jest znacznie elastyczniejsze, pozwala nam wpłynąć bezpośrednio na całą treść menu, jednak wymaga więcej pracy. Nowy styl menu, zwłaszcza połączony z globalnymi tablicami standardowymi/dynamicznymi, pozwala nam znacznie zautomatyzować menu. Musimy wybrać między metodami zależnie od zapotrzebowania. Obie są składnikiem biblioteki , więc ma problemu wyboru modułów.

Początkującym programistom Pawna pod AMXX polecam nowy styl - unikniecie wielu błędów.

PS. Do zamknięcia obu menu możemy użyć funkcji:
#define hide_menu(%1) show_menu(%1,0,"^n")
/*
To samo co
public hide_menu(id)
	show_menu(id,0,"^n");
*/



Dodatek

W przykładach menu otwierało się na komendę. Aby pokazać je zaraz po wejściu na serwer należy użyć kodu:
#define TASK_SHOWMENU 12000
 
public client_putinserver(id)
	set_task(1.0, "show_menu_", id+TASK_SHOWMENU);
	
public show_menu_(tid){
	new id=tid-TASK_SHOWMENU;
	new iTeam=get_user_team(id);
 
	new menu_id, keys;
	new menuUp = player_menu_info( id, menu_id, keys );
 
	if ( iTeam && (menuUp <= 0 || menu_id < 0) )
		//Tu pokazujemy menu
		mymenu(id);
	else
		set_task(1.0, "show_menu_", tid);
}
który nie pozwoli nadpisać menu wyboru drużyny i modelu.
  • +
  • -
  • 64


#407684 Niebezpieczne hasła rcon! Czyli takie jakich nie powinniśmy mieć

Napisane przez Drzanas w 07.05.2012 02:48

Nie znalazłem hasła "d*pa". uff, mogę być spokojny o mój serwer
  • +
  • -
  • 7


#191071 Dodawanie nowych statystyk

Napisane przez Zaszka w 23.11.2010 15:52

Witaj dzisiaj chcialem przedstawic wam tutorial Jak zrobic nowa statystyke
Statystyka moza byc dowolna moze robic co tylko chcecie ja zrobia taka by dawala 2pkt pancerza za 1 pkt statystyki czyli za 50 pkt statystyki bedzie 100 pkt armoru
A jesli mamy juz kamizelke albo np 200 arma to ciagle bedzie wiecej 0 x pkt


To zaczynamy:
Spoiler


Mam nadzieje ze pomoglem proszę komentowac mi dziala ;d


#102082 Admin Connect Sound

Napisane przez Gucio w 29.12.2009 00:14

Co to jest?:
Plugin Admin Connect sound gra muzykę kiedy na serwer wchodzi admin. Plik muzyczny może być dowolny ale musi być w formacie .wav.

Instalacja:

  • acs.V1.4.amxx wklej do addons/amxmodx/plugins
  • otwórz addons/amxmodx/configs/plugins.ini i dodaj linijkę acs.V1.4.amxx
  • wklej folder sound do cstrike
  • acs.cfg wklej do addons/amxmodx/configs i edytuj go według własnych upodobań, są tam ścieżki plików itp.
  • zrestartuj serwer i gotowe!

Załączone pliki


  • +
  • -
  • 5