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
 

TecHnoO - zdjęcie

TecHnoO

Rejestracja: 14.05.2010
Aktualnie: Nieaktywny
Poza forum Ostatnio: 13.03.2021 11:07
-----

#770971 [ROZWIĄZANE] Prośba o przekompilowanie

Napisane przez KoRrNiK w 04.03.2021 18:20

public amxbans_admin_connect(id){
	if(get_user_flags(id) & 34078720 == 34078720){
		client_authorized_vip(id);
	}
}

  • +
  • -
  • 2


#761894 Reunion banuje serwer za floodowanie

Napisane przez wonsz żeczny w 09.10.2019 15:01

Polecam pobrać najnowszą wersję - 0.1.92

Najnowsza wersja w załączniku

 To nie jest najnowsza wersja, lecz jest ona najstabilniejsza i korzysta z niej najwięcej serwerów, również proponuję zainstalować tą wersję.


  • +
  • -
  • 2


#761877 Reunion banuje serwer za floodowanie

Napisane przez DarkGL w 08.10.2019 13:03

54.38.135.52 to ip serwera , klienta , strony ?


  • +
  • -
  • 1


#761879 Reunion banuje serwer za floodowanie

Napisane przez DarkGL w 08.10.2019 13:42

Sprobuj samo 54.38.135.52 bez portu


  • +
  • -
  • 1


#761885 Reunion banuje serwer za floodowanie

Napisane przez vanillah w 08.10.2019 19:51

najlepiej to calkowicie wylaczyc te bany za floodowanie bo to nie dziala tak doskonale jak powinno


  • +
  • -
  • 1


#761886 Reunion banuje serwer za floodowanie

Napisane przez Vakos w 08.10.2019 22:05

Z tego co widzę masz stary plik .cfg.

Jaką wersję masz reuniona? 


  • +
  • -
  • 1


#761889 Reunion banuje serwer za floodowanie

Napisane przez Vakos w 09.10.2019 11:49

Polecam pobrać najnowszą wersję - 0.1.92

Najnowsza wersja w załączniku

 


  • +
  • -
  • 2


#761890 Reunion banuje serwer za floodowanie

Napisane przez DarkGL w 09.10.2019 12:57

QueryFloodBanTime = 0

  • +
  • -
  • 1


#760752 [Sprzedam] Paczkę Zombie Plague

Napisane przez Sinner w 16.08.2019 01:20

***Zombie Plague***
Paczka została bardzo dawno temu zakupiona przeze mnie. Od tamtego czasu nad nią sezonowo pracowałem poprawiałem bugi/błędy i dodawałem nowe rzeczy.
Paczki nie nazwę unikatową lub przełomową ale na pewno znajdziecie w niej modyfikacje unikatowe, których nie posiada żaden inny serwer.
Przy paczce pomagali odpłatnie TibacK, Tafit i Vanillah za co serdecznie dziękuję ponieważ bez waszej wiedzy i wsparcia nie dałbym rady.
Zapraszam do lektury ponieważ wszystko ładnie opisałem wraz ze zdjęciami (:
 

Dostępne komendy na serwerze
/vip Przygotowane pod wstawienie własnego obrazka z opisem Vipa
/mute Unikalne menu mutowania dla graczy i adminów (Adminów nie da się zmutować i jest to ukazane w menu mutowania)
/cennik Przygotowane pod wstawienie własnego obrazka z cennikiem za usługi VIP i PREMIUM
info *NICK GRACZA* (Komenda pozwalająca sprawdzić level gracza, jakie ma bonusy i ile AP)
/top15 Rank 15 najlepszych graczy (zmodyfikowane)
/rank Twoja pozycja w rankingu (zmodyfikowane)
level Komenda pozwalająca sprawdzić ile brakuje ci expa do awansu
/lm Komenda dzięki której szybciej możemy kupić laser mine

*VIP*
=> W kazdej Rundzie dostaje darmowa kamizelke (65 armoru)
=> Zdobywa szybciej ammo packi i dostaje premie za kazda infekcje
=> Dostaje dodatkowe HP za zarazenie czlowieka
=> Ma zwiekszone Obrazenia (135 % | Tylko Czlowiek)
=> Posiada Podwojny Skok (Tylko Czlowiek)
=> Otrzymuje mlot ze zwiekszonymi obrażeniami (Tylko Czlowiek)
=> Odblokowana zostaje nowa klasa Tesla Zombie
=> Zostaje zwiekszony limit ammo packow do 500
=> Posiada mozliwosc pisania na chacie w kolorze zielonym
=> Zostanie wyrozniony w tabeli graczy po przez dopis VIP
=> Widnieje na liscie graczy VIP pod /vips
=> Vip ma swój własny model gracza

*PREMIUM*
=> Wilk Zombie  (PREMIUM)
=> Mumia Zombie (PREMIUM)
=> Extra Item dla ludzi M4A1S Dark (PREMIUM)

Bardzo dużo klas Zombie wraz z Unikatowymi Klasami Zombie!!!

[Klasyczny Zombie]
=> Zbalansowany
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Szybki Zombie]
=> Bardzo szybki
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Trujący Zombie]
=> Bardzo wysoki skok
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Gruby Zombie]
=> Dużo HP
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Skoczny Zombie]
=> Posiada dwa skoki
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Duch Zombie]
=> Jest mniej widoczny (od czasu do czasu pokazuje się zielona aura która go ujawnia)
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Tesla Zombie] (*VIP*)
=> Zwiększony DMG, Dość szybka, Średni skok
=> Własny model postaci
=> Jedyny zombie który ma zmieniony model rąk
=> Może strzelać kulami (przytrzymać prawy klawisz myszy), które paraliżują człowieka zadając mu obrażenia (człowiek nie może się ruszać i strzelać po trafieniu przez kilka sekund)
=> Klasa dla VIP (Flaga T)
 
