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

AMXX.pl: Support AMX Mod X i SourceMod

»

Klasa
[ROZWIĄZANE] 1/x na zabicie z generatora k...

Locked

  • +
  • -
Krzysztof97's Photo Krzysztof97 20.12.2012

Witajcie!
Mam problem.
Mianowicie, gdy robię klasę w generatorze klas i jest w niej funkcja np. 1/1 z awp, to dodaje się to automatycznie do wszystkich broni(nawet jeśli nie zaznaczę np. usp w generatorze to usp też ma 1/1).
Co tutaj bym musiał zedytować, żeby tylko do scouta 1/4(inny plugin) było aktywne?(jestem zielony w pawnie:D)
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
	   
new const nazwa[]   = "test";
new const opis[]    = "xxx";
new const bronie    = (1<<CSW_SCOUT);
new const zdrowie   = 0;
new const kondycja  = 0;
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);
  
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenZ");
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
  client_print(id, print_chat, "[test] Nie masz uprawnien, aby uzywac tej klasy.")
  return COD_STOP;
}
ma_klase[id] = true;
  
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits){
if(!is_user_alive(idAtt) || !ma_klase[idAtt] || !(dmgBits & (1<<1) ) || random_num(1, 5) != 1 )
  return HAM_IGNORED;
cs_set_user_armor(this, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(this) + 1));
return HAM_HANDLED;
}


Pozdrawiam
Edited by Krzysztof97, 20.12.2012 21:48.
Quote

  • +
  • -
MAGNET's Photo MAGNET 20.12.2012

W generatorze nie dziala funkcja dla konkretnej broni, tylko dla wszystkich. Poszukaj w google np. 1/x z wybranej broni amxx
Na pewno znajdziesz :)
Pozdrawiam
Quote

  • +
  • -
Krzysztof97's Photo Krzysztof97 20.12.2012

Mógłby ktoś opisać co bym musiał zmienić w kodzie, żeby tylko dla jednej/wybranych broni działało te 1/x?:D
Pozdrawiam
Quote

Piotreq183's Photo Piotreq183 21.12.2012

Na końcu includ'ów dopisujesz(chyba, że już masz):
#include <hamsandwich>

pod tym dajesz:
#define DMG_BULLET (1<<1)

W Public plugin_init dajesz
RegisterHam(Ham_TakeDamage, "player", "TakeDamage_JedenZ");

A na końcu dajesz:

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))
return HAM_IGNORED;

if(get_user_weapon(idattacker) == CSW_XXX && random_num(1,X) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

return HAM_IGNORED;
}


Zamiast CSW_XXX dajesz swoją broń, a w miejscu random_num(1,X) zamiast X wpisujesz jaka ma być szansa na zabicie
Quote

  • +
  • -
Krzysztof97's Photo Krzysztof97 22.12.2012

Próbuję i lipa:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
#include <fun>
	   
new const nazwa[]   = "Rasiu [PREMIUM]";
new const opis[]    = "Posiada m4 + 1/10 z każdej broni";
new const bronie    = (1<<CSW_HEGRENADE)|(1<<CSW_M4A1)|(1<<CSW_FLASHBANG)|(1<<CSW_DEAGLE);
new const zdrowie   = 30;
new const kondycja  = 10;
new const inteligencja = 0;
new const wytrzymalosc = 20;
   
new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
  
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenZ");
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_ B))
{
  client_print(id, print_chat, "[Rasiu [PREMIUM]] Nie masz uprawnien, aby uzywac tej klasy.")
  return COD_STOP;
}
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
ma_klase[id] = true;
  
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits){
if(!is_user_alive(idAtt) || !ma_klase[idAtt] || !(dmgBits & (1<<1) ) || random_num(1, 10) != 1 )
  return HAM_IGNORED;
cs_set_user_armor(this, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(this) + 1));
return HAM_HANDLED;
}

Takie errory w kompilatorze wyskakują:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team
codclass_PomperPREMIUM.sma(20) : warning 217: loose indentation
codclass_PomperPREMIUM.sma(22) : warning 217: loose indentation
codclass_PomperPREMIUM.sma(41) : error 017: undefined symbol "ma_klase"
codclass_PomperPREMIUM.sma(41) : warning 215: expression has no effect
codclass_PomperPREMIUM.sma(41) : error 001: expected token: ";", but found "]"
codclass_PomperPREMIUM.sma(41) : error 029: invalid expression, assumed zero
codclass_PomperPREMIUM.sma(41) : fatal error 107: too many error messages on one line
Compilation aborted.
4 Errors.
Pozdro
Quote

Piotreq183's Photo Piotreq183 22.12.2012

musisz kompilować normalnie, wtedy nie będzie błędów, sprawdziłem :P
Quote

  • +
  • -
Krzysztof97's Photo Krzysztof97 22.12.2012

