←  Prośby o modyfikacje silników/klas/perków

AMXX.pl: Support AMX Mod X i SourceMod

»

Klasa
Naprawa zadawanych obrażeń po śmierci

  • +
  • -
Duoz - zdjęcie Duoz 28.01.2014

Witam,

Chciałbym prosić was, abyście poprawili dla mnie klasę zamachowiec. Powinna ona zabijać 80 dmg + int. Niestety mając 0 inta bije każdego na strzała.

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <colorchat>
#include <engine>
#include <hamsandwich>

#define DMG_BULLET (1<<1)

new bool:ma_klase[33];

new const nazwa[] = "Zamachowiec";
new const opis[] = "Wybuchasz po smierci zadajac 80(+int) obrazen";
new const bronie = 1<<CSW_AUG | 1<<CSW_USP | 1<<CSW_HEGRENADE | 1<<CSW_FLASHBANG | 1<<CSW_SMOKEGRENADE;
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new sprite_blast, sprite_white;

public plugin_init() 
{
	register_plugin(nazwa, "1.0", "QTM_Peyote");
 
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	register_event("DeathMsg", "Death", "ade");
}
 
public plugin_precache()
{
	sprite_white = precache_model("sprites/white.spr") ;
	sprite_blast = precache_model("sprites/dexplo.spr");
}
 
public cod_class_enabled(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_G))
	{
		ColorChat(id, RED, "[General] Nie masz uprawnien, aby korzystac z tej klasy.");
		return COD_STOP;
	}
	ColorChat(id, GREEN, "Klasa stworzona przez pluginymody.webd.pl");
	ma_klase[id] = true;
	return COD_CONTINUE;
}
 
public cod_class_disabled(id)
	ma_klase[id] = false;
 
public Death()
{
	new id = read_data(2);
	if(ma_klase[id])
		Eksploduj(id);
}
 
public Eksploduj(id)
{
	new Float:fOrigin[3], iOrigin[3];
	entity_get_vector( id, EV_VEC_origin, fOrigin);
	iOrigin[0] = floatround(fOrigin[0]);
	iOrigin[1] = floatround(fOrigin[1]);
	iOrigin[2] = floatround(fOrigin[2]);
 
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
	write_byte(TE_EXPLOSION);
	write_coord(iOrigin[0]);
	write_coord(iOrigin[1]);
	write_coord(iOrigin[2]);
	write_short(sprite_blast);
	write_byte(32);
	write_byte(20);
	write_byte(0);
	message_end();
 
	message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
	write_byte( TE_BEAMCYLINDER );
	write_coord( iOrigin[0] );
	write_coord( iOrigin[1] );
	write_coord( iOrigin[2] );
	write_coord( iOrigin[0] );
	write_coord( iOrigin[1] + 300 );
	write_coord( iOrigin[2] + 300 );
	write_short( sprite_white );
	write_byte( 0 ); // startframe
	write_byte( 0 ); // framerate
	write_byte( 10 ); // life
	write_byte( 10 ); // width
	write_byte( 255 ); // noise
	write_byte( 255 ); // r, g, b
	write_byte( 100 );// r, g, b
	write_byte( 100 ); // r, g, b
	write_byte( 128 ); // brightness
	write_byte( 8 ); // speed
	message_end();
 
	new entlist[33];
	new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);
 
	for (new i=0; i < numfound; i++)
	{		
		new pid = entlist[i];
 
		if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid))
			continue;
		cod_inflict_damage(id, pid, 80.0, 0.7);
	}
	return PLUGIN_CONTINUE;
}
Odpowiedz

  • +
  • -
Xims123 - zdjęcie Xims123 28.01.2014

Wywal to z kodu i sprawdź 

#define DMG_BULLET (1<<1)
Odpowiedz

  • +
  • -
Duoz - zdjęcie Duoz 29.01.2014

Skasowałem to, skompilowałem i nadal problem występuje.

Odpowiedz

  • +
  • -
Danio7 - zdjęcie Danio7 30.01.2014

cod_inflict_damage(id, pid, 80.0, 0.7);

Zamiast 0,7 wpisz mniejszą wartość np. 0,2. chociaż raczej to chyba też nie zadziała...


Użytkownik Danio7 edytował ten post 30.01.2014 16:28
Odpowiedz

  • +
  • -
Duoz - zdjęcie Duoz 31.01.2014

Zmieniłem na mniejszą wartość i nic to nie dało.

Odpowiedz

  • +
  • -
0-0-0 - zdjęcie 0-0-0 02.02.2014

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <colorchat>
#include <engine>
#include <hamsandwich>

#define DMG_BULLET (1<<1)

new bool:ma_klase[33];

new const nazwa[] = "Zamachowiec";
new const opis[] = "Wybuchasz po smierci zadajac 80(+int) obrazen";
new const bronie = 1<<CSW_AUG | 1<<CSW_USP | 1<<CSW_HEGRENADE | 1<<CSW_FLASHBANG | 1<<CSW_SMOKEGRENADE;
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new sprite_blast, sprite_white;

public plugin_init() 
{
    register_plugin(nazwa, "1.0", "QTM_Peyote");

    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
    register_event("DeathMsg", "Death", "ade");
}

public plugin_precache()
{
    sprite_white = precache_model("sprites/white.spr") ;
    sprite_blast = precache_model("sprites/dexplo.spr");
}

public cod_class_enabled(id)
{
    if(!(get_user_flags(id) & ADMIN_LEVEL_G))
    {
        ColorChat(id, RED, "[General] Nie masz uprawnien, aby korzystac z tej klasy.");
        return COD_STOP;
    }
    ColorChat(id, GREEN, "Klasa stworzona przez pluginymody.webd.pl");
    ma_klase[id] = true;
    return COD_CONTINUE;
}

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

public Death()
{
    new id = read_data(2);

    if(!ma_klase[id])
        return PLUGIN_CONTINUE;
    
    new Float:fOrigin[3];
    entity_get_vector(id, EV_VEC_origin, fOrigin);

    new iOrigin[3];
    for(new i=0;i<=2;i++)
        iOrigin[i] = floatround(fOrigin[i]);

    message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
    write_byte(TE_EXPLOSION);
    write_coord(iOrigin[0]);
    write_coord(iOrigin[1]);
    write_coord(iOrigin[2]);
    write_short(sprite_blast);
    write_byte(32);
    write_byte(20);
    write_byte(0);
    message_end();
    
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
    write_byte( TE_BEAMCYLINDER );
    write_coord( iOrigin[0] );
    write_coord( iOrigin[1] );
    write_coord( iOrigin[2] );
    write_coord( iOrigin[0] );
    write_coord( iOrigin[1] + 200 );
    write_coord( iOrigin[2] + 200 );
    write_short( sprite_white );
    write_byte( 0 );
    write_byte( 0 );
    write_byte( 10 );
    write_byte( 10 );
    write_byte( 255 );
    write_byte( 255 );
    write_byte( 100 );
    write_byte( 100 );
    write_byte( 128 );
    write_byte( 0 );
    message_end();

    new entlist[33];
    new numfound = find_sphere_class(id, "player", 200.0 , entlist, 32);
    
    for (new i=0; i<=numfound; i++)
    {    
        new pid = entlist[i];

        if (is_user_alive(pid) && get_user_team(id) != get_user_team(pid))
            cod_inflict_damage(id, pid, 80.0, 0.0);
    }
    
    return PLUGIN_CONTINUE;
}
Odpowiedz

  • +
  • -
RasiaQ - zdjęcie RasiaQ 02.02.2014

@up wtedy w ogóle nie będzie zabierał obrażeń z intem :facepalm:

 

 

Wywal to z kodu i sprawdź 

#define DMG_BULLET (1<<1)

 

Ma racje, wywal to z kodu i

80.0, 0.7

 

Zamiast 80 daj 20, bo to odpowiada za stałe obrażenia. A co do obrażeń + int(odpowiada za to liczba 0.7) to ustaw wedle życzenia. Tu taka szybka tabelka

0.1 - 10int = 1 DMG
0.2 - 5int = 1 DMG
0.15 - 6.(3)int = 1 DMG
0.14 - 7.14int = 1 DMG
0.066666 - 15int = 1 DMG
0.05 - 20int = 1 DMG
Odpowiedz

  • +
  • -
Duoz - zdjęcie Duoz 03.02.2014

Skasowałem:

#define DMG_BULLET (1<<1)

Ustawiłem:

cod_inflict_damage(id, pid, 20.0, 0.1);

Niestety dalej to samo...

 

Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 03.02.2014

Spróbuj tak:
 

new int = cod_get_user_intelligence(id, 1, 1, 1); //dodaj to gdzieś w kodzie, nad pętlą
 
//zamiast
cod_inflict_damage(id, pid, 20.0, 0.1);

//daj
SetHamParamFloat(4, 80.0 + (0.7 * Float:int));

Ale ręki uciąć nie dam

Odpowiedz

  • +
  • -
Duoz - zdjęcie Duoz 08.02.2014

To co podałeś nic nie daje. Po zabiciu nie zabija gracza.

Odpowiedz