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
 

Shaxu - zdjęcie

Shaxu

Rejestracja: 19.04.2013
Aktualnie: Nieaktywny
Poza forum Ostatnio: 07.10.2021 22:51
*****

#772203 [ROZWIĄZANE] Dekompilacja modeli players/zombie

Napisane przez viper367 w 07.07.2021 16:39

Oj panie moze byc problem, z tego co pamietam to bedzie ciężko usunąć taki plecak ze wzgledu ze kordy plecaka są wpisane w plik odpowiedzialny za animacje dlatego w tej chwili jak usuwasz model, to wali błędami bo animacja nie ma kosci którymi teorytycznie powinna poruszać, moze zamiast usuwać ten model to go zrób niewidzialnym, słaby pomysl patrząc sie na optymalizację ale szybko i sprawdzony, zobacz czy textury plecaka są w osobnej texturze niz reszta zombie, jesli jest osobno to wystarczy zrobic ją przezroczystą
  • +
  • -
  • 1


#772160 Non steam nie może użyć komendy

Napisane przez Anonymuss w 01.07.2021 21:07

Bardzo dobry tutorial, kilka komend zostało naprawionych customowych komend przy uzyciu natywów, oczywiście daje plusika.

 

Spróbujemy podnieść troche blokowanie CSXGuarda o poziom wyzej w tym momencie.

Nastepny problem jaki można zauważyc jest odczyt plików motd przy użyciu funkcji show_motd, czy jest jakieś konkretne rozwiązanie dla graczy którzy mają wgranego protectora CSXguard?

 

Ogólnie próbowałem rozwiązać issue przy użyciu podobnego rozwiązania przedstawionego powyżej, aczokolwiek naprawia błąd w dziwny sposób poniżej prezentuje opis jak wygląda sytuacja:

 

Step 1 ) Gracz CSSetti nie ma możliwości uruchomienia komendy /top15 z poziomu customowego menu ( od razu dostaje odpowiedź do konsoli z informacją [CSXGuard] MOTD: Blocked )

Step 2 ) Nastepnie jeśli gracz wpiszę /top15 manualnie przez say, landing page czy też plik txt. załaduje się bez problemu

Step 3 ) Przez kilka prób około 3-4 razy będzie mógł zobaczyć /top15 z poziomu customowego menu

Step 4 ) Po upływie tych prób, ponownie komenda /top15 nie bedzie działać z poziomu menu oraz będzie trzeba powtarzać cały proceder od początku czyli wpisanie manualnie /top15 oraz przez kilka prób będzie można sprawdzić w customowym menu /top15

 

Pytanie moje brzmi czy jest jakaś alternatywa na ładowanie informacji z okienka MOTD czy też da się naprawic ładowanie MOTD dla CSXguarda tak aby od razu ładował z poziomu zamiast wpisywania ręcznie /top15 oraz mieć możliwośc podglądu na kilka prób.

 

Pozdrawiam Serdecznie Shaxu

Nie ma rozwiązania na blokadę motd przez protector (chociaż nie zawsze zadziała ta blokada motd, wiem z autopsji). Gorsza alternatywa (ponieważ w motd jest więcej opcji) - jeśli chcesz zrobić jakiś krótki opis możesz po prostu wykorzystać show_menu, zrobić puste menu bez przycisków z samym tekstem. Co do podglądu na ilość prób chodzi Ci o to, że chcesz widzieć kto, ile razy wybrał opcję "top15" z Twojego menu czy jak?


  • +
  • -
  • 1


#772148 Non steam nie może użyć komendy

Napisane przez Anonymuss w 29.06.2021 22:37

Witam powoli uczę się pisać plugini i za pomocą jednego z poradników zrobiłem menu z komendami. i okazuje się, że ludzie z non steam nie działa 

Zasada pluginu jest prosta wpisujesz /komendy masz listę komend wybierasz i się wywołuje. ale graczom non steam pojawia się takie coś [CSXGuard] "say /sklep": (SD Blocked) 

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "komendy"
#define VERSION "1.0"
#define AUTHOR "xmox"