Mógłbyś mi podać amxx? Bo u mnie przy lokalnej kompilacji error 1 jest i nie działa;p
Quote

  • +
  • -
LuKoIl's Photo LuKoIl 22.12.2012

Nie dodałeśtego

#define DMG_BULLET (1<<1)


pod includami, oraz

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))
return HAM_IGNORED;

if(get_user_weapon(idattacker) == CSW_XXX && random_num(1,X) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

return HAM_IGNORED;
}


na końcu.

czyli wszystko powinno wyglądac tak:


#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
#include <fun>

#define DMG_BULLET (1<<1)

new const nazwa[] = "Rasiu [PREMIUM]";
new const opis[] = "Posiada m4 + 1/10 z każdej broni";
new const bronie = (1<<CSW_HEGRENADE)|(1<<CSW_M4A1)|(1<<CSW_FLASHBANG)|(1<<CSW_DEAGLE);
new const zdrowie = 30;
new const kondycja = 10;
new const inteligencja = 0;
new const wytrzymalosc = 20;

new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenZ");
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_B))
{
client_print(id, print_chat, "[Rasiu [PREMIUM]] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
ma_klase[id] = true;

return COD_CONTINUE;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
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))
return HAM_IGNORED;

if(get_user_weapon(idattacker) == CSW_XXX && random_num(1,X) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

return HAM_IGNORED;
}

Edited by LuKoIl, 22.12.2012 22:15.
Quote

  • +
  • -
Krzysztof97's Photo Krzysztof97 23.12.2012

Zedytowałem na inną klasę i mam tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#define DMG_BULLET (1<<1)				 
new const nazwa[]   = "Pomper [PREMIUM]";
new const opis[]			    = "Posiada dużo hp +1/7 z pompy";
new const bronie			    = (1<<CSW_XM1014)|(1<<CSW_SMOKEGRENADE);
new const zdrowie   = 50;
new const kondycja  = 10;
new const inteligencja = 0;
new const wytrzymalosc = 20;
new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenZ");
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_C))
{
  client_print(id, print_chat, "[Pomper [PREMIUM]] Nie masz uprawnien, aby uzywac tej klasy.")
  return COD_STOP;
}
give_item(id, "weapon_smokegrenade");
ma_klase[id] = true;
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
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))
																															    return HAM_IGNORED;
															    if(get_user_weapon(idattacker) == CSW_XM1014 && random_num(1,2) == 1)
																															    cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
															    return HAM_IGNORED;
}
i nie działa(specjalnie 1/2 do testów, bo na 2 magazynki by musiało wejść);/
Pozdro
Quote

  • +
  • -
dasiek's Photo dasiek 23.12.2012

zamień

public TakeDamage

na
fwTakeDamage_JedenZ
Quote

  • +
  • -
Krzysztof97's Photo Krzysztof97 23.12.2012

Mam tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#define DMG_BULLET (1<<1)				 
new const nazwa[]   = "Pomper [PREMIUM]";
new const opis[]			    = "Posiada dużo hp +1/7 z pompy";
new const bronie			    = (1<<CSW_XM1014)|(1<<CSW_SMOKEGRENADE);
new const zdrowie   = 50;
new const kondycja  = 10;
new const inteligencja = 0;
new const wytrzymalosc = 20;
new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenZ");
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_C))
{
  client_print(id, print_chat, "[Pomper [PREMIUM]] Nie masz uprawnien, aby uzywac tej klasy.")
  return COD_STOP;
}
give_item(id, "weapon_smokegrenade");
ma_klase[id] = true;
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
fwTakeDamage_JedenZ(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))
																															    return HAM_IGNORED;
															    if(get_user_weapon(idattacker) == CSW_XM1014 && random_num(1,2) == 1)
																															    cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
															    return HAM_IGNORED;
}
i nie działa;/
Quote

  • +
  • -
Amaroq's Photo Amaroq 24.12.2012

Teraz powinno działać
#include <amxmodx>
#include <codmod>
#include <hamsandwich>
#include <fun>

new const nazwa[] = "Pomper [PREMIUM]";
new const opis[] = "Posiada dużo hp +1/7 z pompy";
new const bronie = (1<<CSW_XM1014)|(1<<CSW_SMOKEGRENADE);
new const zdrowie = 50;
new const kondycja = 10;
new const inteligencja = 0;
new const wytrzymalosc = 20;

new bool:ma_klase[33];

public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_C))
{
client_print(id, print_chat, "[Pomper [PREMIUM]] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
give_item(id, "weapon_smokegrenade");
ma_klase[id] = true;
return COD_CONTINUE;
}

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

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

if(!ma_klase[idattacker])
return HAM_IGNORED;

if(damagebits & (1<<1))
{
if(get_user_weapon(idattacker) == CSW_XM1014 && random_num(1,7) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
}

return HAM_IGNORED;
}
Quote

  • +
  • -
Kawon's Photo Kawon 10.01.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Posted Image raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked