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
 

Artemis - zdjęcie

Artemis

Rejestracja: 04.02.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 17.04.2016 15:03
-----

#716791 [FIX] Naprawa zacinających się karabinów przy strzelaniu "fullauto"

Napisane przez d0naciak w 25.12.2015 17:25

Poprawiony, ale osobiście nie testowałem

/* Plugin generated by AMXX-Studio */
 
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
 
#define PLUGIN "Weapon Shot Bugfix"
#define VERSION "1.0"
#define AUTHOR "AMXX Community"
 
 
#define m_flLastFireTime_Win32 79
#define m_flLastFireTime_LinuxDiff 4
 
public plugin_init () {
register_plugin(PLUGIN, VERSION, AUTHOR)
 
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_ak47" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_aug" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Item_Deploy, "weapon_awp" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_awp" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_WeaponIdle, "weapon_c4" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_c4" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_deagle" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_elite" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_fiveseven" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_WeaponIdle, "weapon_flashbang" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_SecondaryAttack, "weapon_flashbang" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_g3sg1" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_glock18" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_WeaponIdle, "weapon_hegrenade" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_SecondaryAttack, "weapon_hegrenade" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_knife" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_SecondaryAttack, "weapon_knife" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_m249" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_m3" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_Reload, "weapon_m3" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_SecondaryAttack, "weapon_m4a1" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_m4a1" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_mac10" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_mp5navy" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_p228" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_p90" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Item_Deploy, "weapon_scout" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_scout" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_sg550" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_sg552" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_WeaponIdle, "weapon_smokegrenade" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_SecondaryAttack, "weapon_smokegrenade" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_tmp" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_ump45" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_SecondaryAttack, "weapon_usp" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_usp" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_famas" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_galil" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_PrimaryAttack, "weapon_xm1014" , "BeforeGetNextAttackDelay" , false );
RegisterHam (Ham_Weapon_Reload, "weapon_xm1014" , "BeforeGetNextAttackDelay" , false );
}
 
public BeforeGetNextAttackDelay ( const  iEntity) {
set_pdata_float (iEntity, m_flLastFireTime_Win32, 0.0 , m_flLastFireTime_LinuxDiff);
}

A i problem występuje także na binarkach 6153, więc każdy z binarkami 5787 i wyższymi powinien mieć ten plugin :)


  • +
  • -
  • 2


#724166 Problem z HAMSANDWICH i pluginem

Napisane przez grankee w 04.04.2016 03:15

http://amxx.pl/topic...i-silnika-hlds/


  • +
  • -
  • 1


#724010 Problem z ustawianiem skoków.

Napisane przez grankee w 02.04.2016 03:01

Jak wiadomo, gra jest trójwymiarowa także są trzy wymiary. Na razie myślę nadążasz :D

velocity_by_aim() ustawia predkosc bazując na tym gdzie patrzy i tak:

velocity[0] to prędkość w osi x (lewo-prawo: powiedzmy wschód-zachód)

velocity[1] to prędkość w osi y (przód-tył: powiedzmy północ-południe)

velocity[2] to prędkość w osi z (góra-dół: powiedzmy hm... góra-dół)

jeśli ustawisz velocity[1] to zawsze bedzie lecial w tym samym kierunku pn-pd + w kierunku wsch-zach gdzie patrzy.

 

Zmieniasz tylko 

velocity[2]=500

na mniejsze, które odpowiada za prędkość w górę.

Jeśli chcesz dalej to musisz zmienić w 

velocity_by_aim(id, 500, velocity);

500 na większa liczbę, wtedy będzie dalej.


  • +
  • -
  • 1


#622514 Problem ze stworzonym menu.

Napisane przez Niide w 04.03.2014 18:09

Łap.

Spoiler

 

Zmieniłem:

// dodaje wybor pod klawisze

new data[6], iName[64];

new zaccess, callback;

menu_item_getinfo(menu, item, zaccess, data,5, iName, 63, callback);

new key = str_to_num(data)