new komendy;
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /komendy", "nowemenu");
	
	komendy = menu_create("lista komend","nowemenuhandle");
	menu_additem(komendy,"Zaloguj sie ");//item = 0
	menu_additem(komendy,"Sklep ");//item = 1
	menu_additem(komendy,"Sklep SmS");//item = 2
	menu_additem(komendy,"Przekaz guziki ");//item = 3
	menu_additem(komendy,"Widok z trzeciej osoby ");//item = 4
	menu_additem(komendy,"Widok z pierwszej osoby ");//item = 5
	menu_additem(komendy,"Wycisz gracza ");//item = 6
	menu_additem(komendy,"Menu rang ");//item = 7
	menu_additem(komendy,"Info o VIP ");//item = 8
	menu_additem(komendy,"wyłącz HUD");//item = 9
	
	menu_setprop(komendy, MPROP_EXITNAME, "Wyjscie");
	
	
}
public nowemenu(id){
	menu_display(id, komendy);
	
	return PLUGIN_HANDLED;
}
public nowemenuhandle(id, menu, item){
	if(item == MENU_EXIT) {
		return PLUGIN_HANDLED;
	}
	
	switch(item) { 
		case 0:{
			client_cmd(id, "say /konto");
		}
		case 1:{
			client_cmd(id, "say /sklep");
		}
		case 2:{
			client_cmd(id, "say /sklepsms");
		}
		case 3:{
			client_cmd(id, "say /daj");
		}
		case 4:{
			client_cmd(id, "say /thirdperson");
		}
		case 5:{
			client_cmd(id, "say /firstperson");
		}
		case 6:{
			client_cmd(id, "say /mute");
		}
		case 7:{
			client_cmd(id, "say /rangmenu");
		}
		case 8:{
			client_cmd(id, "say /vip");
		}
		case 9:{
			client_cmd(id, "say /hud");
		}
	}

	return PLUGIN_HANDLED;
}

Z góry dziękuję za pomoc i pozdrawiam. 

 

 

Skoro uczysz się pisać pluginy to dam Ci wskazówkę. Najlepiej jakby to menu było napisane w ten sposób:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "komendy"
#define VERSION "1.0"
#define AUTHOR "xmox"
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_clcmd("say /komendy", "nowemenu");
}

public nowemenu(id)
{
	new komendy = menu_create("lista komend", "nowemenuhandle");

	menu_additem(komendy, "Zaloguj sie ");//item = 0
	menu_additem(komendy, "Sklep ");//item = 1
	menu_additem(komendy, "Sklep SmS");//item = 2
	menu_additem(komendy, "Przekaz guziki ");//item = 3
	menu_additem(komendy, "Widok z trzeciej osoby ");//item = 4
	menu_additem(komendy, "Widok z pierwszej osoby ");//item = 5
	menu_additem(komendy, "Wycisz gracza ");//item = 6
	menu_additem(komendy, "Menu rang ");//item = 7
	menu_additem(komendy, "Info o VIP ");//item = 8
	menu_additem(komendy, "wyłącz HUD");//item = 9
	
	menu_setprop(komendy, MPROP_EXITNAME, "Wyjscie");
	menu_display(id, komendy);
	return PLUGIN_HANDLED;
}

public nowemenuhandle(id, menu, item)
{
	if(item == MENU_EXIT)
		return PLUGIN_HANDLED;
	
	switch(item) { 
		case 0: client_cmd(id, "say /konto");
		case 1: client_cmd(id, "say /sklep");
		case 2: client_cmd(id, "say /sklepsms");
		case 3: client_cmd(id, "say /daj");
		case 4: client_cmd(id, "say /thirdperson");
		case 5: client_cmd(id, "say /firstperson");
		case 6: client_cmd(id, "say /mute");
		case 7: client_cmd(id, "say /rangmenu");
		case 8: client_cmd(id, "say /vip");
		case 9: client_cmd(id, "say /hud");
	}

	return PLUGIN_HANDLED;
}

 

 

[CSXGuard] "say /sklep": (SD Blocked)

Takie coś wyskakuje wszystkim ns'om którzy pobrali cs z cssetti, ponieważ tam w standardzie jest dodawany skrypt csx guard, który blokuje komendy z configu tego skryptu "CSXGuard.ini" wykonywane przez serwer na graczu. W tym pliku są wpisane komendy "say" i "say_team" dlatego przez natyw client_cmd nie zadziała to na ns'ach.

 

Albo ludzie którym nie działa Twoje menu, w CSXGuard.ini (w folderze swojego cs'a) wyłączą sobie ten skrypt w ten sposób

 

Enabled = True

na

 

Enabled = False

bądź w konsoli gry wpiszą sobie komendę csx guarda

 

csx_setcvar2 "Enabled" "False"

Albo są jeszcze dwie metody ale ja używam tylko jednej dlatego drugą niech Ci wytłumaczy ktoś kto używa tego natywu https://amxx.pl/doku.../callfunc-begindo omijania guarda

 

Musisz edytować wszystkie pluginy, które chcesz aby odpalały się przez Twoje menu /komendy, dlatego w tym przypadku prawdopodobnie będziesz miał problem z komendą /sklepsms, ponieważ zapewne go kupiłeś i posiadasz sam plik .amxx bez .sma. W każdym pluginie trzeba zrobić natyw do funkcji którą chcesz wywołać przez swoje menu. Na koniec do swojego pluginu /komendy dopisujesz gdzieś nad "public plugin_init()" wszystkie te natywy z innych pluginów, a później w "case" używasz tych natywów zamiast client_cmd.

 

Przykład jak stworzyć natyw w jakimś randomowym pluginie:

#include <amxmodx>

#define PLUGIN ".."
#define VERSION ".."
#define AUTHOR ".."
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_clcmd("say /konto", "menu_kont");
}

public plugin_natives()
{
	register_native("natyw_menukont", "menu_kont", 1);
}

public menu_kont(id)
{
	//jakis tam kod na menu
}

Przykład jak go użyć w Twoim menu:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "komendy"
#define VERSION "1.0"
#define AUTHOR "xmox"

native natyw_menukont(id);    // na gorze kodu dodajemy stworzony przez nas natyw

new komendy;
 
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /komendy", "nowemenu");
	
	komendy = menu_create("lista komend","nowemenuhandle");
	menu_additem(komendy,"Zaloguj sie ");//item = 0
	menu_additem(komendy,"Sklep ");//item = 1
	menu_additem(komendy,"Sklep SmS");//item = 2
	menu_additem(komendy,"Przekaz guziki ");//item = 3
	menu_additem(komendy,"Widok z trzeciej osoby ");//item = 4
	menu_additem(komendy,"Widok z pierwszej osoby ");//item = 5
	menu_additem(komendy,"Wycisz gracza ");//item = 6
	menu_additem(komendy,"Menu rang ");//item = 7
	menu_additem(komendy,"Info o VIP ");//item = 8
	menu_additem(komendy,"wyłącz HUD");//item = 9
	
	menu_setprop(komendy, MPROP_EXITNAME, "Wyjscie");
	
	
}
public nowemenu(id){
	menu_display(id, komendy);
	
	return PLUGIN_HANDLED;
}
public nowemenuhandle(id, menu, item){
	if(item == MENU_EXIT) {
		return PLUGIN_HANDLED;
	}
	
	switch(item) { 
		case 0:{
			natyw_menukont(id);    // tu go uzywamy omijajac w ten sposob csx guarda
		}
		case 1:{
			client_cmd(id, "say /sklep");
		}
		case 2:{
			client_cmd(id, "say /sklepsms");
		}
		case 3:{
			client_cmd(id, "say /daj");
		}
		case 4:{
			client_cmd(id, "say /thirdperson");
		}
		case 5:{
			client_cmd(id, "say /firstperson");
		}
		case 6:{
			client_cmd(id, "say /mute");
		}
		case 7:{
			client_cmd(id, "say /rangmenu");
		}
		case 8:{
			client_cmd(id, "say /vip");
		}
		case 9:{
			client_cmd(id, "say /hud");
		}
	}

	return PLUGIN_HANDLED;
}

  • +
  • -
  • 3


