edit. dodalem temat z nowym vtc, trzeba czekać aż moderator zaakceptuje
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.
|
Ossal
Rejestracja: 20.11.2012Aktualnie: Nieaktywny
Poza forum Ostatnio: 01.08.2017 01:56





Statystyki
- Grupa: Użytkownik
- Całość postów: 273
- Odwiedzin: 6 218
- Tytuł: Wszechwidzący
- Wiek: 30 lat
- Urodziny: Luty 6, 1995
-
Płeć
Mężczyzna
-
Lokalizacja
Warszawa
Narzędzia użytkownika
Ostatnio byli
#740592 VTC (VoiceTransCoder) nie działa
Napisane przez vanillah
w 28.06.2017 15:38
#740590 VTC (VoiceTransCoder) nie działa
Napisane przez _McHappy
w 28.06.2017 14:47
#740593 VoiceTranscoder 2017 (aktualizacja Steam 22 czerwca)
Napisane przez vanillah
w 28.06.2017 15:47
Zmiany:
Autor (?): PRoSToTeM@
Kompatybilność (AMX MOD X):
- Amx Mod X 1.8.2
- (Re) Amx Mod X 1.8.3-dev
Kompatybilność (Silnik HLDS):
- HLDS (>= 4382)
- ReHLDS (>= 3.0)
Aktualizacja zawiera:
- Podstawowe wsparcie dla nowego kodeka głosu "Opus" (wydany w niedawnej aktualizacji od Valve)
- Naprawione (prawdopodobne) problemy z czasem na Linux'ie
- Naprawione niewłaściwe próbkowanie i zanikanie dźwięków odtwarzanych poprzez interfejs API
Instrukcja dla laików:
Zawartość wrzucamy do cstrike
Potem wystarczy dodać do cstrike/addons/metamod/plugins.ini
tą linijkę
linux addons/VoiceTranscoder/VoiceTranscoder.so
jeżeli mamy vtc/vtc.so to należy to usunąć
następnie resetujemy serwer i powinno działać
Załączone pliki
-
VoiceTranscoder_2017RC3.zip 1,28 MB 1111 Ilość pobrań
#736631 Register System - inna wersja rejestracji nicku
Napisane przez gtteamamxx
w 19.02.2017 09:11
Sory , że odkopuje temat , ale nie jest zablokowany . Nie komplikuje mi się Twoj .sma .
Autor tematu nieźle poleciał....
Przetłumaczył nawet zapytania SQL
formatex(query, charsmax(query), "STWORZ TABELE JESLI NIE MA registersystem (Name VARCHAR(35), Password VARCHAR(34), Status VARCHAR(10)) ; sTWORZ TABELE, JESLI NIE MA rs_commands (Command VARCHAR(64)) ; STWORZ TABELE, JESLI NIE MA rs_names (Names VARCHAR(64))") SQL_ThreadQuery(g_sqltuple, "QueryCreateTable", query) }
#716814 pev_effects enta nie widoczne dla wybranych entow?
Napisane przez d0naciak
w 25.12.2015 22:41
Tak, jest to możliwe. Popatrz sobie na ten perk, który umożliwia widzenie niewidzialnych tylko przez graczy którzy ten go posiadają:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <fakemeta> #include <codmod> new const perk_name[] = "Sokole Oko"; new const perk_desc[] = "Widzisz niewidzialnych"; new bool:ma_perk[33]; public plugin_init() { register_plugin(perk_name, "1.0", "Zazdrosny"); cod_register_perk(perk_name, perk_desc); register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1) } public cod_perk_enabled(id) ma_perk[id] = true; public cod_perk_disabled(id) ma_perk[id] = false; public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet) { if(!is_user_connected(host) || !is_user_connected(ent)) return; if(!ma_perk[host]) return; set_es(es_handle, ES_RenderAmt, 255.0); }
#85721 Deagles' Map Management 3.24 - NOWA WERSJA! [29-01-2012]
Napisane przez Szyfrant
w 04.10.2009 19:40
Opis
Aktualnie najlepszy menager zarządzania opcjami Votowania MAP.
Changelog w języku angielsku
v3.24 - 2012-01-28 by DynamicBits
- Added check for enabled conflicting plugins
("Nextmap Chooser", "NextMap", "Galileo", and "Crab's Map Manager")
- Added check for incorrect/missing dictionary file
- Added response to "say ff"
- Added "listmaps" command override
- Added "votemap" command override
- Added "currentmap" command
- Added "recentmaps" command
- Relaxed dmap_rtvwait restrictions
- The following commands can no longer (incorrectly) be called from config files:
dmap_rtvpercent, dmap_rtvplayers, dmap_rtvwait, dmap_messages, dmap_mapsnum,
dmap_nominations, dmap_maxcustom, dmap_quietmode, dmap_rtvtoggle, dmap_freeze,
dmap_cyclemode, dmap_votemode, dmap_banlastmaps, dmap_mapsurl
- Removed "now" argument from dmap_rockthevote/amx_rockthevote/amx_rtv. (It never worked)
- Total number of maps is now shown in console for "listmaps" command
- Fixed display of time after successful vote to extend map
- Fixed duplicate task IDs
- Standardized name: "Deagles' Map Manager"
- Minor code optimizations
- Removed unused code
- Updated help
- Corrected various minor issues with all languages
- Put quotes around all commands for all languages
- Added Bosnian translation (Thanks to Superstar Games)
- Added Croation translation (Thanks to tomba2k)
- Added Czech translation (Thanks to RTG)
- Added Hungarian translation (Thanks to kiki33hun)
- Added Serbian translation (Thanks to JinX)
v3.23 - 2009-02-17 by DynamicBits
- Fixed menu vote not working in some situations
- Corrected Swedish Translation
v3.22 - 2009-01-21 by DynamicBits
- Added live voting percentages
- Added dmap_nominate command
- Added Romanian translation (Thanks to dorin2oo7 and georgik57)
- Added Russian translation (Thanks to mozart123)
- Added Brazil-Portuguese translation (Thanks to Warden)
- Added Swedish translation (Thanks to Trut)
- Fixed a handful of strings not getting localized properly
- Fixed a translation that was causing the SVC_BAD error
- Fixed several buffer overflow issues
- Many optimizations
- Updated help
- Added a bunch of comments to source code
v3.21 - 2008-09-17 by DynamicBits
- Added support for extra tags in the vote menu (See details for dmaptags.ini)
- Added two new localized strings (Only English and Polish versions are in the lang file so far)
- Fixed some multilingual code
- Fixed several mistakes in the lang file
- Formatted a few strings to better match AMX Mod X's formatting
- A few small code optimizations
v3.20 - 2008-08-15 by DynamicBits
- Fixed indentation, spacing, semicolons, argument spacing, and missing
curly braces (these things: { }) to mostly match BSD KNF style.
- Fixed return value in client_disconnect(). This may have affected any
other plugin that relied on client_disconnect().
- Added some missing return values
- Removed several sections of redundant code
- New define: DEDICATED_LOG_ENABLED allows logging to be disabled by
commenting out one line (see source).
v3.1 - 4-05-08
- Fixed issue with emptyserver portion giving errors and flooding console
v3.0 - 9-29-07
- Changed txt file for German to supposedly stop the Kicking issue that so many people are having.
- Added cvar weapon_delay to Enable/Disable "Voting for nextmap delayed to allow buying of weapons..."
v2.48 - 9-27-07
- Added command rtv in chat for quick rock the votes (client)
- Added cvar emptymap_allowed (1|0) To enable/disable this feature
- Added cvar emptymap (mapname) For whatever map you want your server to switch to when nobody is on after reading the staytime cvar
- Added cvar amx_staytime(in seconds): How long before the plugin changes the map.
- Added cvar amx_idletime(in hours): How many hours a player can be connected to the server before being considered idle.
- Added cvar nominations_allowed (Enable/Disable Accepting nominations)
-Made the code look much prettier with proper indentation.
-Removed cvar rtv_percent - Useless, when the command saves your settings
v2.47 - Changed a some code for issues occuring randomly
v2.46 - Now uses the file defined from cvar named 'mapcyclefile' and not the hardcoded mapcycle.txt, by _KaszpiR_
v2.45 - Multilingual & Cancel vote
- Multilingual by Vlad
- Cancel Vote command by Lt. Llama
v2.40 - JTP10181 - 3/12/2006
- Major code cleanup
- Added allmaps.txt generating back in and fixed it for linux
- Added support for no nominations allowed
- Fixed all admin commands to check using cmd_access
Konfiguracja
Cvary
- dmap_strict 0/1 - (Domyślnie 0) Jeżeli ustawimy na 1 jedynie mapy z mapcycle mogą być nominowane.
- enforce_timelimit 0/1 - (Domyślnie 0) zmiana mapy tylko i wyłącznie po upływie czasu
- timelimit czyli czasu mapy, kiedy jest ustawione na 1.
- emptymap_allowed 0/1 - (Domyślnie 0) Aby włączyć / wyłączyć tę funkcję
- amx_emptymap 0/1 - (Domyślnie "" albo 0 ) Chcesz aby serwer zmieniał na jakąkolwiek mape
- amx_staytime <sec> - (Domyślnie 0) po ilu sekundach można nominować następną mape
- amx_idletime <godz> - (Domyślnie 0) Ile godzin gracz nie możę zostać połączony z serwerm
- nominations_allowed 1/0 - umożliwia godzenie się z nominacjami
- weapon_delay - Na mapach fy_ itp umożliwia czekanie zanim wezmiesz broń
- ----dmaptags.ini---------(Opcjonalny)
Pozwala dodać TAG do danej mapy
;Przykładowe otagowanie
fy_iceworld2k GunGame
de_westwood WC3FT
fun_matrix_revolutions Brak pluginów
de_dust WC3FT
cs_assault_necro Ta mapa jest za***ista
Te tagi będą wyświetlanie przy głosowaniu na następną mapę
Przykładowy wygląd głosowania :
1. fy_iceworld2k (Custom) [GunGame]
2. de_westwood (Custom) [WC3FT]
3. fun_matrix_revolutions (Custom) [Brak pluginów]
4. de_dust [WC3FT]
5. cs_assault_necro (Custom) [Ta mapa jest za***ista]
Multilang
- BP: Warden, reidark
- BS: Superstar Games
- CZ: RTG
- DE: D o o m, [pc]Raba, Mordekay
- ES: Spider-Cerdo, mademan, niqo
- FR: vlad, die-demoneye, teol
- HU: kiki33hun
- HR: tomba2k
- NL: Lorre69, Atmegaown
- PL: Sylwester, MmikiM
- RO: dorin2oo7, georgik57,
- RU: mozart123, lexikon
- SR: JinX
- SV: Trut, modernwarfare
Attached Files


