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
 

SeeK - zdjęcie

SeeK

Rejestracja: 22.11.2010
Aktualnie: Nieaktywny
Poza forum Ostatnio: 25.05.2020 11:01
-----

#648012 OnConfigsExecuted - nie działa

Napisane przez sebul w 06.07.2014 13:17

Dobra, problem rozwiązany, forward nie wywołuje się, gdy nikogo nie ma na serwerze, musi zacząć się rozgrywka, aby mógł się wykonać.
  • +
  • -
  • 1


#675755 [ROZWIĄZANE] Losowy ciąg znaków

Napisane przez grankee w 19.12.2014 01:30

@ Gwyn - PAWN jest posrany pod tym względem, przepuszcza takie niedorzeczności. Czy to powinno działać? Nie, nie powinno, nawet kompilator nie powinien tego przepuścić. Czy zadziała? Tak Oo. Czy za każdym razem? Nie wiem, nie testowałem.

 

 

 


No to teraz napisz plugin w którym zawrzesz swój kod i to:
 
new kod[12] = generatorKodu(12);
client_print(0, print_chat, kod)
i sprawdź, czy na pewno działa

Tego nie przepuści, bo to tak jakbyś chciał przypisać tablicę do tablicy znakiem =, a to nie przejdzie, ale już jak dasz np.

new kod[6]
formatex(kod,5,generatorKodu(5))
client_print(id,print_chat,kod)

to założę się, że przejdzie bez problemu i zadziała.


  • +
  • -
  • 3


#675223 [ROZWIĄZANE] Respawn bytu?

Napisane przez grankee w 15.12.2014 15:56

Firma grankee&grankee e femili kompany specjalizuje się już 60 lat w montażu wybitych przez terro i CT kratek oraz szyb, nasze motto to pev'y, spójrz jak działamy:

 

Kiedy łobuzy albo policja wybije kratkę:

pev_deadflag zmienia sie z 0 na 2

pev_solid zmienia sie z 4 na 0

pev_takedamage zmienia sie z 1 na 0

pev_health zmienia sie z 20 na 0 lub wartość ujemną

pev_effects zmienia sie z 0 na 128

 

 

Tak więc

        set_pev(134,pev_solid,4)
	set_pev(134,pev_takedamage,1.0)
	set_pev(134,pev_health,20.0)
	set_pev(134,pev_deadflag,0)
        set_pev(134,pev_effects,0)

I masz kratkę jak nowo zamontowaną :)

 

Numer bytu jest 134, bo testowałem na kratce na nuku, prawa na górnym bsie ma ten numer zwykle (może zależeć od ilości graczy, testowane na jednym)  :D


  • +
  • -
  • 3


#9646 Eventy

Napisane przez Miczu w 02.07.2008 15:13

Postaram sie przedstawic najwazniesze eventy do cs'a, wraz z codem wystarczajacym do pozniejszego korzystania z niego O:)

Ps. podam tylko sprawdzone metody i nie będę przytaczal jakie sa bledne metody (szczegolnie nowa runda jest pare metod w tym 1 bledna, czesto stosowana).

Start mapy


plugin_init()
{
	//code
}
Powyzsza funkcja jest tylko wywolywana po zmianie mapy (na samym jej poczatku).

Koniec mapy


plugin_end ( )
{
	//code
}
Powyzsza funkcja jest wywolywana przy zmianie mapy lub prawidlowym zamknieciu serwera. Prawdopodobnie nie wychwyci crasha.

Nowa Runda


#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0")
}
 
public Nowa_Runda()
{
	//code
}
Nowa runda tym sposobem omija pierwsza runde - pierwsza po zmianie mapy.
#mozliwe problemy gdy w tym evencie np: operacje na graczu typu danie broni(potwierdzone)...

Poczatek Rundy


Poczatek rudny to jak sie freeze skonczy - mozna sie ruszac ;-)
#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_logevent("Poczatek_Rundy", 2, "1=Round_Start")  
}
 
public Poczatek_Rundy()
{
	//code
}

Koniec Rundy


Przeciwnik zabity/Bomba wybuchla/Bomba zostala rozbrojona/zakladnicy uwolnieni/minol czas rudny
#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_logevent("Koniec_Rundy", 2, "1=Round_End")
}
 
public Koniec_Rundy()
{
	//code
}

Damage - obrazenia


#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("Damage", "Damage", "b", "2!=0")
}
 
public Damage(id)
{
	new vid = read_data(0) // vid == id
	
	new damage = read_data(2)
	
	new Origins[3]			// Wspolrzedne gracza, granatu, obiektu wywolujacego obrazenia
	Origins[0] = read_data(4)
	Origins[1] = read_data(5)
	Origins[2] = read_data(6)
	
	new kid = get_user_attacker(id)	// Gracz atakujacy
 
	//code
	
}

DeathMsg - ktos umarl


#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("DeathMsg", "DeathMsg", "a")
}
 
public DeathMsg()
{
	new kid = read_data(1)	//zabojca
	
	new vid = read_data(2)	// ofiara
	
	new hs = read_data(3)	// HeadShot (1 == true)
	
	new weapon[64]		
	read_data(4,weapon,63)	//krotka nazwa broni (bez weapon_ / CSW_ )
 
	//code
}
kid i vid sa sobie rowne gdy zabije cie wlasna bron (granat) lub np. admin uzyje slay'a...

kid == 0 gdy np. spadniesz z wysokiej wysokosci...

CurWeapon - obecna bron



Wykrywa zmiane broni - takze gdy sie sawnujesz dostajesz nowa bron i funkcja tez jest wywolana.

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("CurWeapon","CurWeapon","be", "1=1")
}
 
public CurWeapon(id)
{
	new wid = read_data(2)	// Id broni
	new ammo = read_data(3)	// liczba naboi w magazynku
	//code
}

Noz, granaty itp. maja ammo = -1

Info-bronie

Z testow wynika, ze w/w event jest tez wywolywany po wystrzeleniu naboju (ammo sie zmienia) lub po przeladowaniu.

Podniesienie broni



Podniesie broni a takze kupienie. Na starcie rundy sie uruchomi gdy dostajemy noz i pistolet (2 razy). Jest wywolywany takze gdy kupimy cos, ale nie bedziemy mieli tego w rekach (np. granat).

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("WeapPickup", "WeapPickup", "b")
}
 
public WeapPickup(id)
{
	new wid = read_data(1) // id broni
 
	//code
}

Nie liczy podniesienia Shilda oraz kupienia defa, noktowizora czy kamizelki Dołączona grafika

Podniesienie amunicji



Jak kupujemy amunicje to clip daje nam wartosc ile nam przybylo. Jesli podniesiemy M4A1 co ma 24 w broni i 90 w zapasie to clip bedzie mial wartosc 90, a nie 114. Jak drop'niemy i podniesiemy wlasna bron to event nie zostanie wywolany.

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("AmmoPickup", "AmmoPickup", "b")
}
 
public AmmoPickup(id)
{
	new aid = read_data(1)   //id amunicji
	new clip = read_data(2)  //ilosc naboi
	
	//code
}

Amunicja



Aktualny stan amunicji w 'zapasie'. Jak kupujemy ammo to clip ma laczna wartosc naboi w magazynku. Jak podniesiemy po kims bron np. AK 25 i 90 w zapasie to clip wynosi 90.

Na poczatku rundy wszystkie typy naboi za wyjatkiem tych do ktorych mamy bron sa zerowane. Jak kupujemy granaty to clip ma wartosc rowna ilosci danego typu np. flash max 2...
#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("AmmoX", "AmmoX", "b")
}
 
public AmmoX(id)
{
	new aid = read_data(1)
	new clip = read_data(2)
	
	client_print(id,print_chat,"id %d aid %d clip %d",id,aid,clip)
 
	//code
}

Wejscie na server


Juz widzisz mape ;-)
public client_putinserver(id){
	//code
}

Polaczenie z serwerem


Czyli gdy np. w konsoli napiszesz connect IP:PORT
public client_connect(id)
{
	//code
}

Rozlaczenie sie z serwerem



public client_disconnect(id)
{
	//code
}

Health - Zycie


#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("Health", "Health", "be")
}
 
public Health(id)
{
	new health = read_data(1)
 
	//code	
}


Money - zmiana w kasie


#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("Money", "Money", "be")
}
 
public Money(id)
{
	new Money = read_data(1)
 
	//code	
}