#772157 Non steam nie może użyć komendy

Napisane przez Anonymuss w 30.06.2021 12:44

Jeny ile z tym zabawy to już chyba wolę by to się wyświetlał w modt. Chyba że się da zrobić plugin ktory po wejściu na server wymusi to graczom. Bo kurcze i tak nikt raczej z tego nie będzie korzystać.

Nie można wymusić na graczu wyłączenia CSX Guarda a modyfikowanie plików graczom jest zabronione. Jest pewna opcja z ReChecker (jeśli masz ReHLDS na serwerze), który by wykrywał ten skrypt i kickował dopóki NS go nie usunie ale wtedy podejrzewam, że prawie nikt by u Ciebie nie grał.


  • +
  • -
  • 2


#640597 [ROZWIĄZANE] Respawn Zombie 3 razy

Napisane przez VertekS w 28.05.2014 13:53

Dodatkowo na początku rundy / przy wyjściu gracza resetuj wszystkie komórki tablicy.

W plugin_init dodajesz obsługę eventu nowej rundy:

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

Na początku rundy ustawiasz wszystkim graczom ilość respawnów na 3:

public newRound(id){
    g_respawn3times[id] = 3
}

To samo, co przy evencie HLTV, robisz przy wyjściu gracza z serwera:

public client_disconnect(id){
    g_respawn3times[id] = 3
}

Można też dodać resetowanie możliwych respawnów przy wzięciu antidotum (w ZP 4.3 funkcja zp_user_humanized_post).

EDIT: Pomysł Vasto_Lorde jest bardziej przejrzysty dla człowieka. Odejmowanie licznika i sprawdzanie, czy jest większy niż zero, to lepsze rozwiązanie.


  • +
  • -
  • 1


#639672 [ROZWIĄZANE] Respawn Zombie 3 razy

Napisane przez VertekS w 21.05.2014 15:11

Linia 2271:

if (get_pcvar_num(cvar_deathmatch) == 2 || (get_pcvar_num(cvar_deathmatch) == 3 && random_num(0, 1)) || (get_pcvar_num(cvar_deathmatch) == 4 && fnGetZombies() < fnGetAlive()/2))

Utwórz globalną tablicę 33 - elementową (np. moznaRespic[33]), dodaj warunek w linii 2271, bądź w jej pobliżu, że jeżeli moznaRespic[id] jest mniejsze niż 3, to respisz gracza i powiększ moznaRespic[id] o 1. Dodatkowo na początku rundy / przy wyjściu gracza resetuj wszystkie komórki tablicy.


  • +
  • -
  • 1


#636247 Usunięcie nie potrzebnych klas, zostawienie tylko jednej

Napisane przez VertekS w 03.05.2014 08:07

Nie lepiej było poszukać tej jednej, konkretnej klasy osobno? Wiem, że hunter jest osobnym pluginem. Co do edycji kodu, to nie gwarantuję, że działa:

Spoiler

 

Załączone pliki


  • +
  • -
  • 2


#630927 Limit Ammo Packs VIP

Napisane przez Drago36 w 08.04.2014 15:23

Spróbuj tak:

#define AMMOPACK_LIMIT 500
#define VIP_AMMOPACK_LIMIT 1000

...

SaveAmmo(id)
{
if(!flag_get(g_LoadSuccess,id))
{
server_print("[AutoSaveAmmoPack] User [%i] failed to save AP because it not loaded yet!", id)
return
}
 
	g_ammo[id] = zp_get_user_ammo_packs(id)
	if(get_user_flags(id) & ADMIN_LEVEL_H)
	{
		if(g_ammo[id] >= VIP_AMMOPACK_LIMIT)
		{
			g_ammo[id] = VIP_AMMOPACK_LIMIT
		}
	}
	else 
	if(g_ammo[id] >= AMMOPACK_LIMIT)
	{
		g_ammo[id] = AMMOPACK_LIMIT
	}
	new data[16]
	num_to_str(g_ammo[id], data, 15)
	fvault_set_data(g_vault_name, g_authid[id], data)
}

  • +
  • -
  • 1


