[AMXX] Modificarea DMG-ul făcut de o arma.
Posted: 16 Aug 2013, 17:43
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:
2. Adăugăm un nou define şi anume:
3. Acum trebuie să declarăm g_iMaxPlayers, adăugăm:
Acum trecem la init ( plugin_init )
1. Adăugăm în init următoarea linie:
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:
Crearea public-ului:
1. Creeam public-ul cu 4 param-uri şi acelea fiind:
2. Acum trebuie să adăugăm următoarea verificaţie:
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:
5. După asta închidem verificaţia ( if-ul ) cu } si adăugăm:
Asta a fost tot, codul dvs. trebuie să arate astfel:
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:
1. Pentru modificarea dmg-ul avem nevoie de modulul hamsandwich pe care trebuie să-l includem astfel:
Code: Select all
#include < hamsandwich >
Code: Select all
#define IsPlayer(%0) ( 1 <= %0 <= g_iMaxPlayers )
Code: Select all
new g_iMaxPlayers
1. Adăugăm în init următoarea linie:
Code: Select all
g_iMaxPlayers = get_maxplayers ( )
2. Tot în init adăugăm următoarea funcţie ham:
Code: Select all
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ă
Code: Select all
/* 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" );
}
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
Code: Select all
public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage ) {
Code: Select all
if ( iInflictor == iAttacker && IsPlayer ( iAttacker ) ) {
3. În această verificare trebuie să adăugăm modificarea damage-ului, adăugăm următoarea linie:
Code: Select all
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
Code: Select all
return HAM_HANDLED;
Code: Select all
return HAM_IGNORED;
Code: Select all
/* 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ă î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 !