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
 

Afker - zdjęcie

Afker

Rejestracja: 06.07.2014
Aktualnie: Nieaktywny
Poza forum Ostatnio: 13.03.2016 16:56
-----

#315995 1HP dla klasy na stałe

Napisane przez d0naciak w 31.10.2011 19:08

W tym tutku pokażę jak zrobić aby klasa miała 1hp, lecz mimo wzrostu witalności ono nie rośnie

1. Tworzymy przykładową klasę :

#include <amxmodx>
#include <codmod>

new bool:ma_klase[33];


new const nazwa[] = "Cwaniak";
new const opis[] = "Tylko 1 hp";
new const bronie = 0;
new const zdrowie = 0;
new const kondycja = 15;
new const inteligencja = 15;
new const wytrzymalosc = 15;


public plugin_init()
{
register_plugin(nazwa, "1.0", "d0n tHe Pr0oo");

cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}


2. Na koniec dodajemy

public cod_class_enabled(id)
{
ma_klase[id] = true;
}

public cod_class_disabled(id)
{
ma_klase[id] = false;
}



3. Pod

#include <codmod>


Dodajemy

#include <fun>


4. Oraz do public cod_class_enabled dodajemy :

set_user_health(id, 1); //cyfra jeden ustala hp na start

Aby wyglądało tak :

public cod_class_enabled(id)
{
ma_klase[id] = true;
set_user_health(id, 1);
}


5. Do public plugin init dodajemy :
register_event("Health", "Health", "be")


U mnie to bedzie wyglądać tak :

public plugin_init()
{
register_plugin(nazwa, "1.0", "d0n tHe Pr0oo");

cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

register_event("Health", "Health", "be")
}


6. I na koniec pluginu należy jeszcze dodać :

public Health(id)
{
if(ma_klase[id] && is_user_alive(id) && read_data(1) > 1)
{
set_user_health(id, 1); //Tutaj cyfra 1, także ustala hp
}
}




Kompilujemy i gotowe !
  • +
  • -
  • 7


#214052 [Tutorial]Bronie 1/x dla klas.

Napisane przez KariiO w 08.02.2011 22:15

Poradnik jak sama nazwa wskazuję ma dać klasie szanse na natychmiastowe zabicie z danej broni.

Otwieramy sma klasy którą chcemy edytować a następnie:

Na górze znajdź:
#include <amxmodx>
Dodaj pod:
#include <hamsandwich>
I pod tym wyżej dodaj:
#define DMG_BULLET (1<<1)
Do plugin_init:
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

*Jeżeli klasa ma już te dwie opcje dodane to już nie trzeba ^^

Najlepiej na dół:
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED; 
	
	if(!ma_klase[idattacker])
		return HAM_IGNORED;
	
	if(damagebits & DMG_BULLET)
	{
		new weapon = get_user_weapon(idattacker);
		
		if(weapon == CSW_BRON && damage > 20.0 && random_num(1,2) == 1) 
			cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
			
	}
	
	return HAM_IGNORED;
}

Gdy zdarzy się że dana klasa ma już 1/x z jakieś broni dodajemy tylko:
if(weapon == CSW_BRON && damage > 20.0 && random_num(1,2) == 1) 
			cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

BRON - z jakiej broni masz szanse na natychmiastowe zabicie...nazwy itd
:
Nazwy broni i ammo do give_item (+ speed) - AMXX.pl: Support AMX Mod X
1,2-szansa 1/2 czyli 50% jeżeli chcesz zmienić np. na 25% dajemy 1,4 itd. itd...
Jeśli po prostu ma zabijać na 100% bez losowania to zamieniamy to
:
if(weapon == CSW_BRON && damage > 20.0 && random_num(1,2) == 1)

Na to:
if(weapon == CSW_BRON && damage > 20.0)

Męczy mnie tu:
damage > 20.0
Funkcja ma być "uaktywniona" jeżeli z noża zadamy więcej obrażeń niż 20 HP , myślałem o usunięciu ale wole nie kombinować :>

Jeżeli już skończyliśmy to plik amxx ładnie podmienić/dodać :)
  • +
  • -
  • 29


#189817 Jak zrobić prostą klasę

Napisane przez QTM. Peyote w 19.11.2010 14:39

W tym tutorialu pokażę jak stworzyć prostą klasę do nowego CodModa.
*.sma Naszej klasy będzie wyglądać tak: (Niżej wytłumaczę co od czego)
#include <amxmodx>
#include <codmod>

new const nazwa[] = "Henio";
new const opis[] = "Brak";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;
new const zdrowie = 13;
new const kondycja = 69;
new const inteligencja = 2;
new const wytrzymalosc = 15;


public plugin_init()
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