TeamInfo - informacjie o Teamie



Ogolny wyglad eventu:
#include <amxmodx>
#include <amxmisc>
 
public plugin_init()
{
	register_event("TeamInfo","team_assign","a")
}
 
public team_assign()
{
	new id = read_data(1)
	new Team[32]
	read_data(2,Team,31)	//UNASSIGNED
				//TERRORIST
				//CT
				//SPECTATOR
}

Ale trzeba sie tu pilnowac! Z moich badan wynika ze event jest wywolywany za kazdym spawnem i dodatkowo przy wyborze z menu teamu.

Jesli chcemy wykrywac autentyczna zmiane druzyny musimy zastosowac taki zabieg (chyba najoptymalniej i do tego czysto):
#include <amxmodx>
#include <amxmisc>
 
public plugin_init()
{
	register_event("TeamInfo","team_assign","a")
}
 
public team_assign()
{
	static old_team[33]
	new tid
	new id = read_data(1)
	new Team[32]
	read_data(2,Team,31)	//UNASSIGNED
				//TERRORIST
				//CT
				//SPECTATOR
	if(equal(Team,"UNASSIGNED")) tid = 0
	else if(equal(Team,"TERRORIST")) tid = 1
	else if(equal(Team,"CT")) tid = 2
	else if(equal(Team,"SPECTATOR")) tid = 3
	
	if(old_team[id]==tid) return PLUGIN_CONTINUE	//jesli druzyna sie nie zmienila to przerywamy event
	
	old_team[id] = tid				//zapisujemy nowy team
	
	/*code
	
	//koniec code */
	return PLUGIN_CONTINUE 		// skoro juz uzylismy returna to musimy tez na koniec go dac
}

=================================================

Eventy wywolane przez:
register_logevent
nie maja parametru id - a mowiac inaczej jak dodamy parametr id, to bedzie mial wartosc 0

=================================================

Flagi do eventow:

"a" - Global Event - wysylany do all graczy (mozliwy jest brak mozliwosci podpiecia id do eventu np. DeathMsg)
"b" - Event sent to a single target - do konkretnego gracza (zwiazany z pojedynczym graczem - demage)
"c" - Send only once when repeated to other players - tylko raz gdy jest powtarzany u innych graczy.
"d" - Only if sent to a dead player - tylko u martwych graczy
"e" - Only if sent to an alive player - tylko u zywych graczy ( przed wersja 1.80 jest bug, wiec i tak wypada sprawdzac is_user_alive(id) )


PS. Jak będę mial czas to dodam wiecej O:)
PS2. Jak cos nie dziala to dajcie znac, bo nie wszystko mialem czas sprawdzic przed daniem na forum.

PS3. Jestem autorem tego poradnika i wolno tylko kopiowac za moja zgoda... Nie [you] nie mozesz kopiowac!
  • +
  • -
  • 60


#668182 [ROZWIĄZANE] register_logevent server_print - łapanie wiadomości

Napisane przez GwynBleidD w 27.10.2014 10:16

Nowsze wersje amxbans wywołują w tym momencie forward amxbans_sql_initialized. Złapanie samego server_print jest możliwe, ale nie jest wbudowane w amxx, potrzebne jest do tego orpheu i wiedza jak go użyć, by się "wpiąć" w server_print.
  • +
  • -
  • 1


#668189 [ROZWIĄZANE] register_logevent server_print - łapanie wiadomości

Napisane przez DarkGL w 27.10.2014 11:12

Nie wszystkie funkcje amxx'a mogą być hookniete ze względu na brak zdefiniowanych struktur


  • +
  • -
  • 2


#662836 Długość trwania display fade

Napisane przez GwynBleidD w 09.09.2014 09:10

https://wiki.alliedm...ents#ScreenFade

 

Ustaw parametr fadetype na 4 (ewentualnie 1<<3 żeby było czytelniej), nie wiem skąd Ci tam się 1<<16 wzięło, skoro flagi się kończą na 3 bicie...

 

Poza tym parametr holdtime jest poza zakresem, maksymalna jego wartość to 32767, u Ciebie wychodzi po przeliczeniu 122880.

 

 


  • +
  • -
  • 1


