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
 

Mevios - zdjęcie

Mevios

Rejestracja: 01.05.2011
Aktualnie: Nieaktywny
Poza forum Ostatnio: 25.01.2012 16:40
-----

#301677 Błąd cs off ;/

Napisane przez freetu w 29.09.2011 19:33

1. Z loga wynika, że jest jakiś problem z pluginem nextmap.amxx - on jest wgrywany domyślnie wraz z amx, więc tylko sprawdz czy masz ten plik.

2. Crash który opisałeś może powodować plugin mapcycle_state_restorer.amxx
Proponuję go wyłączyć i przetestować.

Dodatkowo możesz zrobić tak: Odpal panel pukawki, obecny serwer. Nie wiem jak jest w pukawce ale jeśli masz konsole to odpal konsole. Wejdz do gry poczekaj na crash i zerknij na console co jest napisane.
  • +
  • -
  • 1


#281305 Ostatnio grane mapy

Napisane przez Hiroshima w 11.08.2011 15:18

Deagles' Map Management 3.23 - AMXX.pl: Support AMX Mod X zapewne o to Ci chodziło ;)
  • +
  • -
  • 1


#281312 Ostatnio grane mapy

Napisane przez Hiroshima w 11.08.2011 15:25

ten plugin co Ci podalem wlasnie to robi O.o

masz plik w katalogu configs ktory sie aktualizuje co zmiane mapy i nazywa sie lastmapsplayed.ini (lub podobnie, pisze z pamieci wiec nie powiem dokladnie), w kazdym bądź razie tych map nie mozna nominowac do zmiany
  • +
  • -
  • 1


#274606 Max players w team

Napisane przez Pawlak093 w 27.07.2011 15:38

Map Spawns Editor | Counter-strike 1.6 @ cs 1.6

albo w ptb.cfg

amx_ptb maxsize 11 // maksymalna wielkosc druzyny


#262897 AMXBANS i MySQL. TUTORIAL

Napisane przez Hiroshima w 25.06.2011 21:21

MASZ PROBLEM Z BAZĄ DANYCH / INSTALACJĄ AMXBANS?
A MOŻE NIE DZIAŁA CI AMXBANS PO INSTALACJI?
TEN TEMAT JEST DLA CIEBIE!


Wstęp:

Jest to poradnik dla osób totalnie zielonych / dla wszystkich których google.pl gryzie.
Proszę o dokładne przeczytanie poradnika zanim napiszesz nowy temat, że coś Ci nie działa.
Jest to opis w 3 punktach zawierający informację począwszy od tego jak i gdzie utworzyć bazę danych mysql aż po instalacje skryptu na swoim hostingu (linki w temacie)

Wymagania:
* Porządny hosting www na którym nasz skrypt będzie działał bez żadnych problemów (lista niżej)
* Baza danych MySQL z możliwością nadania praw dostępu dla zewnętrznych hostów.
* Użytkownik bazy MySQL mający prawa do bazy.
* Umiejętność myślenia
* Nasze Amxbans:
- Wersja GmAmxbans (aktualnie 1.6.1): http://amxx.pl/topic...oprawki-amxxpl/
- Wersja AmxBans 5.x (starsza, której nie polecam): AMXBans 5.1b - AMXX.pl: Support AMX Mod X

Punkt I
Zacznijmy od wybrania sobie hostingu, gdzie nasze amxbans będzie stało.
Sprawdzone hostingi na których nasz AMXBANS będzie działał:
* Hosting, usługi informatyczne - Unix Storm
* NiceShoot.pl :: Serwery Gier Multiplayer, Serwery dedykowane, Hosting WWW. Płatności SMS.
ODRADZAM WSZELKIEGO RODZAJU DARMOWE HOSTINGI. Jeśli decydujesz się na darmowy hosting lub coś w rodzaju xaa (proserwer) to na cuda nie licz. Nie można oczekiwać darmowej super bazy danych która będzie w pełni funkcjonalna / nie będzie sprawiała problemów pod względem stabilności działania, etc.


Punkt II
Należy utworzyć bazę danych mysql, w większości przypadków można ją utworzyć razem z użytkownikiem. Należy nadać mu wszystkie prawa dostępu do bazy którą tworzysz.
Jak to zrobić? Bardzo łatwo:

1) Opis dla DirectAdmin:

* Klikamy na stronie głownej w "Zarządzanie MySQL"
Dołączona grafika


* Klikamy w "Utwórz nową bazę danych"


Dołączona grafika




* Wypełniamy formularz (chyba nie trzeba tego tlumaczyc...)


Dołączona grafika


* Akceptujemy i wracamy do widoku baz mysql

Dołączona grafika


* Klikamy na "zmień przywileje"

Dołączona grafika




* Upewniamy się, że nasz user ma wszystkie prawa zapisu do nowej bazy


Dołączona grafika

2)

!!! TERAZ NAJWAŻNIEJSZY PUNKT Z TWORZENIA BAZY !!!

Musimy ustawić dostęp dla zewnętrznych hostów!
Dopisujemy w formularzu % (procent) i klikamy ok tak jak na załączonym niżej obrazku:

Dołączona grafika

Jeśli dalej jest to dla Ciebie niezrozumiałe tutaj dodatkowa lektura: [MySQL] Nadawanie dostępu do bazy z zewnątrz - AMXX.pl: Support AMX Mod X

W tym momencie mamy utworzoną bazę danych z dostępem dla zewnętrznych hostów.



Punkt III (Instalacja amxbans)

1)
Wrzucamy pliki do katalogu FTP
2) Uruchamiamy przeglądarkę www i wpisujemy adres do naszego skryptu.
3) Postępujemy zgodnie z instrukcją wpisując dane potrzebne do instalacji (dane do połączenia z bazą mysql, Twoim hostem jest adres serwera gdzie kupiłeś bazę, chyba, że podane jest inaczej. Pamiętaj, aby nigdy nie wpisywać w polu host: localhost )
4) Podczas instalacji skrypt poprosi nas abyśmy ustawili odpowiednie CHMODy. W FileZilla jest to banalnie proste. (dlatego polecam właśnie tego klienta FTP, gdyż TotalCommander często sprawia dziwne problemy). Klikamy prawym przyciskiem myszy na folder/plik któremu chcemy ustawić CHOMDY i wybieramy z menu "Zmień atrybuty" ustawiając je na takie o jakie prosi nas skrypt.
5) Jeśli wszystkie z powyższych punktów zostały wykonane zgodnie z opisem, Twój skrypt jest gotowy do pracy. Teraz wystarczy tylko wrzucić plugin na serwer, skonfigurować zgodnie z opisem instalacji:
* Instalacja GmAMXBans - [GmAMXBans] Instalacja AMXBans - AMXX.pl: Support AMX Mod X
* Instalacja AMXBANS 5.x - [AMXBans 5.x] AMXBANS Instalacja - AMXX.pl: Support AMX Mod X


!!! UWAGA !!!


Zrobiłeś wszystko dobrze i nadal nie działa? Dalej nie można banować? Nicki graczy są na szaro?
Upewnij się, że w amxbans.cfg masz ustawione czytanie adminów z bazy mysql! Jest to bardzo ważne, gdyż w wersji GM'a 1.6 działa tylko czytanie adminów z bazy (z users.ini nie działa).

amxbans_use_admins_file "0"

Jeśli nadal nie działa (a musi) oznacza to, że musisz przeczytać ten poradnik więcej niż jeden raz :giggle:
  • +
  • -
  • 23


#263456 Problemy z Gmamxbans.

Napisane przez Hiroshima w 27.06.2011 16:18

wytlumaczenie dlaczego tak bylo:

-oczywiscie pro hosting
- wrzucone pluginy od amxbans 6.0 - LOL
- brak uprawnien do bazy danych dla zewnetrznych hostow

dodatkowo:
register_globals Włączony Dołączona grafika magic_quotes_gpc Włączony Dołączona grafika


naprawilem, dziala temat do zamkniecia
  • +
  • -
  • 1


#262850 Baza MSQL

Napisane przez Hiroshima w 25.06.2011 19:13

dzis lub jutro zrobie bardzo szczegolowy poradnik co do mysql w amxbans... dzien w dzien to samo. milion takich samych tematow, jakby google gryzlo

//edit - poradnik gotowy: [GmAMXBans] AMXBANS i MySQL. TUTORIAL - AMXX.pl: Support AMX Mod X
  • +
  • -
  • 3


#254052 Nick Reservation System by ^Grzyboo^

Napisane przez ^Grzyboo w 29.05.2011 12:14

Dołączona grafika

Podirytowany wpisywaniem setinfo _pw "haslo" pomyslalem o pluginie innym, zastępczym, tak by hasło wpisywać podczas gry.
No i nie tylko pomyślałem, a także zrobiłem.

Plugin ma opcje:

Dołączona grafika

Pozwala to na łatwe zarządzanie wszystkim.

* Usuwanie wszystkich haseł - Standardowo dla admina z immunitetem
* Banowanie Kont - Nowość, pozwala nam na założenie bezsensownego hasła dla danego konta. Dlatego poziomy i rank nie będą dłużej wbijane na tym nicku
* Usuń - Banalne usuwanie - Tak/Nie i gotowe Dołączona grafika
* Zapis Nvault = Brak zbędnego spamu w users.ini i nie potrzeba bazy danych.

Menu Admina widoczne dla adminów tylko.

Dołączona grafika

Dołączona grafika
Plugin pyta nas przy wejściu na serwer o hasło ( o ile je mamy oczywiście ).


Dołączona grafika
Jedynie:
- Nvault
- ColorChat

Przez ColorChat musimy niestety kompilować lokalnie.


Dołączona grafika
ban_account <nick> <haslo>

Dostepne pod flagą ADMIN_BAN i pozwala na zbanowanie konta

/konto - menu główne

Dołączona grafika
Standardowa, zawartość cstrike wrzucamy do cstrike i dopisujemy nrs.amxx do plugins.ini

Proponuje zmienić nazwę forum w
#define FORUM Dołączona grafika

Dołączona grafika

Prawidłowa wersja to v2, nazwana tak, gdyż nie mogę usunąć starych załączników.

Załączone pliki


  • +
  • -
  • 48


#23631 Czat log - Czat to file - logowanie rozmow w czacie

Napisane przez Miczu w 14.11.2008 21:14

Plug zapisuje wszystkie rozmowy w czacie i team czacie do pliku /amxmodx/logs/Czat_'data'.log

Format tekstu:

Miczu -20:56:29- 'say' "infinite"
Miczu -21:05:40- 'say_team' "kick them all"

Dobre dla adminów którzy lubią mieć dowody gdy pojawia się np. skarga na adminów ze jeden pisał tak, a drugi mówi ze tak ;-) (jak z wielu plugów który powstał tylko z własnych potrzeb i tylko opublikowany po drodze).

Instalacja:
Standardowa

Załączone pliki


  • +
  • -
  • 11


#256003 Problem z Team Flash Snitch

Napisane przez Abes Mapper w 04.06.2011 21:33

Wgrywałeś ten drugi kod ?
  • +
  • -
  • 1


#250354 Napisz Skarge!

Napisane przez Muzzi w 17.05.2011 18:45

Napisz Skarge!


Dołączona grafika
Jest to prosty plugin mojego autorstwa, dzięki któremu gracz może 'napisać' skargę będąc na serwerze. A wszystkie te skargi zbierają się w jednym pliku na serwerze ftp.



Dołączona grafika
Standardowa, plik z skargami tworzy się sam.



Dołączona grafika
#include <amxmodx>
#include <amxmisc>



Dołączona grafika
Jeżeli chcesz zmienić nazwę pliku to zmień to w sma.

#define file "skargi.ini"

Ta linijka odpowiada za nazwe pliku.



Dołączona grafika
Wpisujesz komende /skarga i otwiera Ci się menu.
Po wyborze opcji w menu wyświetla Ci się say i wpisujesz swoją skargę, a ona pojawia się w pliku ini na ftp w addons\amxmodx\configs\skargi.ini
razem z tą skargą zapisuje się IP gracza oraz jego SteamId.
Przykład:
[SKARGA]:  Przykladowa Skarga  ||  [NICK]: NICKGRACZA  ||   [IP]: IP Gracza  ||  [SID]: SteamID Gracza



Gdyby były jakieś problemy z działaniem pluginu proszę o pisanie tego w tym temacie.
Ps. Nie bijcie za kod :D

Changelog:
1.0 Wydanie 1 wersji
1.1 Dodanie w logach nicku gracza



Dołączona grafika



Załączone pliki


  • +
  • -
  • 34


#41466 Jak napisac plugin ?

Napisane przez rS. w 07.02.2009 17:10

Serdecznie witam wszystkich , tak więc zaczynamy .



Pierwsze Kroki jakie musimy zrobic to:

AMXx Studio - program do kompilacji, przerabiania i pisania własnych pluginów (można go pobrać z http://www.amxmodx.org , znajduje się w packu AMX Mod X Full Installer, lub można go pobrać samodzielnie AMX Mod X Studio)


Tutaj opiszę jak skonfigurować AMXx Studio aby można było kompilować pluginy:

Po otworzeniu AMXx Studio widzimy taki ekran:

screen1.jpg - Rozmiar oryginalny - Fotosik.pl

Wchodzimy w Tools-->Settings (F12)

screen2.jpg - Rozmiar oryginalny - Fotosik.pl

Następnie Compiler Settings w pierwszym białym polu podajemy adres do naszego pliku (amxxpc.exe - to kompilator znajduje sie w folderze tam gdzie masz CS addons/amxmodx/scripting)


screen3.jpg - Rozmiar oryginalny - Fotosik.pl


Klikamy ok i od tej pory kompilowanie pluginów nie powinno stwarzać problemu tylko otwieram i klikamy compile.

Ciekawostka:
Wybrałem amx studio ponieważ uczyłem się na nim od początku od kolegi


Tak więc zaczynamy:

Otwieramy program AMX Mod X Studio
Co gdzie i jak?:
Dołączona grafika

W tych 3 okienkach będziemy widzieć :

a/1 - W tym okienku, po zaznaczeniu danego fragmentu kodu, zobaczymy, jak zostaje sklasyfikowana poszczególna jego część (czy jest to funkcja, metoda, etc.).
b/2 - W tym okienku zobaczymy (po kliknięciu na dany folder) ile razy użyliśmy danej funkcji, metody, zmiennej, etc.
c/3 - Główne okno programu. To w nim piszemy kod plugin'u.


Teraz musimy podać ścieżkę do kompilatora. W tym celu klikamy F12.
Pojawi sie nam to :

Dołączona grafika

W Compiler (amxxpc.exe) podajemy ścieżkę do kompilatora. Znajdziesz ją w :

addons/amxmodx/scripting

W Default Output Directory podajemy miejsce, gdzie będą zapisywały się skompilowane pliki.


Tak więc przygotowaliśmy amxstudio do pracy więc można zaczynac :)

Zmienne: Zmienne są to struktury, które mają przechowywać pewne informacje przez jakiś okres czasu.

Jakie może mieć typy zmiennych:

•|1Zmienne logiczne.
•|2Integer'y.
•|3Liczby dziesiętne.


Zmienne Logiczne: Zmienne logiczne są bardzo proste wy wykonaniu i obsłudze. Można im nadać jedynie dwie wartości a mianowicie:

"true"
"false"

new bool:
CzyJestWlączone // Tworzę nową zmienną "CzyJestWlaczone", która jest automatycznie ustawiona na "false"

new bool:
JestWlaczone=true //Tworzę nową zmienną JestWlaczone i nadaje jej wartość "true".


Integer'y Są to najprostsze struktury w języku skryptowym Pawn , aby umieścić taką zmienną w kodzie, musimy użyć instrukcji new nazwa_zmiennej.


new c=5.0
//Ta zmienna jest niewłaściwa

new a
//Tworzymy pustą zmienną "a"

new b=5
//Tworzymy nową zmienną "b" i ustawiamy jej wartość na 5.

new d="siema"
//"siema" nie jest liczbą, dlatego ta zmienna też jest niewłaściwa.


Liczby dziesiętne Jeżeli chcemy w kodzie plugin'u umieścić liczbę dziesiętną, musimy określić typ zmiennej jako "float". By to wykonać musimy zrobić to w następujący sposób :

new Float
nazwa_zmiennej

new d="siema"
//Ta zmienna nadal nie jest właściwa

new Float:c=5.0
//Ta zmienna była niewłaściwa. Teraz, gdy określiliśmy typ zmiennej na "float" stała się właściwa <img src='http://img.amxx.pl/public/style_emoticons/default/wink.gif' class='bbc_emoticon' alt=';)' />.

new Float:b=5.1
//Tworzymy nową zmienną "b" i ustawiamy jej wartość na 5.1.

Teraz będzie sporo czytania ze zrozumieniem musicie wszystko po kolei ładnie przeczytaj to jest najgłówniejsza rzecz , będziemy się uczyć jak działa plugin , i budową pluginu:

Włączamy AMX MOD X Studio i klikamy CTRL + N.
Otworzy nam się nowe okno z plugin'em, który wygląda tak :

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"


public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
   
    // Add your code here...
}

Teraz o budowie pluginu .

Instrukcje w pluginie zawierają się w funkcjach. Owe funkcje można porównać to spiętych kartek w zeszycie (oryginalne porównanie by Seba :] ) - instrukcje są po kolei wykonywane (tak jak zapisujemy kartki w zeszycie). Każdą funkcję w plugin'ie musimy zarejestrować w kodzie. Robimy to tak :

public nazwa_funkcji(wartości_jakie_przyjmuje_funkcja)
{
//Tutaj będzie nasz kod
}

Kod w funkcji zapisujemy między nawiasami klamrowymi. Funkcje mogą być wywoływane przez gracza (gracz zrobił coś, np. otrzymał obrażenia - nasza funkcja się wykonuje) lub przez inne funkcje.
Wiem, że możecie tego nie zrozumieć, ale przeczytajcie to jeszcze kilka razy i obraz Wam się rozjaśni. Zabieramy się za nasz plugin :) .
Na początku musimy pod nasz plugin podpiąć odpowiednie moduły.
Co to są moduły? Są to zbiory instrukcji. Jeżeli w pluginie użyjemy instrukcji, która wymaga zadeklarowania odpowiedniego modułu - plugin się nie skompiluje.
Otwórzmy okno z AMX MOD X Studio.

#include <amxmodx>
#include <amxmisc>

dopiszmy :

#include <fun>

oraz :

#include <cstrike>

Fun jest to moduł, który zawiera instrukcje związane z "zabawą" (zmienianiem HP oraz armor'a gracza, wyrzucaniem jego wszystkich broni, itp.).
Cstrikezawiera instrukcje, które pozwalają nam np. na zmienianie ilości pieniędzy gracza oraz także na zmienianie jego armor'a (jak w fun'ie) z tym, że tutaj możemy dodatkowo określić rodzaj kamizelki (sama kamizelka czy z hełmem).
Następną czynnością, jaką musimy wykonać jest zadeklarowanie zmiennej do naszej pcvark'i ( jeżeli nie wiecie jak to się robi - odsyłam Was do poprzedniej lekcji). Pcvark'i są szybsze od zwykłych cvar'ek, ale czym różni się deklarowanie pcvarek od deklarowania cvar'ek?
Pcvark'i muszą zostać przypisane do zmiennej, więc zadeklarujmy takową.
Nasza pcvark'a będzie odpowiadać za koszt skorzystania z usługi zmiany HP, więc nadajmy jej nazwę (na przykład) hp_koszt.
Zadeklarujmy zmienną. Dla czystości kodu robimy to pod :

#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"

new hp_koszt

Teraz musimy zadeklarować naszą pcvarkę.
Robimy to w funkcji plugin_inti(). W funkcji ten deklarujemy wszystkie event'y, cvarki, itp.
Pod :

register_plugin(PLUGIN, VERSION, AUTHOR)

dopisujemy :

hp_koszt = register_cvar("hp_koszt","6000")

Instrukcja register_cvar("nazwa_cvarki","jaką_domyślną_wartość_przypisujemy") odpowiada za rejestrowanie cvar'ek. W nawiasie musimy podać nazwę cvarki oraz domyślną wartość. Domyślny koszt skorzystania z usługi zmiany HP ustawiłem na 6000.
Teraz zarejestrujemy co musi wpisać gracz, aby mógł skorzystać z usługi zmiany HP.
Umożliwia nam to instrukcja register_clcmd("jaką_komendę_musi_wpisać_gracz","którą_funkcję_wywołuje_wpisana_komenda")
Dopisujemy w plugin_init() :

register_clcmd("say /hpme","hp")

/hpmejest to komenda, którą gracz musi wpisać w say'u. Owa komenda wywołuje funkcję hp. Musimy tą funkcję teraz stworzyć.
Za ostatnim nawiasem klamrowym w naszym pluginie (za nawiasem zamykającym funkcję plugin_init()) dopisujemy :

public hp(id){
}

Wartość id w nawiasie jest to unikalny identyfikator gracza. Można go oczywiście nazwać inaczej, jak player lub gracz, ale id jest najtrafniejsze :) .
Dodamy teraz pierwszą instrukcję warunkową, która uniemożliwi skorzystanie z usługi zmiany HP gdy gracz jest nieżywy.
W funkcji hp(id) dopisujemy :

if(!is_user_alive(id)){
}

Wykrzyknik przed instrukcją is_user_alive(id) sprawia, że dana instrukcja zostanie wykonana tylko wtedy, gdy gracz nie jest żywy. !można przetłumaczyć jako nie,a całą instrukcję jako jeżeli gracz nie jest żywy wykonaj
Teraz przydałoby się zawiadomić gracza, że nie może skorzystać z naszej usługi.
W tym celu przyda nam się instrukcja client_print(), czyli wypisz graczowi.

Wygląda ona tak :

code_print(id,rodzaj_wypisanej_wiadomości (print_chat - wypisuje ją tak jak say lub print_center - wypisuje ją tam, gdzie wiadomości "Counter Terrorist win, itp.","Co_chcemy_wypisać")

Dopiszmy w naszej instrukcji warunkowej (za nawiasem klamrowym naszej instrukcji warunkowej) instrukcję :

client_print(id,print_chat,"[Zmiana HP] Nie mozesz skorzystac z tej uslugi ziom, bo jestes niezywy ;-(")

Przydałoby się teraz zastopować plugin. Dlaczego?
Dlatego, że nasza instrukcja nie została spełniona i nie chcemy, aby to co jest po niej wykonało się.
W naszej instrukcji warunkowej dopisujemy :

return PLUGIN_HANDLED

co oznacza - zwróć zastopowany plugin lub nie wykonuj dalej.
Teraz kolejna instrukcja warunkowa, uniemożliwiająca skorzystanie z usługi gdy nasze HP już wynosi 200.
Deklarujemy kolejną instrukcję warunkową. Do sprawdzenia życia gracza przyda nam się instrukcja get_user_health(id).

    if(get_user_health(id)>=200)){
       
    }

Teraz wzorem poprzedniej funkcji zaalarmujmy użytkownika, że nie może wykonać danej czynności. Tak jak wtedy posłuży nam do tego client_print().

client_print(id,print_chat,"[Zmiana HP] Juz skorzystales z tej uslugi!")

Standardowo dodajemy też zastopowanie plugin'u :

return PLUGIN_HANDLED

Dotychczas nasz kod powinien wyglądać tak :

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"

new hp_koszt

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("hp_koszt","6000")
    register_clcmd("/say hpme","hp")
}

public hp(id){
    if(!is_user_alive(id)){
        client_print(id,print_chat,"[Zmiana HP] Nie mozesz skorzystac z tej uslugi ziom, bo jestes niezywy ;-(")
        return PLUGIN_HANDLED
    }
    if(get_user_health(id)>=200){
        client_print(id,print_chat,"[Zmiana HP] Juz skorzystales z tej uslugi!")
        return PLUGIN_HANDLED
    }
}

Teraz w końcu dodamy zmianę HP :) .
Umożliwi nam to instrukcja set_user_health(id,ile_HP).
Za klamrą zamykającą ostatnią instrukcję warunkową dopisujemy :

set_user_health(id,200)

Teraz pozostaje nam tylko odjęcie odpowiedniej ilości pieniędzy.
Posłuży nam do tego instrukcja cs_set_user_money(id,ilosc_pieniedzy) oraz
cs_get_user_money(id).
Pierwsza umożliwia ustawienie ilości pieniędzy a druga pobranie ilości pieniędzy posiadanej przez gracza.
Potrzebujemy jeszcze teraz instrukcji, która pobierze z pcvark'i hp_koszt koszt naszej usługi. Posłuży nam do tego get_pcvar_num(nazwa_cvarki).Pobiera ona wartość liczbową zapisaną w cvarc'e.
Dopisujemy pod instrukcją ustawiania życia :

cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(hp_koszt))

Teraz dla czystej kosmetyki i poprawnego działania plugin'u dodajemy jeszcze pod ostatnią instrukcją :

return PLUGIN_HANDLED

No tak własnie ty , to koniec! CONGRATULATION . Jeżeli coś zle wypaliło napisz mi jeżeli masz z czymś problem . Jeżeli jest jakiś błąd w poradniku .

Teraz pozostaje Wam tylko skompilowanie plugin'u i zainstalowanie go na serwerze.
Finałowy kod powinien wyglądać tak :

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"

new hp_koszt

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("hp_koszt","6000")
    register_clcmd("/say hpme","hp")
}

public hp(id){
    if(!is_user_alive(id)){
        client_print(id,print_chat,"[Zmiana HP] Nie mozesz skorzystac z tej uslugi ziom, bo jestes niezywy ;-(")
        return PLUGIN_HANDLED
    }
    if(get_user_health(id)>=200){
        client_print(id,print_chat,"[Zmiana HP] Juz skorzystales z tej uslugi!")
        return PLUGIN_HANDLED
    }
    set_user_health(id,200)
    cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(hp_koszt))
    return PLUGIN_HANDLED
}



Poradnik wykonany w całości przez Paweł
  • +
  • -
  • 51


#143195 Tworzenie menu

Napisane przez ALIENt w 09.06.2010 23:56

Poprawne menu i tworzenie dodatkowych opcji wyglada tak:


/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
#define TASK_SHOWMENU 12000


new gMyMenu

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	gMyMenu=menu_create("Jakie wybierasz BunnyHop?","cbMyMenu");
	menu_additem(gMyMenu,"Auto BH");//item=0
	menu_additem(gMyMenu,"item1");//item=1
	menu_additem(gMyMenu,"item2");//item=2
	menu_additem(gMyMenu,"item3");//item=3

}
public client_putinserver(id){
	set_task(1.0, "show_menu_", id+TASK_SHOWMENU);

}
public mymenu(id){
	menu_display(id, gMyMenu);
	return PLUGIN_HANDLED;

}
public show_menu_(tid){
	new id=tid-TASK_SHOWMENU;
	new iTeam=get_user_team(id);

	new menu_id, keys;
	new menuUp = player_menu_info( id, menu_id, keys );

	if ( iTeam && (menuUp <= 0 || menu_id < 0) )

		mymenu(id);
	else
		set_task(1.0, "show_menu_", tid);
}

public cbMyMenu(id, menu, item){
	switch(item){
		case 0:{
			client_cmd(id, "say Wybrales auto BH");
			
		}
		case 1:{
			client_cmd(id, "say Wybrales normalne BH");
			
		}
		case 2:{
			client_cmd(id, "say item 2");
		
		}
		case 3:{
			client_cmd(id, "say item 3");	
			
		}
	}
	menu_destroy ( menu ) 
	return PLUGIN_HANDLED;
}

Aby dodac kolejne dodajemy linijki:


menu_additem(gMyMenu,"item3");//item=3


oraz


}
		case 3:{
			client_cmd(id, "say item 3");


Dla tych co mają nadal problemy z rozbudowaniem menu.

Pozdrawiam :)
  • +
  • -
  • 2


#29755 Operacje bitowe

Napisane przez R3X w 23.12.2008 15:48

Operacje bitowe

Co to jest?
Działania na grupach bitów. Z powodu sposobu przedstawienia w pamięci sens ma dla liczb całkowitych (w tym znaków).
Dane są przechowywane w pamięci w systemie dwójkowym. Przykłady wprowadzające:

0010
1001
0110

Dalej będę się opierał tylko na 4 bitach. W pamięci komputera bajty składają się z 8. W pawnie wszystkie zmienne są 4 lub 8 bajtowe (32 lub 64 bity), zależnie od serwera.
Ilość dostępnych bitów określa definicja cellbits

1. Przesunięcia
Zmienia kolejność bitów przenosząc na miejsce sąsiednie.
a) w lewo
Operator: <<
1<<3
Bity liczby jeden (0001) przesuwa w lewo o trzy pozycje. W brakujące miejsca dopisywane są zera, bity wykraczające poza zakres są tracone.

