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
 

Zdjęcie
CoD Nowy

Jak dodać 1/x z wybranej broni w klasie

cod nowy

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
12 odpowiedzi w tym temacie

#1 RasiaQ

    Wracam.

  • Power User

Reputacja: 307
Wszechpomocny

  • Postów:639
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Browar Namysłów
Offline

Napisano 21.11.2013 18:29

*
Popularny

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

#2 Blood Angel

    Wszechwiedzący

  • Zbanowany

Reputacja: 130
Zaawansowany

  • Postów:540
  • Steam:steam
  • Lokalizacja:Dom
Offline

Napisano 26.11.2013 08:20

Było.


Znany jako oeN.


#3 RasiaQ

    Wracam.

  • Autor tematu
  • Power User

Reputacja: 307
Wszechpomocny

  • Postów:639
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Browar Namysłów
Offline

Napisano 29.11.2013 16:08

Tak było, ale to był poradnik jak zrobić perk z 1/x z broni. A co chwilę widzę na forum, że nie mogę dodać 1/x z broni, to napisałem jak dodać to w klasie.


  • +
  • -
  • 3

#4 Tamagotchi

    Zaawansowany

  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:78
  • Lokalizacja:Gdzieś
Offline

Napisano 01.12.2013 13:59

Na klase jak dodac 1/x z broni tez bylo :) 


  • +
  • -
  • 0

#5 CreAAtoR

    Nowy

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:3
  • Imię:Jakub
  • Lokalizacja:Kielce
Offline

Napisano 05.12.2013 16:00

Było ale teraz to robią te poradniki a sami nie umieją robić i błędy popełniają a ten jest dobry  Masz +++++


b_350_20_692108_381007_FFFFFF_000000.png


#6 he1st

    Diablo Mody i te sprawy ;3

  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 07.12.2013 12:33

Mimo, że znam to na pamięć to i tak najlepszy poradnik dotyczący dodawania 1/x z broni. Rep +


  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#7 RasiaQ

    Wracam.

  • Autor tematu
  • Power User

Reputacja: 307
Wszechpomocny

  • Postów:639
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Browar Namysłów
Offline

Napisano 07.12.2013 17:05


4. A następnie dodajemy public:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
    
        return HAM_IGNORED;
        
    if(!ma_perk[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;
}

 

Prosiłbym Moderatora o podmianę tego kodu powyżej na ten:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
        
    if(!ma_perk[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;
}

Oraz kodu w punkcie Aby dodać 1/x z kosy (PPM) na ten:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
        return HAM_IGNORED;
        
    if(!ma_perk[idattacker])
        return HAM_IGNORED;      
        
    if(get_user_weapon(idattacker) == CSW_KNIFE && damagebits & DMG_BULLET && damage > 20.0 && 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;
}

I edycję wszystkich trzech kodów:

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);

 
6*. 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);

 

Na te:


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);

6*. 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);

 

Wkradły się małe błędy ;> Oraz poprawiłem stronę stylistyczną kodu.


(08.12.2013 09:11):
Poprawione.

Użytkownik RasiaQ edytował ten post 07.12.2013 17:18

  • +
  • -
  • 1

#8 RasiaQ

    Wracam.

  • Autor tematu
  • Power User

Reputacja: 307
Wszechpomocny

  • Postów:639
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Browar Namysłów
Offline

Napisano 12.01.2014 19:09

UPDATE !

 

Co zmieniono ?

- Brakowało zmiennej ;>

-Dodano 1/x z HE


  • +
  • -
  • 0

#9 LiptoNoO

    Początkujący

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:17
  • Lokalizacja:elżbieta
Offline

Napisano 18.02.2014 14:17

co zrobiłem źle ?? 

 

#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
 
#define DMG_BULLET (1<<1)
        
new const nazwa[]   = "Konspirant ";
new const opis[]    = "1/1 scout +M4A1 i deagle ";
new const bronie    = (1<<CSW_SCOUT)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie   = 80;
new const kondycja  = 50;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new ma_klase[33];
    
public plugin_init()
 
{
register_plugin(nazwa, "1.0", "amxx.pl");
 
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}
 
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[Konspirant ] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
   
return COD_CONTINUE;
}
 
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_SCOUT && damagebits & DMG_BULLET
        cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
            
    return HAM_IGNORED;
}


#10 freetu

    Wszechwiedzący

  • Power User

Reputacja: 71
Pomocny

  • Postów:505
  • Lokalizacja:Kwidzyn
Offline

Napisano 18.02.2014 14:30

@Liptono,

Po pierwsze kod źródłowy umieszczamy w znaczniku code...

Po za tym brakowało

 

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

oraz

 

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

Na przyszłość załóż osobny temat w razie takich problemów... I lepiej popraw swój post.

 

 

Załączone pliki


  • +
  • -
  • 1

#11 Sraka

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:6
  • Lokalizacja:elzbieta
Offline

Napisano 18.04.2014 10:24

witam pomoże ktoś zrobiłem coś źle ?

#include <amxmodx>

#include <hamsandwich>
#include <codmod>
 
#define DMG_BULLET (1<<1)
 
 
 
new const nazwa[] = "ArcyKaplan";
new const opis[] = "Awp1/3";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE | 1<<CSW_AWP;
new const zdrowie = -5;
new const kondycja = 50;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new ma_klase[33];
 
 
public plugin_init() 
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
 
public cod_class_enabled(id)
{
    ma_klase[id] = true;
 
}
 
public cod_class_disabled(id)
{
        ma_klase[id] = false;
 
}
 
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_AWP && damagebits & DMG_BULLET && 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;
}

 

 


  • +
  • -
  • 0

#12 freetu

    Wszechwiedzący

  • Power User

Reputacja: 71
Pomocny

  • Postów:505
  • Lokalizacja:Kwidzyn
Offline

Napisano 19.04.2014 15:31

Spoiler

 

Masz - poprawione. Brakowało { } w plugin_init... Na przyszlość używać bb-codes i spoilera.. Powinieneś także założyć nowy temat z takim problemem.

 

Spoiler

 


  • +
  • -
  • 0

#13 LukasO

    Początkujący

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:11
  • Imię:Łukasz
  • Lokalizacja:Niemcy, Berlin
Offline

Napisano 13.04.2015 15:32

Pikny temacik. Przyda się nowym. Rispekt.


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: cod nowy

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych