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
 

Ogen Dogen - zdjęcie

Ogen Dogen

Rejestracja: 07.01.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 02.09.2023 20:02
*****

#775679 Poszukuję Opiekunów / adminów na serwer DD2 - Cskatowice.com

Napisane przez Engi w 16.12.2022 13:39


Jest nieaktywny, ponieważ szukamy Opiekuna serwera, który by chciał się nim zająć

 

Czyli jelenia który opłaci wasz serwer.


  • +
  • -
  • 0


#770108 Aktualizacje

Napisane przez DarkGL w 27.01.2021 23:09

Forum zostało przeniesione na całkowicie nowego dedyka.

 

W razie wykrycia jakiś problemów zachęcam do informowania postaramy się na bieżąco wszystko poprawiać.


  • +
  • -
  • 5


#764318 HLTV z wyższym rate ?

Napisane przez Scorpion Flail w 26.01.2020 21:21

Od siebie powiem, że od listopada testuję tę konfigurację na pukawce z najnowszym buildem rehltv:

rate 100000
updaterate 100

Wystarczy dopisać to do pliku hltv.cfg.

 

Wnioski: na pewno upłynniło to strzelanie full auto na demkach. Nie jest idealnie, ale poprawa znacząca. Rozmiar demek na serwerze Only DD2 przy ~30 graczach wzrósł do 160-200 MB.


  • +
  • -
  • 2


#761437 Respawn Alert - kara dla kampiacych - możliwość ustawienia własnej strefy

Napisane przez Rivit w 09.09.2019 20:44

opis

Jest to modyfikacja tego pluginu: https://amxx.pl/topi...buyzone-respie/

Z tym, że plugin ma możliwośc ustawienia stref, czyli nie jesteśmy ograniczeni przez buyzone, ale możemy sobie rozciągnąć strefy jak nam się podoba.

 

inne informacje

Z góry dziękuję autorowi Toldi za jego kod, który dostosowałem na potrzeby moich zmian. Dużo zostało przerobione.

 

cvary

// Ile sekund po starcie rundy (koniec zamrozenia) ma sprawdzac czy gracz jest na respawnie.
respawn_guard_start "30.0"

// Co ile sekund ma sprawdzac czy gracz znajduje się na respawnie
respawn_guard_interval "3.0"

// Po ilu warnach ma zaczac karac gracza
respawn_guard_max_warns "3"

// Typ kary
// 0 - Slapowanie gracza (zabiera hp + rzuca graczem)
// 1 - Zabiera pieniadze
// 2 - Zabija
// 3 - Kickuje gracza
respawn_guard_penalty_type "0"

// Ile hp ma zabierac graczowi w przypadku gdy Penatly = 0 (nie radzę dawac wiecej niz 10)
respawn_guard_hp "20"

// Ile pieniedzy $ ma zabrac graczowi gdy Penatly = 1
respawn_guard_money "2000"

// Czy admini tez maja byc sprawdzani
// 0 - Tak
// 1 - Nie
respawn_guard_admin_immunity "0"

konfiguracja

Plugin posiada możliwość ustawiania własnej strefy spawnu.

Menu kreatora stref mamy pod komendą: /strefy , a także pod klawiszami Z,X,C (radio1,2,3).

Menu jest na flage: ADMIN_RCON czyli flaga "l" (l jak lama)

Menu jest dość proste do ogarnięcia. Po zapisaniu stref stworzy nam sie plik w folderze configs/respawn_zone/nazwaMapy.ini
Możemy poustawiać sobie pare stref, w których gracz ma być karany za przebywanie

 

instalacja

https://amxx.pl/topi...-pluginów-amxx/

 

Jeśli chcesz użyć gotowej strefy spawnu to:

plik .ini wrzucamy do folderu configs/respawn_zone/  (jeśli nie istnieje folder to trzeba stworzyć)

tu jest pokazowa strefa, którą zrobiłem (jesli ktoś chce zrobić lepsze lub dla innych map to proszę wrzucić do tematu a ja dodam tu): 

 

Strefa sięga tak:

Załączony plik  1.png   1,32 MB  26 Ilość pobrań

Załączony plik  2.png   1,36 MB  25 Ilość pobrań

 

Jeśli nie chcesz używać gotowej strefy użyj kreatora wspomnianego wcześniej.

 

 

05.02.2020 - Poprawa bugu z slapowaniem po killu, ogólna poprawki, zmiana cvarów, optymalizacja paru rzeczy, usunięcie pliku .cfg

11.02.2020 - Drobne zmiany i poprawki, cvary odświeżane co runde

Załączone pliki


  • +
  • -
  • 12


#760746 Zrozumieć istotę tablic - wstęp

Napisane przez Robiin w 15.08.2019 21:15

Na wstępnie chciałbym zaznaczyć, że próbując zrozumieć tablice musimy mieć podstawowe (choć w pełni opanowane) informacje co do zwyczajnych zmiennych.

Zakładam również, że wiemy jak wyglądają tablice oraz znamy zasadę liczenia od 0.

 

Po przeczytaniu tego przyjdzie czas na poprawną naukę - to tylko wstęp, do którego można wracać i uzupełniać wiedzę.

 

Czym są tablice?

 

Tablice to nic innego jak zbiór wielu wartości w jednej zmiennej. Pozwalają nam na przechowywanie wielu danych z mniejszą ilością kodu, a co najważniejsze - pozwalają nam na zapis stringów (a właściwie napisów, nie stringów, bo to nie to samo [przynajmniej w tym przypadku]).

 

Żeby w pełni zrozumieć zasadę tablic, trzeba uciec się do zrozumienia tego, jak zbudowany jest język, w którym piszemy.

AMXX (lub też pawn) zmienne przechowuje w czymś, co nazywamy komórką ('cell', z j. ang.), w której przetrzymuje tylko i wyłącznie jedną wartość.

 

 

Pojęcia

 

  • Rozmiar tablicy - jest to maksymalna ilość komórek, jakie udostępni nam dana tablica.
  • Typ danych tablicy - typ danych, jakie przechowuje tablica. Cała tablica musi przechowywać ten sam typ danych. (przykładowo Float - dla liczb zmiennoprzecinkowych, bool - dla wartości logicznych)
  • Indeks gracza - unikalny identyfikator gracza przypisywany do niego przy wejściu na serwer (min. 1 max. 32)
  • Indeks tablicy - identyfikator 'pola', z którego chcemy wyciągnąć dane z tablicy
  • charsmax - funkcja w amxx zwracająca maksymalną ilość wartości, jaką możemy 'włożyć' do tablicy

 

Jak działają tablice?

 

 

Sprawa jest bardzo prosta, choć często wyolbrzymiana do tego stopnia, że niejeden sobie odpuścił i zrobił tak:

 

 

 

Zwykła zmienna będzie miała możliwość przechowania tylko jednej wartości w ten sposób:

Zmienna o nazwie 'var' przechowująca wartość '5'.

new var = 5;

Tablice dają nam możliwość przechowania więcej niż jednej wartości, w ten sposób:

Tablica o nazwie 'arr' przechowująca wartości '5' i '6' na indeksach '0' i '1'.

new arr[2]; // Inicjacja tablicy o rozmiarze 2.

arr[0] = 5; // Przypisywanie wartosci '5' do indeksu '0' tablicy 'arr'.
arr[1] = 6; // Przypisywanie wartosci '6' do indeksu '1' tablicy 'arr'.

Możemy ich używać np. do przechowywania informacji o graczach. W tym celu musimy stworzyć tablicę o wielkości o 1 większej niż ilość graczy (domyślnie 32).

 

 

Stwórzmy trzy tablice, które będą przechowywać:

  • Pieniądze gracza (float)
new Float:userMoney[33];
  • Poziom gracza (int)
new userLevel[33];
  • Informacje czy gracz ma vipa (bool)
new bool:isVip[33];

Dlaczego rozmiar to 33:

  • Maksymalna ilość graczy to 32
  • Liczymy od zera (tak wiec jeśli dalibyśmy 32, gracz z indeksem 32 byłby powodem wyjścia poza wielkość tablicy)

 

Przypuśćmy, że na serwerze mamy obecnych trzech graczy. Oto ich dane dla poszczególnych tablic:

// Gracz o indeksie 1:
userMoney[index] = 7.15;
userLevel[index] = 10;
isVip[index] = false;

// Gracz o indeksie 2:
userMoney[index] = 4.19;
userLevel[index] = 3;
isVip[index] = true;

// Gracz o indeksie 3:
userMoney[index] = 9.18;
userLevel[index] = 9;
isVip[index] = true;

Jak wygląda to od strony tablicy:

userMoney[0] = 0.0;
userMoney[1] = 7.15;
userMoney[2] = 4.19;
userMoney[3] = 9.18;

userLevel[0] = 0;
userLevel[1] = 10;
userLevel[2] = 3;
userLevel[3] = 9;


isVip[0] = false;
isVip[1] = false;
isVip[2] = true;
isVip[3] = true;

Dlaczego wszystkie pola z indeksem '0' są równe zero? Dlatego, że nigdy ich nie ustawiliśmy. Gracze na serwerze mają indeksy 1, 2 oraz 3, tak więc tylko te indeksy tablicy będą zmienione.

 

 

Napisy

 

Sprawa z napisami nie jest skomplikowana. Oczywistym powinno już być, że do przechowania napisu musimy mieć tablicę.

Przykładowym napisem będzie "amxx" - chcemy go zapisać do tablicy.

 

Tworzenie tablicy o wielkości 10, żeby na pewno zmieścić nasz napis:

new text[10];

Dodawanie napisu:

formatex(text, charsmax(text), "amxx");

Gotowe - ale co tak naprawdę się stało; do tablicy 'text' przypisane zostały litery, więc tablica teraz wygląda tak:

text[0] = 'a';
text[1] = 'm';
text[2] = 'x';
text[3] = 'x';

Dostęp do konkretnych wartości

 

Aby dostać się do konkretnych wartości, jakie przechowuje tablica musimy mieć indeks - numer 'pola' w tablicy, z którego chcemy wyciągnąć dane.

W przypadku graczy nie jest to dużym problemem - wystarczy podać indeks gracza, a w rezultacie otrzymamy jego dane (dlatego, że byliśmy mądrzejsi i zrobiliśmy tablicę o rozmiarze 33, a nie 32).

Jeśli chodzi o pozostałe przypadki, tutaj sprawa się komplikuje - choć nieznacznie.

 

Wystarczy nam tylko trzeźwe myślenie i trochę wyobraźni.

Aby wyświetlić napis, musimy do funkcji wyświetlającej podać jako argument tę tablicę, w której przechowywany jest dany napis, na którym nam zależy - w tym przypadku nie musimy podawać indeksu, bo nie chcemy pobierać jednej wartości, ale każdą komórkę. (nie chcemy wyświetlać jednej litery, tylko cały napis)

 

W amxxie nie możemy zwrócić napisu, bo jest to tablica (a zwrócić możemy tylko jedną wartość). Obejściem tego problemu jest przekazywanie tablicy.

 

Sposób zły (zwracający tylko jedną wartość, w przypadku napisu tylko jedną literę):

Spoiler

 

Sposób dobry:

Spoiler

 

Sedno - przykłady

 

 

Przechowywanie danych o statusie vip każego gracza z osobna:

Spoiler

 

Wyświetlanie napisu "Informacja w konsoli serwera" w konsoli serwera:

Spoiler

 

Zwiększanie kasy graczowi, który wpisze komendę (z ograniczeniem do jednego na mapę) [nie zwracać uwagi na sam fakt, że można to obejść reconnectując, to tylko przykład :) ]:

Spoiler

 

 

Formatowanie tekstu "amxx" w funkcji:

Spoiler

 

Poszczególne indeksy (dla zobrazowania tablicy):

Spoiler

Wyobrażenie tablicy kluczem do jej zarządzania

 

Jeśli będziemy w stanie wyobrazić sobie jak wygląda tablica, z łatwością będziemy mogli nią zarządzać.

