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
 

Dudix - zdjęcie

Dudix

Rejestracja: 07.03.2008
Aktualnie: Nieaktywny
Poza forum Ostatnio: 06.04.2017 18:38
-----

#280544 Autoresponder/Advertiser - advanced version

Napisane przez sebul w 09.08.2011 23:27

opis
Plugin co jakiś czas (ustawiany cvarami) wyświetla na chacie różne reklamy, informacje, itp. Jest to przeróbka istniejącego już pluginu, ale ta wersja przepisana jest na nowo, działa na dynamicznej tablicy array (dlatego też kod jest dużo krótszy) oraz ma więcej opcji. Reklamy można ustawić tak, aby wyświetlały się one na konkretnych mapach, mapach z określonym prefixem (np. de, cs, itp.), od określonej ilości graczy (znajdujących się na serwerze), do określonej ilości graczy, czy też w określonych godzinach. Opcje te można ze sobą łączyć, np. "na y mapie" z "od x ilości graczy", "na mapie o prefixie y" z "do x ilości graczy" oraz "od x do y godziny", itp. Nie zalecane jest łączenie ze sobą opcji "na y mapie" z "na mapie o prefixie y" oraz "od x ilości graczy" z "do x ilości graczy".
Reklamy można "kolorować" poprzez tagi ([normal], [team], [green]) oraz został dodany tag ([.you]), dzięki któremu możemy w reklamie wyświetlić nick gracza oglądającego reklamę.
Przykładowe reklamy znajdują się już w "advertisements.ini".
Spoiler

Myślałem też nad tym, aby dodać opcję z godziną, czyli od x godziny wyświetlało by reklamę, albo do x godziny, ale nie wiem czy jest sens, no i na razie zostawiam to tak jak jest.

UWAGA!! 20.04.2013
Ważna aktualizacja pluginu, która eliminuje możliwość wyłączenia się serwera przy ustawieniu zbyt długiej wiadomości, do tego kod pluginu został "odświeżony".

screenshot
reklamae.jpg

cvary
ad_react_all "1" // 1 - pokazuj odpowiedź na dany tekst każdemu na serwerze, 0 - pokazuj tylko temu kto napisał
ad_rand_min "40" // minimalny odstęp pomiędzy reklamami
ad_rand_max "60" // maksymalny odstęp pomiędzy reklamami
instalacja
Standardowa.

download
Załączony plik  ad_manager_array.sma   9,45 KB  2417 Ilość pobrań
  ad_manager_array.amxx
Załączony plik  advertisements.ini   1,63 KB  5127 Ilość pobrań

  • +
  • -
  • 62


#163670 Dynamiczny HUD

Napisane przez R3X w 24.08.2010 22:55

Dynamiczny HUD
dHUD.inc
v.1.03

Temat w budowie, stworzenie dokumentacji potrwa pewnie dłużej niż pisanie kodu :P
Tymczasem angielski opis wszystkich funkcji można znaleźć w pliku .inc

Dołączona grafikaDemonstracja

Eksperymentalna biblioteka do tworzenia różnych efektów na wiadomościach HUD. Jej głównym (lecz nie jedynym) zadaniem jest zautomatyzowanie ruchu i zmian koloru wyświetlanych komunikatów.



Plugin udostępnia szereg funkcji do pracy z efektami. Podstawowe operacje odbywają się na pojedynczych klatkach animacji, jak we flashu. Tak też wyświetlana jest wiadomość - klatka po klatce - zastąpienie napisu jego kopią w innym miejscu czy kolorze stworzy wrażenie ruchu i przekształceń kolorystycznych.

Download



Instalacja
Plik dHUD.sma należy skompilować i zainstalować na serwerze. Plugin korzystający z efektów skompiluje się wyłącznie lokalnie z dostępem do dHUD.inc.


Interfejs

Wszystkie udostępniane funkcje mają prefiks DHUD_*.

Pierwsze co trzeba zrobić to stworzyć 'obiekt' dhud. DHUD_create() zwraca uchwyt, którego używa się z pozostałymi funkcjami. Można utworzyć kopię istniejącego obiektu przez podanie jego uchwytu DHUD_create(dhud) [działa to podobnie jak konstruktor kopiujący w językach obiektowych].


Animację możemy zaprojektować manualnie przypisując właściwości każdej klatce z osobna (dHUD_test -> dhud) lub użyć filtrów (dHUD_test -> dhud3).

  • klatka po klatce
Wystarczy kilka wywołań DHUD_setFrame, każde przypisze kolor i położenie napisu tworząc animację

