←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Jak dodać dmg do danej broni.

  • +
  • -
Zohan^ - zdjęcie Zohan^ 24.04.2012

Witam :)

Prosiłbym, aby mi ktoś wytłumaczył krok po kroku jak dodać dmg do klasy.
Moje gg: 42500249 lub skype: shiver9810.
Można również napisać tutaj w tym temacie.

Za każdą pomoc + :D
Odpowiedz

  • +
  • -
Maniek974 - zdjęcie Maniek974 24.04.2012

  • Pod includami dodajesz
    #define DMG_BULLET (1<<1)
    
  • W plugin_init dopisujesz
    RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
    
Na koniec kodu:
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(get_user_weapon(idattacker) == YYY && damagebits & DMG_BULLET)
cod_inflict_damage(idattacker, this, XX.X, 0.00, idinflictor, damagebits);
return HAM_IGNORED;
}


Tam gdzie YYY dajesz nazwę broni w której chcesz dodatkowe dmg np CSW_M4A1T
to ci się przyda http://amxx.pl/topic...ive-item-speed/
Tam gdzi XX.X dodatkowe dmg np 20.0
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 24.04.2012

  • Pod includami dodajesz
    #define DMG_BULLET (1<<1)
    
  • W plugin_init dopisujesz
    RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
    
Na koniec kodu:
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(get_user_weapon(idattacker) == YYY && damagebits & DMG_BULLET)
cod_inflict_damage(idattacker, this, XX.X, 0.00, idinflictor, damagebits);
return HAM_IGNORED;
}


Tam gdzie YYY dajesz nazwę broni w której chcesz dodatkowe dmg np CSW_M4A1T
to ci się przyda Nazwy broni i ammo do give_item (+ speed) - AMXX.pl: Support AMX Mod X
Tam gdzi XX.X dodatkowe dmg np 20.0


#define DMG_BULLET (1<<1)

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(get_user_weapon(idattacker) == YYY && damagebits & DMG_BULLET)
cod_inflict_damage(idattacker, this, XX.X, 0.00, idinflictor, damagebits);
return HAM_IGNORED;
}


ja się pytam po co?

nie lepiej
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(get_user_weapon(idattacker) == YYY && damagebits & (1<<1))
cod_inflict_damage(idattacker, this, XX.X, 0.00, idinflictor, damagebits);
return HAM_IGNORED;
}


ale jak tam kto woli ^^
Odpowiedz

  • +
  • -
Zohan^ - zdjęcie Zohan^ 24.04.2012

Gdy komplikuje to pisze, że
Nie udało się skompilować twojego pluginu!
Przeczytaj poniższe błędy:

UWAGA
Jeśli plugin nie kompiluje się z powodu braku jakiejś biblioteki, poproś administratora o dodanie jej lub skorzystaj z tego poradnika i skompiluj swój plugin lokalnie.

Oto sma tej postaci :
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>
#include <fun>
#define DMG_BULLET (1<<1)
	   
new const nazwa[]   = "Pacyfikator";
new const opis[]    = "Posiada M4A1 i +10 dmg z niego.";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie   = 30;
new const kondycja  = 40;
new const inteligencja = 0;
new const wytrzymalosc = 0;
   
new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_forward(FM_PlayerPreThink, "fwPrethink_AutoBH");
		 RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}
public cod_class_enabled(id)
{
give_item(id, "weapon_hegrenade");
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public fwPrethink_AutoBH(id)
{
if(!ma_klase[id])
  return PLUGIN_CONTINUE
if (pev(id, pev_button) & IN_JUMP) {
  new flags = pev(id, pev_flags)
  if (flags & FL_WATERJUMP)
   return FMRES_IGNORED;
  if ( pev(id, pev_waterlevel) >= 2 )
   return FMRES_IGNORED;
  if ( !(flags & FL_ONGROUND) )
   return FMRES_IGNORED;
  new Float:velocity[3];
  pev(id, pev_velocity, velocity);
  velocity[2] += 250.0;
  set_pev(id, pev_velocity, velocity);
  set_pev(id, pev_gaitsequence, 6);
}
return FMRES_IGNORED;
}
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits){if(!is_user_connected(idattacker))  return HAM_IGNORED;if(!ma_klase[idattacker])  return HAM_IGNORED;if(get_user_weapon(idattacker) == M4A1 && damagebits & (1<<1))  cod_inflict_damage(idattacker, this, 10.0, 0.00, idinflictor, damagebits);return HAM_IGNORED;}
Odpowiedz

  • +
  • -
Fajled - zdjęcie Fajled 24.04.2012

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
  return HAM_IGNORED;

if(!ma_klase[idattacker])
  return HAM_IGNORED;

if(damagebits & DMG_BULLET)
{
  new weapon = get_user_weapon(idattacker);
 
  if(weapon == CSW_M4A1)
   cod_inflict_damage(idattacker, this, damage+10.0, 0.0, idinflictor, damagebits);
}
return HAM_IGNORED;
}

A może tak ?
Odpowiedz

  • +
  • -
Zohan^ - zdjęcie Zohan^ 25.04.2012

To samo, błąd w komplikacji. :(
Odpowiedz

  • +
  • -
Szlendii - zdjęcie Szlendii 27.04.2012

Proszę działa w 100% :)

Załączone pliki


Użytkownik Szlendii edytował ten post 27.04.2012 10:27
Odpowiedz

eloziom - zdjęcie eloziom 03.05.2012

a gdzie pisze że ustawić dla wybranej klasy?? bo z tego kodu mi sie wydaje że dla all idze
Odpowiedz

  • +
  • -
SmYk. - zdjęcie SmYk. 02.08.2012

a gdzie pisze że ustawić dla wybranej klasy?? bo z tego kodu mi sie wydaje że dla all idze


Misiu. To jest cod nowy. Więc cod klasy pisze się oddzielnie. Wiec nie trzeba wybierac klasy.
(02.08.2012 21:39):
Upraszanie się o punkty reputacji jest niemile widziane a w konsekwencji może zostać nagrodzone ujemnymi punktami lub ostrzeżeniem.

Użytkownik benio101 edytował ten post 02.08.2012 21:38
Odpowiedz