#628810 [ROZWIĄZANE] T-Virus blokada na innych modach

Napisane przez sNH. w 28.03.2014 20:33

Daj warunek sprawdzający:

w set_zombie

 

Spoiler
//Kod pisany ręcznie Gwyn :D
 
Coś takiego, dawno się nie bawiłem więc daję wskazówki. Odnośnie sprawdzania trybów pewnie masz w bibliotekach
 
Tak jak sharku napisał w notatce. Jeżeli chodzi o || -> i, jeżeli ma być tylko i wyłącznie dla wszystkich tych trybów to daj &&

  • +
  • -
  • 1


#628849 [ROZWIĄZANE] T-Virus blokada na innych modach

Napisane przez Drago36 w 28.03.2014 23:00

 

Daj warunek sprawdzający:

w set_zombie

 

Spoiler
//Kod pisany ręcznie Gwyn :D
 
Coś takiego, dawno się nie bawiłem więc daję wskazówki. Odnośnie sprawdzania trybów pewnie masz w bibliotekach
 
Tak jak sharku napisał w notatce. Jeżeli chodzi o || -> i, jeżeli ma być tylko i wyłącznie dla wszystkich tych trybów to daj &&

Nie może dać w set_zombie, ponieważ gracz który kupi extra item podczas swarmu, zostaną mu pożarte ammo packi, a czynność się nie wykona.

Należy wykonać  w  publiku zp_extra_item_selected po warunku if (itemid == g_virus).

 

Więc zamiast:

public zp_extra_item_selected(id, itemid)
{
if (itemid == g_virus)
{
get_user_name(id, name, 31)
set_hudmessage(0, 255, 0, -0.05, -0.45, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%s has infected himself with the T-Virus!", name)
set_task(5.0, "set_zombie", id)
}
}

Daj:

public zp_extra_item_selected(id, itemid)
{
if (itemid == g_virus)
{
if(zp_is_swarm_round() || zp_is_plague_round() || zp_is_nemesis_round())
{
client_print(id, print_chat, "Nie mozesz tego kupic, na tym trybie!!");
return ZP_PLUGIN_HANDLED;
}
get_user_name(id, name, 31)
set_hudmessage(0, 255, 0, -0.05, -0.45, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%s has infected himself with the T-Virus!", name)
set_task(5.0, "set_zombie", id)
}
}

  • +
  • -
  • 2


#617253 de_rats_lata90 by pomen

Napisane przez pomen w 17.02.2014 11:49

Cześć ostatnio zrobiłem sobie mapkę rats :) jest w stylu lat 90 i posiada sporo sekretów.

Zresztą popatrzcie sobie na screeeny, bo pewnie ściągać wam się nie będzie chciało.

 

fclj.png

 

cnbw.png

e8tl.png

wr6u.png

fika.png

 

overview:

 

 

Jeśli ktoś potrzebowałby pomocy w mappowaniu albo ma dla mnie jakieś "zlecenie" chętnie wysłucham go na pw :D

Załączone pliki


  • +
  • -
  • 6


#586279 Pisanie na zielono

Napisane przez GeDox w 17.11.2013 18:41

Spróbuj:

 

Załączony plik  vip_prefix.sma   1,33 KB  24 Ilość pobrań
  vip_prefix.amxx


  • +
  • -
  • 1


#575792 Admin chat (u@) - różne kolory

Napisane przez szelbi w 06.10.2013 13:03

Screenshot


przyklad1_zps588e65f4.png
 

Download


Załączony plik  adminchat_1.rar   5,51 KB  3014 Ilość pobrań

 
 
 
 

Screenshot


przyklad2_zpse4ad1c08.png
 

Download


Załączony plik  adminchat_2.rar   5,5 KB  2449 Ilość pobrań

 
 
 
 

Screenshot


przyklad3_zps246276f3.png
 

Download


Załączony plik  adminchat_3.rar   5,49 KB  440 Ilość pobrań

 
 
 
 

Screenshot


prz4_zps15a48ac9.png


Download


Załączony plik  adminchat_4.rar   5,5 KB  1569 Ilość pobrań

 

 

Screenshot


prz5_zps2cf245ba.png


Download


Załączony plik  adminchat_5.rar   5,5 KB  873 Ilość pobrań



 
 

FAQ


Jak wyłączyć dźwięk odtwarzany przy otrzymaniu wiadomości na u@?
Aby to zrobić, wystarczy wejść w SMA pluginu, zakomentować 39. linijkę tak jak poniżej, przekompilować ponownie plugin i wrzucić na serwer :)
//#define SOUND 1
 