DHUD_setFrame(dhud, frame, iColor[3], Float:x, Float:y, iLen = 1);
dhud - uchwyt
frame - numer klatki, zaczynają się od 0, w przypadku numeru większego niż liczba dostępnych akurat klatek animacja zostaje wypełniona pustymi klatkami aż do podanego rozmiaru
iColor[3] - kolor napisu
x, y, - położenie napisu
iLen - długość klatki; w miejsce dwóch identycznych klatek z iLen=1 można dać jedną z iLen=2




  • filtry

Filtry służą do przetwarzania kilku klatek zgodnie z danym algorytmem.

DHUD_applyFilter(dhud, const szFilter[], startFrame, endFrame, Float:dx=D_LONG, Float:dy=D_ZERO, any:...)
dhud - uchwyt
szFilter[] - nazwa filtra, lista dostępnych jest drukowana po użyciu komendy "dhud info" przez admina z flagą od konfiguracji (H)
startFrame, endFrame - przedział klatek
dx, dy - przyrost wartości x i y, przydatne w funkcjach, funkcja realizująca filtr otrzymuje współrzędne x i y, z których może wyliczyć nowe położenie (przykład z sinusem w dHUD_test), każda ramka dostaje wartości x<poprzedniej ramki> + dx i y<poprzedniej ramki> + dy
any:.. dodatkowe parametry filtrów, opisane także w "dhud info"



Dwoma podstawowymi filtrami dHUD są SetPosition i SetColor. Dzięki nim, możemy ustawić kolor i położenie w wielu klatkach jednocześnie.

SetPosition ustawia podaną pozycję wszystkim klatkom z zakresu startFrame-endFrame
SetColor ustawia podany kolor wszystkim klatkom z zakresu startFrame-endFrame

Ten kod ustawi dhud długości 50 klatek w pozycji 0.5 0.5 w kolorze białym (255, 255, 255)
DHUD_setFrame(dhud, 50, {0,0,0}, 0.0, 0.0);
DHUD_applyFilter(dhud, "SetPosition", 0, 50, D_ZERO, D_ZERO, 0.5, 0.5);
DHUD_applyFilter(dhud, "SetColor", 0, 50, D_ZERO, D_ZERO, 255, 255, 255);



Jak już zbudujemy animację nadejdzie mement na wyświetlenie jej graczowi:
DHUD_display(id, dhud, Float:fInterval = 0.1, channel = 4, const szMessage[], any:...)
id - id gracza lub 0 - do wszystkich
dhud - uchwyt
fInterval - długość trwania klatki w sekundach; czas od pokazania pewnej ramki do następnej mnożony przez wartość iLen klatki
channel - kanał HUD, 1-4
szMessage[], ... - wiadomość; można użyć ciągów formatujących; %L + LANG_PLAYER z id = 0 niestety nie zadziała! może w przyszłym wydaniu


Forward
W momencie zakończenia animacji wykonywany jest forward
forward fwStopAnimation(id, dhud, bool:finished);

czyli w pluginie można dopisać publiczną funkcję, która zareaguje na to zdarzenie
public fwStopAnimation(id, dhud, bool:finished){}

parametr finished jest ustawiany na true, kiedy animacja zostanie zakończona zgodnie z planem i false jeśli zostanie zatrzymana/zastąpiona nową


Historia

1.03
- poprawione: rejestrowanie filtrów z parametrami w zewnętrznych pluginach

1.02
- poprawione: pierwsza ramka wyświetlana bez opóźnienia
- poprawione: forward wykonywany dokładnie w momencie końca animacji (a nie po puszczeniu ostatniej klatki)
- dodane: ustawienie iLen na 0 usuwa klatkę z animacji
- dodane: stock DHUD_removeFrames
- dodane: stock DHUD_removeAllFrames

1.01
- poprawa interfejsu
- dodane: czyszczenie nieużywanych tablic Array:
- dodane: forward onStopAnimation
- dodane: komenda "dhud info"

1.0
- pierwsza, nie publikowana szerzej wersja
  • +
  • -
  • 37


#158601 [Base Builder] System Ammo Packów

Napisane przez G[o]Q w 09.08.2010 12:23

Plugin : BB ammo_packs
Autor : G[o]Q



Dołączona grafika
Plugin dodaje nam ammo packi do gry,dostajemy je za zabojstwo oraz za DMG.
Dodatkowo mozemy tworzyc wlasne "itemy" do kupienia ktore dolaczamy jako osobne pluginy(wiecej info oraz przyklady w downloadzie)

Dołączona grafika
BB_ammo_per_kill - ilosc ammo packow za zabicie
BB_ammo_per_dmg - ile dmg nalezy zadac zeby dostac 1 ammo packa
BB_save_ap - (1- zapis ammo packow wlaczony / 0 - wylaczony)

Dołączona grafika
give_ap <nick> <ilosc> - Daje graczowi dana ilosc ammopacków

Dołączona grafika
say /buy - otwiera sklep

Dołączona grafika

Standardowa

Dołączona grafika
załącznik