#660728 [ROZWIĄZANE] Usuniecie auto podmiany tekstu w menu

Napisane przez GwynBleidD w 28.08.2014 09:31

Tak, CS ma ciekawy ficzer :) Zamieni Ci nazwy komend na nazwy klawiszy, dzięki czemu możesz w menu wyświetlić graczowi co ma wcisnąć, by wykonać daną czynność...

Wykorzystywałem to raz, gdy tworzyłem menu oparte o 13 klawiszy, zamiast 10ciu. Po prostu dalej, wstecz i zamknij były pod klawiszami z, x, c (czyli menu komend radiowych).

Wracając do tematu, zmień kolor w środku komendy, np zamiast pisać +speak pisz +sp\reak co spowoduje zmianę koloru napisu na czerwony tuż po literce p, w ten sposób CS po stronie klienta nie złapie tego, że to jest komenda. Możesz oczywiście zmienić kolor na ten sam, którym wyświetlasz wiadomość.
  • +
  • -
  • 2


#656231 [ROZWIĄZANE] Problem z floatem

Napisane przez GwynBleidD w 12.08.2014 09:58

Po kie grzyba Ci tu operacje zmiennoprzecinkowe? Przecież przecinek masz w stałym miejscu...

Przechowuj ceny jako liczbę groszy i wyświetlaj je tak:
 
format(aaa, charsmax(aaa), "%d.%02d", grosze/100, grosze%100)
Nie ma co się pchać w floaty tam, gdzie potrzebne nie są :) Jeśli przecinek jest zawsze w stałym miejscu, można to obejść.
  • +
  • -
  • 1


#369192 Deathrun / Speedrun | Wyścig

Napisane przez speedkill w 22.02.2012 22:16

opis
Deathrun / Speedrun | Wyścig
By MarWit & speedkill
Wymagany plugin do prawidłowego działania : http://amxx.pl/topic...a-staty-i-rank/
Jest to wyścig na serwery typu deathrun / speedrun.
Gracz wpisuje wyścig wybiera jednego gracza , jeśli przeciwnik zaakceptuje, daje ich na respa pisze "wyscig rozpocznie się za %d sekund" Standardowo 3 sekundy gracz nie może się ruszyć, z respa.
Plugin zapisuje wygrane oraz przegrane gracza do bazy mysql ( Mamy 15 najwięcej wygrywających , oraz ranking względem wygranych ).
Mysql nie jest obowiązkowe w plugnie mamy
#define Mysql
Za wygranie wyścigu dostajemy 3 zycia lub 10000$ ;)
wymagane moduly
#include <fakemeta_util>
#include <cstrike>
#include <hamsandwich>
#include <sqlx>
komendy
/wyscig - Menu z wyborem gracza do wyścigu.
/mywins - Pokazuje ilość wygranych ( ranking ).
/winners - pokazuje top 10 najlepszych względem wygranych.
screenshot
Dołączona grafika
cvary
amx_race_host ""
amx_race_user ""
amx_race_pass ""
amx_race_db ""
Jeśli używamy Speedrun_wyscig to :
amx_race_death 1 - Jeśli gracz zginie wyścig ma się skończyć | 0 - wyścig trwa dalej
instalacja
Standardowa
inne informacje
Jeśli używamy wersji na Deathrun to :
Otwórz .sma Deathrun Manager'a i dodaj pod plugin_init
public plugin_natives()
{
	register_native("dr_add_life", "native_dr_add_life", 1);
}
public native_dr_add_life(id, ile)
{
	g_Lifes[id] += ile;
}
Chcesz wyłączyć zapis mysql w 11 linijce dodaj // przed
#define Mysql
Zakaz kopiowania bez podania źródła stony,oraz autorów.
Myślę,że się przyda.
download
Mamy 2 wersje jedna na deathrun, druga na speedrun ( bez kasy za wygraną , bez dodatkowych żyć , i informacjach o tym )

Załączone pliki


  • +
  • -
  • 27


#654811 Problem z ENUM

Napisane przez GwynBleidD w 04.08.2014 23:37

ad 1.
charsmax(a) - NAME
ad 2.
To nie są struktury, ale pseudostruktury. Tutaj problemem są ENUMy... Niestety pawn nie posiada struktur, a etykiety w enumach muszą być unikalne w obrębie pluginu. Niestety, taka przypadłość brzydka pawna...
  • +
  • -
  • 1


