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
 

SopeleQ1337 - zdjęcie

SopeleQ1337

Rejestracja: 24.01.2016
Aktualnie: Nieaktywny
Poza forum Ostatnio: 10.12.2018 22:31
-----

#754046 Problem z podmianą modelu dla VIP'a

Napisane przez Rivit w 09.12.2018 18:10

        precache_model("models/player/vip_assasin/assasin.mdl")
        precache_model("models/player/vip_assasin/assasin.mdl")

z tego co pamiętam podfolder i nazwa modelu muszą sie nazywać tak samo czyli np models/player/assasin/assasin.mdl

 

 

ale ręki se nie dam uciąć


  • +
  • -
  • 1


#740326 Dodanie wyświetlania wiadomości HUD + ColorChat

Napisane przez d0naciak w 18.06.2017 08:55

Sprawdź.

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <colorchat>
 
#define VERSION "0.1"
 
#define MAX 32
#define IsPlayer(%1) (1 <= %1 <= MAX && is_user_connected(%1))
 
new g_bAsysta[MAX+1][MAX+1];
 
public plugin_init() {
register_plugin("Dodatkowy Exp", VERSION, "DarkGL")
 
register_event("DeathMsg", "eventDeath", "a");
register_event("HLTV", "newRound", "a", "1=0", "2=0") 
 
RegisterHam(Ham_TakeDamage, "player", "fwDamage", 1);
}
 
public newRound()
{
for(new i = 0;i <= MAX;i++){
for(new j = 0;j <= MAX;j++)
g_bAsysta[i][j] = 0;
}
}
 
public client_connect(id){
for(new j = 0;j <= MAX;j++) g_bAsysta[id][j] = 0;
}
 
public fwDamage(iVictim, iInflicter, iAttacker, Float:fDamage, iBitDamage){
if( (IsPlayer(iAttacker) && IsPlayer(iVictim)) && get_user_team(iVictim) != get_user_team(iAttacker) && iVictim != iAttacker)
g_bAsysta[iAttacker][iVictim] += floatround(fDamage);
 
return HAM_IGNORED;
}
 