switch(key){

Na:

switch(item){

Poza tym usunąłem 2 niepotrzebne includy.

 

#Testowane


  • +
  • -
  • 1


#607817 przypisywanie kżdemu graczowi flagi "t"

Napisane przez Dziobak? w 21.01.2014 16:32

w amxx.cfg


// Domyslna flaga oznaczajaca z user.ini dopisana osobe jak brak przywilejow admina (patrz users.ini dostępu do informacji)
//
// Wartość domyślna: "z"
amx_default_access "z"

  • +
  • -
  • 1


#379236 [ROZWIĄZANE] 2 x obrazen z daniej broni

Napisane przez Enson w 11.03.2012 21:42

pod
#include <amxmodx>
...

dodaj:
#define DMG_BULLET (1<<1)
new bool:ma_klase[33];


do plugin_init dodaj:
 RegisterHam(Ham_TakeDamage, "player", "TakeDamage");


do cod_class_enabled dodaj:
 ma_klase[id] = true;


do cod_class_disabled dodaj:
 ma_klase[id] = false;


na sam dol twojego pluginu dodaj:
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_KNIFE && 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);

if(weapon == CSW_AWP)
cod_inflict_damage(idattacker, this, damage*2.0, 0.0, idinflictor, damagebits);
}

return HAM_IGNORED;
}


*2.0 - oznacza 2x wieksze dmg
0.0 - dmg zadawane od inteligencji
  • +
  • -
  • 4


#280094 System Monet

Napisane przez A może sma? w 09.08.2011 12:26

Siema cwaniak.gif
Niby są, niby nie ma... W każdym bądź razie moje monety są lepsze, bo bez bugów cwaniak.gif (przynajmniej ja ich nie wykryłem tongue.gif)

testyq.png

Domyślna flaga VIPa: ADMIN_LEVEL_G

Domyślna flaga Komend Admina: ADMIN_IMMUNITY

Linijke, w której mają się wyświetlać dostosowujemy dodając/usuwając ^n tu:

set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "^n^n^n^n^n^n^n[Monety: %i]", monety[id]);


testue.png

cod_coins_friendlyfire "0" // 0 - nie dodaje monet za TeamKill (zabicie swojego); 1 - dodaje monety za TeamKill (zabicie swojego)



cod_coins_kill "1"        // ilosc monet do dodania za zabojstwo

cod_coins_kill_vip "2"    // ilosc monet do dodania za zabojstwo dla vipa

cod_coins_kill_hs "3"     // ilosc monet do dodania za zabojstwo z headshootem

cod_coins_kill_hs_vip "6" // ilosc monet do dodania za zabojstwo z headshootem dla vipa



cod_coins_planted "1"     // ilosc monet do dodania za podlozenie bomby

cod_coins_planted_vip "2" // ilosc monet do dodania za podlozenie bomby dla vipa

cod_coins_defused "1"     // ilosc monet do dodania za rozbrojenie bomby

cod_coins_defused_vip "2" // ilosc monet do dodania za rozbrojenie bomby dla vipa



cod_coins_rescue_hostage "1"     // ilosc monet do dodania za uratowanie zakladnika

cod_coins_rescue_hostage_vip "2" // ilosc monet do dodania za uratowanie zakladnika dla vipa

cod_coins_kill_hostage "2"       // ilosc monet do odjecia za zabicie zakladnika

cod_coins_kill_hostage_vip "1"   // ilosc monet do odjecia za zabicie zakladnika dla vipa

cod_coins_minplayers "2" // ilosc graczy od ktorej nastepuje zliczanie monet

cod_savetype // korzysta z ustawien głównego CoDa



// by wylaczyc wiecej monet dla vipa ustawiamy cvar _vip tak samo jak jego odpowiednik dla zwyklego gracza

// by wylaczyc dostawanie monet za dana rzecz ustawiamy odpowiedni cvar na 0

testhm.png


Instalacja standardowa z wyjątkiem, że pluginy dopisujemy do plugins-codmod-systemmonet.ini

testkdr.png


cod_get_user_coins(id) // zwraca ilosc monet

cod_set_user_coins(id, wartosc) // ustawia ilosc monet

testpx.png
Komendy Admina:
testbs.png


cod_givecoins "nick" "ilosc" - dodaje "ilosc" do aktualnych monet gracza

cod_setcoins "nick" "ilosc" - ustawia "ilosc" jako aktualne monety gracza

testyi.png
System monet:

Wersja 1.1.1: Załączony plik  systemmonet.sma   8,19 KB  3210 Ilość pobrań
  systemmonet.amxx
Wersja 1.1.0: Załączony plik  systemmonet.sma   7,24 KB  1045 Ilość pobrań
  systemmonet.amxx
Wersja 1.0.8: Załączony plik  systemmonet.sma   7,08 KB  1988 Ilość pobrań
  systemmonet.amxx
Plik *.ini: Załączony plik  plugins-codmod-systemmonet.ini   84 bajtów  3180 Ilość pobrań


Komendy admina:
Wersja 1.0.2: Załączony plik  systemmonet_komendyadmina.sma   1,49 KB  2052 Ilość pobrań
  systemmonet_komendyadmina.amxx

Pluginy dodatkowe:
Sklepy:
ELOSa: [CoD Nowy] Sklep za Monety - AMXX.pl: Support AMX Mod X
Mietka: [CoD Nowy] Sklep (monety i dolary) - AMXX.pl: Support AMX Mod X
Pozostałe:
Nagroda w postaci Monet Gh0sta: [CoD Nowy] Nagroda w postaci Monet [Questy Gh0st]
Sprzedawanie perków A moze sma?: [CoD Nowy] Sprzedawanie perków


  • +
  • -
  • 44


#283891 Sklep (monety i dolary)

Napisane przez A może sma? w 16.08.2011 20:51

Siema :] W ziązku z tym, że sklepy, które są obecnie zrobione i dostosowane do monet są zrobione "na odwal" macie nowy sklep :]

Dołączona grafika
Co tu dużo mówić: przerobiony sklep Miecia: [CoD Nowy] [COD:MW Nowy] Sklep [aktualizacja!] - AMXX.pl: Support AMX Mod X
Korzysta z tego pluginu: [CoD Nowy] System Monet - AMXX.pl: Support AMX Mod X

Dodatek do nowego CodModa dodający sklep
Nie jestem pewny czy jest na 100% dobrze zrobiony więc się nie obrażę za pomocne posty :P
Dodałem cvary, żebyście sobie mogli pozmieniać ustawienia bez mieszania w .sma - są CoD po 1000 i po 100 lvl :P

W sklepie mamy 7 opcji:
-Ibuprofen [Leczy 10 HP] Koszt: 1500$
-Fenacetyna [Leczy 25 HP] Koszt: 3000$
-Tramal [Leczy 50 HP] Koszt: 6000$
-Amfetamina [Wyzej skaczesz] Koszt: 16000$
-Lotto [Losowanie bonusow] Koszt: 16000$
-Doswiadczenie [Dostajesz losowy EXP] Koszt: 16000$
-Ruletka [Dostajesz losowy perk] Koszt: 10000$

Z wytrzymałością perku:
-Naprawa Perku [Dostajesz +15 wytrzymalosci perku] Koszt: 10000$

By włączyć/wyłączyć wytrzymałość otwieramy *.sma, szukamy #define WYTRZYMALOSPERKU i usuwamy/stawiamy dwa ukośniki (//) przed tą linijką

Dołączona grafika
say /sklep
say /shop

Dołączona grafika
Cvary są prawie takie same jak w oryginale.
Jednak są takie różnice:
ustawiamy je w pliku codshop.cfg
zamiast: shop_<coś tam> <ileś tam>
mamy: shop_money_<coś tam> <ileś tam> oraz shop_coins_<coś tam> <ileś tam>
Wrostek _money_ odpowiada za sklep za dolce, wrostek _coins_ odpowiada za sklep za monety

Dołączona grafika
Standardowa. cod_shop.amxx do plugins-codmod-systemmonet.ini, cvary do codshop.cfg

Dołączona grafika
A teraz to na co wszyscy czekali
Załączony plik  CoD Shop with coins.rar   20,61 KB  4497 Ilość pobrań

  • +
  • -
  • 32


#364485 [ROZWIĄZANE] Problem z dodaniem nowej statystyki...

Napisane przez Intex w 14.02.2012 18:28

Poprawić nie poprawię bo się nie znam ale widzę parę błędów:


Ty masz tak:
new limit_int, limit_zdr, limit_kon, limit_wyt;

a masz dodane nowe limit_obr więc powinno być chyba new limit_int, limit_zdr, limit_kon, limit_wyt, limit_obr;


Dodatkowo masz if(obrazenia_gracza[id] < limit_poziomu/2) chociaż wszędzie masz Limit coś zamiast limit poziomu więc ja bym dał if(obrazenia_gracza[id] < limit_obr)