[Zjawa]
=> Może się wspinać po ścianach (Klawisz E) (jeśli zostanie zamrożona w trakcie używania umiejętności może się poruszać ale nie może atakować)
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Ognisty Zombie]
=> Ogromne obrażenia (x3)
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Smoker]
=> Może przyciągać ludzi (Klawisz E) w trakcie przyciągania może również sam puścić człowieka (Klawisz E)
=> Surviora i innych zombie nie da się przyciągnąć. (Nemesis również nie może używać tej umiejętności)
=> Jeśli Smoker otrzyma 300pkt obrażeń w trakcie przyciągania puści ofiarę.
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
 
[Wilk Zombie] (PREMIUM)
=> Może raz na śmierć oślepić ludzi wciskając (Klawisz E) (Ludzie mają czarny ekran na 5sec) (Użyciu umiejętności towarzyszy dźwięk Wycia)
=> Gdy zostanie mu 500pkt zdrowia lub mniej aktywuje się nieśmiertelność na 3sec (czerwona poświata na modelu Wilka)
=> Spora ilość życia
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
=> Klasa PREMIUM (Flaga M)
 
[Mumia] (PREMIUM)
=> Całkowita niewidzialność (5sec) pod (Klawiszem E) (gdy znikasz jest dźwięk użycia niewidki gdy niewidka się kończy również jest dźwięk)
=> Klasa bardzo szybka i wysokoskoczna
=> Własny model postaci
=> Model rąk taki jak u wszystkich zombie
=> Klasa PREMIUM (Flaga M)
 
Każdy zombie posiada jedną darmową bombę odrzucającą którą może zrzucić człowieka z kampy lub podrzucić siebie by się do niej dostać.
Wszystkie klasy zombie posiadające zaawansowane umiejętności po wybraniu ukazują w colorchat na czacie jakie posiadają umiejętności i jak ich użyć.
Dodatkowo po użyciu umiejętności pokazują za ile sekund można jej ponownie używać !!!
Klasy bezpłatne są również bardzo zbalansowane i poprawione by zaznaczyć ich umiejętność i sposób gry danym zombiakiem.

 

Bardzo duża różnorodność extra itemów za AP dla ludzi i zombie!
Extra Itemy dla Zombie
=> Antidotum
=> Szalone zombie
=> Zarażająca bomba
=> Granat odrzucajacy
=> Daleki skok
=> Nóż teleportujuacy (wymachując rękami w stronę człowieka po zakupie możemy się do niego teleportować uderzając go raz) (odległość nie może być zbyt wielka)
=> Zew Nocy (Ulepszone szalone zombie) [Niebieska aura zamiast czerwonej], [8sec], [+2000hp] i [zmiana bazowej szybkości zombiego na 350]
 
Extra Itemy dla Człowieka
W paczce znajduje się wiele standardowych przedmiotów dostepnych na prawie każdym zombie modzie dla humanów jednak na wyróżnienie zasługuje kilka przedmiotów, które nie charakteryzują się powszechną dostępnością.
=> Plazma Gun
=> Nitrogen Galil
=> Silver M4A1S
=> Antidote Laser
=> M4A1S DARK (PREMIUM)
Dodatkowo zdjęcia menu przedmiotów dla Humanów (szeroki asortyment).
 

Dodatkowe modyfikacje/informacje godne uwagi

=> Podwójne nabijanie Ap w godzinach 20:00~~24:00 z infromacją w colorchat dla graczy.
=> Darmowe losowanie *VIP* w każdej mapie jeśli na serwerze jest ponad 5 graczy. (Losowanie zawsze odbywa się w 3 rundzie).
=> Muzyka przy modach typu Swarm/Nemesis/Survior/Plaga.

=> Nowe dynamiczne modele dla Surviora.
=> Dynamiczne modele dla Admina
=> Fajny model dla Nemesisa + bazooka dla Nemesisa z infromacją colorchat jak jej użyć.
=> Limit kupna frostów 3 na rundę.

=> Efektywne efekty wybuchu granatów zapalających/zamrażających/bomb zarażających. Daję również wraz z paczką efekty do zmiany.
=> Naprawa bugów dzięki którym gracze mogli przekazywać sobie AP dublując je.
=> Naprawa błędu z bombą odrzucająca dla zombie.
=> Muzyka przy ładowaniu się serwera (serwer z FDL ładuje się około 15sec)
=> Zombie otrzymują AP za smierć (Ap za smierć kumuluje się maksymalnie do 5AP za pojedynczą śmierć)
=> Dźwięk headshot przy zabójstwie w głowe
=> Serie zabójst wraz z dźwiękami do 14 pod rząd od First kill do Godlike.
=> Paczka w języku multilingual (dostępne języki ENG i PL).
=> Paczka działa bez problemów na najnowszym REHLDS jak i na jego dwóch poprzednich wersjach.
=> Paczka jest zabezpieczona nie można zmieniać nicków w trakcie gry i serwer kickuje osoby z podejrzanymi znakami w nicku.
=> Advertisements reklamy na czacie w colorchat.
=> Oprócz VIPA można oddzielnie sprzedawać dostęp do Itemów i Klas Premium.
=> Zmiana modeli Humanów.
=> Zmodyfikowany Exp Mod z 50 poziomami. Za wbicie poziomu dostajemy 80AP + 5hp i większy DMG z ręki zombie i broni Humanów.
=> Różne kolory flar.
=> 3 tryby granatów standardowy/Natychmiastowy/Aktwacja Klawiszem E

