Jump to content

[AMXX] Modifica DMG-ul facut de o arma


LondoN eXtream

Recommended Posts

Descriere: După cum scrie şi în titlu, am să vă arăt cum modificaţi corect dmg-ul făcut de o armă/cuţit/grenadă. Folosind această metodă nu o să primiţi erori în logs iar plugin-ul va funcţiona corect.

Tutorial:

1. Pentru modificarea dmg-ul avem nevoie de modulul hamsandwich pe care trebuie să-l includem astfel:

#include < hamsandwich >

2. Adăugăm un nou define şi anume:

Code:
#define IsPlayer(%0)    ( 1 <= %0 <= g_iMaxPlayers )         

3. Acum trebuie să declarăm g_iMaxPlayers, adăugăm:
Code:
new g_iMaxPlayers


Acum trecem la init ( plugin_init )

1. Adăugăm în init următoarea linie:
Code:
g_iMaxPlayers = get_maxplayers ( 

Această linie înseamnă că g_iMaxPlayers caută numărul maxim de jucători după server.
2. Tot în init adăugăm următoarea funcţie ham:
Code:
RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" 


  • Ham_TakeDamage = funcţia care o cere modulul ham
  • player = entitatea asupra căruia se exercită funcţia
  • Player_TakeDamage = numele public-ului care acţionează

Gata cu init-ul, mai urmează public-ul, codul dvs. trebuie să arate aşa până acum:

Code:
/* Plugin generated by AMXX-Studio */

#include <  amxmodx  >
#include <  hamsandwich  >

#define PLUGIN "Modificare Damage"
#define VERSION "0.1"
#define AUTHOR "hadesownage"

#define IsPlayer(%0)    ( 1 <= %0 <= g_iMaxPlayers )


new g_iMaxPlayers;

public plugin_init ( ) {
    
    register_plugin 
( PLUGIN, VERSION, AUTHOR );
    
    g_iMaxPlayers 
= get_maxplayers ( )
    RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" );
}
 


Crearea public-ului:

1. Creeam public-ul cu 4 param-uri şi acelea fiind:
  • iVictim - index-ul victimei
  • iInflictor - cel care atacă
  • iAttacker - index-ul atacatorului
  • Float:fDamage - damage-ul făcut

Începutul public-ului va arăta aşa:

Code:
public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage ) {

2. Acum trebuie să adăugăm următoarea verificaţie:
Code:
if ( iInflictor == iAttacker && IsPlayer ( iAttacker ) ) {

Aceasta verifică iInflictor este una şi aceeaşi cu atacatorul şi dacă atacatorul este un jucător nu o entitate oarecare.

3. În această verificare trebuie să adăugăm modificarea damage-ului, adăugăm următoarea linie:
Code:
SetHamParamFloat ( 4, fDamage * 2.0 );

  • 2.0 - cu cât se multiplică dmg-ul făcut de jucător.
  • 2.0 - dublu.
  • 3.0 - triplu.
  • 4.0, 4.2, 4.5, 5.0 - şi tot aşa

4. După linia de sus adăugăm un return ca funcţia să se oprească:
Code:
return HAM_HANDLED;

5. După asta închidem verificaţia ( if-ul ) cu } si adăugăm:
Code:
return HAM_IGNORED;


Asta a fost tot, codul dvs. trebuie să arate astfel:

Code:
/* Plugin generated by AMXX-Studio */

#include <  amxmodx  >
#include <  hamsandwich  >

#define PLUGIN "Modificare Damage"
#define VERSION "0.1"
#define AUTHOR "hadesownage"

#define IsPlayer(%0)    ( 1 <= %0 <= g_iMaxPlayers )


new g_iMaxPlayers;

public plugin_init ( ) {
    
    register_plugin 
( PLUGIN, VERSION, AUTHOR );
    
    g_iMaxPlayers 
= get_maxplayers ( )
    RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" );
}


public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage ) {
    
    if 
( iInflictor == iAttacker && IsPlayer ( iAttacker ) ) {
    
        SetHamParamFloat 
( 4, fDamage * 2.0 );
        return HAM_HANDLED;
        
    
}
    
    return HAM_IGNORED
;
    
}
                        


Dacă doriţi ca doar o singură armă să aibă dmg-ul modificat, atunci daţi click aici.

Dacă întâlniti probleme puteţi să lăsaţi reply în topic şi o să vă răspund cât pot de repede.
Exprimăţi recunoştinţa dacă ţi-a fost de folos acest tutorial !
 
 
Tutorial realizat de Hades :)
Edited by dK^aL3X
  • Like 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...