Tablica o rozmiarze 4, która przechowuje dane 3 graczy:

new userData[4];

userData[0] = 0;
userData[1] = 100;
userData[2] = 25;
userData[3] = 7; 

Żeby dostać się do poszczególnych wartości, wystarczy, że jako indeks pola użyjemy indeksu gracza:

userData[index]; 

Jeśli jesteśmy sami na serwerze, nasz indeks będzie (prawdopodobnie) 1, tak więc operacja pokazana powyżej zwróci 100.

 

 

 

Lektura wyczerpująca, niedokładna i pewnie nudna - dlatego jest to tylko wstęp, a o właściwe korzystanie z tablic należy zadbać samemu. Zadawanie pytań na forum nie jest niczym złym, do tego też zachęcamy.


  • +
  • -
  • 15


#760517 Natywy - zrozumienie API w amxxie

Napisane przez Robiin w 09.08.2019 15:46

Poprzedni tutorial napisany w tym temacie przez R3X był nieco pomieszany i moim zdaniem skupiał sie na niepotrzebnych elementach.
 
Czym są natywy?
 
Kluczowym elementem programowania jest API, którym w AMXXie są natywy.
Natywy to sposób komunikacji pomiędzy dwoma pluginami.
 
Pluginy podzielę na dwa typy:

  • Plugin źródłowy - ten, w którym tworzymy natywy i ich działanie
  • Plugin docelowy - ten, w którym będziemy używać natywów

Dzięki natywom możemy z pluginu źródłowego pobrać dane w pluginie docelowym lub je dowolnie modyfikować.
Przykładem idealnie odwzorowującym zasadę działania natywów jest exp mod.
Plugin exp moda może mieć w sobie zmienne pokroju

  • userExp - zmienna, która przechowuje ilość expa, którą dany gracz posiada
  • userLevel - zmienna, która przechowuje poziom gracza

Co jeśli chcemy wiedzieć jaki poziom ma gracz, lub ile ma expa?
Nie ma najmniejszego problemu w pluginie exp moda - w końcu mamy zmienne userExp i userLevel, ale co jeśli chcemy wiedzieć ile gracz ma expa i potrzebujemy tych danych w innym pluginie?
 
Z odpowiedzią przychodzą natywy - jak już wcześniej wspomniałem, pozwalają nam na komunikacje między pluginami.
 
 
Jak wykorzystać natywy?
 
Mimo, że w tutorialu rexa wydawało się to bardzo skomplikowane, natywy są bardzo proste w swojej zasadzie działania.
 
Prosty przykład, jak pobrać jakąś wartość z innego pluginu:
 
Plugin źródłowy:

#include <amxmodx>

#define AUTHOR "aSior - amxx.pl/user/60210-asiorr/"

new const jakasWartosc = 7;

public plugin_init()
{
	register_plugin("x", "v0.1", AUTHOR);
}

// Natywy musza byc rejestrowane w plugin_natives za pomocą register_native.
public plugin_natives()
{
	// Rejestracja natywu o nazwie "pobierzWartosc", który wykona funkcję "publicNatywuPobierzWartosc".
	register_native("pobierzWartosc", "publicNatywuPobierzWartosc");
}

// Co się wykona, kiedy w innym pluginie zostanie użyte pobierzWartosc.
public publicNatywuPobierzWartosc()
{
	return jakasWartosc;
}

 
Plugin docelowy:

#include <amxmodx>

#define AUTHOR "aSior - amxx.pl/user/60210-asiorr/"

native pobierzWartosc();

public plugin_init()
{
	register_plugin("x", "v0.1", AUTHOR);

	new wartosc = pobierzWartosc();

	log_amx("Wartosc = %i", wartosc); // "Wartosc = 7"
}

 
 
Pliki .inc
 
Pliki z roszerzeniem 'inc' to nic innego jak pliki tekstowe, które zawierają zbiór natywów (i nie tylko).
Jak wygląda plik .inc w pluginie dodającym nową walutę:

#if defined _moneySystem_included
	#endinput