=> Estetycznie zmodyfikowane TOP15
=> Blokada rzucenia bomby zarażającej gdy pozostało dwóch ostatnich humanów z informacją w colorchat
=> Unikalne menu mutowania dla graczy (nie da się zmutować adminów)

Bardzo duża różnorodność map!!! (Ponad 60 grywalnych map!)

Mapy otrzymujesz wraz z zakupioną paczką co oszczędzi tobie czasu szukania dobrych map po Internecie. (:
Dodatkowo otrzymujesz plik tekstowy tylko z małymi mapami (:

Jedyna Polska paczka posiadająca tryb walki z gigantycznym bossem Alien Boss!

Tutaj mogę użyć słowa unikat ponieważ nie widziałem jeszcze Polskiego serwera na którym działa bez żadnych bugów najnowsza wersja Alien Boss wraz z Polskimi dźwiękami i poprawioną dynamiką gry.

 

=> 12 Graczy musi zagłosować żeby serwer w następnej rundzie zmienił mapę na Alien Boss.
=> Nowsza wersja mapy zl_boss_city (starą wersją była mapa zp_boss_city)
=> Boss ma Polski głos (nie ma żadnych ruskich dźwięków)
=> Walka z Bossem odgrywa się w ciemności i lekkiej mgle co poprawia klimat gry
=> Gracze mogę korzystać z przedmiotów za AP w trakcie walki z Bossem
=> Każdy człowiek ma 10 żyć i respi się co 20sec
=> Ap za zadawanie obrażeń dla Bossa
=> Skrzynki z Ap po zabiciu Bossa (każdy człowiek może podnieść tylko 1 skrzynkę)

=> Jeśli wszyscy gracze zginą jest dzwięk zgonu ekran robi się czarny i jest głosowanie na 5 losowych map
=> Jeśli zginie boss gracze mają 10sec na podniesienie skrzynek z Bossa po czym ekran robi się czarny i jest głosowanie na nową mapę tak jak widać poniżej (:

 

 ALIEN BOSS UMIEJĘTNOŚCI
 

Boss miesza kolory! (100% ~ 51% HP)

Boss raz na 80sec będzie skakał na wybraną osobę!

Boss wymieszał kolor Jasnoniebieski

Obszar działania: Mały

Obrażenia fali: Średnie

Boss infekuje granatem grawitacyjnym, którym możemy zarazić również innych ludzi jeśli ich dotkniemy.

Zmniejsza to strasznie naszą prędkość ruchu i skacząc otrzymujemy obrażenia! Im więcej osób zarażonych zginie tym szybciej boss będzie się poruszał w danej fazie.

Boss wymieszał kolor Pomarańczowy

Obszar działania: Duży

Obrażenia fali: Niskie

Boss wzywa fale zombie, które będę się respić aż do zmiany koloru bossa i będzie ich coraz więcej aż do 16. Im więcej ludzi w tej fazie tym szybciej będzie się pojawiać więcej zombie!

Boss wymieszał kolor Purpurowy

Obszar działania: Duży

Obrażenia fali: Małe

Boss również wzywa fale zombie, ale tym razem zombie się nie respią. Mają natomiast więcej HP i zarażają przy trafieniu!

Boss wymieszał kolor Zielony

Obszar działania: Ogromny

Obrażenia fali: Im bliżej bossa tym większe

Kto dostanie falą uderzeniową dodatkowo zostaje zarażony trucizną, która zadaje duże obrażenia!

Zaczyna się PIEKŁO 50% Życia Bossa

Boss wpada w szał zbiera energię i świeci się na różne kolory po czym szarżuje na wybraną osobę! Po tej fazie zombie stale się respią niezależnie od stanu HP czy Fali uderzeniowej Bossa! (Aż do maksymalnie 18 zombie na raz). Od tego momentu boss zabije autoatakiem na strzała.

40% Życia Bossa


Boss staje na środku i zaczyna się świecić na purpurowo fala zadaje ogromne obrażenia lecz ma bardzo mały zasięg. Po uderzeniu pojawia się siatka laserowa na mapie po czym z nieba zaczynają w wybrane miejsca spadać granaty. Siatka laserowa i granaty spadające z nieba będą aktywne aż do 30% HP Bossa.
 

30% Życia Bossa


Boss staje w wybranym losowym miejscu na mapie po czym zaczyna się świecić na jasny zielony kolor. Fala ma spory zasięg i zadaje duże obrażenia. Dodatkowo boss staje się niewrażliwy na pociski i odbija obrażenia!
 

Rzeź 20% Życia Boss

Boss używa 3 fali pod rząd Niebieskiej, Czerwonej i Zielonej (boss może mieszać te fale dowolnie).
Fale mają ogromny zasięg przy czym każda różni się losowym działaniem.
Zielona Fala = Śmiertelna Trucizna (Słaby DMG przy uderzeniu)
Niebieska Fala = Nie można się ruszać i prędkość ruchu stopniowo nawraca (Słaby DMG przy uderzeniu) Im więcej osób Boss zabije w tej fazie tym szybciej będzie się poruszał aż do następnej fazy 10% zdrowia.
Czerwona Fala = Ogromy Zasięg i zabicie na strzała (rozprysk kości po zabójstwie z fali)

10% Życia Bossa

Ostatni desperacki krok naszego bossa. Aktywuje on białą falę, która ma ogromny zasięg i zadaje średnie obrażenia. Dodatkowo boss respi pola w które uderzają pioruny biorąc wszystkich w ich obszarze również na strzała.

 

Inne
Dołączam:
=> Przygotowany taryfikator banów Zombie Plague
=> Przygotowany Regulamin Zombie Plague pod paczkę
=> Przygotowany opis paczki na gametracker

Cena:
250zł AMXX+SMA
200zł AMXX

Z paczki usuwam wszelkie reklamy !!!
Pomagam w instalacji paczki jeśli jest taka potrzeba !!!

Przewidziana jest aktualizacja tej paczki dostępna odpłatnie tylko dla posiadaczy tej paczki !!!

Chciałbym też zaznaczyć, że sprzedaje tylko 10 sztuk tej paczki.

Śmiało postaram się odpowiedzieć na każde z waszych pytań.


Kontakt:
GG: 45466443
Steam: Campeer
TS3: ts.aterium.pl (Możesz mnie złapać na TS3 nick: Campeer)

PS: Zalecam hosting pukawka.pl z wykupionym serwerem PREMIUM!

 

Jeśli ktoś jest naprawdę zainteresowany podeślę plik ze zdjęciami na PW ponieważ już 4 raz próbuję wrzucić posta ze zdjęciami i jest to niewykonalne...

Istnieje możliwość wglądu paczki na moim serwerze testowym PW. (:


  • +
  • -
  • 3


#761658 [ROZWIĄZANE] Vip z generatora zmienia nick oraz tekst na say

Napisane przez Erka w 21.09.2019 19:09

#include <amxmodx>
#include <cstrike>
#include <csx>
#include <engine>
#include <fun>
#include <hamsandwich>

forward amxbans_admin_connect(id);

new CsArmorType:armortype, bool:g_Vip[33], gRound=0, g_Hudmsg, maxPlayers,
menu, menu_callback_handler, weapon_id;

public plugin_init(){
	register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill");
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
	register_logevent("GameCommencing", 2, "1=Game_Commencing");
	RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1);
	register_event("DeathMsg", "DeathMsg", "a");
	register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
	register_clcmd("say /vip", "ShowMotd");
	register_message(get_user_msgid("SayText"),"handleSayText");
	g_Hudmsg=CreateHudSyncObj();
	register_logevent("RoundEnd", 2, "1=Round_End");
}
public client_authorized(id){
	if(get_user_flags(id) & 524288 == 524288){
		client_authorized_vip(id);
	}
}
public client_authorized_vip(id){
	g_Vip[id]=true;
	new g_Name[64];
	get_user_name(id,g_Name,charsmax(g_Name));
	set_hudmessage(24, 190, 220, 0.25, 0.2, 0, 6.0, 6.0);
	ShowSyncHudMsg(0, g_Hudmsg, "Vip %s wbija na serwer !",g_Name);
}
public client_disconnect(id){
	if(g_Vip[id]){
		client_disconnect_vip(id);
	}
}
public client_disconnect_vip(id){
	g_Vip[id]=false;
}
public event_new_round(){
	++gRound;
}
public GameCommencing(){
	gRound=0;
}
public SpawnedEventPre(id){
	if(g_Vip[id]){
		if(is_user_alive(id)){
			SpawnedEventPreVip(id);
		}
	}
}
public SpawnedEventPreVip(id){
	if(gRound>=1){
		cs_set_user_armor(id, min(cs_get_user_armor(id,armortype)+100, 100), CS_ARMOR_VESTHELM);
		new henum=(user_has_weapon(id,CSW_HEGRENADE)?cs_get_user_bpammo(id,CSW_HEGRENADE):0);
		give_item(id, "weapon_hegrenade");
		++henum;
		new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0);
		give_item(id, "weapon_flashbang");
		++fbnum;
		cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
		new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0);
		give_item(id, "weapon_smokegrenade");
		++sgnum;
		if(get_user_team(id)==2){
			give_item(id, "item_thighpack");
		}
	}
	show_vip_menu(id);
}
public menu_1_handler(id){
	if(get_pdata_cbase(id, 369)==-1){
		give_item(id, "weapon_deagle");
		give_item(id, "ammo_50ae");
		weapon_id=find_ent_by_owner(-1, "weapon_deagle", id);
		if(weapon_id)cs_set_weapon_ammo(weapon_id, 7);
		cs_set_user_bpammo(id, CSW_DEAGLE, 35);
	}
}
public menu_3_handler(id){
	if(get_pdata_cbase(id, 368)==-1){
		give_item(id, "weapon_ak47");
		give_item(id, "ammo_762nato");
		weapon_id=find_ent_by_owner(-1, "weapon_ak47", id);
		if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
		cs_set_user_bpammo(id, CSW_AK47, 90);
	}
}
public menu_2_handler(id){
	if(get_pdata_cbase(id, 368)==-1){
		give_item(id, "weapon_m4a1");
		give_item(id, "ammo_556nato");
		weapon_id=find_ent_by_owner(-1, "weapon_m4a1", id);
		if(weapon_id)cs_set_weapon_ammo(weapon_id, 30);
		cs_set_user_bpammo(id, CSW_M4A1, 90);
	}
}
public DeathMsg(){
	new killer=read_data(1);
	new victim=read_data(2);
	
	if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){
		DeathMsgVip(killer,victim,read_data(3));
	}
}
public DeathMsgVip(kid,vid,hs){
	set_user_health(kid, min(get_user_health(kid)+(hs?15:10),100));
	cs_set_user_money(kid, cs_get_user_money(kid)+(hs?500:300));
}
public show_vip_menu(id){
	menu=menu_create("\rMenu VIPa","menu_handler");
	menu_callback_handler=menu_makecallback("menu_callback");
	new bool:active=false, num=-1;
	menu_additem(menu,"\wDGL + Granaty","",0,menu_callback_handler);
	if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
		active=true;
	}
	menu_additem(menu,"\wDGL + M4 + Granaty","",0,menu_callback_handler);
	if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
		active=true;
	}
	menu_additem(menu,"\wDGL + AK + Granaty","",0,menu_callback_handler);
	if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
		active=true;
	}
	if(active){
		menu_setprop(menu,MPROP_EXITNAME,"Wyjscie");
		menu_setprop(menu,MPROP_TITLE,"\yMenu Vipa");
		menu_setprop(menu,MPROP_NUMBER_COLOR,"\r");
		menu_display(id, menu);
	} else {
		menu_destroy(menu);
	}
}
public menu_callback(id, menu, item){
	if(is_user_alive(id)){
		if(gRound>=1){
			if(item==0){
				return ITEM_ENABLED;
			}
		}
		if(gRound>=3){
			if(item==1){
				return ITEM_ENABLED;
			}
			if(item==2){
				return ITEM_ENABLED;
			}
		}
	}
	return ITEM_DISABLED;
}
public menu_handler(id, menu, item){
	if(is_user_alive(id)){
		if(gRound>=1){
			if(item==0){
				menu_1_handler(id);
			}
		}
		if(gRound>=3){
			if(item==1){
				menu_2_handler(id);
			}
			if(item==2){
				menu_3_handler(id);
			}
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public VipStatus(){
	new id=get_msg_arg_int(1);
	if(is_user_alive(id) && g_Vip[id]){
		set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2)|4);
	}
}
public ShowMotd(id){
	show_motd(id, "vip.txt", "Informacje o vipie");
}
public handleSayText(msgId,msgDest,msgEnt){	

    new id = get_msg_arg_int(1);
    
    if(is_user_connected(id) && g_Vip[id]){  
    
    new szTmp[192], szTmp2[192];
    get_msg_arg_string(2, szTmp, charsmax(szTmp));
    
    new szPrefix[64] = "^x04[VIP]";
    
    if(!equal(szTmp,"#Cstrike_Chat_All")){
        add(szTmp2, charsmax(szTmp2), "^x01");
        add(szTmp2, charsmax(szTmp2), szPrefix);
        add(szTmp2, charsmax(szTmp2), " ");
        add(szTmp2, charsmax(szTmp2), szTmp);
    }
    else{
        new szPlayerName[64];
        get_user_name(id, szPlayerName, charsmax(szPlayerName));
        
        get_msg_arg_string(4, szTmp, charsmax(szTmp)); //4. argument zawiera treść wysłanej wiadomości
        set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków.
    
        add(szTmp2, charsmax(szTmp2), "^x01");
        add(szTmp2, charsmax(szTmp2), szPrefix);
        add(szTmp2, charsmax(szTmp2), "^x03 ");
        add(szTmp2, charsmax(szTmp2), szPlayerName);
        add(szTmp2, charsmax(szTmp2), "^x01 :  ");
        add(szTmp2, charsmax(szTmp2), szTmp)
    }
    
    set_msg_arg_string(2, szTmp2);
    }
    return PLUGIN_CONTINUE;
}
public bomb_planted(id){
	if(is_user_alive(id) && g_Vip[id]){
		cs_set_user_money(id,cs_get_user_money(id) + 300);
	}
}
public bomb_defused(id){
	if(is_user_alive(id) && g_Vip[id]){
		cs_set_user_money(id,cs_get_user_money(id) + 300);
	}
}
public plugin_cfg(){
	maxPlayers=get_maxplayers();
}
public RoundEnd(){
	for(new i = 1; i <= maxPlayers; i++){
		if(is_user_alive(i) && g_Vip[i]){
			cs_set_user_money(i,cs_get_user_money(i) + 500);
		}
	}
}
public amxbans_admin_connect(id){
	client_authorized(id);
}

  • +
  • -
  • 1


#509535 Edycja Wytrzymałości perku i Systemu Monet

Napisane przez Jak się nazwać w 01.02.2013 16:23

Za te 3 zł ten cały "profesjonalny skrypter" nie otworzy nawet edytora...
  • +
  • -
  • 4


#510449 Loose indentation przy hudmessage

Napisane przez Gość w 03.02.2013 18:08

Loose indentation

zazwyczaj oznacza złe wcięcia w tekście, zwróć na to uwagę, wersja z poprawnymi wcięciami:
#include <amxmodx>

#define PLUGIN "interp+raty"
#define VERSION "1.0"
#define AUTHOR "ktos"

new gSyncMessage4;

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
set_task(30.0, "ustaw_raty", _, _, _, "b");
gSyncMessage4 = CreateHudSyncObj();
}