Dodatkowo klamra } nad case 4 o jedną klmarę za dużo nad case 5

i w case 9 masz: if(kondycja_gracza[id] + 10 <= limit_obr)

powinno byc if(obrazenia_gracza[id] + 10 <= limit_obr)


Jednak poprawiłem xD

http://wklej.org/id/688831/txt/
  • +
  • -
  • 1


#360154 Jak podmienić każdemu na serwerze modele CS 1.6 ?

Napisane przez hardbot w 07.02.2012 18:57

Proszę kod i skompilowany plik.

Spoiler

Załączone pliki




#336506 Wskrzeszanie u medyka - pomoc

Napisane przez FORMOZA w 19.12.2011 16:30

Chapaj:

Załączone pliki


  • +
  • -
  • 1


#359277 Prośba o stworzenie klas

Napisane przez radim w 06.02.2012 10:01

/* Plugin generated by AMXX-Studio */



#include <amxmodx>

#include <codmod>

#include <cstrike>

#include <fun>

#include <hamsandwich>



new const nazwa[] = "Kameleon";

new const opis[] = "Ubranie wroga + M4A1 + regeneracja HP na nożu 3/sek";

new const bronie = 1<<CSW_M4A1;

new const zdrowie = 0;

new const kondycja = 0;

new const inteligencja = 0;

new const wytrzymalosc = 0;



new CT_Skins[4][] = {"sas","gsg9","urban","gign"};

new Terro_Skins[4][] = {"arctic","leet","guerilla","terror"}



new bool:ma_klase[33];



public plugin_init()

{

    register_plugin(nazwa, "1.0", "radim");

    

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

    

    RegisterHam(Ham_Spawn, "player", "Spawn", 1);

}



public cod_class_enabled(id)

{

    ma_klase[id] = true;

    ZmienUbranie(id, 0);

    set_task(1.0, "Regeneracja", id, _, _, "b");

}



public cod_class_disabled(id)

{

    ma_klase[id] = false;

    ZmienUbranie(id, 1);

    remove_task(id);

}



public Spawn(id)

{

    if(ma_klase[id])

        ZmienUbranie(id, 0);

}



public ZmienUbranie(id,reset)

{

    if (!is_user_connected(id))

        return PLUGIN_CONTINUE;

    

    if (reset)

        cs_reset_user_model(id);

    else

    {

        new num = random_num(1,1);

        cs_set_user_model(id, (get_user_team(id) == 1)? CT_Skins[num]: Terro_Skins[num]);

    }

    

    return PLUGIN_CONTINUE;

}



public Regeneracja(id)

{

    if(!is_user_alive(id))

        return PLUGIN_CONTINUE;

        

    if(get_user_weapon(id) == CSW_KNIFE)

        set_user_health(id, get_user_health(id)+3);



    return PLUGIN_CONTINUE;

}

  • +
  • -
  • 2


#306216 Cod Hud Info

Napisane przez ToRRent w 11.10.2011 11:57

Dołączona grafika
Kiedy nacelujemy na gracza wyświetla nam informacje takie jak Klasa jaką posiada, Perk, Poziom, broń, ammo i hp

Plugin autorstwa QTM_Peyote zmodyfikowany przeze mnie (radziłbym zerknąć w sma, jest bardzo dużo komentarzy które mogą pomóc co nie co się odnaleźć w tym xD

Dołączona grafika
cod_enemiesinfo - czy chcesz wyświetlać informacje o przeciwnikach ? 1 - Tak, 0 - Nie

Dołączona grafika
W QTM_Codmod.sma znajdź
public PobierzNazwePerku(perk, Return[], len)

i zamień cały public na to:
public PobierzNazwePerku(perk, Return[], len)
{
if(perk <= ilosc_perkow)
{
param_convert(2);
copy(Return, len, nazwy_perkow[perk]);
}
}

oraz znajdź
public PobierzNazweKlasy(klasa, Return[], len)

i zamień na:
public PobierzNazweKlasy(klasa, Return[], len)
{
if(klasa <= ilosc_klas)
{
param_convert(2);
copy(Return, len, nazwy_klas[klasa]);
}
}


A sam plugin wgrywamy tak jak każdy inny z taką różnicą że nie dopisujemy do plugins.ini tylko do plugins-codmod.ini ;) (chociaż nie ma to wielkiej różnicy)

Dołączona grafika
Załączony plik  COD_Hudinfo.sma   3,3 KB  526 Ilość pobrań
  COD_Hudinfo.amxx
Załączony plik  COD_Hudinfo.amxx   3,46 KB  51 Ilość pobrań

  • +
  • -
  • 14


#358721 Przerobienie perku na klase

Napisane przez Raen w 05.02.2012 13:23

Proszę:

Sprawdz!
Tylko nazwę sobie zmień!

Załączone pliki


  • +
  • -
  • 2


#257586 Awanse klas

Napisane przez Goliath w 10.06.2011 19:48

Na prośbę jednego z użytkowników zrobiłem system awansowania klas. Doszedłem do tego drogą prób i błędów, więc kod może nie być w pełni optymalny, ale przynajmniej działa Dołączona grafika.

Uwaga! Wymagana znajomość pojęcia "kompilacja lokalna". Jeżeli nie wiesz, co to jest, odwiedź ten temat - http://amxx.pl/topic...ilowac-pluginy/

1. Otwieramy plik QTM_CodMod.sma.
2. Do zmiennych globalnych dodajemy:
new awanse[MAX_ILOSC_KLAS+1][3], awansuje_do[MAX_ILOSC_KLAS+1], awansuje_z[MAX_ILOSC_KLAS+1];
new ilosc_awansow;

3. Na koniec pliku dopisujemy:
public ZarejestrujAwans(plugin, params)
{
if(params != 9)
return PLUGIN_CONTINUE;

if(++ilosc_klas > MAX_ILOSC_KLAS)
return -1;

pluginy_klas[ilosc_klas] = plugin;

new awans_z = get_param(1);
awansuje_do[awans_z] = ilosc_klas;
awansuje_z[ilosc_klas] = awans_z;
ilosc_awansow++;
awanse[ilosc_awansow][1] = ilosc_klas;
awanse[ilosc_awansow][0] = awans_z;
awanse[ilosc_awansow][2] = get_param(2);
get_string(3, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
get_string(4, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);

bronie_klasy[ilosc_klas] = get_param(5);
zdrowie_klas[ilosc_klas] = get_param(6);
kondycja_klas[ilosc_klas] = get_param(7);
inteligencja_klas[ilosc_klas] = get_param(8);
wytrzymalosc_klas[ilosc_klas] = get_param(9);

return ilosc_klas;
}

public ZnajdzAwans(Z, Do)
{
new Return;
for(new i=1; i<=ilosc_awansow; i++)
{
if(awanse[i][0] == Z && awanse[i][1] == Do)
{
Return = i;
break;
}
}
return Return;
}

public JestAwansem(klasa)
{
new bool:jest;
for(new i=1; i<=ilosc_awansow; i++)
{
if(awanse[i][1] == klasa)
{
jest = true;
break;
}
}
return jest;
}

4. Do publica plugin_natives dodajemy:
register_native("cod_register_advance", "ZarejestrujAwans");

5. Zmieniamy public WybierzKlase na:
public WybierzKlase(id)
{
new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");

new klasa[50], dana_klasa, numer[10];
for(new i=1; i <= ilosc_klas; i++)
{
if(JestAwansem(i))
continue;
WczytajDane(id, i);
dana_klasa = i;

for(; ;)
{
if(awansuje_do[dana_klasa] && poziom_gracza[id] >= awanse[ZnajdzAwans(dana_klasa, awansuje_do[dana_klasa])][2])
{
dana_klasa = awansuje_do[dana_klasa];
WczytajDane(id, dana_klasa);
}
else break;
}
formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[dana_klasa], poziom_gracza[id]);
num_to_str(dana_klasa, numer, 9);
menu_additem(menu, klasa, numer);
}

WczytajDane(id, klasa_gracza[id]);

menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);

client_cmd(id, "spk QTM_CodMod/select");
}

6. Zmieniamy public WybierzKlase_Handle na:
public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

new data[65], name[65], acces, callback
menu_item_getinfo(menu, item, acces, data, 64, name, 64, callback)
item = str_to_num(data);

if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
return PLUGIN_CONTINUE;

nowa_klasa_gracza[id] = item;

if(klasa_gracza[id])
client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}

return PLUGIN_CONTINUE;
}

7. W publicu SprawdzPoziom, po ZapiszDane(id), dopisujemy:
	if(awansuje_do[klasa_gracza[id]])
{
if(poziom_gracza[id] >= awanse[ZnajdzAwans(klasa_gracza[id], awansuje_do[klasa_gracza[id]])][2])
{
set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
ShowSyncHudMsg(id, SyncHudObj2,"Osiagajac poziom %i, awansowales do klasy %s!", poziom_gracza[id], nazwy_klas[awansuje_do[klasa_gracza[id]]]);
nowa_klasa_gracza[id] = awansuje_do[klasa_gracza[id]];
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
ZapiszDane(id);
}
}

Jeżeli chcesz, aby na nową klasę przechodził poziom, exp, statystyki itd., zastąp w/w funkcję tą:
		if(awansuje_do[klasa_gracza[id]])
{
if(poziom_gracza[id] >= awanse[ZnajdzAwans(klasa_gracza[id], awansuje_do[klasa_gracza[id]])][2])
{
set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
ShowSyncHudMsg(id, SyncHudObj2,"Osiagajac poziom %i, awansowales do klasy %s!", poziom_gracza[id], nazwy_klas[awansuje_do[klasa_gracza[id]]]);
new temp_int = inteligencja_gracza[id], temp_zdr = zdrowie_gracza[id], temp_kon = kondycja_gracza[id], temp_wyt = wytrzymalosc_gracza[id], temp_exp = doswiadczenie_gracza[id], temp_lvl = poziom_gracza[id];
nowa_klasa_gracza[id] = awansuje_do[klasa_gracza[id]];
UstawNowaKlase(id);
poziom_gracza[id] = temp_lvl;
doswiadczenie_gracza[id] = temp_exp;
wytrzymalosc_gracza[id] = temp_wyt;
zdrowie_gracza[id] = temp_zdr;
kondycja_gracza[id] = temp_kon;
inteligencja_gracza[id] = temp_int;
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
DajBronie(id);
ZastosujAtrybuty(id);
ZapiszDane(id);
}
}

8. Zapisujemy i kompilujemy plik. Otwieramy plik include/codmod.inc. Dopisujemy na koniec tego pliku to, a następnie go zapisujemy:
native cod_register_advance(z_klasy, od_levela, const nazwa[], const opis[], bronie, punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci);

9. Wszystko jest już gotowe, ale nie mamy zdefiniowanych żadnych awansów. Teraz się tym zajmiemy. Zacznę od omówienia parametrów natywu cod_register_advance.
z_klasy - id klasy, kt&#243;ra ma awansować w tą klasę,
od_levela - wymagany level do awansu,
Reszta parametr&#243;w nie r&#243;żni się od tych z cod_register_class
10. Klasę, w którą będzie się awansować tworzymy praktycznie tak samo, jak zwykłą. Musimy tylko użyć natywu cod_register_advance, zamiast cod_register_class. Użycie natywu wygląda tak:
cod_register_advance(cod_get_classid("Snajper"), 60, nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

I teraz w stworzoną przez nas klasę, będzie awansować inna klasa - Snajper, po osiągnięciu 60 poziomu. A to plik .sma przykładowej klasy - Elitarnego Snajpera:
Załączony plik  codawans_elitesnajper.sma   1,4 KB  1787 Ilość pobrań
  codawans_elitesnajper.amxx

Gotowiec:
Załączony plik  awanse.sma   41,62 KB  1675 Ilość pobrań
  awanse.amxx

Dodatki/alternatywne wersje:
- Wersja kompatybilna z frakcjami DarkGL'a - http://amxx.pl/topic...post__p__262120
- Klasy nie awansują, ale odblokowywują się po osiągnięciu danego poziomu na danej klasie - http://amxx.pl/topic...post__p__259522
- Klasy nie awansują, ale odblokowywują się po osiągnięciu danego poziomu na danej klasie (jeżeli mamy wgrane frakcje) - http://amxx.pl/topic...post__p__262954
- Informacje o awansach w menu /klasy - http://amxx.pl/topic...post__p__263164

Mam nadzieję, że coś zrozumieliście i nie będziecie mieli problemów ze zrobieniem tego na swoim CoD'zie Dołączona grafika.
  • +
  • -
  • 75