#endif

#define _moneySystem_included

native SetMoney(id, value);
native GetMoney(id);
native AddMoney(id, value);

Po krótce: pliki .inc są używane po to, żeby za każdym razem nie pisać 15 linijek z "native SetMoney(id, value);" i całą resztą natywów.

 

Na co pozwalają natywy

 

Dzięki nim wiemy jaki gracz ma poziom, exp, ile ma AP, JBPacków czy jaką ma klasę. To tylko powierzchowne przykłady, a natywy mogą zostać wykorzystane na tak wiele sposobów, że kiedy je lepiej poznamy, otwierają nam się drzwi na tak wiele opcji zaprogramowania pluginu, że ogranicza nas już tylko wyobraźnia.

 

 

 

Co dalej?

 

Jeśli dopiero nauczyłeś się czym są natywy - idź spróbuj sam. Oczywiście po przeczytaniu tego nie masz prawa zrozumieć wszystkiego ot tak, ale z drugiej strony nikt nie będzie Cię trzymał za rączkę.

Podrzucam parę tematów, z których można wyciągnąć informacje o tym, jak natywy zostały użyte w praktyce:

Cod mod

Jailbreak

Zombie

 

 

Po przeczytaniu różnych kodów nadejdzie czas na zapoznanie się z takimi rzeczami jak:

  • Style natywów
  • Typy danych zwracane przez natywy
  • Formatowanie napisów / działanie na tablicach w natywach

 

Do podglądu zostawiam również stronę dokumentacji: register_native.


  • +
  • -
  • 14


#759719 [ROZWIĄZANE] Dziwne komendy connect_set_nick

Napisane przez K@MILOVVSKY w 27.06.2019 15:32

Posiadasz alias_detector?


  • +
  • -
  • 2


#759463 SZUKAM OSOBY CHĘTNE DO ZAŁOŻENIA SERWERA & SIECI

Napisane przez Robiin w 03.06.2019 09:14

MOŻNA ZROBIĆ TAK ŻE JA KUPIĘ SERWER JAILBREAK A TA OSOBA KUPI SIEĆ

xD
  • +
  • -
  • 7


#758932 MetaMod-R

Napisane przez DarkGL w 30.04.2019 13:17

opis

 

MetaMod-R to zoptymalizowana wersja metamod wraz z zmianami z metamod-p działająca tylko na ReHLDS.

 

Projekt zawiera duza ilość optymalizacji i wyczyszczonego kodu. Głowna cześć została napisana przy pomocy kompilatora JIT.

 

MetaMod-R jest niekompatybilny z HLDS działa tylko na ReHLDS ( API 3.1+ ).

 

inne informacje

 

Lista supportowanych gier : https://github.com/t...Supported-games

 

Jak samemu skompilować kod: https://github.com/t...lling-metamod-r

 

download

 

Link do projektu https://github.com/t...modai/metamod-r

 

Wersja 1.3.0.128 do pobrania w załączniku

 

 

Załączone pliki


  • +
  • -
  • 10


#759177 Voice Manager

Napisane przez Robiin w 14.05.2019 19:49


Jeśli masz bardziej niezawodny mechanizm oznaczania graczy jako zmutowanych, możesz się pochwalić.

 

Wszyscy skrypterzy amxxa chętnie zobaczą sposób na indentyfikowanie gracza bez ryzyka nakładania się danych lub ich zmiany. Ci od revemu też, Ci z setti też  :lol:


  • +
  • -
  • 2


#758993 Voice Manager

Napisane przez O'Zone w 02.05.2019 13:10

opis

Plugin typu all-in-one do zarządzania głosem graczy.

 

Posiada zunifikowane funkcjonalności:

  1. Voices Management.
  2. Mute Menu.
  3. Admin gag.
  4. Info po śmierci.

cvary

// Baza danych
vm_sql_host "127.0.0.1" // Host bazy danych
vm_sql_user "user" // Uzytkownik bazy danych
vm_sql_pass "password" // Haslo uzytkownika bazy danych
vm_sql_db "database" // Nazwa bazy danych