public ustaw_raty() {
client_cmd(0, "ex_interp 0.01");
client_cmd(0, "rate 25000");
client_cmd(0, "cl_updaterate 101");
client_cmd(0, "cl_cmdaterate 101");

new kolor1 = random_num(0,255)
new kolor2 = random_num(0,255);
new kolor3 = random_num(0,255);

set_hudmessage(kolor1, kolor2, kolor3, 0.10, 0.1, 1, 6.0, -1.0,0.1,0.1)
set_hudmessage(kolor1, kolor2, kolor3, 0.10, 0.1, 1, 6.0, 1.0)
ShowSyncHudMsg(0,gSyncMessage4, "Twoje ustawienia rate zostały automatycznie zmieniony.");
}


PS Używanie funkcji random_num z pierwszym parametrem równym zero nie jest zbyt dobrym pomysłem.
Proponuję zapoznać się z funkcją random i użyć jej z parametrem 256.

Pawn pozwala także na zastąpienie komendy
set_task(30.0, "ustaw_raty", _, _, _, "b");
prostszym
set_task(30.0, "ustaw_raty", .flags="b");



#477125 Informacje wstępne, czyli Jak zacząć Scripting AMXX

Napisane przez Gość w 09.11.2012 19:47

Tutorial dla początkujących
Informacje wstępne
Scripting AMXX


[kotwica='cel']Cel[/kotwica]
Nauka tworzenia pluginów AMXX

Wymagania
  • Znajomość obsługi AMXX
  • Umiejętność programowania
  • Podstawowa znajomość Pawna
  • Racjonalne tworzenie algorytmów
  • Umiejętność korzystania z manuala
  • Edytor Pawna wraz z kompilatorem AMXX
[kotwica='wstep']Wstęp[/kotwica]
Na samym początku zadajmy sobie pytanie: czym są pluginy AMXX i jak działają.

Pluginy AMXX to algorytmy modyfikacji rozgrywki na serwerach HLDS, pisane w języku Pawn,
zrozumiałym dla ludzi i zapisywane pod postacią plików SMA, które w wyniku kompilacji przybierają
postać kodu niezrozumiałego dla człowieka, ale zrozumiałego dla AMXX, zapisywane pod postacią
plików AMXX, które komunikują się z serwerem HLDS poprzez Metamoda:P, zmieniając rozgrywkę.

[kotwica='istota']Istota[/kotwica]
Tym samym, plugin komunikuje się z Metamodem:P, a Metamod:P z silnikiem gry (serwerem HLDS).
Musimy pamiętać, że każda wymiana informacji pomiędzy serwerem a silnikiem gry, zużywa liczne
zasoby sprzętowe i należy zadawać możliwie jak najmniej zapytań do silnika gry poprzez Metamoda:P.