0001 - początkowo
0010 - po przesunięciu o 1
0100 - po przesunięciu o 2
1000 - po przesunięciu o 3

Zatem 1<<3 = '1000' co po przeliczeniu na system dziesiętny daje liczbę 8.

Efekt: przesunięcie w lewo o n pozycji równoznaczne jest z mnożeniem przez (2 do potęgi n).

b)w prawo arytmetycznie
Operator: >>
7>>1
Bity liczby siedem (0111) przesuwa w prawo o jedną pozycje. W brakujące miejsca dopisywane bity o wartości najstarszego bitu pierwotnej liczby, bity wykraczające poza zakres są tracone.

0111 - początkowo
0011 - po przesunięciu o 1

Zatem 7>>1 = '0011' co po przeliczeniu na system dziesiętny daje liczbę 3.

Braki są uzupełniane bitem znaku.
15>>1

1111 - początkowo
1111 - po przesunięciu o 1



Efekt: przesunięcie w prawo o n pozycji równoznaczne jest z dzieleniem całkowitym przez (2 do potęgi n).

b)w prawo logicznie
Operator: >>>
15>>>1
Bity liczby piętnaście(1111) przesuwa w prawo o jedną pozycje. W brakujące miejsca dopisywane są zera, bity wykraczające poza zakres są tracone.

1111 - początkowo
0111 - po przesunięciu o 1

Zatem 15>>>1 = '0111' co po przeliczeniu na system dziesiętny daje liczbę 7.

Braki są uzupełniane zerami.


2. Operacje logiczne
Działania logiczne wykonywane między odpowiednimi bitami obu liczb.
a) koniunkcja inaczej iloczyn
Operator: &
8&2
Zapis dziesiętny na binarny:
1000 //8
0010 //2
Teraz bierzemy kolejne bity, wyznaczając ich iloczyn. Rozpiska:
1&1=1
1&0=0
0&1=0
0&0=0

1000
0010
Wykonujemy działanie 1&0 =0 zatem od lewej strony pierwszy bit wyniku=0
1000
0010
Wykonujemy działanie 0&0 = 0 zatem od lewej strony drugi bit wyniku=0
1000
0010
Wykonujemy działanie 0&1 = 0 zatem od lewej strony trzeci bit wyniku=0
1000
0010
I wykonujemy działanie 0&0 = 0 zatem od lewej strony czwarty bit wyniku=0

Zatem 8&2= '0000' co po przeliczeniu na system dziesiętny daje liczbę 0.

B) alternatywa inaczej suma
Operator: |
5|3
Zapis dziesiętny na binarny:
0101 //5
0011 //3
Teraz bierzemy kolejne bity, wyznaczając ich sumę. Rozpiska:
1|1=1
1|0=1
0|1=1
0|0=0

0101
0011
Wykonujemy działanie 0|0 = 0 zatem od lewej strony pierwszy bit wyniku=0
0101
0011
Wykonujemy działanie 1|0 = 1 zatem od lewej strony drugi bit wyniku=1
0101
0011
Wykonujemy działanie 0|1 = 1 zatem od lewej strony trzeci bit wyniku=1
0101
0011
I wykonujemy działanie 1&1 = 1 zatem od lewej strony czwarty bit wyniku=1

Zatem 5|3 = '0111' co po przeliczeniu na system dziesiętny daje liczbę 7.

c) różnica symetryczna inaczej XOR
Operator: ^
3^1
Zapis dziesiętny na binarny:
0011 //3
0001 //1
Teraz bierzemy kolejne bity, wyznaczając ich różnicę symetryczną. Rozpiska:
1^1=0
1^0=1
0^1=1
0^0=0

0011
0001
Wykonujemy działanie 0^0 = 0 zatem od lewej strony pierwszy bit wyniku=0
0011
0001
Wykonujemy działanie 0^0 = 0 zatem od lewej strony drugi bit wyniku=1
0011
0001
Wykonujemy działanie 1^0 = 1 zatem od lewej strony trzeci bit wyniku=1
0011
0001
I wykonujemy działanie 1^1 = 0 zatem od lewej strony czwarty bit wyniku=1

Zatem 3^1 = '0010' co po przeliczeniu na system dziesiętny daje liczbę 2.

d) negacja
Operator: ~
~1
Zapis dziesiętny na binarny:
0001 //1
Operacja jednoargumentowa - nie porównujemy bitów ze wzorcem, a jedynie zamieniamy każde 0 na 1 i odwrotnie. Stąd:
~0001
1110
Przykład ukazuję ideę - nie ma sensu przeliczać na system dziesiętny, bo w Pawnie nie spotkamy 4bitowego typu int.

3. Używanie:
Gdy na liczbę w pamięci komputera spojrzymy jak na zbiór wartości logicznych (1 lub 0) to w prosty sposób wykorzystać możemy operacje bitowe do przechowywania i sprawdzania zawartości składowej w całości.
Dokładniej chodzi o to, że każdej wartości 0 lub 1 przypisana jest jakaś funkcja (znaczenie). Mamy ciąg