#include <amxmodx>

  • Jeżeli nie wiesz poczytaj inne tutoriale.
#include <codmod>

  • Wymagany plik codmod.inc który musimy wrzucić do folderu include naszego kompilatora.
  • Dołącza plik nagłówkowy CodModa dzięki któremu będziemy mogli używać natywów takich jak na przykład cod_register_class.
new const nazwa[] = "Henio";

  • Nazwa naszej klasy - u nas będzie to Henio.
new const opis[] = "Brak";

  • Opis naszej klasy - u nas jest Brak.
  • Jeżeli ktoś się dziwi się dlaczego nie opisuję jakie bronie, szybkość i zdrowie ma klasa to odpowiem - To wyświetla się osobno.
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;

  • Tutaj określamy jakie bronie ma mieć Henio.
  • Przed każdą bronią dodajemy 1<<
  • Jeżeli chcemy dodać następną to wstawiamy | - pełni rolę czegoś w rodzaju.. przecinka.
new const zdrowie = 13;

  • Punkty statystyki zdrowie jakie klasa dostanie na start.
  • Czyli w naszym przypadku jeżeli damy dodatkowe 13 zdrowia to na start będziemy mieli 113 hp
new const kondycja = 69;

  • Ilość punktów kondycji jaką Henio ma dostać na start. Henia gnębią koledzy dlatego musi szybko uciekać.
  • To zastępuje dawne procenty szybkości naszej klasy
new const inteligencja = 2;

  • Punkty inteligencji na start.
new const wytrzymalosc = 15;

  • Punkty wytrzymalosci na start.
  • Można używać zamiast kamizelek.

W plugin_init rejestrujemy Henia, żeby pojawił się w menu wybierania klas:
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

  • +
  • -
  • 74


#57507 Kompilacja lokalna

Napisane przez R3X w 15.04.2009 21:20

Kompilacja lokalna

1. Lokalna?
Nie będę tłumaczył samego zagadnienia kompilacji - chodzi o zrobienie z pliki .sma pliku .amxx, który jest wykorzystywany przez serwer.

Lokalna oznacza, że przeprowadzamy ją na swoim komputerze. Webcompiler sprawdza się znakomicie w przypadku pojedynczego pliku .sma. Większe pluginy są często podzielone na fragmenty tak, aby praca z ich kodem była przyjemniejsza - stąd oprócz .sma dostajemy pliku .inl lub .inc.

.inl - te pliki trafiają do tego samego folderu co .sma
.inc - te natomiast do scripting/include/

Są wyjątki, ale taka zasada obowiązuje w większości przypadków. Tak czy inaczej pliki te są dołączane do .sma w trakcie kompilacji dyrektywami #include, więc zmiana w .inl czy .inc po kompilacji będzie odczuwalna w .amxx.

2. Proces

Musimy zaopatrzyć się w AMXX-Studio: Podstawowe pliki - Nieoficjalny polski support AMX Mod X , w dniu pisania tutka byłby to plik:

AMX Mod X Studio
* v1.4.3



Uruchom studio.

Należy wskazać położenie kompilatora amxxpc.exe (znajdziesz go w paczce Base amxmodx/scripting/) i określić miejsce tworzenia pliku .amxx. Całkiem możliwe, że już przy pierwszym uruchomieniu ścieżka do kompilatora będzie poprawna, wtedy ustaw tylko folder wyjściowy.

Dołączona grafika

dalej Compiler -> Compiler Settings

Dołączona grafika

Teraz otwórz plik .sma (File->Open) i naciśnij F9. Jeżeli nie otrzymasz żadnych błędów tylko coś jak to:

Dołączona grafika


w podanym wcześniej folderze powinieneś odnaleźć skompilowany kod w pliku .amxx.

3. Posłowie
Każdy programista pluginów sobie poradzi, ten tekst skierowany jest głównie do ludzi zajmujących się Pawnem okazjonalnie.
  • +
  • -
  • 17


#587145 Jak dodać 1/x z wybranej broni w klasie

Napisane przez RasiaQ w 21.11.2013 18:29

Witam,
W związku z masą tematów "Nie mogę dodać 1/x z broni" albo "Jak dodać 1/x z broni" postanowiłem napisać poradnik, który pokaże, jak to zrobić.
 
1.W includach dodaj:

#include <hamsandwich>

 
*Jeśli już masz, to nie musisz dodawać
 
2.Pod wszystkimi include:

#define DMG_BULLET (1<<1)

3.Zmienna:

new ma_klase[33];

 
4. W plugin_init rejestrujemy:

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

*Jeśli nie mamy, to dodajemy:

public cod_class_enabled(id)
{
    ma_klase[id] = true;

}

public cod_class_disabled(id)
{
        ma_klase[id] = false;

}

