[AMXX] Modificarea DMG-ul făcut de o arma.

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

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:

Code: Select all

#include <  hamsandwich  >         
2. Adăugăm un nou define şi anume:

Code: Select all

#define IsPlayer(%0)    ( 1 <= %0 <= g_iMaxPlayers )         
3. Acum trebuie să declarăm g_iMaxPlayers, adăugăm:

Code: Select all

new g_iMaxPlayers
Acum trecem la init ( plugin_init )

1. Adăugăm în init următoarea linie:

Code: Select all

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: 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ă
Gata cu init-ul, mai urmează public-ul, codul dvs. trebuie să arate aşa până acum:

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" );
}
 
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: Select all

public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage ) {
2. Acum trebuie să adăugăm următoarea verificaţie:

Code: Select all

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: 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
4. După linia de sus adăugăm un return ca funcţia să se oprească:

Code: Select all

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

Code: Select all

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

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ă 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 !
RoyalServer
User avatar
CryWolf
Administrator
Administrator
Posts: 6505
Joined: 07 Aug 2008, 16:33
Detinator Steam: Da
Reputatie: Administrator
Fost Scripter
Manager CS2.eXtream.Ro
Fost Detinator ZM.eXtream.Ro
Fost manager CS.eXtream.Ro
Fost manager CSGO.eXtream.Ro
Fost manager global
Location: Botosani
Discord: crywolf1989
Has thanked: 202 times
Been thanked: 850 times
Contact:

16 Aug 2013, 17:53

Foarte bun tutorialul si bine explicat.

Cea ce vreau sa spun este ca este un tutorial AMXX si categoria mai potrivita pentru el ar fi asta nu ? ce spui ? Alegerea este a ta, dar va fi mult mai vizibil acolo! :)
NU IMI MAI DA-TI PM CU CERERE AJUTOR/SAMD, FOLOSITI FORUMUL, CITESC MAJORITATEA TOPICURILOR.
www.dark-arena.com , SERVERE CS / CS2 / L4D AU REVENIT ONLINE.
www.diasporaiptv.ro - SERVICII PREMIUM IPTV

Image

Image
User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

16 Aug 2013, 17:56

CryWolf wrote:Foarte bun tutorialul si bine explicat.

Cea ce vreau sa spun este ca este un tutorial AMXX si categoria mai potrivita pentru el ar fi asta nu ? ce spui ? Alegerea este a ta, dar va fi mult mai vizibil acolo! :)
Merge şi acolo, dar mulţi începători cu forumul postează şi cereri de plugine acolo şi acest tutorial o să se piardă prin cereri. Aici sunt doar tutoriale, eu spun că e ok aici. :)
User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

16 Aug 2013, 18:02

Dacă doriţi să modificaţi dmg-ul doar a unei singure arme faceţi astfel:

* În public-ul nostru ( Player_TakeDamge ) avem o verificaţie, şi anume:

Code: Select all

if ( iInflictor == iAttacker && IsPlayer ( iAttacker ) ) { 
În ea adăugăm următoarea funcţie:

Code: Select all

&& get_user_weapon ( iAttacker ) == CSW_DEAGLE
Verificaţia noastră va arăta astfel:

Code: Select all

if ( iInflictor == iAttacker && IsPlayer ( iAttacker ) && get_user_weapon ( iAttacker ) == CSW_DEAGLE ) { 
  • get_user_weapon ( index ) - verifică arma jucătorului.
  • CSW_DEAGLE - arma care trebuie să o aibă jucătorul ca să facă dmg mai mult.
User avatar
CsN^ ;x
Membru eXtream
Membru eXtream
Posts: 3560
Joined: 02 Apr 2012, 16:58
Detinator Steam: Nu
CS Status: Retras din domeniul Counter-Strike
Reputatie: Fost moderator
Location: Bucuresti
Has thanked: 797 times
Been thanked: 607 times

16 Aug 2013, 21:45

Foarte frumos acest tutorial ,e foarte bun pentru incepatorii chiar si pentru mine ca daca e ceva pot sa fac si eu un mic plugin dasta adica sa fac sa imi modific :)) .
OFF : Felicitari pentru grad ;)
Addons HNS level,gravity,xp DOWNLOAD ( e țeapă)
https://5filme.com/ - un simplu site de filme pentru timpul liber
User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

16 Aug 2013, 23:03

O sa mai fac maine cateva, acum sunt dupa telefon.
prorvl
Membru, skill 0
Membru, skill 0
Posts: 36
Joined: 04 Mar 2013, 15:41
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 27 times
Contact:

17 Aug 2013, 21:40

Ai putea sa-mi spun cum pun damage la o singura clasa?
Exemplu: Clasa Trainer - Damage 3.0...
----------
Level-XP-MOD Respawn - 50 % [Privat]
----------
S-Mod Zombie XP - 60 % [Privat]
----------
aim_rival - Finished
----------
User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

17 Aug 2013, 22:55

Creezi un bool ( boolean ) şi îl pui în verificaţia din Player_TakeDamage.
Exemplu:

Code: Select all

new bool: IsTrainer [ 33 ]

if ( iInflictor == iAttacker && IsPlayer ( iAttacker ) && IsTrainer [ iAttacker ] ) {
        // damage
}

 
prorvl
Membru, skill 0
Membru, skill 0
Posts: 36
Joined: 04 Mar 2013, 15:41
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 27 times
Contact:

18 Aug 2013, 12:41

Bun am inteles cum pun la o clasa dar daca am mai multe?
Fac acelasi lucru?

P.S.: +1 Multumesc
----------
Level-XP-MOD Respawn - 50 % [Privat]
----------
S-Mod Zombie XP - 60 % [Privat]
----------
aim_rival - Finished
----------
User avatar
Hades Ownage
Membru eXtream
Membru eXtream
Posts: 3182
Joined: 22 Oct 2008, 10:12
Detinator Steam: Da
Detinator server CS: jb.clutch.ro
SteamID: hades-source
Reputatie: Fost Super Moderator
Fost Scripter eXtreamCS
Nume anterior: hadesownage
Location: Iasi
Has thanked: 324 times
Been thanked: 406 times

19 Aug 2013, 09:38

Da, şi spre exemplu dacă ai un meniu cu clase, în handler la meniu ( in case-uri ) pui

Code: Select all

IsTrainer [ id ] = true; 
prorvl
Membru, skill 0
Membru, skill 0
Posts: 36
Joined: 04 Mar 2013, 15:41
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Has thanked: 27 times
Contact:

19 Aug 2013, 17:40

Mersi mult de ajutor +1 Multumesc!

EDIT: Daca mai am nelamuriri te pot contacta?
----------
Level-XP-MOD Respawn - 50 % [Privat]
----------
S-Mod Zombie XP - 60 % [Privat]
----------
aim_rival - Finished
----------
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

21 Aug 2013, 18:39

thanks boss :D
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 7 guests