0101

Możemy przeliczyć to na system dziesiętny, ale łatwiej pracować w takiej postaci. Każda liczba to informacja czy dana funkcja składowa jest aktywna (1) lub nie (0).

Przykład:

Do zaprezentowania możliwego użycia wybrałem prawa dostępu - chmod.
Określa jakie operacje wykonać można na danych pliku/katalogu. Składa się z 3 wartości. Każda z operacja ma swój odpowiednik literowy i liczbowy.

"wykonywanie" "x" 1
"zapis" "w" 2
"odczyt" "r" 4

Ograniczam zagadnienie do 1 grupy (zwykle określa się chmod dla 3 grup) pokażę jak zamienić zapis literowy na liczbowy i odwrotnie.

Pierwsze co musimy zrobić to zdecydować, które bity za co odpowiadają:
#define CHNONE 	001>>1	//000=0
#define CHEXEC 	001	//001=1
#define CHWRITE 001<<1	//010=2
#define CHREAD 	001<<2	//100=4
W tym wypadku kolejność ma znaczenie. Gdy będziemy tworzyć własne zestawy już nie będzie to takie ważne.

Napiszmy teraz funkcję, która przeliczy liczbę na skrót literowy. Pomijam sprawdzanie poprawności danych wejściowych, bo nie to jest tutaj istotne.
Funkcja strcat() dodaję podany ciąg na koniec wskazanego tekstu.
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Chmod"
#define VERSION "1.0"
#define AUTHOR "R3X"

#define CHNONE 	001>>1	//000=0
#define CHEXEC 	001	//001=1
#define CHWRITE 001<<1	//010=2
#define CHREAD 	001<<2	//100=4

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("chmod_num2str","chmod_num2str",-1,"<chmod num>");
}
public chmod_num2str(id,level,cid)
{
	//sprawdzenie prawa dostępu komendy i liczby argumentów
	if (!cmd_access(id,level,cid,2))
		return PLUGIN_HANDLED; 
	//deklaracja zmiennych
	new chmod_num,tekst[2],chmod_str[4]="";
	//pobranie argumentu
	read_argv(1, tekst, 1); 
	//konwersja na liczbę
	chmod_num=str_to_num(tekst); 
	//sprawdzenie bitu odpowiadającego za odczyt
	if(chmod_num & CHREAD)
	{
		//dodaje 'r'
		strcat(chmod_str,"r",3);
	}
	//sprawdzenie bitu odpowiadającego za zapis
	if(chmod_num & CHWRITE)
	{
		//dodaje 'w'
		strcat(chmod_str,"w",3);
	}
	//sprawdzenie bitu odpowiadającego za wykonywanie
	if(chmod_num & CHEXEC)
	{
		//dodaje 'x'
		strcat(chmod_str,"x",3);
	}	
	console_print(id,"chmod[%d] -> ^"%s^"",chmod_num,chmod_str);
	return PLUGIN_HANDLED;
}

Dlaczego używamy tutaj iloczynu?
Wyzerują się wszystkie nieistotne w danym przypadku bity i zostanie do porównania ten, o który nam chodzi.
chmod_num2str 6
Przejdźmy fragment drogi chmod_num.

Przypisanie wartości z argumentu. Przyjmijmy, że będzie to 6 (110).
Pierwsze sprawdzenie:
chmod_num & CHREAD
(szukamy więc iloczynu takich liczb:)
110
100
Kolejno od lewej:

1&1=1

1&0=0

0&0=0

Ostatecznie wynik = 100 - nie jest równy 0 i przejdzie pozytywnie test logiczny if().

Spróbuj samodzielnie wykonać test logiczny nr 2 i 3.
  • +
  • -
  • 19


#247771 Plugin z zasadami

Napisane przez Leihto w 09.05.2011 14:28

Zrob sobie obrazek i wklej zamiast amxx.pl (logo :P)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR...224/loose.dtd">
<html>
<head>
<title>Zasady</title>
<style type="text/css">
pre {
font-family:Verdana,Tahoma;
color:#FFB000;
}
body {
background:#000000;
margin-left:8px;
margin-top:0px;
}
a {
text-decoration: underline;
}
a:link {
color: #FFFFFF;
}
a:visited {
color: #FFFFFF;
}
a:active {
color: #FFFFFF;
}
a:hover {
color: #FFFFFF;
text-decoration: underline;
}
</style>
</head>
<body>
<pre>
<center>
<img src="http://amxx.pl/foty/logo_cc.jpg" alt="">
</center>
</tr>
</pre>
</body>
</html>


Ten plik zapisz jako regulamin.txt w cstrike ;)

P.S. Jak chcesz zmienic kolor tla to tu wklej kod html :) "background:#000000;"

Aa i jeszcze jedno to jest motd.txt :D :D
  • +
  • -
  • 1