public eventDeath(){
new iKiller = read_data(1);
new iVictim = read_data(2);
 
if(IsPlayer(iKiller) && IsPlayer(iVictim) && iKiller != iVictim)
{
new sName[32];
get_user_name(iVictim, sName, sizeof sName - 1);
 
for(new i = 0 ; i <= MAX; i ++){
if(i == iKiller) continue;
 
if(g_bAsysta[i][iVictim] >= 50){ 
 
set_hudmessage(255, 16, 255, -1.0, 0.30, 0, 2.0, 2.0, 0.05, 0.05, 4)
show_hudmessage(i, "Asystowales w zabiciu gracza %s^n^n+ 1 Frag", sName);
 
ColorChat(i, GREEN, "[Frag-Armia.pl] ^x01 Asysta na ^x03 %s ^x01 +1 FRAG", sName);
 
 
set_user_frags(i, get_user_frags(i)+1)
}
 
g_bAsysta[i][iVictim] = 0;
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1250\\ deff0\\ deflang1045{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/

  • +
  • -
  • 1


#501835 RoundSound

Napisane przez speedkill w 15.01.2013 20:10

RoundSound

opis
Jest to plugin większości znany, odtwarza on muzykę na koniec rundy, w zależności który team wygrał.
Ktoś spyta czym ten plugin różni się od tych pozostałych?

Plugin ten posiada:
  • Wczytywanie utworów z pliku RoundSound.ini
  • Playlista dla każdego teamu z osobna
  • Możliwość przesłuchania każdego z utworu
  • Możliwość ustawienia dla którego teamu ma być dana piosenka
  • Tytuły piosenek podajemy w tym samym pliku
  • Plugin wczytuje wszystko na początku mapy, tylko raz!
  • Dokładne logowanie o przebiegu wczytywania każdej piosenki
  • Możliwość włączenia/wyłączenia roundsound'a
  • Pokazywanie jaka piosenka obecnie jest odgrywana
  • Możliwość ustawienia m.in. gdzie ma się pokazywać jaka piosenka jest odgrywana ( czat lub ukrycie tego )
  • Komenda /last, dzięki której możemy zobaczyć tytuł ostatniej piosenki
  • Wyłączanie / włączanie, odsłuchiwanie utworów odbywa się w menu
  • Reklama na czacie co ustalony czas cvarem, o istnieniu takich komend jak /last itp.
  • Blokowanie pluginu, jeżeli plik RoundSound.ini nie istnieje w folderze configs/
  • Możliwość wyłączenia reklam dotyczących roundsound'a
  • Możliwość zmiany pozycji wyświetlania obecnego utworu
  • Możliwość ustawienia czy muzyka ma się odtwarzać losowo czy po kolei
  • Możliwość wyświetlenia użytkownikowi tytłu piosenki, a także wyłączenie tego
Resztę zobaczycie sami ;)

screenshot

1.JPG 2.JPG 3.JPG 4.JPG 5.JPG

wymagane moduly
amxmodx
cvary
 
Roundsound_ads_time      /* Czas wyświetlania wiadomości w sekundach [ domyślnie 120 ] | Limit nie mniej niż 30 sekund  */
Roundsound_prefix        /* Prefix wiadomości dotyczących roundsounda [ domyślnie RoundSound ]   */
Roundsound_show_type     /* Wyświetlanie informacji o obecnym utworze [ domyślnie 1 ] | 1 - Chat | 0 - Brak   */
Roundsound_random_music  /* Czy muzyka ma się odtwarzać losowo [ domyślnie 0 ] | 1 - Losowo | 0 - Po kolei   */
Roundsound_show_playlist /* Czy ma pokazywać nazwy utworów ( w odsłuchiwaniu, pod koniec rundy lub gdy gracz użyje komendy /last ) [ domyślnie 1 ] | 1 - Tak | 0 - Nie    */
komendy 
Otwiera główne menu, w którym można wyłączyć lub włączyć roundsounda, posłuchać utworów CT / TT, wyłączyć reklamy, oraz zmienić pozycję wyświetlania:
 
say /rs
say /roundsound
say_team /rs
say_team /roundsound
Pokazywanie ostatniego utworu, który został odegrany:
 
say /last
say_team /last
konfiguracja

Tworzymy plik RoundSound.ini w folderze configs, następnie uzupełniamy go tak:
"Ścieżka" "Tytuł" "Team"
Przykładowo:
"misc/RoundSound/1.mp3" "All I Want For Christmas Is You" "TT"
Ważne! Ścieżkę podajemy tak jakbyśmy się znajdowali w folderze sound/, wyżej został podany przykład.

instalacja
Standardowa.

inne informacje

Autor: Michał "speedkill" Mulik

download
Czysta wersja:
Załączony plik  amxmodx.rar   17,71 KB  6732 Ilość pobrań


Załączony plik  RoundSound.sma   10,41 KB  4013 Ilość pobrań
  RoundSound.amxx
  • +
  • -
  • 72


#740222 Problem z hudem i sprite'ami

Napisane przez d0naciak w 14.06.2017 18:57

To że plugin jest w cholerę nieoptymalny swoją drogą, ale nie działa m.in. dlatego że po 1. get_user_stats z tego co mi wiadomo nie zmienia na bieżąco fragów w rankingu, tylko co rundę jak nie lepiej (sam nie wiem dokładnie, raz próbowałem zmieniać wczytywać co zabójstwo i lipa). Druga sprawa to sprawdzanie czy awansował - nie klej się kupy, przeanalizuj dokładnie: 

 

@edit i **** w pizde strzelił, napisałem już chyba można to nazwać referatem pod [.code] co tutaj jest źle, a było po prostu o czym pisać, to mi się usunęło, poprawcie to w końcu xD

To co napisałem wyżej to tylko garstka błędów w tym pluginie, ale one pierwsze rzucają mi się w oczy.

@edit2 nawet ta wersja z while nie zadziała, to else działa tak: nie możesz awansować? spadek  :giggle:

if((kdratio[target] >= liczby[ranga[target]]) && (stats[0] >= rangi[ranga[target]][0]) && ranga[target] < limit)
ranga[target]++
 
else if(kdratio[target] < liczby[ranga[target]] || stats[0] < rangi[ranga[target]][0])
{
if(ranga[target] > limit_min)
ranga[target]--
}

  • +
  • -
  • 1


#740209 Problem z hudem i sprite'ami

Napisane przez Yellon w 14.06.2017 11:44

Trzymaj dodałem ci sprite i naprawiłem hud. Tylko zmień scieżki do sprite bo dałem przykładowe. I jak coś to nie testowałem ale raczej powinno być okej.

Załączone pliki


  • +
  • -
  • 1


#740210 Problem z hudem i sprite'ami

Napisane przez _McHappy w 14.06.2017 11:47

Ciało funkcji rank():

public rank(param[])
{
	static id, stats[8], body[8], iTarget;
	
	id = param[0]; //id obserwatora
	iTarget = ( is_user_alive(id) ? id : pev(id, pev_iuser2) ); //obserwator żyje? TAK: obliczenia dla obserwatora (czyli gracza). NIE: obliczenia dla obserwowanego gracza
	
	if(!iTarget) //jeżeli gracz nie  obserwuje nikogo (free cam itp) - dajemy spokój
		return PLUGIN_CONTINUE;
	
	get_user_stats(iTarget, stats, body)		
	
	static Float:kdratio[33]
	kdratio[iTarget] = float(stats[0]) / float(stats[1])

	if((kdratio[iTarget] >= liczby[ranga[iTarget]]) && (stats[0] >= rangi[ranga[iTarget]][0]) && ranga[iTarget] < limit)
		ranga[iTarget]++
		
	else if(kdratio[iTarget] < liczby[ranga[iTarget]] || stats[0] < rangi[ranga[iTarget]][0])
	{
		if(ranga[iTarget] > limit_min)
			ranga[iTarget]--
	}
		
	static name[33]
	get_user_name(iTarget,name,32)
	cvar = get_cvar_num("rangi_kolor")
	switch(cvar)
	{
		case 0:
		{
			set_hudmessage(255, 255, 255, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget])
		}
		case 1:
		{
			set_hudmessage(255, 0, 0, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget])
		}
		case 2:
		{
			set_hudmessage(0, 255, 0, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "[Nick: %s]^n[Ranga: %s]^n[Zabojstwa: %d/%d]^n[K/d ratio %0.2f%]", name , rangi[ranga[iTarget]][1], stats[0], rangi[ranga[iTarget]][0], kdratio[iTarget])	
		}
		case 3:
		{
			set_hudmessage(0, 64, 128, 0.01, 0.22)
			ShowSyncHudMsg(id, sync, "^n| Forum: Frag-Armia.pl |^n| Nick: %s |^n| Ranga: %s |^n| Zabojstwa: %d |^n| K/D ratio: %0.2f% |^n| VIP: %s |", name , rangi[ranga[iTarget]][1], stats[0], kdratio[iTarget], get_user_flags(iTarget) & VIP_FLAG ? "Tak" : "Nie")
		}
	}
	
	return PLUGIN_CONTINUE;
}

Poanalizuj, potestuj, popytaj etcetera...


  • +
  • -
  • 1


#740126 Problem z hudem i sprite'ami

Napisane przez _McHappy w 08.06.2017 06:16

Aby rozwiązać ten problem musisz rozważyć 2 przypadki.
1. Gracz obserwujący żyje {chyba oksymoron xD} (wtedy widzi swoje statystyki) - to już posiadasz
2. Gracz obserwujący nie żyje ( wtedy widzi statystyki osoby obserwowanej - identyfikator pev(id, pev_iuser2) ) - to też, z tego co widzę posiadasz, lecz w błędnej formule.

W funkcji wyświetlającej hud musisz sprawdzić, czy gracz jest żywy i w zależności od tego, wyświetlać mu statystyki własne lub innego gracza.

Jednak cały problem tkwi w zmiennej 'id'. Zauważ, że sprytnie zmieniasz ją na początku funkcji na wspomnianą pev(id, pev_iuser2), lecz jak widzisz, pod koniec funkcji używasz tego samego, zmienionego 'id' do wyświetlania HUD'u. Wniosek? Gdy ty nie żyjesz i obserwujesz gracza, to napis zamiast Tobie, wyświetla się podwójnie temu właśnie graczowi ;)

Odseparuj zmienną 'id' do obliczeń, a może raczej ją sklonuj i modyfikuj, podczas gdy oryginalną zastosuj do wyświetlania HUD'a.
  • +
  • -
  • 2


#739658 Modyfikacja pluginu na przenoszenie drużyn

Napisane przez _McHappy w 15.05.2017 19:39

Trzymaj i zapoznaj się z użyciem natywu ;)

