←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Jak dodać niewidzialność do klasy [Śmieszne]

  • +
  • -
^Grzyboo - zdjęcie ^Grzyboo 22.05.2011

Jak dodać niewidzialność do klasy, czyli coś komicznego, a jeszcze się ludzie o to pytają. W nowym codzie jest to naprawdę proste.

1. Mamy taką oto klasę

#include <amxmodx>
#include <codmod>

new const nazwa[] = "Niewidzialny";
new const opis[] = "Ledwo go widac";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;
new const zdrowie = -20;
new const kondycja = -10;
new const inteligencja = 5;
new const wytrzymalosc = 10;


public plugin_init()
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);


2. Dołączamy moduł engine, który jest do tego niezbędny. Robimy to dodając
#include <engine>
na początku pluginu


3. Teraz wystarczy ustawić niewidzialność.
Robimy to tymi funkcjami:

public cod_class_enabled(id)
{
ma_klase[id] = true;
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 40); // Zamiast 40 dajemy dowolną wartość w granicach 1-255
}

public cod_class_disabled(id)
{
ma_klase[id] = false;
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255); // Koniecznie 255, ustawia to pełną widzialność, jeżeli gracz zmieni klasę
}




4. Finałowe sma to:


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

new const nazwa[] = "Niewidzialny";
new const opis[] = "Ledwo go widac";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;
new const zdrowie = -20;
new const kondycja = -10;
new const inteligencja = 5;
new const wytrzymalosc = 10;

new bool:ma_klase[33]; **

public plugin_init()
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);


public cod_class_enabled(id)
{
ma_klase[id] = true; **
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 40);
}

public cod_class_disabled(id)
{
ma_klase[id] = false; **
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}


**- jeżeli klasa nie będzie miała żadnych dodatkowych funkcji, można darować sobie zmienną ma_klasę, gdyż jest niepotrzebna.


Dziękuje, to wszystko
Użytkownik ^Grzyboo edytował ten post 23.05.2011 13:22
Odpowiedz

  • +
  • -
Goliath - zdjęcie Goliath 23.05.2011

Dołączamy moduł engine, który jest do tego niezbędny.

Zawsze można też fakemetą, używając tego stocka:
stock fm_set_rendering(entity, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16) 
{
new Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);

set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));

return 1;
}

Użytkownik Goliath edytował ten post 23.05.2011 16:37
Odpowiedz

  • +
  • -
^Grzyboo - zdjęcie ^Grzyboo 23.05.2011

fakemetą można wszystko prawie ;D
Dla kogoś kto zadaje pytania o niewidzalności gracza, czy dodatkowych obrażeniach z bronią engine jest jedynym rozwiązaniem.
Odpowiedz

  • +
  • -
Na 5tyk - zdjęcie Na 5tyk 23.06.2011

Sorry za odświeżenie, ale jak zrobić, żeby niewidka była na kosie?
Odpowiedz

  • +
  • -
JaVoR - zdjęcie JaVoR 23.06.2011

Takie coś znalazłem:

Witam. W tym temacie przedstawię Wam jak w łatwy sposób dodać danej klasie niewidzialność na nożu (bez żadnego ładowania). No to zaczynamy.
Szukamy
KodKod:
new invisible_cast[33]


dodajemy pod
KodKod:
new niewidka[33]


w funkcji RoundStart znajdź, np.
KodKod:
invisible_cast[i] = 0


dodaj pod
KodKod:
niewidka[i] = 0


w funkcji CurWeapon znajdź
KodKod:
invisible_cast[id] = 0


dodaj pod
KodKod:
niewidka[id] = 0


dalej w tej samej funkcji szukamy
KodKod:
if(weapon == CSW_KNIFE)
    on_knife[id] = 1


zamieniamy na
KodKod:
if(weapon == CSW_KNIFE) {
    on_knife[id] = 1
    if(player_class[id] == Twoja_Klasa)
        niewidka[id] = 1
}


