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
 

exexe - zdjęcie

exexe

Rejestracja: 09.12.2010
Aktualnie: Nieaktywny
Poza forum Ostatnio: 08.09.2017 18:20
-----

#650805 [Poprawione] Lepszy sposób zmiany prędkości gracza

Napisane przez Gość w 17.07.2014 20:41

Zajawka


ale już nie pamiętam

A szkoda.
 

Wstęp :: Wyjaśnienie ogólne



Ham_Item_Deploy wykonuje się, gdy gracz wyciąga broń, zresztą zgodnie z dokumentacją kanapki.
Zmiana prędkości gracza następuje jedynie m.in. po zmianie broni.
 
Ham_Item_Deploy różni się od CurWeapon tym, że jest niezawodne i wykonuje się równo raz dla wyciągnięcia broni.
Jest to zdecydowanie lepsza metoda od CurWeapon, gdyż jest niezawodna; jednakże jest to tylko jeden z wielu przypadków, gdy następuje maksymalna zmiana prędkości gracza.
 
Innymi słowy, nie uwzględniłeś ŻADNEGO przypadku zmiany maksymalnej prędkości gracza poza tym jednym, jedynym, tj. po zmianie broni, co spowoduje, że Twoja metoda zadziała jedynie w nielicznych przypadkach.
 

Czarno na białym :: Logi



Ponieważ, pomimo przeczytania kilki artykułów na temat zmiany prędkości u gracza, dalej "nie pamiętasz", kiedy dokładnie ona zachodzi i, będąc członkiem Support Teamu AMXX.pl, piszesz takie brednie, mało tego, podając argumenty wyssane z palca (czyt. ŁŻESZ!), przedstawię czarno na białym, że się mylisz.
 
Wobec tego gwałtu na jakości i rzetelności Support Teamu, którego się dopuściłeś, po blisko pół roku, na nowo zainstalowałem starego, poczciwego CSa 1.6 i jakże kochanego HLDSa tylko po to, by pokazać, jak kłamliwym w swej "profesji" i niegodnym jakiegokolwiek zaufania w tej kwestii uzerem (przez "z" specjalnie) jesteś.
 
Stworzyłem prosty plugin, który będzie notował pewne eventy związane z tym tematem i linkowanym, plus kilka eventów jako punkt odniesienie (start i koniec rundy).
Dodatkowo, notowana będzie maksymalna prędkość gracza tuż po wystąpieniu eventu, oraz moje wypowiedzi, odpowiadające działaniom przeze mnie podejmowanym.
Plain SMA (myślę, że nie wymaga komentarza):
Spoiler

Plain log (cut to session, puste linie dodane przeze mnie w celu zwiększenia czytelności).
Spoiler

Notki odn. testów:

  • sv_maxspeed na serwerze testowym wynosi 1000
  • Dodałem się jako admina w postaci jednej linijki do users.ini
  • Reszta bez zmian; czysta instalka:
    • HLDS 48/1.1.2.7/Stdio 6027 secure  (10)
    • Metamod 1.21.1-am
    • AMXX 1.8.3 3983 (base + cstrike); linux

Ham_Item_PreFrame
Ma tylko jedną wadę tzn. to jest think wykonuje się tyle samo ile gracz posiada fps. Zatem podczas 1 min gry może wykonać się 6000 razy nawet jeśli stoimy w miejscu i totalnie nic nie robimy  Czegoś tak nie optymalnego nie chcemy. Dlatego ta opcja od razu odpada.

Patrzę na logi trwające 2 minuty i 17 sekund i nie widzę, by Ham_Item_PreFrame wykonał się (6000 / 10) × (2 × 60 + 17) = 100 × 137 = 13700 razy., a podpowiem, że miałem ok. 100 fpsów.
 
Ham_Item_PreFrame bowiem nie wykonuje się "tyle samo ile gracz posiada fps"; czyt. ŁŻESZ.
 
 

Ham_CS_Player_ResetMaxSpeed
Patrząc na to teoretycznie to ta funkcja nie posiada wad ale jednak w praktyce się znajdują. Tzn:
• wykonuje sie parę razy więcej niż powinna gdyż nasza prędkość jest resetowana także podczas freeze time'u, śmierci, spawn'u

  • BzduraHam_Item_Deploy nie wykonuje się ani razu z faktu wystąpienia freezetime, tak samo jak Ham_CS_Player_ResetMaxSpeed.
    Logi po rozpoczęciu freezetime:
    L 07/17/2014 - 19:45:38: [test.amxx]L 07/17/2014 - 19:45:35: [test.amxx] logevent_round_start
    L 07/17/2014 - 19:45:36: [test.amxx] Benio: Dolaczenie
  • BzduraHam_Item_Deploy wykonuje się tyle razy samo, co Ham_CS_Player_ResetMaxSpeed po śmierci, dokładnie 1 raz.
    Logi po śmierci:
    L 07/17/2014 - 19:47:23: [test.amxx] Benio: Kill
    L 07/17/2014 - 19:47:23: [test.amxx] MaxSpeed: 250
    L 07/17/2014 - 19:47:24: [test.amxx] logevent_round_end
    L 07/17/2014 - 19:47:24: [test.amxx] Ham_Item_Deploy
    L 07/17/2014 - 19:47:24: [test.amxx] Ham_CS_Player_ResetMaxSpeed
    L 07/17/2014 - 19:47:24: [test.amxx] Ham_Item_PreFrame
    L 07/17/2014 - 19:47:24: [test.amxx] Ham_Killed
  • BzduraHam_CS_Player_ResetMaxSpeed ma się wykonywać podczas spawnu wielokrotnie (czyt. dla każdej broni).
    Logi ze spawnu:
    L 07/17/2014 - 19:45:38: [test.amxx] Ham_CS_Player_ResetMaxSpeed
    L 07/17/2014 - 19:45:38: [test.amxx] Ham_Item_PreFrame
    L 07/17/2014 - 19:45:38: [test.amxx] Ham_Item_Deploy
    L 07/17/2014 - 19:45:38: [test.amxx] MaxSpeed: 1000
    L 07/17/2014 - 19:45:38: [test.amxx] Ham_CS_Player_ResetMaxSpeed
    L 07/17/2014 - 19:45:38: [test.amxx] MaxSpeed: 250
    L 07/17/2014 - 19:45:38: [test.amxx] Ham_Item_PreFrame
    L 07/17/2014 - 19:45:38: [test.amxx] MaxSpeed: 250
    L 07/17/2014 - 19:45:38: [test.amxx] Ham_CS_Player_ResetMaxSpeed
    L 07/17/2014 - 19:45:38: [test.amxx] MaxSpeed: 250
    L 07/17/2014 - 19:45:38: [test.amxx] Ham_Item_PreFrame
    L 07/17/2014 - 19:45:38: [test.amxx] MaxSpeed: 250
    
     
    Jak widać w logach, po Ham_Item_Deploy prędkość wynosi tyle, co sv_maxspeed, a dopiero Ham_CS_Player_ResetMaxSpeed dla każdej kolejnej broni, ustawiają odpowiednią prędkość.
    Konkluzja: Twoja pożal się "metoda" nie zadziała, gdyż zostanie nadpisana kolejnymi wystąpieniami Ham_CS_Player_ResetMaxSpeed po których Ham_Item_Deploy już nie występuje!
    Innymi słowy, gracz nie uzyska zmiany prędkości dopóki po spawnie nie zmieni broni (tak samo, jak przy CurWeapon)! I tu JUŻ wychodzi Twoja ignorancja w kwestii 1."Nie pamiętam", 2. Braku jakiegokolwiek rzetelnego sprawdzenia tego, o czym piszesz.

W jakiś sposób trzeba rozróżnić wykonanie się tej funkcji w czasie freeze time'u i po nim

Bzdura. Zajmuje się tym Ham_CS_Player_ResetMaxSpeed, który i tak nadpisze zmiany dokonane w Ham_Item_Deploy podczas freezetime, o czym napisałem wyżej.
 


NAJWAŻNIEJSZE Ta funkcja jest dostepna dopiero w wersji 1.3 hamsandwich'a co jest jej największą wadą gdyż z wielu przyczyn nie każdy ma mozliwość jego aktualizacji

Bzdura. HamSandwich w wersji 1.3 jest domyślnym modułem AMXX od wersji 1.8.3, a więc NIE WYMAGA AKTUALIZACJI.
 
Przykład Twojej ignorancji i jej fatalne skutki, czyli Zoom.


L 07/17/2014 - 19:46:25: [test.amxx] Benio: Glock > AWP
L 07/17/2014 - 19:46:25: [test.amxx] MaxSpeed: 250
L 07/17/2014 - 19:46:26: [test.amxx] Ham_Item_Deploy
L 07/17/2014 - 19:46:26: [test.amxx] MaxSpeed: 250
L 07/17/2014 - 19:46:26: [test.amxx] Ham_CS_Player_ResetMaxSpeed
L 07/17/2014 - 19:46:26: [test.amxx] MaxSpeed: 210
L 07/17/2014 - 19:46:26: [test.amxx] Ham_Item_PreFrame
L 07/17/2014 - 19:46:26: [test.amxx] MaxSpeed: 210
 
L 07/17/2014 - 19:46:30: [test.amxx] Benio: Zoom
L 07/17/2014 - 19:46:30: [test.amxx] MaxSpeed: 210
L 07/17/2014 - 19:46:32: [test.amxx] Ham_CS_Player_ResetMaxSpeed
L 07/17/2014 - 19:46:32: [test.amxx] MaxSpeed: 150
L 07/17/2014 - 19:46:32: [test.amxx] Ham_Item_PreFrame
L 07/17/2014 - 19:46:32: [test.amxx] MaxSpeed: 150
 
L 07/17/2014 - 19:46:36: [test.amxx] Benio: Zoom x2
L 07/17/2014 - 19:46:36: [test.amxx] MaxSpeed: 150
L 07/17/2014 - 19:46:36: [test.amxx] Ham_CS_Player_ResetMaxSpeed
L 07/17/2014 - 19:46:36: [test.amxx] MaxSpeed: 150
L 07/17/2014 - 19:46:36: [test.amxx] Ham_Item_PreFrame
L 07/17/2014 - 19:46:36: [test.amxx] MaxSpeed: 150
 
L 07/17/2014 - 19:46:40: [test.amxx] Benio: Zoom 0
L 07/17/2014 - 19:46:40: [test.amxx] MaxSpeed: 150
L 07/17/2014 - 19:46:40: [test.amxx] Ham_CS_Player_ResetMaxSpeed
L 07/17/2014 - 19:46:40: [test.amxx] MaxSpeed: 210
L 07/17/2014 - 19:46:40: [test.amxx] Ham_Item_PreFrame
L 07/17/2014 - 19:46:40: [test.amxx] MaxSpeed: 210

Po zmianie broni na AWP, Ham_Item_Deploy zmienia prędkość na 250, a następnie Ham_CS_Player_ResetMaxSpeed na 210, po czym Ham_Item_Deploy już nie występuje ponownie.
Innymi słowy, Ham_CS_Player_ResetMaxSpeed nadpisze zmianę dokonaną w Ham_Item_Deploy tym samym sprawiając, że, znowu, Twoją metodę można wysłać jedynie do /dev/null.
Co się stanie po Zoomie? To samo! Ham_Item_Deploy nie wystąpi podczas, gdy Ham_CS_Player_ResetMaxSpeed owszem, nadpisując ustawienia Twojej (tfu!) "metody".
 
Spawnem i Zoom to nie jedyne eventy, których nie uwzględniłeś, a jeśli do Ham_Item_Deploy dodasz je, oraz wszystkie pozostałe eventy, podczas których zmienia się prędkość broni, ale nie ma ich w załączonych logach ze względów ograniczonej długości posta, uzyskałbyś dokładnie event Ham_CS_Player_ResetMaxSpeed, który to przecież pochodzi wprost z silnika gry i dlatego jest najoptymalniej zmieniać prędkość właśnie tam.
 
Jakiekolwiek rzadsze podmiany wartości zawsze zostaną nadpisane poprzez niekryte wystąpienia Ham_CS_Player_ResetMaxSpeed, a częstsze będą mniej optymalne.
 

TL;DR



27920 wykazał się, jako członek Support Teamu AMXX.pl, niekompetencją i totalną ignorancją, przedstawiając nieprzetestowany i niedziałający, zupełnie błędny sposób, który wyłoży się już przy, chociażby, wyciągnięciu AWP (sprawdź sam!), mało tego, bezczelnie nazywając tę "metodę" "lepszym sposobem zmiany prędkości gracza" (sic!), pokazując, msz, że nie jest godny rangi Support Teamu, gdyż nawet nie przetestował tego jakże błędnego sposobu, do tego okłamując czytelników, podając fałszywe argumenty "za" swoją niedziałającą metodą.

 

PS


Ode mnie, oczywiście, soczysty, czerwony minus i wniosek o zmianę rangi.




#612606 Po 3 dniach wróciliśmy!

Napisane przez .K3K w 06.02.2014 18:18

Nie musicie naprawiać generatora :) Jest nie przydatny oraz lepiej pisać vipa samemu więcej się człowiek uczy i nie zadaje debilnych pytań dla czego mu serwer nie startuje bo dodał model dla vipa w generatorze i go nie wgrał :)




#608900 Skarga na CheQ

Napisane przez Gość w 24.01.2014 19:42


To jak Twoim zdaniem mogłem nazwać ten temat? Bo przy zmianie mapy serwer po prostu miał crash, to co miałem napisać?
Np. "Invalid menu id 116(117) - christmasmod", czyli to, co podpowiadają logi, o których istnieniu wiesz, bo załączyłeś ich fragment w poście.

 


No własnie przy takiej nazwie prędzej znajdzie niż jak bym napisał nazwę tematu nie odnoszący się do mojego problemu. 
Sugerujesz, że wpisując w wyszukiwarkę "Crash przy zmianie mapy" znajdziesz rozwiązanie swojego problemu? Proszę Cię  :facepalm:

 


Proszę napisać jaką zasadę złamałem? 
Proszę, cytat z Regulaminu forum:


Nazywaj tematy zgodnie z ich treścią.
Staraj się opisać dokładnie swój problem, pytanie.

 


Nie każdy jest taki super jak Ty aby wiedzieć kiedy co należy zrobić.. Z tego powodu napisałem ten post.

Logi, które załączyłeś nam w temacie, wyraźnie wskazują, by włączyć debugowanie pluginu i dokładnie opisują, jak to zrobić.

Hej! Zastosowanie się do porad z logów, które się przekazuje innym, do tego publicznie, wcale nie jest czymś "super".

To się nazywa "czytanie ze zrozumieniem" i jako administrator serwera, powinieneś opanować tę czynność.

 


Może mi nie pomoże bo temat został bez sensu zamknięty ?
Mądrej głowie dość dwie słowie. Przeczytaj jeszcze raz powód zamknięcia Twojego tematu. Nie jest on bez sensu.

 


Jakoś nie zauważyłem aby gdzie było napisane co należy podać w temacie podczas crashu. 
A więc zapewne nawet nie szukałeś rozwiązania Twojego problemu, co tłumaczyłoby, dlaczego nazywasz tematy tak, że inni także nie będą w stanie znaleźć rozwiązania Twojego problemu.


#608857 Skarga na CheQ

Napisane przez Gość w 24.01.2014 19:04

Czytaj ze zrozumieniem


Jednoznacznie określ problematykę tematu, wyróżniając go spośród reszty.

Napisałem to nie bez powodu.
Temat "Crash przy zmianie mapy." w dziale dot. Problemów z HLDS pasuje do większości tematów tam zawartych, a więc wcale nie wskazuje na problem, z którym się zmagasz, a jedynie na pospolite jego objawy.

 

Nie bądź samolubny



Jeśli uda się Twój problem w przyszłości rozwiązać, czego Ci serdecznie życzę, to, niestety, ale przy takim jego nazwaniu, kolejna osoba o podobnym problemie, nie odnajdzie gotowego już rozwiązania tego problemu, gdyż nazwałeś go zbyt ogólnikowo.
Nie wiem, czy jesteś na tyle samolubny, że nie chcesz, by inni mogli rozwiązać ten sam problem, który Ciebie dręczy, czy też masz tak głęboko w poważaniu osoby, które chcą Ci pomóc, że nie jesteś w stanie poświęcić kilkunastu sekund, by nazwać swój temat tak, jak należy.
 

Bądź kulturalny



Wiem natomiast, że tego typu ignorancji nie tolerujemy na tym forum z szacunku do osób pomagających oraz całej społeczności graczy, pozwalając im w przyszłości skorzystać z gotowych już porad udzielonych na naszym forum, AMXX.pl.
Dostosuj się do zasad panujących na forum, w tym wypadku także do ogólnych zasad kultury i szacunku do innych. Nie bądź samolubny i nie oczekuj pomocy, samemu nawet nie starając się wysilić na tyle, by opisać swój problem.
 

Bądź samodzielny


debug not enabled!
L 01/24/2014 - 16:37:31: [amxx] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Odnoszę wrażenie, że nie zadałeś sobie najmniejszego trudu w celu rozwiązania swojego problemu.

Otrzymałeś wyraźne polecenie z samego AMXX, ale zamiast przeczytać i dostosować się doń, wolisz bezmyślnie kopiować proste polecenie, wklejając je publicznie i jedynie się ośmieszając.

 

Bądź empatyczny


Zrozum, że nawet pomimo tej ignorancji, nie można Ci pomóc, nie znając przyczyn Twojego problemu, a tym bardziej jego szczegółów.

Nawet, jeśli ktoś zechciałby Ci pomóc pomimo tej ignorancji i braku szacunku wobec niego, to nie jest w stanie, dopóki nie udzielisz mu wymaganych informacji.

 

Ucz się na błędach


Wiele osób popełniło już podobne błędy. Nie powielaj ich i pomóż pomóc sobie samemu.

Popatrz, jakie informacje są potrzebne do podania w przypadku crasha serwera i załącz je.

Postaraj się także, by informacje te były czytelne dla odbiorcy, które to przecież zamierza Ci pomóc.

 

Wyciągaj wnioski


Wyciągnij wnioski z faktu, że usunięto Twój temat. Przeczytaj jeszcze raz powód i przemyśl, czy faktycznie nie warto zrobić tego w uprzejmiejszy i czytelniejszy sposób.

Mam nadzieję, że te kilka krótkich porad pomoże Ci w przyszłości łatwiej formułować Twoje problemy tak, by były one czytelne, możliwe do rozwiązania, a same rozwiązania mogły pomóc także innym osobom z podobnym problemem w przyszłości.

 

PS


Wracając do sedna, skargę uważam za bezpodstawną, zgodnie z powyższym.




#570829 Podział Dokumentacji i AMXX.pl API

Napisane przez Gość w 10.09.2013 15:51

Aktualizacja dokumentacji



 
Podział dokumentacji na sekcje
Dokumentacja została podzielona na sekcje, zgodnie z licznymi sugestiami.
Dotychczasowy opis został rozdzielony na następujące sekcje:

  • Opis
  • Składnia
  • Zwracana wartość
  • Typ
  • Notatki
  • Przykład
  • Uwagi

W związku z podziałem opisu na sekcje, wszelkie dotychczasowe opisy uległy gruntownej zmianie.
Mimo starań, część opisów mogła zostać niepoprawnie skonwertowana, za co serdecznie przepraszam.
Jeśli zauważycie niepoprawnie opisaną funkcję, np. pełen "stary" opis w polu opis, niepodzielony, śmiało poprawcie :)
Mam nadzieję, że nowa forma dokumentacji przyniesie spore korzyści, a konwersja nie jest aż taka nieudana.
 