Załączone pliki


  • +
  • -
  • 1


#739613 Modyfikacja pluginu na przenoszenie drużyn

Napisane przez _McHappy w 13.05.2017 23:41

No ładnie, ładnie. Co nowszy temat to inny autor...
Z tematu:
https://amxx.pl/topi...-zmiana-drużyn/

Spróbuj to poniżej, kamizelkę modyfikujesz natywem:
https://amxx.pl/doku..._set_user_armor

Załączony plik  Kompleksowa_zamiana_druzyn.sma   3,17 KB  17 Ilość pobrań
  Kompleksowa_zamiana_druzyn.amxx
  • +
  • -
  • 1


#720466 Przeniesienie drużyn za pomocą komendy /switch

Napisane przez bioly05 w 13.02.2016 01:00

Przerobiłem plugin:

http://amxx.pl/topic...w-po-x-rundach/

 

Po wpisaniu /zmiana zamienia graczy nie restartując rundy nie zabierając ilości zabić/zgnonów i wygranych rund i resetuje pieniądze do 800 po wpisaniu komendy. Trochę się z tym namęczyłem i szczerze mówiąc pierwszy raz edytuje jakiś plugin tak "zaawansowanie", ale mam nadzieje, że Cie to satysfakcjonuje :D

Załączone pliki


  • +
  • -
  • 1