5. A następnie dodajemy public:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
        
    if(!ma_klase[idattacker])
        return HAM_IGNORED;      
        
    if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET && random_num(1, x) == 1)
        cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
            
    return HAM_IGNORED;
}

 
CSW_BRON - Zmieniasz na wybraną broń np. CSW_AK47
 
6. W zarejestrowanym publicu zwróć uwagę na to:

random_num(1, x) == 1)

x zmieniasz na szansę na zabicie. Jeśli ustawisz 3, to klasa będzie miała 1/3 szans na zabicie z danej broni.
 
7. Jeśli chcemy, aby klasa miała natychmiastowe zabicie, to usuwamy:

&& random_num(1, x) == 1

Czyli nasz warunek będzie wyglądał tak:

if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET)
    cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

 
8*. Jeśli w klasie zarejestrowany jest już powyższy public, a chcemy dodać 1/x z innej broni to pod:

if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET && random_num(1, x) == 1)
    cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

dodajemy:

if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_BRON && damagebits & DMG_BULLET && random_num(1, x) == 1)
    cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

 
To chyba wszystko jasne.
 
Aby dodać 1/x z kosy (PPM):

Spoiler

 

Aby dodać 1/x z HE:

Spoiler

 

Mam nadzieję, że poradnik zrozumiały i w miarę się przydał. POWODZENIA !


  • +
  • -
  • 21


#698201 [ROZWIĄZANE] Prośba o naprawienie klasy

Napisane przez oeN. w 21.04.2015 08:21

Sprawdź.

Załączone pliki


  • +
  • -
  • 1


#698096 [ROZWIĄZANE] Prośba o naprawienie klasy

Napisane przez oeN. w 20.04.2015 09:40

Proszę.

Załączone pliki


  • +
  • -
  • 1


#693870 Nie działa niewidzialność

Napisane przez GreM! w 22.03.2015 19:13

#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
        
new const nazwa[]   = "Nano";
new const opis[]    = "1/3 z scouta,full niewidka,400/800 grawitacji.";
new const bronie    = (1<<CSW_SCOUT)|(1<<CSW_HEGRENADE)|(1<<CSW_DEAGLE);
new const zdrowie   = -99;
new const kondycja  = 100;
new const inteligencja = 10;
new const wytrzymalosc = 10;
    
new ma_klase[33];

public plugin_init()
{
	register_plugin(nazwa, "1.0", "amxx.pl");

	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
   
	RegisterHam(Ham_Spawn, "player", "fwSpawn_Grawitacja", 1);


	register_forward(FM_PlayerPreThink, "fwPrethink_AutoBH");
	
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");

}
public cod_class_enabled(id)
{

 	entity_set_float(id, EV_FL_gravity, 400.0/800.0);
	set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 1);
	give_item(id, "weapon_hegrenade");
	ma_klase[id] = true;

}
public cod_class_disabled(id)
{
    
 	entity_set_float(id, EV_FL_gravity, 1.0);
	set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
	ma_klase[id] = false;

}
public fwSpawn_Grawitacja(id)
{
	if(ma_klase[id])
		entity_set_float(id, EV_FL_gravity, 400.0/800.0);
}
public fwPrethink_AutoBH(id)
{
	if(!ma_klase[id])
		return PLUGIN_CONTINUE

	if (pev(id, pev_button) & IN_JUMP) {
		new flags = pev(id, pev_flags)

		if (flags & FL_WATERJUMP)
			return FMRES_IGNORED;
		if ( pev(id, pev_waterlevel) >= 2 )
			return FMRES_IGNORED;
		if ( !(flags & FL_ONGROUND) )
			return FMRES_IGNORED;

		new Float:velocity[3];
		pev(id, pev_velocity, velocity);
		velocity[2] += 250.0;
		set_pev(id, pev_velocity, velocity);

		set_pev(id, pev_gaitsequence, 6);

	}
	return FMRES_IGNORED;
}
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!is_user_connected(idattacker))
		return HAM_IGNORED; 
	
	if(!ma_klase[idattacker])
		return HAM_IGNORED;
	
	if(damagebits & DMG_BULLET)
	{
		new weapon = get_user_weapon(idattacker);
		
		if(weapon == CSW_SCOUT && damage > 20.0 && random_num(1,3) == 1) 
			cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
			
	}
	
	return HAM_IGNORED;
}

stock fm_set_rendering(entity, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16) 
{
	new Float:RenderColor[3];
	RenderColor[0] = float(r);
	RenderColor[1] = float(g);
	RenderColor[2] = float(b);
	
	set_pev(entity, pev_renderfx, fx);
	set_pev(entity, pev_rendercolor, RenderColor);
	set_pev(entity, pev_rendermode, render);
	set_pev(entity, pev_renderamt, float(amount));
	
	return 1;
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/

Łap  :)


  • +
  • -
  • 1


