LondoN eXtream 110 Posted March 22, 2015 Share Posted March 22, 2015 (edited) 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 March 22, 2015 by dK^aL3X 1 Link to comment Share on other sites More sharing options...
Recommended Posts