// Ustawienia
vm_alive "0" // 0: Żywi członkowie drużyny j 1: Żywi gracze j 2: Wszyscy członkowie drużyny j 3: Wszyscy gracze (Domyślnie: 0)
vm_dead "1" // 0: Martwi członkowie drużyny j 1: Martwi gracze j 2: Wszyscy członkowie drużyny j 3: Wszyscy gracze (Domyślnie: 1)
vm_info_time "5" // Czas w sekundach na przekazanie informacji do swojej drużyny - 0 aby wyłączyć (Domyślnie: 5)
vm_admin_mute_menu "1" // Menu admina dla blokowania głosu/czatu globalnie dla graczy - 0 aby wyłączyć (Domyślnie: 1)
vm_player_mute_menu "1" // Menu gracza do samodzielnego blokowania głosu innych graczy - 0 aby wyłączyć (Domyślnie: 1)
vm_admin_voice "1" // Komenda admina do mówienia do wszystkich graczy pomimo ustawień dead / alive - 0 aby wyłączyć (Domyślnie: 1)
vm_admin_voice_override "1" // Nadpisz ustawienia graczy tak, aby nawet gracze z nieaktywnym dźwiękiem słyszeli admina - 0 aby wyłączyć (Domyślnie: 1)
vm_admin_intervoice "1" // Prywatny czat adminów - 0 aby wyłączyć (Domyślnie: 1)
vm_admin_listen "1" // Komenda admina do podsłuchiwania wszystkich graczy pomimo ustawień dead / alive - 0 aby wyłączyć (Domyślnie: 1)

komendy

/mute, /mutuj, /ucisz, /unmute, /odmutuj - menu gracza do mutowania / odmutowania innych graczy

amx_mute, amx_unmute, amx_mute_menu, amx_unmute_menu, amx_gag, amx_ungag - menu admina do mutowania / odmutowania graczy

/vm, /voice, /glos - wyświetla aktualne ustawienia głosu

+adminvoice - komenda głosu admina

+adminintervoice - komenda czatu adminów

+adminlisten - komenda admina do podsłuchiwania graczy

 

download

Mirror dostępny w AMXXLegacy.

Załączone pliki


  • +
  • -
  • 13


#757647 Specjal serwer - jak sobie radzicie z pozyskaniem pieniędzy na ten cel?

Napisane przez Robiin w 09.03.2019 01:47

My maniacy informatyki nie rozmawiamy z ludźmi, to właśnie esencja bycia informatykiem/programistą.


  • +
  • -
  • 6


#757637 Specjal serwer - jak sobie radzicie z pozyskaniem pieniędzy na ten cel?

Napisane przez Sinner w 08.03.2019 13:30

Kredyt to kupienie sobie czegoś za nie swoje pieniądze (: . Dopóki nie spłacisz kredytu ta rzecz wcale nie jest twoja . Polecam po prostu iść do pracy a jak kogoś nie stać na prowadzenie serwera lub własnej sieci serwerów po prostu sobie odpuścić.


  • +
  • -
  • 6


#757242 Proxy/VPN Check

Napisane przez DarkGL w 24.02.2019 02:35

opis
Plugin wykrywa graczy używających VPN / Proxy i kickuje ich serwera , mogą być to np. boty reklamujące inne serwery.

Link do oryginalnego repozytorium https://github.com/j...ice/proxy_check autor juicejuicejuice
 
instalacja
Plugin do działania wymaga pluginu HTTP:X
 
W plugins ini httpx umieszczamy przed proxy_check np.
 
httpx.amxx
proxy_check.amxx
 
download

Załączone pliki


  • +
  • -
  • 12


#756956 [+18] Sexy bomba

Napisane przez White w 18.02.2019 19:50

opis
Zamiast standardowej bomby mamy dziewczynę, która przy rozbrajaniu zaczyna tańczyć na rurze.

screenshot
Załączony plik  52326624_2426298984087766_8766452864487784448_o.jpg   100,56 KB  26 Ilość pobrań


download

Załączone pliki


  • +
  • -
  • 17