Inne informacje


Stworzyłem ten temat, ponieważ na forum widzę prawie codziennie prośbę o coś takiego.
Chcecie jakieś inne kolory u@? Piszcie poniżej, a z pewnością je dodam.
  • +
  • -
  • 23


#580633 [ROZWIĄZANE] Autozapis limit AP VIP

Napisane przez sNH. w 27.10.2013 10:13

Nie wiem czy takie coś "pyknie", bo dawno nie bazgrałem w kodzie, ale sprawdź. Ew zrobię poprawkę

 

Spoiler

  • +
  • -
  • 1


#490106 High Ping Kicker dla (Gm)AMXBans [Brak spamu]

Napisane przez Gość w 14.12.2012 03:19

High Ping Kicker dla (Gm)AMXBans
Plugin banuje graczy z wysokim pingiem poprzez (Gm)AmxBans.

cvary
hpk_max_ping 120	// maksymalny dozwolony ping
hpk_check_times 6 // maksymalna liczba sprawdzeń podczas których można mieć ping większy niż dozwolony
hpk_check_delay 5.0 // interwał sprawdzania wartości pingu u graczy
hpk_ban_time 5 // czas (w minutach) na ile gracz będzie banowany za zbyt wysoki ping
hpk_immunitet_flags "a" // flagi immunitetu, osoby z tymi flagami nie będą sprawdzane


wymagane moduly
amxmodx

Działający (Gm)AmxBans z racji banowania poprzez niego.
Plugin działa zarówno na Steamie, S/NS, jak i na Non-Steamie.

opis
Plugin co określony interwał (hpk_check_delay) sprawdza pingi graczy bez immunitetu (hpk_immunitet_flags).
Jeśli dany gracz ma zbyt wysoki ping (ponad hpk_max_ping) ponad określoną liczbę wystąpień (hpk_check_times) z rzędu,
to zostaje zbanowany poprzez (Gm)AmxBans na określoną liczbę minut (hpk_ban_time).

inne informacje
Czas bana winien być liczbą naturalną, najlepiej dodatnią.
hpk_ban_time ustawiony na zero da bana permanentnego.

Powód bana można edytować poprzez zmianę tekstu z linijki zawierającej
Zbyt wysoki ping. Limit: %dms

zamieniając powód bana na inny, przy czym %d będzie zamienione na liczbę minut w postaci liczby.
Uwaga, by przypadkiem nie usunąć daszka ani cudzysłowów (tak, mają być dwa na końcu).

Plugin ma zastosowanie tylko dla serwerów, które korzystają z (Gm)Amxbans i banują za ping min. na minutę.
HPK nie spamuje, jak pozostałe jego wersje. Plusem jest także możliwość konfiguracji maksymalnego pingu cvarem.

download
Załączony plik  hpk.sma   1,4 KB  1788 Ilość pobrań
  hpk.amxx

Stara wersja:
Załączony plik  hpk.sma   1,35 KB  504 Ilość pobrań
  hpk.amxx