szukamy
KodKod:
else if(invisible_cast[id]==1)
{
    if(player_b_inv[id]>0) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, floatround((10.0/255.0)*(255-player_b_inv[id])))
    else set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 10)
}


dodajemy pod
KodKod:
else if(niewidka[id]==1)
{
    if(player_b_inv[id]>242) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, floatround((10.0/255.0)*(255-player_b_inv[id])))
    else set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 12)
}

To jest z Diablo ale powinno działać.
Użytkownik JaVoR edytował ten post 23.06.2011 12:41
Odpowiedz

  • +
  • -
Na 5tyk - zdjęcie Na 5tyk 23.06.2011

To nie zadziała, bo nie ma player_b_inv :)
Odpowiedz

  • +
  • -
sharkowy - zdjęcie sharkowy 23.06.2011

public CurWeapon(id)
{
if(!ma_klase[id])
return;

if(get_user_weapon(id) == CSW_KNIFE)
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10);
else
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}



Wcześniej oczywiście rejestrujesz event i includujesz engine.
Użytkownik RPK. Shark edytował ten post 23.06.2011 13:05
Odpowiedz

Almer - zdjęcie Almer 11.08.2011

koledzy powiedział by mi ktoś jak zrobić aby klasa była tylko niewidzialna z nożem ?
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 11.08.2011

Daj kod to się przerobi ;]
Odpowiedz

Almer - zdjęcie Almer 11.08.2011

ten kod co ten kolega wyżej zrobił byście mogli przerobić aby klasa była niewidzialna z nożem

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

new const nazwa[] = "Niewidzialny";
new const opis[] = "Ledwo go widac";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;
new const zdrowie = -20;
new const kondycja = -10;
new const inteligencja = 5;
new const wytrzymalosc = 10;

new bool:ma_klase[33]; **

public plugin_init() 
        cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);


public cod_class_enabled(id)
{
        ma_klase[id] = true; **
        set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 40);
}
        
public cod_class_disabled(id)
{
        ma_klase[id] = false; **
        set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}

Dodano 12 sierpień 2011 - 08:53:
przerobił by mi ktoś to ??
Odpowiedz

  • +
  • -
misiecki2 - zdjęcie misiecki2 05.09.2011

no tak ale jak edytować te ma_klase?
Odpowiedz

  • +
  • -
radim - zdjęcie radim 05.09.2011

Aby zrobić niewidzialność na nożu należy dodać na koniec pluginu klasy to:

public client_PreThink(id)
{
if(!ma_klase[id])
return;

if(get_user_weapon(id) == CSW_KNIFE)
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10);
else
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}

i do tego dodać include engine czyli na samej górze pluginu pod:
#include <codmod>
wklej to:
#include <engine>
Czyli całość u Ciebie ma wyglądać tak:
#include <amxmodx>
#include <codmod>
#include <engine>

new const nazwa[] = "Niewidzialny";
new const opis[] = "Ledwo go widac";
new const bronie = 1<<CSW_M4A1 | 1<<CSW_DEAGLE;
new const zdrowie = -20;
new const kondycja = -10;
new const inteligencja = 5;
new const wytrzymalosc = 10;

new bool:ma_klase[33];

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

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

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

public client_PreThink(id)
{
if(!ma_klase[id])
return;

if(get_user_weapon(id) == CSW_KNIFE)
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10);
else
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}


@misiecki2
Nie trzeba edytować ma_klase xD
Użytkownik radim edytował ten post 05.09.2011 17:20
Odpowiedz

  • +
  • -
misiecki2 - zdjęcie misiecki2 05.09.2011

no tak ale jak mam premium i dodam ten kod na niewidzialność to wtedy mi błąd wyskakuje podczas kompilacji.