#691966 [ROZWIĄZANE] Proszę o dodanie do klasy Elektryk

Napisane przez GreM! w 09.03.2015 13:28

A komplikowałeś

Chyba kompilowałeś  :facepalm:

Mniejsza, jak ma działać jak gościu nic nie dodał tylko zmienił opis...  :facepalm:

 

To niżej działa.

Załączone pliki


  • +
  • -
  • 1


#297366 Flagi

Napisane przez DarkGL w 18.09.2011 11:34

Flagi dostępne standardowo :
ADMIN_ALL - wszystkie
ADMIN_IMMUNITY - flaga "a"
ADMIN_RESERVATION - flaga "b"
ADMIN_KICK - flaga "c"
ADMIN_BAN - flaga "d"
ADMIN_SLAY - flaga "e"
ADMIN_MAP - flaga "f"
ADMIN_CVAR - flaga "g"
ADMIN_CFG - flaga "h"
ADMIN_CHAT - flaga "i" *
ADMIN_VOTE - flaga "j"
ADMIN_PASSWORD - flaga "k"
ADMIN_RCON - flaga "l"
ADMIN_LEVEL_A - flaga "m"
ADMIN_LEVEL_B - flaga "n"
ADMIN_LEVEL_C - flaga "o"
ADMIN_LEVEL_D - flaga "p"
ADMIN_LEVEL_E - flaga "q"
ADMIN_LEVEL_F - flaga "r"
ADMIN_LEVEL_G - flaga "s"
ADMIN_LEVEL_H - flaga "t"
ADMIN_MENU - flaga "u"
ADMIN_ADMIN - flaga "y"
ADMIN_USER - flaga "z"
Flagi dodatkowe :
ADMIN_FLAG_V - flaga "v"
ADMIN_FLAG_W - flaga "w"
ADMIN_FLAG_X - flaga "x"

żeby ich używać trzeba dodać do pluginu
#define ADMIN_FLAG_V (1<<21)
#define ADMIN_FLAG_W (1<<22)
#define ADMIN_FLAG_X (1<<23)

sprawdzenie czy gracz ma flage
if(get_user_flags(id) & ADMIN_LEVEL_A){
	//gracz ma flage m
}

sprawdzanie czy gracz nie ma flagi
if( !(get_user_flags(id) & ADMIN_LEVEL_A) ){
	//gracz nie ma flagi m
}

sprawdzanie czy gracz ma kilka flag
public has_flags(id,string[])
{
	new ret=1
	new byte
	
	new len = strlen(string)
	new p_flag = get_user_flags(id)
	
	for(new i=0;i<=len;i++)
	{
		if(string[i]>='a' && string[i]<='z') byte = (1<<(string[i]-'a'))
		else if(string[i]>='A' && string[i]<='Z') byte = (1<<(string[i]-'A'))
		else if(string[i]==',' && ret==1) return 1
		else if(string[i]==',') ret=1
		if(byte!=0 && !(p_flag & byte)) ret=0

		byte=0
	}
	
	return ret
}

Przyklady:
Jak ma dzialac na - a lub b lub c - to dajemy
has_flag(id,"a,b,c")
Jak ma dzialac tylko gdy user ma flage - a i b i c - to dajemy
has_flag(id,"abc")
Jak ma dzialac w przypadkach - a i b lub a i c lub b i c - to dajemy
has_flag(id,"ab,ac,bc")

Gracz musi mieć wszystkie 3 flagi
new flaga = (ADMIN_LEVEL_A | ADMIN_LEVEL_B | ADMIN_LEVEL_C)
if((get_user_flags(id) & flaga) == flaga) {
	// KOD
}
lub inaczej
new sprawdz = get_user_flags(id)
if(sprawdz & ADMIN_LEVEL_A && sprawdz & ADMIN_LEVEL_B && sprawdz & ADMIN_LEVEL_C) {
	// KOD
}

Inne przykłady:
if (get_user_flags(id) & DEFINICJA_FLAGI) {
	//osoba ma jakas tam flage
} else {
	//osoba nie ma jakies tam flagi
}

public client_authorized(id)
{
	if( get_user_flags(id) & ADMIN_BAN)
	client_print(0,print_chat,"Admin wchodzi na server")
}

  • +
  • -
  • 55


#209383 Dodawanie frakcji - 2 sposoby

Napisane przez Cypis' w 25.01.2011 21:21

Frakcje czytane z pliku cod_frakcje.ini w configs.

Jak zainstlować:
Gotowiec:
Spoiler

Edytacja Silnika:
Spoiler


Instrukcja jak dodac frakcje:
Spoiler

  • +
  • -
  • 139