Nowy wygląd dokumentacji
clamp_view.png
Live link: clamp
 
Edycja opisu odbywa się sekcjami
clamp_edit.png
 
Możemy zmienić nazwę funkcji w polu tekstowym, jej typ w polu wyboru, oraz dowolne sekcje w osobnych edytorach.
Edytor przykładu jest przeznaczony na kod SMA, więc jako jedyny jest edytorem tekstowym (HTML z ukrytym paskiem narzędzi).
 
Jak dotychczas, przy edycji, możemy na bieżąco podejrzeć nowy wygląd opisu, oraz porównać proponowany opis z bieżącym wizualnie, oraz na 4 różne sposoby w tabeli.
Przy okazji, poprawione zostało ładowanie porównania blokowego z ciasteczek.
 
Zmiana kolorowania składni
Kolorowanie geshi zostało zastąpione standardowym prettyprintem, dzięki czemu składnia jest lepiej kolorowana.
Zmianie uległ skrypt JS, który ładuje kolorowanie składni, w przypadku problemów, proszę o kliknięcie Ctrl+F5 (lub Ctrl+R).
 
Więcej drobnych zmian
Część elementów wymagających poprawy, została dopracowana, trochę zyskało nową formę graficzną, nieco zmieniony też został układ poszczególnych sekcji na stronie.
Szczegóły aktualizacji znajdują się w changelogu: AMXX.pl/dokumentacja?do=changelog
Zaznaczę tutaj 2 najistotniejsze z tych drobniejszych poprawek:

  •     + Dodano linki do funkcji i kolorowane linki do profili autorów w widoku logów
  •     $ Propozycje osób z możliwością moderacji opisów, nie wymagają dłużej akceptacji

 

AMXX.pl API



Do publicznego użytku zostało oddane AMXX.pl API, znajdujące się pod adresem api.amxx.pl

API na chwilę obecną posiada kilka metod, pozwalających w łatwy sposób na pobranie opisów funkcji.

Najprawdopodobniej API zostanie rozszerzone o kolejne metody, póki co, oczekuję zgłoszeń ew. błędów.

 

API pozwala na pobranie zasobów dokumentacji, m.in. w JSON, JSONP, czy XML, co pozwoli na proste tworzenie dokumentacji offline, etc.

Jeśli uznacie API za przydatne i uważacie, że przydadzą się kolejne metody, formy, etc., piszcie śmiało, zapraszam do dyskusji nt. dalszego rozwoju dokumentacji.




#283574 Przygotowanie stanowiska pracy - Notepad++

Napisane przez DarkGL w 16.08.2011 11:03

Notepad++ Przygotowanie stanowiska pracy

Dlaczego notepad++ ?
Jest kilka powodów :
  • Nie muli przy 8k linijek (tak jak np. amxx-studio)
  • Pozwala używać polskich znaków bez żadnego include
  • Wygodny
  • Posiada wiele przydatnych funkcji


Instalacja programu:
  • Na początek musimy oczywiście ściągnąć notepad++

    Oficjalna strona programu
    obecnie najnowsza wersja to v5.9.3
    proponuje ściągnąć
    Notepad++ v5.9.3 Installer
  • Instalacja jest bardzo prosta jedynie należy uważać aby

    podczas instalacji ta opcja była odznaczona
    opcja.JPG


Styl:

Standardowy styl notepad++ dla mnie średnio nadaje się do programowania pokaże jak go zmienić Dołączona grafika
  • W górnym menu programu wybieramy ustawienia a potem konfigurator stylów
  • W nowym oknie możemy wybrać jeden z dostępnych styli

    opcja6.JPG


Kolory składni na standardowym stylu:

Jeśli chcemy pisać na standardowym stylu notepad++ możemy wgrać 1 plik dzięki któremu składnia będzie kolorowana wygląda to tak
skladnia.JPG
  • Ściągamy ten plik
    Załączony plik  userDefineLang.rar   5,94 KB  2628 Ilość pobrań

  • W eksploratorze windows wpisujemy

    %appdata%\Notepad++

    opcja2.JPG
  • Kopiujemy 1 plik (userDefineLang.xml) z rozpakowanego archiwum które ściągnęliśmy przed chwilą do folderu który się nam otworzył

Styl do programowania:
  • Ściągamy ten plik
    Załączony plik  pawnIntegrated.rar   20,71 KB  3632 Ilość pobrań

  • W eksploratorze windows wpisujemy

    %appdata%\Notepad++

    opcja2.JPG
  • Kopiujemy 2 pliki z rozpakowanego archiwum które ściągnęliśmy przed chwilą do folderu który się nam otworzył ma to wyglądać tak

    opcja3.JPG
  • Tak wygląda plik sma po otwarciu
    wygladstyl.JPG
    według mnie dużo czytelniej :)


Styl jak AMXX Studio / Pawn Studio:
Dla osób które przyzwyczaiły się do AMXX Studio / Pawn Studio polecam ten styl kolory są te same jak w tych programach ;]
  • Ściągamy ten plik
    Załączony plik  userDefineLang.zip   15,53 KB  1203 Ilość pobrań

  • W eksploratorze windows wpisujemy

    %appdata%\Notepad++

    opcja2.JPG
  • Kopiujemy 1 plik (userDefineLang.xml) z rozpakowanego archiwum które ściągnęliśmy przed chwilą do folderu który się nam otworzył
    Wygląda to tak
    amxxstyl.JPG


Powiązanie plików:
  • Włączamy teraz notepad++ z górnego menu wybieramy Ustawienia->Preferencje potem wybieramy zakładkę Powiązanie plików wybieramy customize następnie dodajemy pliki sma i inc o tak

    opcja4.JPG
    opcja5.JPG
  • Punkt dla osób które podczas robienia rzeczy w podpunkcie wyżej miały zainstalowane na komputerze AMXX Studio lub PAWN Studio
  • Wchodzimy w panel sterowania

    opcja7.JPG
  • Przełączamy do widoku klasycznego



    opcja8.JPG
  • Klikamy dwa razy na "opcje folderów"
  • W nowym oknie wybieramy zakładkę "Typy plików"
  • Znajdujemy rozszerzenie .sma i klikamy zamień (jeśli nie znajdziemy to po prostu klikamy nowy i dodajemy ;) )



    opcja9.JPG
  • Znajdujemy na liście notepad++ i klikamy ok



    opcja10.JPG
  • Powtarzamy dwa punkty powyżej dla rozszerzenia .inc (zamiast sma szukamy inc Dołączona grafika )


TextFX Auto poprawianie tabulacji:

W AMXX Studio i Pawn Studio mieliśmy bardzo przydatną funkcje poprawiania tabulacji kodu (tools->indenter) w notepad++ też możemy ją mieć i to nawet lepiej działającą.
  • Wchodzimy tutaj
    manager.JPG
  • W zakładce "Available" znajdujemy "TextFX Characters" i instalujemy
    textfx.JPG
    będzie potrzebny restart notepad++
  • Po restarcie w górnym menu widzimy nową zakładkę "TextFX" ma ona bardzo wiele opcji (polecam się pobawić ;) ) ale interesuje nas tylko jedna "Reindent C++ code" która jest w "TextFX Edit" jej użycie mając otwarty plik sma powoduje uporządkowanie kodu.
    reindent.JPG
    Przed:
    przed.JPG
    Po:
    po.JPG


Kompilacja pluginów:

Notepad++ pozwala też na ustawienie sobie kompilacji pluginu pod klawisz :)
  • Wchodzimy tutaj
    manager.JPG
  • W zakładce "Available" znajdujemy "NppExec" i instalujemy
    nppexec.JPG
    będzie potrzebny restart notepad++
  • Po restarcie wchodzimy w opcje Pluginy -> NppExec -> Execute
    execute.JPG
  • W oknie które nam się pojawi wklejamy taki kod
    cd $(CURRENT_DIRECTORY)
    			"E:\Documents and Settings\DarkaGL\Pulpit\compiler\amxxpc.exe" "$(FILE_NAME)"
    oczywiście zamiast "E:\Documents and Settings\DarkaGL\Pulpit\compiler\amxxpc.exe" podajemy własną ścieżkę do pliku amxxpc.exe
    radzę poczytać o kompilacji lokalnej http://amxx.pl/topic...ilowac-pluginy/
    Klikamy save i nadajemy nazwę "AMXX Compiler"
  • Wchodzimy teraz w Pluginy -> NppExec -> Advanced Options
  • Pokaże się nam nowe okno w Item Name wpisujemy "AMXX Compiler"
    a w Associated Scripts wybieramy AMXX Compiler (chyba że ustawiliśmy inna nazwę w punkcie wyżej ;) )
  • Klikamy Add/Modify i OK
  • Restartujemy Notepad++
  • Po restarcie wchodzimy w Ustawienia -> Skróty Klawiszowe
  • W zakładce Plugin commands znajdujemy AMXX Compiler i klikamy na niego 2 razy
    commands.JPG
  • Otworzy się nam nowe okno w którym ustawiamy pod jakim klawiszem mamy kompilacje ja wybrałem F9
    commands2.JPG
    możemy oczywiście jaki chcemy ;)
  • Klikamy OK a potem Close i to wszystko kompilacja jest już pod wybranym klawiszem



Auto podpowiadanie składni:
  • Ściągamy ten plik
    Załączony plik  autocomplete.rar   36,76 KB  1662 Ilość pobrań

  • Wchodzimy do
    Program Files\Notepad++\plugins\APIs
    i kopiujemy do tego folderu rozpakowane pliki ze ściągniętego archiwum
  • Otwieramy Notepad++. Ustawienia -> Preferencje -> Zakładka Kopia/Auto-uzupełnianie
  • Zaznaczamy "Włącz auto-uzupełnianie" możemy też zaznaczyć podpowiadanie parametrów funkcji , w prawym górnym rogu widzimy od ... znaków podajemy tutaj liczbę znaków od kiedy notepad++ ma podpowiadać nazwę
    U mnie wygląda to tak
    autouzu.JPG
  • Po ustawieniu wszystkiego klikamy Zamknij gotowe :) !
    A tak wygląda podpowiadanie nazwy funkcji
    autouzupel.JPG


Używane polskich znaków:
Aby używać polskich znaków w pluginie należy
  • Otworzyć plik sma
  • W górnym menu wybrać zakładkę Format
  • Wybrać "Koduj w UTF-8 (bez BOM)" lub "Konwertuj na format UTF-8 bez BOM"
  • Zapisać plik i to tyle kompilujemy normalnie.

  • +
  • -
  • 70


#410363 Dobre i złe nawyki tworzenia menu

Napisane przez GwynBleidD w 14.05.2012 14:00

Krótka przedmowa, czyli o czym ten poradnik

Będzie to poradnik nie o samym tworzeniu menu, lecz o tym jak to, w zależności od sytuacji, robić prawidłowo. Skupię się tutaj wyłącznie na nowym typie menu, który w najnowszym amx umożliwia prawie tą samą funkcjonalność, co stary typ menu, a dużo większą wygodę użycia. Jedynym brakiem tutaj jest brak możliwości utworzenia linii informacyjnej przed pierwszym elementem w menu (czyli zaraz pod tytułem), co jednak można obejść tworząc wielolinijkowy tytuł, o czym na końcu tego tutorialu w ramach bonusu :) W praktyce będzie to prawie wyłącznie o użyciu info w menu, czyli jak go używać z głową i do czego może się przydać.

Omówienie funkcji zostawiam dokumentacji :) Najpierw omówię złe praktyki i opiszę dlaczego są złe


1. Konstruowanie switcha w oparciu o info

Często widzę taki "koszmarek" jak sterowanie switchem w handlerze poprzez info, gdzie w info zawiera się numer pozycji, w postaci tekstu. Jeśli nie wiesz o czym mówię, zobacz przykład:



public show_menu(id) {
    new menu = menu_create("Menu serwera", "handle_menu");
    
    menu_additem(menu, "Wyświetl regulamin", "1");
    if(cs_get_user_team(id)==CS_TEAM_CT)
        menu_additem(menu, "Kup AK47", "2");
    else
        menu_additem(menu, "Kup M4A1", "2");
    menu_additem(menu, "Wyświetl top15", "3");
    menu_additem(menu, "Zobacz inne serwery", "4");
    menu_additem(menu, "Przekaż pieniąde graczowi", "5");
    
    menu_display(id, menu)
}

public handle_menu(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new sKey[6], iKey, access, callback;
    menu_item_getinfo(menu, item, access, sKey, 5,_, _, callback);
    iKey = str_to_num(sKey);
    
    switch(iKey) {
        case 1: client_cmd(id, "say /regulamin");
        case 2: daj_bron(id);
        case 3: client_cmd(id, "say /top15");
        case 4: client_cmd(id, "say /serwery");
        case 5: client_cmd(id, "say /przelew");
    }
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

Co tu i dlaczego jest źle? a to, że wymyślamy koło na nowo i marnotrawimy zasoby. Otóż niepotrzebnie używamy 3ciego parametru itemów z menu o nazwie info, aby determinować co klient kliknął w menu, przez co generujemy niepotrzebne utworzenie 3ch zmiennych w handlerze, konieczność pobrania info i przekonwertowania na postać numeryczną + podanie do każdego itemu dodatkowego parametru info, co generuje dodatkowe zużycie zasobów. Może i niewielkie, ale na pewno niepotrzebne :) Więc na pewno tworzenie menu w taki sposób dobrą praktyką nie jest.


ad 1. Konstruowanie switcha w oparciu o parametr item

Teraz poprawna wersja z użyciem, stworzonego do tego celu, parametru item z handlera, który przechowuje numer tego elementu, licząc od 0, czyli ten sam plugin wyglądać może tak:

public show_menu(id) {
    new menu = menu_create("Menu serwera", "handle_menu");
    
    menu_additem(menu, "Wyświetl regulamin");
    if(cs_get_user_team(id)==CS_TEAM_CT)
        menu_additem(menu, "Kup AK47");
    else
        menu_additem(menu, "Kup M4A1");
    menu_additem(menu, "Wyświetl top15");
    menu_additem(menu, "Zobacz inne serwery");
    menu_additem(menu, "Przekaż pieniąde graczowi");
    
    menu_display(id, menu)
}

public handle_menu(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    switch(item) {
        case 0: client_cmd(id, "say /regulamin");
        case 1: daj_bron(id);
        case 2: client_cmd(id, "say /top15");
        case 3: client_cmd(id, "say /serwery");
        case 4: client_cmd(id, "say /przelew");
    }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

i gwarantuję, że zadziała tak samo, a nawet lepiej ;) Numeracja w item jest niezależna od numeracji klawiszy w menu, więc każdy additem i tylko additem zwiększa nam numer o 1, zaczynamy od 0 o czym trzeba pamiętać koniecznie. Exit nie ma numeru 0, ale specjalną wartość nazwaną MENU_EXIT, równą -3 (-2 i -1 to odpowiednio wstecz i dalej).


Trochę o samym parametrze info

No dobra, ale czym w końcu jest to info? Ano jest to informacja, którą możemy przekazać do handlerów menu, aby poinformować go o tym, co zawiera dana opcja. W przypadku przykładu 1, gdzie tworzymy je w kodzie statycznie lub prawie statycznie (różni się etykieta itemu pod klawiszem 2 w zależności od drużyny w podanym przykładzie) jest całkowicie zbędne. Jednak może się przydać przy tworzeniu dynamicznego menu. Oto następna zła praktyka:


2. Nieprawidłowe menu z graczami

Przyjrzyjmy się przykładowej implementacji menu do przelewu kasy, w którym możemy wybrać danego gracza i przelać mu pieniądze. Dla uproszczenia przyjąłem, że podaną funkcję show_przelew wywołuje handler z poprzedniego menu wyboru ilości kasy do przelania. Ilość ta jest podana w parametrze wartosc. gWartosci to 33 elementowa tablica globalna:

public show_przelew(id, wartosc) {
    new menu = menu_create("Wybierz gracza do przelania kasy", "handle_przelew");
    
    gWartosci[id] = wartosc;
    
    new players[32], num;
    get_players(players, num);
    for(new i=0; i<num; ++i) {
        new name[32];
        get_user_name(players[i], name, 31);
        menu_additem(menu, name);
    }
    
    menu_display(id, menu);
}

public handle_przelew(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new players[32], num;
    get_players(players, num);
    przelej_kase(id, players[item], gWartosci[id]);
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

Niby wszystko pięknie, na oko i po pierwszych testach działa, bo przecież itemów tworzymy tyle ile graczy, więc item będzie nam zwracał zawsze pozycję w tablicy players, którą zajmował dany gracz. No prawie... Bo co się stanie jak ktoś wyjdzie z serwera albo ktoś na serwer wejdzie? Jeśli nastąpi to w tablicy po indeksie gracza, którego chcemy wybrać to jeszcze pół biedy, ale jeśli przed to kolejność się zmieni. A niestety widziałem takie praktyki w wielu pluginach... No i w tym momencie dajemy kasę nie temu graczowi co trzeba...


ad 2. Prawidłowo działające menu z graczami

Jak to poprawić? użyć info! Tutaj, w przeciwieństwie do przykładu pierwszego, należy go użyć. Więc używajmy:

public show_przelew(id, wartosc) {
    new menu = menu_create("Wybierz gracza do przelania kasy", "handle_przelew");
    
    new players[32], num;
    new name[32], info[25];
    get_players(players, num);
    for(new i=0; i<num; ++i) {
        get_user_name(players[i], name, 31);
        formatex(info, 24, "%08X%08X%08X", wartosc, players[i], get_user_userid(players[i]));
        /*info[0] = wartosc; POPRAWKA - TEGO SPOSOBU WIĘCEJ NIE UŻYWAMY!
        info[1] = players[i];
        info[2] = get_user_userid(players[i]); */
        menu_additem(menu, name, info);
    }
    
    menu_display(id, menu);
}

public handle_przelew(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    new info[25], access, callback;
    menu_item_getinfo(menu, item, access, info, 24,_, _, callback);
    new tid = hexstr_to_num(info[8], 8); // zaczynamy od 8 znaku i pobieramy 8 z nich, konwertując je z hex na liczbę
    new tuserid = hexstr_to_num(info[16], 8);
    new wartosc = hexstr_to_num(info, 8);
    if(is_user_connected(tid) && tuserid == get_user_userid(tid))
        przelej_kase(id, tid, wartosc);

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}
hexstr_to_num(string[], chars) {
    new result=0;
    for(new i=0; i<chars && string[i]!='^0'; ++i)
        result = result<<4 + (string[i]>'9'?string[i]>'F'?string[i]-'a'+10:string[i]-'A'+10:string[i]-'0');
        return result;
    }
}

Jak widać potrzebne wartości, czyli id gracza i wartość kasy do przelania. Ale co? Przecież to nie jest napis, tylko tablica... A kto powiedział albo gdzieś napisał, że info musi być napisem? Może być tablicą, wszak napis też jest tablicą, tyle że specyficznie interpretowaną ;) więc zastosowanie jak najbardziej prawidłowe. (Znów aktualizacja! Ostatnio odkryłem, że niestety gdy funkcja napotka wartość 0, przerywa całkowicie wczytywanie dalszych wartości! Musimy więc przerobić liczbę na string!) Utworzyłem prosty string z 3 wartości liczbowych w postaci heksadecymalnej. Użyłem dość dziwnej konstrukcji %08F, zapewnia to wypełnienie zerami z przodu tak, aby liczba zawsze zajmowała 8 znaków. Dlaczego każda ma 8? liczba każda w AMX ma 32 bity, jedna cyfra HEX może zapisać 4, dalej chyba już jasne :) Stworzyłem również funkcję konwertującą string hexadecymalny na liczbę, aby wydobyć ze stringa spowrotem wartości. Dlaczego użyłem HEX? Prościej jest konwertować to na liczbę i zajmuje stałą ilość znaków ;) Teraz już nie martwimy się, że jakiś gracz ucieknie z serwera (no chyba, że ucieka nam gracz, do którego chcemy przelać kasę... ale wtedy po prostu kasa się nie przeleje, chyba że ktoś na miejsce wychodzącego gracza akurat wejdzie, na taki przypadek można zrobić weryfikację nicku lub sid jeszcze) (aktualizowałem kod pluginu zgodnie z sugestią użytkownika sebul) i mamy elegancko zrobione menu :) Jednocześnie zbędna stała się globalna tablica gWartosci, gdyż wartość kasy przesyłamy w tym samym info, co id gracza.
Mam nadzieję, że przykład ten jasno ilustruje do czego info w nowych menu powinno być używane.


3. Menu statyczne wyboru serwera, przykład nieco gorszy

Teraz jeszcze jeden przykład uzasadnionego użycia info, mimo menu statycznego. Oczywiście na początek ten... może tym razem po prostu gorszy, bo jak najbardziej poprawny ;) przykład, menu serwerów:

public show_serwery(id) {
    new menu = menu_create("Wybierz serwer na który chcesz przejść", "handle_serwery");
    
    menu_additem(menu, "Serwer GunGame");
    menu_additem(menu, "Serwer FFA");
    menu_additem(menu, "Serwer Diablo");
    
    menu_display(id, menu);
}

public handle_serwery(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    switch(item) {
        case 0: client_cmd(id, "Connect 23.123.33.22:27033");
        case 1: client_cmd(id, "Connect 12.34.56.78:27090");
        case 2: client_cmd(id, "Connect 98.76.54.32:27010");
    }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

Dlaczego przykład jest gorszy? trudniejszy w edycji, musimy w 2ch miejscach zmieniać, gdy chcemy zmienić listę serwerów.


ad 3. Menu wyboru serwera, przykład lepszy, wygodniejszy

Mimo, że poprawny jest, przedstawiam wariant wygodniejszy:

public show_serwery(id) {
    new menu = menu_create("Wybierz serwer na który chcesz przejść", "handle_serwery");
    
    menu_additem(menu, "Serwer GunGame", "23.123.33.22:27033");
    menu_additem(menu, "Serwer FFA", "12.34.56.78:27090");
    menu_additem(menu, "Serwer Diablo", "98.76.54.32:27010");
    
    menu_display(id, menu);
}

public handle_serwery(id, menu, item) {
    if(item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new ip[32], access, callback;
    menu_item_getinfo(menu, item, access, ip, 31,_, _, callback);
    client_cmd(id, "Connect %s", ip);
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

W ten oto sposób mamy dużo wygodniejsze dodawanie i edycję listy serwerów, bo dla każdego serwera jest to jedna, przejrzysta linia. Dodatkowo drobną modyfikacją można uzyskać listę serwerów odczytywaną z pliku, nvaulta albo bazy SQL, wstawiając odpowiednią pętlę zamiast additem, oraz dodając obsługę jednego z wymienionych. Tutaj, mimo menu statycznego, mamy w pełni uzasadnione użycie info do determinowania akcji podejmowanej przez menu :)


I na koniec obiecany bonus

Jak wiecie, dzięki starym menu można tworzyć coś, co przypomina, albo i nie przypomina menu, np wyświetlić regulamin na kilkanaście linii i pod nim dać możliwość jego akceptacji. Na nowym menu można dokładnie to samo, wymaga to jednak tricków kilku.

O ile nie ma żadnych problemów, gdy np. chcemy wstawić po każdej opcji w menu linijkę opisującą, albo gdy wszystkie opcje w menu mają być na samej górze, a dodatkowy tekst na dole, gdyż jest coś takiego jak menu_addblank i menu_addtext. Nie możemy ich jednak użyć przed użyciem choć raz menu_additem (nie wiem dlaczego tak twórcy amx głupio zrobili, ale tak zrobili). Jednak jest możliwość ominięcia tego niuansu przez ustawienie potrzebnych nam rzeczy w wielolinijkowym tytule. Tu następne ograniczenie: ustawienie tytułu poprzez menu_create posiada dosyć rygorystyczny limit znaków, musimy więc ustawić to poprzez menu_setprop(menu, MPROP_TITLE, ...) czyli np coś takiego:

    menu = menu_create("Regulamin serwera", "handler");
    menu_setprop(menu, MPROP_TITLE, "Regulamin serwera \yGunGame^n^nNa serwerze obowiązuje\rABSOLUTNY\yzakaz przeklinania^nNie wolno bugować mapy...");

    menu_additem(menu, "Akceptuję regulamin");
    menu_additem(menu, "Nie akceptuję regulaminu");
    menu_addtext(menu, " Nie zaakceptowanie regulaminu wiąże się z 5 minutowym banem");
    menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER);

I w taki sposób uzyskujemy ładny, czytelny regulamin, na nowych menu, z możliwością akceptacji ;) Prawda, że proste :)

Dziękuję za dotrwanie do końca :D

Copyright © Wszelkie prawa zastrzeżone
Kopiowanie tego poradnika lub treści w nim zawartych bez wyraźnej zgody autora jest zabronione i będzie ścigane z mocy prawa


  • +
  • -
  • 20


#239720 Tabelka Serwerów Online - Nowy Wygląd v.2

Napisane przez Zapalka w 21.04.2011 14:22

Ale śmiać mi się chciało jak zobaczyłem ten kod :P
I powiedz ty mi jak jakaś osoba, która nie wie co to jest programowanie, ma go obsłużyć?
Myślę, że gdybyś tego nie publikował t zaoszczędziłbyś trochę wstydu :)

Zmieniłem kod tabelki, nie zmieniając prawie wcale wyglądu. Teraz nawet newbie powinien sobie poradzić z dodaniem serwera. Download w załączniku.

Załączone pliki

  • Załączony plik  status.rar   22,51 KB  1210 Ilość pobrań

  • +
  • -
  • 17


#239474 Tabelka Serwerów Online - Nowy Wygląd v.2

Napisane przez Dj ^^ d(-.-)b w 20.04.2011 21:34

Tak jak zapowiadałem w tym temacie Tabelka Serwerów Online - Nowy Wygląd - Status serwerów - AMXX.pl: Support AMX Mod X - strona 2 tak jest :) Prezentuje wam nowy status :)

Dołączona grafika