[kotwica='plugins_ini']Plugins.ini[/kotwica]
Plik plugins.ini zawiera listę pluginów, które zostaną załadowane do AMXX i będą wykonywać swoje
algorytmy, komunikując się z serwerem HLDS poprzez MetaModa:P, modyfikując przebieg gry.

Jednak kolejność pluginów wpisanych w pliku plugins.ini nie jest bez znaczenia.
Zwróćmy teraz uwagę na sposób działania AMXX, czyli interakcję z serwerem gry.
AMXX pozwala nam, poprzez MetaModa:P, na następujące operacje:
  • Zarejestrowanie danego zdarzenia czy wartości (np. odczytanie liczby pieniędzy danego gracza, czy zaobserwowanie wybuchu bomby)
  • Modyfikowanie danego zdarzenia czy wartości (np. zmiana punktów życia danego gracza, czy przedłużenia czasu trwania oślepienia)
  • Zablokowanie danego zdarzenia czy usunięcie wartości (np. brak obrażeń od granatów, czy usunięcie limitu posiadanych dolarów)
  • Wywołanie danego zdarzenia (np. zabicie gracz, teleportacja gracza na respawn wrogów, czy pozbawienie gracza jego broni)
  • Tworzenie danego zdarzenia czy wartości (np. zabicie vipa lub ucieczka terrorystów, czy stworzenie nowych cvarów)
Tym samym, poszczególne pluginy mogą być od siebie zależne, a ich kolejność ma znaczenie.
Należy zatem zwracać uwagę na kolejność pluginów w pliku plugins.ini, przy czym algorytmy
kolejnych pluginów, od góry pliku plugins.ini, wykonywane są proporcjonalnie sekwencyjnie.

Przykładowo, jeśli w pluginie pierwszym od góry pliku plugins.ini, zablokujemy możliwość mówienia,
to w pluginie drugim od góry, nie zostanie zarejestrowane powiedzenie na sayu określonej wartości.
W odwrotnej kolejności tych pluginów w pliku plugins.ini zaś, będzie to z kolei możliwe do wykonania.

[kotwica='AMXMODX']AMXMODX[/kotwica]
Pierwszą, podstawową biblioteką, jaką będziemy musieli załączyć do naszego pluginu, jest AMXMODX.
W tym celu, dodajemy na samej górze naszego kodu SMA następującą linijkę kodu
#include <amxmodx>


AMXX posiada parę publicznych, predefiniowanych funkcji, a oto one:

[kotwica='plugin_natives']plugin_natives[/kotwica]
Ta funkcja wywoływana jest jako pierwsza, tuż po załadowaniu pluginu do pamięci AMXX.
W niej należy zainicjować wszelkie natywy do współpracy z innymi pluginami, czyli sprawić,
by możliwa była kompleksowa komunikacja pomiędzy funkcjami poszczególnych pluginów.