#720464 Przeniesienie drużyn za pomocą komendy /switch

Napisane przez wonsz żeczny w 13.02.2016 00:18

Masz plugin na zamiane drużyn ale przenieś punkty w ogóle. nie wiem czy jest wykonalne. Wątpię w to ale ja jeszcze nie jestem doświadczony więc do końca nie wiem.

 

Celowo ustawiłem komende /zamien zamiast /switch gdyż w amxmodx już istnieje taka komenda.

 

Załączony plik  switch.sma   571 bajtów  64 Ilość pobrań
  switch.amxx


  • +
  • -
  • 1


#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


#719349 Plugin na automatyczne przerzucanie druzyn po x rundach z wynikiem

Napisane przez RaS_ w 30.01.2016 12:56

Skopjuj 1 kod wgraj moduł http://amxx.pl/topic...talacja-orpheu/
i zobacz czy działa.
  • +
  • -
  • 1


#716589 Serwer nie wczytuje dproto

Napisane przez Sawczuk w 22.12.2015 21:19

Łap moją paczkę to czyste dproto + metamod + amx wszystko w najnowszych wersjach działające na moich wszystkich serwerach .

 

Wgrywasz restart i gotowe :)

Załączony plik  dproto+amx+metamod.zip   3,17 MB  50 Ilość pobrań


  • +
  • -
  • 1