Wyświetl pełny artykuł (Ang)
#714368 Jaki jest maksymalny bitrate pliku .wav w cs?
Napisane przez Linux'
w 09.11.2015 15:13
#714288 Przy dużym velocity ent nie zachowuje nadanego mu kierunku
Napisane przez Droso
w 07.11.2015 03:00
#620547 Canvas
Napisane przez R3X
w 26.02.2014 21:56
Canvas
w ramach eksperymentu i `for the lolz` pracuję nad własnym rendererem wewnątrz serwera hlds. Canvas, czyli płótno. O co chodzi?
Plugin oddaje do dyspozycji API, dzięki któremu stworzymy płótno o dowolnych (niestety ograniczonych) rozmiarach. Na tym płótnie możemy rysować ustawiając odpowiednio kolor każdego z pikseli. Rysowaniem zajmuje się Program, rejestrując go podajemy nazwę publicznej funkcji, która będzie wołana co ramkę serwera i w ten sposób możemy aktualizować stan płótna.
Aktualnie płótna można dodawać i konfigurować jedyne z menu dostępnego pod komendą
amx_canvas
Można tam dodawać płótna, zmieniać wymiary, rozmiar i program.
Interakcja
Samo rysowanie to mało. Oczywiście, że chciałoby się mieć wpływ na to co jest rysowane będąc graczem. Podstawowa interakcja to pozostawanie w zasięgu. Główny plugin pozwala zarejestrować callbacki wołane gdy gracz wchodzi i wychodzi z zasięgu płótna. Pozwala to np. zmienić wyświetlany kolor, gdy ktoś patrzy.
Bardziej zaawansowany jest interfejs związany z klawiaturą. Jeśli zdecydujemy się zablokować kamerę gracza na płótnie, wysyłane będą forwardy (również dostępne jako rejestrowalne callbacki) gdy gracz naciska, puszcza lub przytrzymuje klawisz. Na razie nie ma żadnych blokad. Sterując mini-grą gracz będzie biegał i strzelał. Wkrótce się to zmieni
W planach jest także interfejs dotykowy, tzn gdyby jeden piksel był większy niż gracz to możliwe będzie precyzyjne określenie na którym z pikseli gracz stoi. Z tym wiąże się mnóstwo pomysłów do zrealizowania.
Innym typem interakcji może być strzał w piksel. Umożliwiłoby to np. grę w kółko i krzyżyk, gdzie gracze na przemian strzelają w pole gdzie chcą postawić swój znak.
Inicjalizacja
Głównie z powodów technicznych narodziła się idea inicjalizacji. Narysowanie dwustu pikseli na raz zawiesiło mi serwer na dobre kilka sekund, a chwilę potem dostawałem channel overflow. Jako obejście wybrałem liniowe rysowanie pikseli w pierwszych chwilach życia płótna. Podstawowy initializer rysuje po 4 piksele na ramkę, od pierwszego do ostatniego. Potem będzie więcej opcji.
Ograniczenia
Silnik hl pozwala klientowi rysować ~256 bytów. Każdy piksel płótna jest bytem, więc teoretycznie możemy osiągnąć kwadrat 16x16. Jednak kto pierwszy ten lepszy, więc od tej puli należy odjąć wszystko co jest narysowane na mapie + miejsce na nowe obiekty jak wypadające po śmierci bronie czy rzucone granaty. Będąc sam na serwerze bez zamiaru strzelania się z kimś używałem płótna 28x8. Gdyby ktoś chciał umieści płótno na żywym serwerze wątpię czy udałoby się to zrobić dla rozmiarów większych niż w sumie 100-150 (np. 15x10 ).
Demo
Podczas prac robiłem krótkie filmiki z postępów. Oto lista: http://www.youtube.c...hKwIexxiDB238rI
Źródło
https://github.com/e...iks/amxx-canvas
Na razie nie ma sensu robić paczki. Wersja jest dość wczesna. Da się już coś zrobić, ale raczej również jako ekperyment.
#706973 [ROZWIĄZANE] Jak sprawdzić czy dany origin jest w ścianie?
Napisane przez Rivit
w 20.07.2015 08:05
#57715 Praca na plikach
Napisane przez Miczu
w 17.04.2009 12:29
log_to_file( const file[], const message[], [ ... ] )
Funkcja sklada sie z 2 czesci:
- Nazwa pliku (opcjonalnie sciezka) - przy nie podaniu sciezki zostanie stworzony(zapisany do) plik o podanej nazwie w folderze amxmodx/logs
Jesli chcemy by kazdy dzien mial osobny plik oraz by mozna bylo latwo je rozroznic musimy odpowiednio sformatowac nazwe pliku:
new file[32],Time[7] get_time("%d%m%y",Time,8) format(file,31,"TEST_%s.log",Time) log_to_file(file,"Test log")W efekcie zostanie kazdego dnia tworzony plik lub zapis do istniejacego pliku o podajen nazwie. W tym przypadku powstal by plik TEST_170409.log
Specyfikacjie funkcji get_time KLIK!
- Druga czesc sklada sie z informacji ktora chcemy wpisac do pliku.
Na poczatku kazdego nowego wpisu beda informacje typu data - godzina (nie musimy sami formatowac tej czesci):
L 04/17/2009 - 12:38:11:
Tekst ktory bedziemy wprowadzac do pliku mozna formatowac tak jak w funkcji Format np:
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /log","test") } public test(id) { new name[32],ip[32],sid[64] get_user_name(id,name,31) get_user_ip(id,ip,31,1) get_user_authid(id,sid,63) log_to_file("file.txt","Gracz %s %s %s - napisal /log",name,ip,sid) }
Teraz podam 3 czesto niezbedne funkcje do pracy na plikach, ale nie wystarczajace by cokolwiek wpisac/pobrac z pliku:
get_basedir( name[], len ) - sciezka do folderu .../amxmodx/
get_configsdir( name[], len ) -sciezka do folderu .../amxmodx/config/
get_datadir( name[], len ) - sciezka do folderu .../amxmodx/data/
Pierwszy parametr to nazwa tablicy, a drugu to ilosc elementow ktore mozna uzyc (o 1 mniej niz liczba przy deklarowaniu tablicy). dzięki tym funkcja jestesmy w stanie zawsze zapisac plik w tym samym miejscu na serwerze niezaleznie na jakim jest on robiony.
Kolejne przydatne funkcje:
file_exists ( const file[] ) - sprawdza czy istnieje plik o podanej nazwie i sciezce
dir_exists ( const dir[] ) - sprawdza czy podana sciezka istnieje. Jesli np. nie ma folderu w ktorym chcemy zapisac dane wystarczy go stworzyc:
mkdir ( const dirname[] ) - tworzy folder o podanej nazwie i sciezce
file_size ( const file[], [ flag ] ) - sprawdza rozmiar pliku:
- gdy flaga to liczba 0 to funkcja zwraca liczbe Bitow pliku
- gdy flaga to liczba 1 to funkcja zwraca liczbe lini w pliku
Teraz najpodstawowsze 2, moim zdaniem najbardzej przydatne funkcie do pracu na plikach:
- pierwszy parametr to nazwa pluku i sciezka do niego (trzeba go sformatowac za pomoca w/w funkcji)read_file ( const file[], line, text[], len, &txtLen ) - funkcja do czytania danych z pliku
- drugi parametr to nr. lini ktora chcemy czytac - pierwsza linia w pliku jest linia o numerze 0. Sama funkcja zwraca kolejna dostepna linie jesli jest dostepna lub 0 gdy czytana linia jest ostatnia linia w pliku
- trzeci parametr to tablica w ktorej beda przechowywane dane z podanej wczesniej lini pliku
- czwarty parametr to maksymalna ilosc danych ktore mozemy przechowywac w tablicy (1 mniej niz liczba podana przy deklaracji)
- ostatni, piaty parametr zwraca ilosc znakow ktore zostaly pobrane do tablicy (jesli naprzyklad tablica ma rozmiar 512 a pobralismy tylko 17 znakow, to w tej zmiennej bedzie przechowywana informacia ile znakow tablicy jest dla nas wazne).
Przyklad petli ktora bedzie czytac kazda linie pliku a nastepnie wykonywac "TWOJ KOD"
new line=0, file, text[128],chars do{ line = read_file(file,line,text,127,chars) /* TWOJ KOD */ } while(line!=0)Petla do while bedzie wykonywana do momentu gdy funkcja read_file zwroci liczbe 0 czyli dojdzie do konca pliku. Jesli szukamy konkretnej informacji w pliku, ktora sie znajduje w tylko 1 linki kodu, to po jej znalezieniu mozemy przerwac funkcjie za pomoca "break" dzięki temu mozemy za petla zapisac informacjie w ktorej lini znajduje sie np. dana mapa. Zapisana linia moze byc pozniej przydatna do aktualizacji danych.
- Pierwszy parametr to nazwa pliku i sciezka do niego (trzeba go odpowiednio sformatowac).write_file ( const file[], const text[], [ line ] ) - funkcja zapisuje informacje do podanego pliku lub go tworzy
- Drugi paramert to tablica znakowa ktora przechowuje dane ktore chcemy zapisac do pliku. Jesli nic nie wpiszemy to linia bedzie pusta - funkcja write_file nie dodaje wlasnego tekstu do zapisywanego pliku
- Trzeci parametr to nr. lini w ktorej ma byc zapisana informacja linie sie zaczynaja od nr.0 - podajac konkretna linie, informacje ktore sa w niej przechowywane zostana usuniete i w danej lini zostana wprowadzone nasze nowe dane. Jesli paramet line bedzie rowny -1 to tekst bedzie zapisany na koncu pliku, bez nadpisywnia zadnych danych.
Uwagi:
- moga wystapic problemu w pracy na plikach na serwerach na ktorych chmod nie pozwala amxx'owi na zapis/czytanie/tworzenie plikow
- moga wystapic problemy przy formatowaniu sciezki na rozych systemach operacyjnych ( linux i windows rozdzielaja foldery za pomoca / oraz - mozna sprawdzic typ serwera za pomoca funkcji is_linux_server())
- tutorial zostal napisany na bazie "AMX Mod X Function Reference" oraz mojego doswiadczenia w tej dziedzinie. Podany kod nie moze stanowic samodzielnego pluga, trzeba go dostosowac do wlasnych potrzeb.
- Jesli sa pytania/uwagi proszę pisac w tym temacie
- Napisane dla http://www.amxx.pl nie kopiowac bez mojej zgody (czyt. autora).
- Jesli jakis mod mysli, ze tut jest nie czytelnie napisany lub sa bledy natury nie merytorycznej, tp jest proszony o poprawienie a nie pisanie zbednego posta ;-)
#674401 Tworzenie i modyfikacja entity
Napisane przez grankee
w 09.12.2014 15:20
entity_set_byte(index,klucz,wartość) entity_set_edict(index,klucz,wartość) entity_set_float(index,klucz,Float:wartość) entity_set_int(index,klucz,wartość) entity_set_string(index,klucz,const wartość[])//tablica string entity_set_vector(index,klucz,wartość)
entity_set_model(index,const sciezka_do_modelu[]) entity_set_origin(index,const Float:fNewOrigin[3]) entity_set_size(index,const Float:mins[3],const Float:maxs[3])
entity_get_byte(index,klucz)//zwraca returnem wartość typu int entity_get_edict(index,klucz)//zwraca returnem wartość typu int entity_get_float(index,klucz)//zwraca returnem wartość typu float entity_get_int(index,klucz)//zwraca returnem wartość typu int entity_get_string(index,klucz,tablica_znakow[],dlugosc_tablicy_znakow)//zwrot przez referencję do tablicy znaków podanej jako argument entity_get_vector(index,klucz,tablica_float[3])//zwrot przez referencję do tablicy trójelementowej typu float
enum { EV_INT_gamestate = 0,//stan gry-czy byt bierze udział w grze? EV_INT_oldbuttons,//suma bitowa przycików naciskanych podczas trwania klatki, która właśnie minęła. //Można w ten sposób np. sprawdzić oldbutton oraz button żeby dowiedzieć się //czy klatkę temu gracz nie trzymał tego przycisku a teraz trzyma wciśnięty, //to znaczy, że właśnie go nacisnął, a nie trzyma go już jakiś czas. EV_INT_groupinfo, EV_INT_iuser1, EV_INT_iuser2, EV_INT_iuser3, EV_INT_iuser4, EV_INT_weaponanim,//numer animacji broni, np przeładowanie, wyciąganie, przykręcanie/odkręcanie tłumika itp. EV_INT_pushmsec, EV_INT_bInDuck,//określa czy gracz jest w trakcie kucania. Ma wartość 1 od momentu gdy zaczniesz kucać // i zmienia się nazad na 0 po uzyskaniu pozycji wyjściowej kucającej EV_INT_flTimeStepSound, EV_INT_flSwimTime,//odlicza w kółko od 1000 do 0 z prędkością ok. 1000/s jeśli trzymamy przycisk skoku w wodzie EV_INT_flDuckTime,odlicza raz od ok. 1000 do 0 podczas wykonywania kucania EV_INT_iStepLeft,//zmienia się podczas biegania, określa czy w danym momencie wykonujemy krok lewą nogą czy nie. //Pomocne np. w określeniu dźwięku tupania, każda noga ma nieco inny odgłos. EV_INT_movetype,//rodzaj poruszania się bytu//objaśnienie w dalszej części o tworzeniu bytu EV_INT_solid,//Dotykalność bytu//objaśnienie w dalszej części o tworzeniu bytu EV_INT_skin, EV_INT_body, EV_INT_effects, EV_INT_light_level,//poziom jasności światła mapy w jakim byt się znajduje EV_INT_sequence,//sekwencja modelu, np gracz trzyma ak, strzela z ak, trzyma nóż, macha nożem, dla każdego to inna wartość EV_INT_gaitsequence,//sekwencja ruchu modelu, skok, kucnięcie itp EV_INT_modelindex, EV_INT_playerclass, EV_INT_waterlevel,//poziom wody na jakim gracz się znajduje-0 nie jest w wodzie,1-wyskakuje z wody,2-pływa po wierzchu,3-jest pod wodą EV_INT_watertype, EV_INT_spawnflags, EV_INT_flags, EV_INT_colormap, EV_INT_team,//ustala czy byt dotyczy jakiegoś teamu, np func_buyzone ma tu numer teamu dla którego działa, tj który team może kupować będąc na jego terenie. EV_INT_fixangle, EV_INT_weapons, EV_INT_rendermode, EV_INT_renderfx, EV_INT_button,//suma bitowa naciskanych przycisków w momencie trwania obecnej klatki EV_INT_impulse, EV_INT_deadflag,//stan śmierci, 0-żywy, 1-przechodzi upada i przechodzi w zwłoki,2-już jest wolnym oglądaczem. };
enum { EV_BYTE_controller1 = 0,//niektóre modele (podobno np. barney z hl) posiadają coś takiego jak kontroler ruchu głowy, ust itp. Myślę, że to właśnie do tego służy. EV_BYTE_controller2, EV_BYTE_controller3, EV_BYTE_controller4, EV_BYTE_blending1,//chyba też coś związane z modelem EV_BYTE_blending2, };
enum { EV_ENT_chain = 0, EV_ENT_dmg_inflictor, EV_ENT_enemy, EV_ENT_aiment, EV_ENT_owner,//posiadacz bytu, np. posiadaczem bytu broni jest gracz, który ją ma EV_ENT_groundentity, EV_ENT_pContainingEntity,//numer bytu EV_ENT_euser1, EV_ENT_euser2, EV_ENT_euser3, EV_ENT_euser4, };
enum { EV_SZ_classname = 0,//nazwa klasy bytu EV_SZ_globalname, EV_SZ_model,//ścieżka do modelu bytu (czasem *numer np. *34 jeśli model nie jest osobny lecz wkompilowany w mapę) EV_SZ_target,//np. dla przycisku to cel, np włącznik ma target "slight" a światło ma targetname "slight", nie wiem jak to dalej działa, ale tak wygląda. //Inny przykład Button ma target CAMERA1, a ta kamera ma targetname CAMERA1 i po naciśnięciu przełącza gracza w widok z kamery EV_SZ_targetname,//nazwa jako celu, to o czym pisałem wyżej, obiekt będący celem musi mieć tutaj nazwę taką jak przełączkin uruchamiający go ma w 'target' EV_SZ_netname,//imię w sieci? w przypadku gracza jest to jego nick EV_SZ_message, EV_SZ_noise,//dźwięk jaki może wydawać byt w określonych okolicznościach, np drzwi mają dźwięk skrzypienia EV_SZ_noise1,//jw EV_SZ_noise2,//jw EV_SZ_noise3,//jw EV_SZ_viewmodel,//ścieżka do modelu jaki gracz widzi (kawałek rąk+broń) EV_SZ_weaponmodel,//ścieżka do modelu broni jaki inni widzą u gracza w rękach };
EV_FL_impacttime = 0, EV_FL_starttime, EV_FL_idealpitch, EV_FL_pitch_speed, EV_FL_ideal_yaw, EV_FL_yaw_speed, EV_FL_ltime,//nie wiem jak to nazwać, ale np. na de_prodigy są drzwi, zmienna ta zlicza łączny czas kiedy drzwi są otwarte EV_FL_nextthink,//czas następnego thinka bytu, czas wyrażony nie "za ile" lecz "kiedy", podajemy tutaj gametime() w którym ma think nastąpić //czyli jak chcemy za sekundę to ustawiamy get_gametime()+1.0. Przykładowo granat po wyrzuceniu-powstaje byt, jego think jest za 4 sekundy, think następuje i granat wybucha. EV_FL_gravity,//współczynnik grawitacji, tak zakładam. 1.0->normalna grawitacja, poniżej mniejsza,a powyżej większa EV_FL_friction,//współczynnik tarcia bytu o byt, które to tarcie doprowadza do zatrzymywania się. j/w EV_FL_frame, EV_FL_animtime,//aktualnie odtwarzana klatka animacji modelu EV_FL_framerate,//współczynnik klatek na sekundę, 1.0 normalna ilość klatek, mniej-mniejsza, więcej-większa EV_FL_health,//aktualna ilość punktów zdrowia bytu EV_FL_frags,//aktualna ilość fragów EV_FL_takedamage,//nie wiem dokładnie, ale gracz ma 2.0, a na przykład kratka do stłuczenia 1.0 EV_FL_max_health,//maxymalne życie bytu, prawdopodobnie tyle punktów dostaje na spawnie EV_FL_teleport_time, EV_FL_armortype, EV_FL_armorvalue,//ilość puntów pancerza EV_FL_dmg_take, EV_FL_dmg_save, EV_FL_dmg, EV_FL_dmgtime, EV_FL_speed, EV_FL_air_finished,//wartość gametime w który byt przestał być w powietrzu, ale nie chodzi tu o lot, a np. o moment w który wskoczył do wody. EV_FL_pain_finished,//przychodzi mi do głowy spray na de_rats, moment w którym przestał obrywać sprayem np., ale do sprawdzenia EV_FL_radsuit_finished, EV_FL_scale, EV_FL_renderamt, EV_FL_maxspeed,//maxymalna prędkość bytu EV_FL_fov, EV_FL_flFallVelocity,//prędkość spadania bytu, jeśli wartość ujemna to byt porusza się w górę EV_FL_fuser1, EV_FL_fuser2, EV_FL_fuser3, EV_FL_fuser4, };
enum { EV_VEC_origin = 0,//współrzędne bytu na mapie. EV_VEC_oldorigin, EV_VEC_velocity,//Prędkość poruszania się w poszczególnych kierunkach. Pamiętamy, że tu wartością jest tablica Float:tablica[3] tak więc //tablica[0] to prędkość w osi x, tablica[1] to prędkość w osi y, a tablica[2] to prędkość w osi z //jeżeli poruszamy się w kierunku ujemnych współrzędnych to prędkość także będzie ujemna EV_VEC_basevelocity, EV_VEC_clbasevelocity, EV_VEC_movedir, EV_VEC_angles,//kąt ustawienia modelu, w przypadku gracza kąt[0] to wartość od -29.6 (gdy patrzy w dół) do 29.6 (gdy parzy w górę), //kąt[1] to kąt pod jakim jest obrócony byt, obracając się w kierunku współrzędnych ujemnych wartość jest od 0 do -179.9, w kierunku dodatnich od 0 do 179.9 EV_VEC_avelocity, EV_VEC_punchangle,//kąty recoila, podczas strzału wzrastają i to właśnie tam leci pocisk. EV_VEC_v_angle,//kąt patrzenia gracza, kat[0] -88.9 całkowicie patrzy w górę, 88.9 całkowicie w dół, //kąt[1] to kierunek patrzenia, w kierunku ujemnych współrzędnych ujmeny, w kier. dodatnich dodatni EV_VEC_endpos, EV_VEC_startpos, EV_VEC_absmin,//położenie na mapie rogu bytu najbardziej wysuniętego w kierunku współrzędnych ujemnych EV_VEC_absmax,//położenie na mapie rogu bytu najbardziej wysuniętego w kierunku współrzędnych dodatkich EV_VEC_mins,//odległość rogu najbardziej wysuniętego w kierunku współrzędnych ujemnych od originu EV_VEC_maxs,//odległość rogu najbardziej wysuniętego w kierunku współrzędnych dodatnich od originu EV_VEC_size,//rozmiar bytu, odległość mins od maxs, EV_VEC_rendercolor, EV_VEC_view_ofs, EV_VEC_vuser1, EV_VEC_vuser2, EV_VEC_vuser3, EV_VEC_vuser4, };
new Float:origin[3] engfunc(EngFunc_GetBonePosition,id,origin)
1 - Dowolne miejsce 2 - Głowa 4 - Klatka / Tors 8 - Brzuch 16 - Lewa Ręka 32 - Prawa Ręka 64 - Lewa Noga 128 - Prawa Noga
new byt=create_entity("func_wall")//funkcja tworzy byt klasy func_wall, zwracając numer powstałego entity, który przypisujemy zmiennej 'byt' entity_set_model(ent,"models/wall/wall.mdl") new Float:mins[3],Float:maxs[3]//aby powstał prostopadłościan (takiego kształtu jest entity) musimy rozciągnąć go w przestrzeni za przeciwległe rogi i to właśnie odległości od originu do tych rogów //odpowiednio do rogu najbardziej wysuniętego w kierunku ujemnym mins[0]=-112.0//oś x mins[1]=-113.0//oś y mins[2]=-1.0//oś z (góra-dół) //oraz najbardziej wysniętego w kierunku dodatnim maxs[0]=115.0 maxs[1]=116.0 maxs[2]=117.0 entity_set_size(ent,mins,maxs)//ustawia w/w odległości-czyli po prostu rozmiar new Float:origin[3] entity_get_vector(id,EV_VEC_origin,origin)//tu pobieram położenie gracza, aby z grubsza wiedzieć gdzie to entity umieścić, jeśli mam własne dane co do położenia, //a nie interesuje nas położenie gracza, to przypisujemy dane do zmiennej origin[3] origin[0]+=350.0//tu zmieniam położenie względem jednej z osi, żeby byt nie został stworzony na mnie (graczu) tylko w pobliżu entity_set_origin(ent,origin)//ustawiam położenie bytu. Należy uważać, aby byt nie został stworzony w mapie, tzn jego część nie była schowana w podłodze, bo byt zacznie nam opadać powoli w dół aż zniknie całkowicie z pola widzenia. Dobrze ustawiony origin poskutkuje pojawieniem się nieruchomego bytu, ew pojawieniem się bytu i opadnięciem na ziemie. entity_set_int(ent,EV_INT_solid,SOLID_BBOX)//ustawiamy dotykalność bytu (bez ustawionego movetype ( MOVETYPE_NONE ) nie przynosi efektu) entity_set_int(ent,EV_INT_movetype,MOVETYPE_TOSS)//ustawiamy sposób poruszania się bytu, wybrany tutaj to po prostu kolidowanie z entitami, grawitacja
public plugin_precache() { precache_model("models/wall/wall.mdl") }
#define SOLID_NOT 0 /* Brak interakcji z obiektami */ #define SOLID_TRIGGER 1 /* Tworzy dotyk (alarmując funkcje), ale nie blokuje (można przez niego przejść) */ #define SOLID_BBOX 2 /* Tworzy dotyk (alarmując funkcje), blokuje */ #define SOLID_SLIDEBOX 3 /* Tworzy dotyk, ale nie na ziemi(nie czaje o co chodzi:P-nie testowałem) */ #define SOLID_BSP 4 /* Część mapy, tworzy dotyk (alarmując funkcje), blokuje */
#define MOVETYPE_NONE 0 /* nie porusza się */ #define MOVETYPE_ANGLENOCLIP 1 /* nie mam pojęcia - crashuje serwer jak ustawię */ #define MOVETYPE_ANGLECLIP 2 /* nie porusza się */ #define MOVETYPE_WALK 3 /* Tylko gracz tego używa - chodzenie po ziemi - ustawisz innemu entity=crash */ #define MOVETYPE_STEP 4 /* gravity, special edge handling -- monsters use this */ #define MOVETYPE_FLY 5 /* Koliduje z elementami mapy/entami, ale nie działa nań grawitacja */ #define MOVETYPE_TOSS 6 /* Koliduje z elementami mapy/entami, działa nań grawitacja */ #define MOVETYPE_PUSH 7 /* no clip to world, push and crush - nie testowałem, ale entity z solid_bsp mają ten movetype */ #define MOVETYPE_NOCLIP 8 /* Może posiadać prędkość tzn poruszać się, ale nie koliduje i nie działa nań grawitacja */ #define MOVETYPE_FLYMISSILE 9 /* extra size to monsters */ #define MOVETYPE_BOUNCE 10 /* Tak jak TOSS, ale odbija się od wszystkiego */ #define MOVETYPE_BOUNCEMISSILE 11 /* Odbija się, ale nie działa nań grawitacja */ #define MOVETYPE_FOLLOW 12 /* Śledzi ruchy celu (EV_ENT_aiment ?) */ #define MOVETYPE_PUSHSTEP 13 /* BSP model that needs physics/world collisions (uses nearest hull for world collision) */
entity_set_int(id,EV_ENT_owner,1) set_pev(id,pev_owner,1)
entity_get_int(id,EV_ENT_owner) pev(id,pev_owner)
new classname[32] entity_get_string(id,EV_SZ_classname,classname,31) pev(id,pev_classname,classname,31)
#700787 Funkcja wywoływana tylko przy strzale
Napisane przez Asiap
w 17.05.2015 01:30
#include <amxmodx> #include <hamsandwich> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "asiap" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); new g_szName[24], i = 1; for(; i <= CSW_P90; i++) { if(!((1<<CSW_KNIFE|1<<CSW_HEGRENADE|1<<CSW_FLASHBANG|1<<CSW_SMOKEGRENADE|1<<CSW_C4) & 1<<i) && get_weaponname(i, g_szName, 23)) { RegisterHam(Ham_Weapon_PrimaryAttack, g_szName, "PrimaryAttack", 1); } } } public PrimaryAttack(ent) { new id = get_pdata_cbase(ent, 41, 4); JakasFunkcja(id); } public JakasFunkcja(id) { new g_szName[32]; get_user_name(id, g_szName, 31); client_print(0, print_chat, "Gracz ^"%s^" wlasnie strzelil z broni", g_szName); }
#700040 [ROZWIĄZANE] menu_create zawsze zwraca 0 (?) :O
Napisane przez sebul
w 08.05.2015 18:04
#700098 [ROZWIĄZANE] menu_create zawsze zwraca 0 (?) :O
Napisane przez GwynBleidD
w 09.05.2015 09:06
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Reputacja: Ossal
- Regulamin