UPDATE

-Dodana komenda na dawanie ammo packow (give_ap "nick" "ilosc")
-Dodanie cvara BB_save_ap (1- zapis ammo packow wlaczony / 0 - wylaczony)
-Update przykladu (dodanie cvarow do ustawienia teamu i kosztu)


UPDATE nr2


-Poprawa jednego istotnego Buga (thx 4 R3X)



UPDATE nr3


-Naprawa spamu w logach
-Dynamiczne komendy(komendy na otwarcie menu mozemy ustawic w pliku bb-commands.ini w configs)
-Dynamiczne komendy nr2 wpisujac w konsoli/na say nazwe itemu mozemy go kupic


UPDATE nr4


-Poprawa obslugi komend
-Dodane 2 nowe natywy (podawanie liczby ap i ustawianie liczby ap)

Załączone pliki


  • +
  • -
  • 29


#118954 Ciągłe wyswietlanie wyniku mapy

Napisane przez Misiaczek ;c w 15.03.2010 17:07

Nietestowane
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUGIN "Wynik mapy"
#define VERSION "1.0"
#define AUTHOR "Dudix"

#define CHANNEL 1
#define CHANNEL2 2
#define FRAMES 10

new g_CT = 0
new g_TT = 0

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
	register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin")
	register_event("TextMsg", "fwRestart", "a", "2&#Game_will_restart_in")
	register_forward(FM_PlayerPreThink, "fwPreThink", 1)
}

public fwRestart()
{
	g_TT = 0; 
	g_CT = 0;
}

public ct_win()
{
	g_CT++																															
}
public t_win()
{
	g_TT++
}

public fwPreThink(id)
{
 	static iCounter[33]={0,...};
 	if(++iCounter[id] >= FRAMES)
 	{
 	set_hudmessage(255, 0, 0, 0.02, 0.67,0,0.0, 0.5,0.0,0.0,CHANNEL);
 	show_hudmessage(0, "Czerwoni: %d", g_TT);
 	set_hudmessage(0, 0, 255, 0.02, 0.70,0,0.0, 0.5,0.0,0.0,CHANNEL2);
 	show_hudmessage(0, "Niebiescy: %d", g_CT);	
 	iCounter[id]=0;		
 	}
 	return FMRES_IGNORED;
}

  • +
  • -
  • 1


#31631 Warunki.

Napisane przez darkman w 31.12.2008 15:10

Niżej opisze jak używać w kodzie metody, która zastępuje operator 'if' jednocześnie zaoszczędzając miejsca w danym skrypcie.
Standardowo, jeżeli chcemy, żeby podczas gdy coś zachodzi wykonała się jakaś funkcja używamy operatora
if(warunek)
            wykonaj_funkcje();

Przykład kodu:

#include <amxmodx>

public plugin_init()
{
	register_plugin("Tutorial", "Tutorial", "Tutorial");
	register_clcmd("test", "cmd_test");
}

public cmd_test(id){
	if(is_user_alive(id))
		client_print(id, print_chat, "Jestes zywy");
	else client_print(id, print_chat, "Jestes martwy");
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Napisany kod drukuje na chacie graczowi czy jest żywy lub martwy przy wpisaniu w konsoli komendy test. Nie chodzi jednak o sam kod i co on wywołuje, tylko o to jak prosto można zastąpić operator if(). Mianowicie można użyć formułki:

warunek ? jeżeli zwraca true(1) wykonaj xx : kiedy zwraca false wykonaj zz

Przykład kodu:
#include <amxmodx>

public plugin_init()
{
	register_plugin("Tutorial", "Tutorial", "Tutorial");
	register_clcmd("test", "cmd_test");
}

public cmd_test(id){
	is_user_alive(id) ? client_print(id, print_chat, "Jestes zywy") : client_print(id, print_chat, "Jestes martwy");
}

W istocie kod działa tak samo jak pierwszy, tylko jego struktura jest troche inna. Nie ogranicza się to tylko do funkcji zwracających 0 lub 1, można tego też użyć w inny sposób np:

warunek == 2 ? client_print(id, print_chat, "Zmienna warunek ma wartość 2") : client_print(id, print_chat, "Zmienna warunek ma wartość inną niż 2")

Zachęcam do używania tej metody.
  • +
  • -
  • 2


#108729 CTF

Napisane przez mgr inż. Pavulon w 31.01.2010 10:59

5) Co to za model i spr? "beamsprite = precache_model("sprites/dot.spr")" i "precache_model("models/scientist.mdl")"??

standardowe.
kropka (z której robi się np. linie) i naukowiec(znaczy ludek taki xD)

@down

Moglbys pomoc w czyms jeszcze? :P Przeciez potrafisz ;>

to nie znaczy że mam na wszystko czas
  • +
  • -
  • 1