dam ci nawet błąd z moim sma:

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
#define DMG_BULLET (1<<1)
new const nazwa[] = "Cichy Komandos (Premium)";
new const opis[] = "Ma Deagle i Zabija z noza (PPM), jest prawie niewidzialny";
new const bronie = 1<<CSW_DEAGLE;
new const zdrowie = 10;
new const kondycja = 35;
new const inteligencja = 0;
new const wytrzymalosc = 10;
new bool:ma_klase[33];
public plugin_init()
{
register_plugin("Medyk", "1.0", "QTM_Peyote");

cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
register_forward(FM_CmdStart, "CmdStart");

}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_D))
{
client_print(id, print_chat, "[Cichy Komandos] 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 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) == CSW_KNIFE && damagebits & DMG_BULLET && damage > 20.0)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

return HAM_IGNORED;
}
public cod_class_enabled(id)
{
ma_klase[id] = true;
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 40); // Zamiast 40 dajemy dowolną wartość w granicach 1-255
}

public cod_class_disabled(id)
{
ma_klase[id] = false;
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255); // Koniecznie 255, ustawia to pełną widzialność, jeżeli gracz zmieni klasę
}


Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team
Error: Symbol already defined: "cod_class_enabled" on line 62
Warning: Function "cod_class_enabled" should return a value on line 65
Error: Symbol already defined: "cod_class_disabled" on line 68
2 Errors.
Could not locate output file C:\Users\NieJestemPRO\Pobrane\AMXX_Studio_1.4.3_final\compiled\codclass_cichykomandos.amx (compile failed).


widzisz to znaczy że się powtarzają bo jest to już w premium zawarte
Odpowiedz

  • +
  • -
radim - zdjęcie radim 05.09.2011

Człowieku, a po co Ci drugie cod_class_enabled i disabled ? Ja nic takiego nie pisałem, abyś tak zrobił ! Zastosuj poniższe sma:

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

new const nazwa[] = "Cichy Komandos (Premium)";
new const opis[] = "Ma Deagle i Zabija z noza (PPM), jest prawie niewidzialny";
new const bronie = 1<<CSW_DEAGLE;
new const zdrowie = 10;
new const kondycja = 35;
new const inteligencja = 0;
new const wytrzymalosc = 10;

new bool:ma_klase[33];

public plugin_init()
{
register_plugin(nazwa, "1.0", "QTM_Peyote");
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_D))
{
client_print(id, print_chat, "[Cichy Komandos] 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 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) == CSW_KNIFE && damagebits & DMG_BULLET && damage > 20.0)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);

return HAM_IGNORED;
}
public client_PreThink(id)
{
if(!ma_klase[id])
return;

if(get_user_weapon(id) == CSW_KNIFE)
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10);
else
set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
}

Użytkownik radim edytował ten post 05.09.2011 19:54
Odpowiedz

  • +
  • -
misiecki2 - zdjęcie misiecki2 05.09.2011

no tak, ale to jest żeby on niewidzialny był z nożem a to potrafię, a zrobić go ze wszystkim niewidzialnego udaje mi się bez premium.
Odpowiedz

ChadaWGW2 - zdjęcie ChadaWGW2 04.05.2012

Thx radim i RPK.Shark +
Użytkownik ChadaWGW2 edytował ten post 04.05.2012 10:15
Odpowiedz

  • +
  • -
Dragon1020 - zdjęcie Dragon1020 07.10.2014

Radim a jak zrobić żeby po wybraniu kosy pasek był i po np.5 sekundach dopiero postać znikała (w sensie tak słabo a nie od razu na widoczność 0)

albo na zasadzie że pasek leci i przez ten czas powoli postać znika aż do odpowiedniej wartości (po tych 5 sekudach)

 

I przy okazji, umie ktoś zrobić żeby widzialność była zależna od pkt int i opisał gdzie się to robi ? Bo kombinuje i kombinuje i nic z tego nie wychodzi aż odpuściłem, może tu ktoś to ogarnie (pod cod mod nowy)

Odpowiedz