←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[Nowy COD] Przerobienie perku na klase

Locked

Emulov.'s Photo Emulov. 29.08.2011

Cześć, potrzebuje waszej pomocy.

Mam sobie jakiś perk, np.


#include <amxmodx>
#include <codmod>
#include <fakemeta>
#include <colorchat>

#define perk_name "Sztuka Dezorientacji"
#define perk_desc "Masz 1/LW szansy na ukrycie celownika wroga po strzale"

new bool:ma_perk[33];
new wartosc_perku[33];

new g_msg_hideweapon;

public plugin_init()
{
    register_plugin(perk_name, "1.0", "QTM_Peyote");
    
    cod_register_perk(perk_name, perk_desc, 2, 5);
    
    register_event("Damage", "Damage", "b", "2!0");
    
    g_msg_hideweapon = get_user_msgid("HideWeapon");
}

public cod_perk_enabled(id, wartosc)
{
    ma_perk[id] = true;
    wartosc_perku[id] = wartosc;
 perk_name);
}

public cod_perk_disabled(id)
    ma_perk[id] = false;

public Damage(id)
{
    new attacker = get_user_attacker(id);
    
    
    if(!is_user_connected(attacker))
   	 return PLUGIN_CONTINUE;
    
    if(!ma_perk[attacker])
   	 return PLUGIN_CONTINUE;
   	 
    if(random(wartosc_perku[attacker]))
   	 return PLUGIN_CONTINUE;
    
    Dzialaj(id);
    
    return PLUGIN_CONTINUE;
}

public Dzialaj(id)
{
    ChangeHUD(id, 1<<2);
    set_task(10.0, "wyłącz", id);
}

public wyłącz(id)
    ChangeHUD(id, 0);

public ChangeHUD(id, i)
{   	 
    message_begin(MSG_ONE_UNRELIABLE, g_msg_hideweapon, _, id);
    write_byte(i);
    message_end();
}

No a chcialbym przerobic go na klase, w sumie umialbym, gdyby nie to że on ma 2,5 i ja nie mam pojecia jak przeniesc to na klase, wyszlo mi cos takiego :


/* Plugin generated by AMXX-Studio */

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

new const nazwa[] = "Zlodziej";
new const opis[] = "Masz 1/LW szansy na ukrycie celownika wroga po strzale";
new const bronie = 1<<CSW_GALIL;
new const zdrowie = 15;
new const kondycja = 30;
new const inteligencja = 15;
new const wytrzymalosc = 0;

new bool:ma_klase[33];
new wartosc_klasy[33];

public plugin_init() {
    register_plugin(nazwa, "1.0", "QTM_Peyote");
    
    cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
    
    register_event("Damage", "Damage", "b", "2!0");
    
    g_msg_hideweapon = get_user_msgid("HideWeapon");
}

public cod_class_enabled(id)
{
    ma_klase[id] = true;
    wartosc_klasy[id] = wartosc;
}

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

public Damage(id)
{
    new attacker = get_user_attacker(id);
    
    
    if(!is_user_connected(attacker))
   	 return PLUGIN_CONTINUE;
    
    if(!ma_perk[attacker])
   	 return PLUGIN_CONTINUE;
   	 
    if(random(wartosc_perku[attacker]))
   	 return PLUGIN_CONTINUE;
    
    Dzialaj(id);
    
    return PLUGIN_CONTINUE;
}

public Dzialaj(id)
{
    ChangeHUD(id, 1<<2);
    set_task(10.0, "wyłącz", id);
}

public wyłącz(id)
    ChangeHUD(id, 0);

public ChangeHUD(id, i)
{   	 
    message_begin(MSG_ONE_UNRELIABLE, g_msg_hideweapon, _, id);
    write_byte(i);
    message_end();
}

No ale nie mam tych 2,5 bo jesli je dam to nie moge skompilowac .. :<

Jak mam to robic ?
Quote

  • +
  • -
HaDeS From HELL's Photo HaDeS From HELL 29.08.2011

zmień

ma_perk

Na

ma_klase
Edited by Szybcioor, 29.08.2011 16:25.
Quote

Emulov.'s Photo Emulov. 29.08.2011

Tyle że w perku jest :
cod_register_perk(perk_name, perk_desc, 2, 5);
Te 2,5 nie oznacza przypadkiem szansy na znikniecie celownika ? Jak to przeniesc ? Moglby ktos poprawić tą klase abym miał wzór co źle robie ?
Quote

  • +
  • -
A może sma?'s Photo A może sma? 29.08.2011

if(random(wartosc_perku[attacker]))
return PLUGIN_CONTINUE;

Dzialaj(id);

na:

if(random(5) == 0)
return PLUGIN_CONTINUE;

Dzialaj(id);

I usuń wartosc_klasy[33] z sma
Quote

Emulov.'s Photo Emulov. 29.08.2011

Lapcie plusy. Jeszcze jedno pytanie na plusa ;d

if(random(5) == 0)

Nie powinno być przypadkiem :

if(random(5) == 1)
Quote

  • +
  • -
A może sma?'s Photo A może sma? 29.08.2011

A co to za różnica?
Quote

Emulov.'s Photo Emulov. 30.08.2011

Jako że temat nie został zamknięty potrzebuje znów pomocy ...

Mam perk :

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <codmod>


new const perk_name[] = "Pancerz Neomexowy";
new const perk_desc[] = "Masz 1/LW szans na odbicie pocisku";

new bool:ma_perk[33];
new wartosc_perku[33];

public plugin_init()
{
    register_plugin(perk_name, "1.0", "QTM_Peyote");
    
    cod_register_perk(perk_name, perk_desc, 4, 7);
    RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_perk_enabled(id, wartosc)
{
    ma_perk[id] = true;
    wartosc_perku[id] = wartosc;
}

public cod_perk_disabled(id)
    ma_perk[id] = false;

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!is_user_connected(idattacker))
   	 return HAM_IGNORED;
   	 
    if(!ma_perk[this] || random_num(1, wartosc_perku[this]) != 1)
   	 return HAM_IGNORED;
   	 
    cod_inflict_damage(this, idattacker, damage, 0.0, idinflictor, damagebits);
    return HAM_SUPERCEDE;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/

A chce go przerobić na klase, to jak ? Na prawdę tego nie kumam .. :<

I wyszło mi coś takiego :

#include <amxmodx>
#include <codmod>
#include <hamsandwich>

new bool:ma_klase[33];

new const nazwa[] = "Strzelec";
new const opis[] = "Brak";
new const bronie = 1<<CSW_M4A1;
new const zdrowie = 10;
new const kondycja = 0;
new const pancerz = 0;
new const inteligencja = 0;
new const wytrzymalosc = 20;

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

public cod_class_enabled(id)
{
    ma_klase[id] = true;

}

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(random(10) == 2)
   	 return HAM_IGNORED;
   	 
    cod_inflict_damage(this, idattacker, damage, 0.0, idinflictor, damagebits);
    return HAM_SUPERCEDE;
}

Tak mam to robić ?

Jeśli ktoś odpowie - Tak to temat można zamknąć
Quote

  • +
  • -
A może sma?'s Photo A może sma? 30.08.2011

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

if(!ma_klase[id])
return HAM_IGNORED;

if(random(10) == 2)
return HAM_IGNORED;

cod_inflict_damage(this, idattacker, damage, 0.0, idinflictor, damagebits);
return HAM_SUPERCEDE;
}

Edited by A może sma?, 30.08.2011 23:24.
Quote
Locked