#645107 COD Rynek

Napisane przez MAGNET w 23.06.2014 23:17

COD Rynek

 

opis

 

Jest to modyfikacja, dzięki której gracze mogą swobodnie wystawiać perki na sprzedaż, bądź je kupować za $. Nie wymaga żadnych dodatkowych bibliotek, czy też plików. Mam nadzieję, że przypadnie Wam do gustu ;)

 

W razie ewentualnych problemów pisać pod spodem

Aktualizacje:
1.1 - dodanie możliwości usuwania perku z  rynku
1.2 - dodanie rynku z zarówno dolarami jak i monetami
1.3 - dodanie potwierdzenia zakupu perku, walory estetyczne

komendy

/rynek - otwiera menu główne rynku

instalacja

 

http://amxx.pl/topic...-pluginow-amxx/

 

inne informacje

 

Dziękuję użytkownikowi 26975 za pomoc przy pluginie oraz w testach :ok:

 

download

Załączone pliki


  • +
  • -
  • 26


#629828 [ROZWIĄZANE] Problem z odpaleniem metamoda

Napisane przez Amaroq w 02.04.2014 20:12

Przypuszczam, że jest to spowodowane starą wersją metamoda. Spróbuj wgrać Metamod-P 1.21p37 lub Metamod 1.21.1-am lub Metamod 1.20. Do wyboru do koloru.


  • +
  • -
  • 3


#629452 Problemy z overflowed

Napisane przez Aemiksowy w 31.03.2014 18:34

Jest to prawdopodobnie związane albo z nowym HLDS, nowym amxmodx albo dproto. Sam dokładniej tego nie zweryfikowałem, ponieważ nie mam tak naprawdę możliwości, aby coś takiego zrobić. Masz całkowitą rację SeeK w tym i tu Cię poprę, bo mam taki sam problem.

 

AD 2. Nie.

AD 3. Niewykluczone. Na starym HLDS nie było żadnego problemu, po wgraniu nowego HLDS bez przerwy wyskakuje overflowed. Udało mi się ustalić, że występuje na MARTWYCH graczach, co jest dla mnie trochę dziwne, nawet bardzo.

AD 4. Myślę, że to ma najmniejszy wpływ na taki stan rzeczy.

AD 5. i AD 6. Jak wspomniałem wyżej, 3 czynniki mogą powodować ten błąd. Znaczy ja to rozumiem w ten sposób. Być może stosujemy coś źle przy wyświetlaniu wiadomości do graczy bądź wysyłaniu różnych komend, a w amxmodx nie wyrzuca absolutnie żadnego błędu na ten temat. Pokazał to chociażby HubertTM w temacie o JailBreaku, że drobna pierdoła, a potrafiła coś zepsuć na nowym HLDS, gdzie na starym problemu nie było...

 

Sprawa jest zagadkowa i do rozwiązania. 




#604764 Łatka na exploita generującego SID

Napisane przez GwynBleidD w 13.01.2014 08:29

Dodaj prefixy dla wszystkich niestandardowych metod autoryzacji:

# RevEmu_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids generated by Steamclient 2009
SC2009_Prefix1 = 1;

# RevEmu_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids generated by RevEmu
RevEmu_Prefix1 = 2;

# RevEmu2013_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids generated by RevEmu2013
RevEmu2013_Prefix1 = 3;

# OldRevEmu_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids generated by old RevEmu
OldRevEmu_Prefix1 = 4;

# SteamEmu_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids generated by SteamEmu
SteamEmu_Prefix1 = 5;

# SteamEmu_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids assigned for AVSMP Clients (Cracked steam)
AVSMP_Prefix1 = 6;

# Setti_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids assigned for Setti server scanner
Setti_Prefix1 = 7;

# SXEI_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids assigned for sXeI clients
SXEI_Prefix1 = 8;
Teraz gdy ktoś będzie próbował wygenerować SteamID taki, jak jakiegoś admina, będzie się jedną cyfrą różnił. Oczywiście jeśli korzysta z tych metod generowania SteamID, a nie hackuje jakoś SID ze steama...
  • +
  • -
  • 2