Jak już pisałem, funkcje ładowane są kolejno, od góry pliku plugins.ini, tak więc kolejność jest istotna.

[kotwica='plugin_precache']plugin_precache[/kotwica]
Ta funkcja wywoływana jest po załadowaniu wszytkich pluinów z natywami, lecz jeszcze przed pełnym zainicjowaniem
serwera HLDS i to w niej należy zarejestrować wszelkie wymagane do pobrania przez Użytkowników pliki niestandardowe,
z których będzie korzystał plugin, by powiadomić klienta gry o konieczności pobrania tych plików przed ustaleniem połączenia.

W tej właśnie funkcji należy zarejestrować wszelkie modyfikatory skryptów startowych serwera HLDS, by móc
w nie ingerować, zanim zostaną załadowane i wykonane skrypty startowe, uniemożliwiając ich identyfikację.

[kotwica='plugin_init']plugin_init[/kotwica]
Ta funkcja wywoływana jest podczas inicjalizacji pluginu, po pełnym załadowaniu funkcji startowych serwera.
W tej funkcji należy zarejestrować nasz plugin przy użyciu funkcji register_plugin o następujących parametrach
register_plugin(const plugin_name[], const version[], const author[])

Warto zidentyfikować plugin w celu późniejszego testowania stanu pluginu i odnalezienia go na liście pluginów.
Składnia argumentów funkcji nie wymaga chyba większego komentarza, w przypadku wątpliwości zapraszam do manuala.

[kotwica='przyklad']Przykład[/kotwica]
Na tym etapie, potrafimy już stworzyć i zarejestrować pierwszy plugin, nie robiący praktycznie nic.
#include <amxmodx>

public plugin_init(){
register_plugin("Nauka AMXX", "0.1", "benio101");
}
Przypomnijmy, w pierwszej linijce zaimportowaliśmy wymaganą zawsze dla AMXX, bibliotekę amxmodx.
W trzeciej linijce zainicjowaliśmy publiczną funkcję plugin_init, wykonywaną po pełnym załadowaniu skryptów startowych HLDS.
Przypominam, że funkcja plugin_init winna być funkcją publiczną, inaczej może nie zostać ona wykonana w oczekiwanym momencie.
W czwartej linijce, rejestruję plugin i na tym kończy się działanie naszego testowego pluginu, który praktycznie nie zmienia rozgrywki.

W funkcji plugin_init należy także zarejestrować wszelkie nasłuchiwacze zdarzeń, jak śmierć gracza, czy nowa runda.

[kotwica='plugin_cfg']plugin_cfg[/kotwica]
Ta funkcja wywoływana jest tuż po plugin_init i służy konfiguracji pluginu, m.in. pobraniu zmiennych globalnych z silnika gry,
ustanowieniu połączenia z bazą danych, czy pobrania innych, istotnych danych do współpracy pluginu z zasobami zewnętrznymi.

[kotwica='register_event']register_event[/kotwica]
Pierwsza z funkcji, którą poznamy, pozwala na przechwycenie wybranych zdarzeń, które dokonywane są na serwerze.
Tutaj odwołuję do niezwykle istotnej strony, na której wypisane są zdarzenia silnika HLDS wraz z argumentami:

Half-Life 1 Game Events

Teraz spróbujemy przechwycić funkcję śmierci, w tym celu musimy zarejestrować w funkcji plugin_init nasłuchiwacz tego zdarzenia
register_event("DeathMsg", "DeathMsg", "a");
Pierwszy parametr, zgodnie z dokumentacją, oznacza nazwę zdarzenia.
Drugi parametr oznacza funkcję publiczną, która będzie wywoływana w momencie wystąpienia tego zdarzenia. Trzeci parametr
wynosi "a", gdyż DeathMsg jest eventem globalnym. Tym samym utworzymy sobie funkcję publiczną DeathMsg i damy zabójcy 200$.

[kotwica='read_data']read_data[/kotwica]
Jak możemy wyczytać z powyższego linku, DeathMsg posiada cztery argumenty. Nam wystarczy pierwszy argument, czyli id zabójcy.
public DeathMsg(){
	new killer=read_data(1);
}
Funkcja DeathMsg wywoływana jest w momencie wystąpienia zdarzenia śmierci.
Za pomocą funkcji read_data możemy odczytać dany parametr funkcji, ponieważ pierwszy argument
to numer identyfikacyjny zabójcy, ten właśnie numer pobierzemy i zapiszemy do nowo utworzonej zmiennej killer.
Teraz będziemy chcieli nagrodzić zabójcę, przekazując mu dodatkowe 200 dolarów za zabójstwo.
W tym celu, skorzystamy z funkcji z biblioteki cstrike, cs_set_user_money.

[kotwica='import_biblioteki']Import biblioteki[/kotwica]
Aby móc skorzystać z tej funkcji, musimy najpierw zaimportować kolejną bibliotekę,
w tym celu dodajemy do naszego kodu następującą linijkę (najlepiej pod bilioteką amxmodx)
#include <cstrike>
Przypomnijmy, jak powinien wyglądać nasz obecny, pełny kod:
#include <amxmodx>
#include <cstrike>

public plugin_init(){
register_plugin("Nauka AMXX", "0.1", "benio101");

register_event("DeathMsg", "DeathMsg", "a");
}

public DeathMsg(){
new killer=read_data(1);
}


