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.
|
SeeK
Rejestracja: 22.11.2010Aktualnie: Nieaktywny
Poza forum Ostatnio: 25.05.2020 11:01
Statystyki
- Grupa: Użytkownik
- Całość postów: 438
- Odwiedzin: 9 059
- Tytuł: Wszechobecny
- Wiek: Wiek nie został ustalony
- Urodziny: Data urodzin nie została podana
-
Płeć
Mężczyzna
#648012 OnConfigsExecuted - nie działa
Napisane przez sebul w 06.07.2014 13:17
#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.
#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)
#9646 Eventy
Napisane przez Miczu w 02.07.2008 15:13
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
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_logeventnie 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
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!
#668182 [ROZWIĄZANE] register_logevent server_print - łapanie wiadomości
Napisane przez GwynBleidD w 27.10.2014 10:16
#668189 [ROZWIĄZANE] register_logevent server_print - łapanie wiadomości
Napisane przez DarkGL w 27.10.2014 11:12
#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.
#660728 [ROZWIĄZANE] Usuniecie auto podmiany tekstu w menu
Napisane przez GwynBleidD w 28.08.2014 09:31
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ść.
#656231 [ROZWIĄZANE] Problem z floatem
Napisane przez GwynBleidD w 12.08.2014 09:58
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ść.
#369192 Deathrun / Speedrun | Wyścig
Napisane przez speedkill w 22.02.2012 22:16
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 MysqlZa wygranie wyścigu dostajemy 3 zycia lub 10000$
#include <fakemeta_util> #include <cstrike> #include <hamsandwich> #include <sqlx>
/wyscig - Menu z wyborem gracza do wyścigu. /mywins - Pokazuje ilość wygranych ( ranking ). /winners - pokazuje top 10 najlepszych względem wygranych.
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
Standardowa
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 MysqlZakaz kopiowania bez podania źródła stony,oraz autorów.
Myślę,że się przyda.
Mamy 2 wersje jedna na deathrun, druga na speedrun ( bez kasy za wygraną , bez dodatkowych żyć , i informacjach o tym )
Załączone pliki
-
Speedrun_wyscig.sma 14,81 KB 797 Ilość pobrań
Speedrun_wyscig.amxx -
Deathrun_wyscig.sma 15,42 KB 1236 Ilość pobrań
Deathrun_wyscig.amxx
#654811 Problem z ENUM
Napisane przez GwynBleidD w 04.08.2014 23:37
#645107 COD Rynek
Napisane przez MAGNET w 23.06.2014 23:17
COD Rynek
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
/rynek - otwiera menu główne rynku
http://amxx.pl/topic...-pluginow-amxx/
Dziękuję użytkownikowi 26975 za pomoc przy pluginie oraz w testach
Załączone pliki
-
COD_Rynek_Dolary.sma 7,55 KB 455 Ilość pobrań
COD_Rynek_Dolary.amxx -
COD_Rynek_Monety.sma 7,72 KB 960 Ilość pobrań
COD_Rynek_Monety.amxx -
COD_Rynek_Monety_Dolary.sma 9,82 KB 539 Ilość pobrań
COD_Rynek_Monety_Dolary.amxx
#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.
#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
# 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...
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Reputacja: SeeK
- Regulamin