Który posiada:

  • Pokazuje ile graczy gra na serwerze np. 18/21
  • Pokazuje jaka mapa teraz jest grana np. de_dust2
  • Pokazuje czy dany serwer jest włączony czy też nie np. ONLINE Dołączona grafika lub OFFLINE Dołączona grafika
  • Możliwość połączenia się na serwer poprzez np. HLSW Dołączona grafika lub STEAM Dołączona grafika
  • Przekierowanie na HLTV z serwera jeśli takowe posiada Dołączona grafika
  • Zlicza sloty z wszystkich serwerów ( prócz tych ukrytych slotów ) i pokazuje daną ilość graczy na serwerach na ilość slot wszystkich serwerów np. 126 / 181 przy czym 126 to jest liczba graczy a 181 to liczba wszystkich slot ( nie wlicza ukrytych).

Jak dodać na stronę główną naszego forum taki status ?

Oto kod:


<!-- tabelka serwery -->

<iframe scrolling="no" frameborder="0" style="width: 100%; height: 280px; border: none" src="TUTAJ DAJESZ LINK DO TEGO STATUSU">Twoja przeglądarka nie obsługuje ramek!</iframe>


<!-- Koniec tabelki serwery -->



Instalacja:

Ściągamy załącznik następnie rozpakowujemy go później wrzucamy na serwer FTP naszego WWW i już :)

Pliki do edycji to index.php tam zmieniamy Nazwę serwera, adres IP, hlsw, steam , hltv
kolejny plik do edycji to p.php tam tylko zmieniamy adresy IP SERWERÓW

Oczywiście jeżeli pomogłem i przyda się ten status komuś niech podziękuje w tym temacie, jeśli ktoś coś czegoś nie będzie wiedział również niech napisze w tym temacie !


Zakaz rozpowszechniania bez zgody autora ! Wystarczy się spytać na PW czy można skopiować na swoją stronę



Pozdrawiam

Załączone pliki

  • Załączony plik  status.rar   16,57 KB  4273 Ilość pobrań



#345530 War Mod by tQQ and Grzyboo

Napisane przez tekuku w 06.01.2012 16:54

opis

Witam Dziś daje wam do downloadu nowy mod praktycznie nie znany.
o co chodzi ?
War Mod to mod w którym TT na początku rundy dostaje bron wybrana losowa a ct jest niewidzialne i ct musi zabyć TT .
War Mod to fajna zabawa.

Dodatkowo w modzie jest Exp Mod żeby szybko się nie znudziło i grało dla leveli i skilli
Skille :
-Zycie na start
-AntyFlash
-Granat wybuchowy dla Terroristów
-Wzmocnienie
-Apteczka (używamy ją bindem (bind "klawisz" apteczka))
-Regeneracja HP
-Odrodzenie po zgonie

W modzie jest 35 lvl 7 skilli w których rozdaje się punkty po 5 do każdego skilla.


instalacja
Standardowa

inne informacje
Mod zrobiony na podstawie HNS więc trzeba wgrać HideNSeek najlepiej HideNSeek 2.8 by exolent
i w pliku hidenseek.cfg ustawić :

hns_seekers_grenades 1
hns_seekers_grenades_percent 100
hns_seekers_flashbangs 2
hns_seekers_flashbangs_percent 100
hns_seekers_smokegren 3
hns_seekers_smokegren_percent 100
hns_seekers_armor 100

=============================================
Autorzy : tQQ and Grzyboo
Nazwa : War Mod
Status : Darmowy
=============================================

=============================================
Dodatkowo Prefix można zmienić w 12 linijce kodu.
#define PREFIX "ProFrags"
=============================================
komendy
say:
/xp  - Otwiera Menu EXP Moda
xp   - Otwiera Menu EXP Moda
/exp - Otwiera Menu EXP Moda
exp  - Otwiera Menu EXP Moda
/reset - restart pkt które dodajemy w skille.
download
w załączniku:

Załączone pliki


  • +
  • -
  • 7


#273437 Kolejny probem z Fastdownload

Napisane przez Pawlak093 w 24.07.2011 18:14

Dodam, że strony nie otworzysz w przeglądarce, ale raz zadziałało mi i koledze, więc błąd leży po innej stronie.

Nie mogło działać :) Nie działa strona - NIE MA FDL
  • +
  • -
  • 1


#273439 Kolejny probem z Fastdownload

Napisane przez Hiroshima w 24.07.2011 18:15

http://juras91.fastdl.wilan.pl - serwer nie odpowiada - pisz do supportu na wilan


i wywal z tego server.cfg to
cl_allowdownload "1"
- to nie jest komenda serwera...
  • +
  • -
  • 1


#273077 Problem z Fastdownload - ściąga tylko z serwera

Napisane przez alc0 w 23.07.2011 20:13

CHMODY są potrzebne po stronie FTP FastDownloadu, nadaj 777.

W serwer.cfg musisz mieć to:

sv_allowdownload 1
sv_downloadurl "http://TWOJ_ADRES/cstrike"

Pamiętaj że pliki na FD muszą mieć takie same ścieżki jak na serwerze, wszystko w folderze cstrike z CHMOD 777

Tyle.

Najlepiej sprawdzić czy wszystko działa poprawnie jeśli wpiszesz w konsoli developer 1
Potem łączysz się z serwerem i w konsoli po wejściu na serwer sprawdz czy masz wpisy skąd pobierały ci się pliki.

Czasem to FD jest dziadowe i nie widać różnicy... :P
  • +
  • -
  • 1


#273063 Problem z Fastdownload - ściąga tylko z serwera

Napisane przez Pawlak093 w 23.07.2011 19:47

dodaj na początek http://www. + musi być cstrike bo wchodząc w FTP serwera otwierasz cstrike a w nim masz maps, sound itp
  • +
  • -
  • 1


#243153 Menu w pętelce

Napisane przez sebul w 29.04.2011 13:13

Ale jeszcze w sumie można by to napisać trochę krócej.
#include <amxmodx>
#include <fun>

#define PLUGIN "Test"
#define VERSION "0.1"
#define AUTHOR "x123"


#define TOTAL 4

new const g_type_names[TOTAL][] =
{
"115",
"130",
"170",
"200"
};

new g_type_prices[TOTAL] =
{
115,
130,
170,
200
};

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say /menu", "menus");
}

public menus(id)
{
new menu = menu_create("Testowo", "menus_handler");
new opcja[64];

for ( new i = 0; i < TOTAL; i++ )
{
formatex(opcja, 63, "%s", g_type_names[i]);
menu_additem(menu, opcja);
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_EXITNAME, "Wyjscie");
menu_display(id, menu);
}

public menus_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}

if(is_user_alive(id)) set_user_health(id, g_type_prices[item]);

menu_destroy(menu);
return PLUGIN_HANDLED;
}

Czyli ten enum raczej był zbędny tutaj.
  • +
  • -
  • 1