[kotwica='sprawdzenie_obecnosci_gracza']Sprawdzenie obecności gracza[/kotwica]
Teraz dochodzimy do niezwykle istotnej rzeczy, którą musisz zapamiętać raz na zawsze!
Operując na jakimkolwiek graczu, upewnij się, że gracz może zostać danej operacji poddany.
W przykładzie, chcemy dodać pieniądze graczowi, jednak zanim to zrobimy, musimy się upewnić,
czy gracz jest jeszcze na naszym serwerze. Zawsze mógł rzucić granat, wyjść z serwera, a opiero po chwili
nastąpi zdarzenie śmierci. Co się stanie przy próbie dodania pieniędzy graczowi, którego nie ma na serwerze?
Na pewno jest to niepotrzebne zapytanie do silnika gry, dużo większe zużycie zasobów sprzętowych, a także stale
powiększające się logi błędów. Na dłuższą metę, takie właśnie błędy skutkują dużymi lagami bądź crashami serwera.

Tym samym, użyjemy funkcji is_user_connected, w celu sprawdzenia, czy gracz jest jeszcze na serwerze.
Pamiętajmy, że aktualnie killer reprezentuje numer identyfikacyjny zabójcy, jednak w różnych funkcjach, możemy różnie
identyfikować poszczególne byty czy zdarzenia. Przy okazji, każdy byt na mapie ma swój własny, unikalny numer identyfikacyjny,
jednakże numerem identyfikacyjnym gracza jest numer z zakresu od 1 do maksymalnej liczby graczy włącznie. Tym samym, numer
bytu, będący większy lub równy 1 i nie większy, niż maksymalna liczba graczy na serwerze, oznacza na pewno gracza. (niekoniecznie online!)

public DeathMsg(){
new killer=read_data(1);
if(is_user_connected(killer)){
// Dodawanie pieniedzy
}
}
Teraz skorzystamy z natywów biblioteki cstrike i dodamy zabójcy 200 dolarów.
cs_set_user_money(killer, cs_get_user_money(killer) + 200);

Jak można zauważyć, nie mamy wprost funkcji dodającej pieniądze. W związku z tym,
musimy jako drugi parametr funkcji cs_set_user_money podać sumę 200
i obecnej liczby dolarów gracza, pobieranej przy użyciu funkcji cs_get_user_money

[kotwica='zwracana_wartosc']Zwracana wartość[/kotwica]
W nowo utworzonej funkcji DeathMsg, zwrócimy na końcu odpowiednią wartość.
Dostępne wartości do zwrócenia:

PLUGIN_CONTINUE
Domyślna wartość, przerywająca dalsze wywołanie funkcji, jednak przez każdy inny plugin, a także silnik gry,
zdarzenie zostanie wywołane. Po prostu nic niżej od tego polecenia nie zostanie wywołane w tej danej jednej funkcji.

PLUGIN_HANDLED_MAIN
Dalsze wywołanie funkcji nie będzie możliwe, podobnie, jak w przypadku PLUGIN_CONTINUE, dalej wszystkie
pluginy będą mogły odnotować tę funkcję, jednak event ten zostanie zablokowany dla silnika właściwego gry.

PLUGIN_HANDLED
Dalsze wywoływanie funkcji zostanie przerwane, a ani silnik gry nie odnotuje tego eventu, ani, w przeciwieństwie
do PLUGIN_HANDLED_MAIN, żaden z kolejnych pluginów, wypisanych poniżej od tego obecnego w plugins.ini.

Nam wystarczy PLUGIN_CONTINUE, bowiem nie chcemy blokować śmierci w silniku, ani pozbawiać informacji o śmierci
kolejnych pluginów. Na koniec zmienimy nazwę pluginu na odzwierciedlającą rzeczywiste zastosowanie pluginu. Gotowy kod:
#include <amxmodx>
#include <cstrike>

public plugin_init(){
register_plugin("Dodatkowe 200 dolarow za zabojstwo", "0.1", "benio101");

register_event("DeathMsg", "DeathMsg", "a");
}

public DeathMsg(){
new killer=read_data(1);
if(is_user_connected(killer)){
cs_set_user_money(killer, cs_get_user_money(killer) + 200);
}
return PLUGIN_CONTINUE;
}

Tym samym, właśnie napisaliśmy swój pierwszy plugin, który daje dodatkowe 200 dolarów za zabójstwo.


Tutorial napisany, choć z drobnym opóźnieniem, z okazji Światowego Dnia Jakości.
Jeśli przypadnie on Wam do gustu, to mogę pokusić się w wolnym czasie o napisanie kolejnych
części, jako kontynuację, z rozwinięciem wątku i coraz bardziej zaawansowanymi przykładami Scriptingu.


#465888 [ROZWIĄZANE] Admin_Screen3v15 - dodanie kilku funkcji :P

Napisane przez AztekHQS w 10.10.2012 09:18

Proszę.

Załączony plik  Admin_Screen3v15.sma   9,98 KB  60 Ilość pobrań
  Admin_Screen3v15.amxx

Cvary:

amx_screen_block_say - 1 blokuje say/say_team | 0 nie blokuje
amx_screen_block_speed - 1 blokuje bieganie | 0 nie blokuje
amx_screen_block_micro 1 - blokuje mikrofon | 0 nie blokuje



#440462 [ROZWIĄZANE] 2 błędy przy kompilacji

Napisane przez bialy223 w 04.08.2012 08:06

Łap powinno działać. u mnie sie przekompilował.

Załączone pliki


  • +
  • -
  • 1