Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Klasa

Prośba o poprawienie klasy z bezlikiem ammo na czas (task)

klasa

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
9 odpowiedzi w tym temacie

#1 Dragon1020

    Pomocny

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:50
  • Lokalizacja:Polska
Offline

Napisano 16.01.2015 01:06

Witam, napisałem klasę która ma bezlik ammo (powklejane, przerobione gotowce) i dodałem do niego również task na 5sek jednakże bezlik ammo zamiast działać po użyciu skilla działa cały czas i po naciśnięciu E pasek leci a bezlik sie nie wyłącza potem

 

Prośba moja taka, żeby ktoś poprawił tak, żeby:

Na początku nie było bezliku ammo

Po naciśnięciu E (tak jak np. niewidka przy predatorze czy nieśmiertelność) był ten pasek który jest i przez ten czas działał bezlik ammo

Po skończeniu normalnie traci amunicje

 

 

Klasa:

#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fun>
#include <ColorChat>
#include <fakemeta>


#define CZAS_BEZLIK 5


#pragma tabsize 0
        
new const nazwa[]   = "Szturmowiec";
new const opis[]    = "Bezlik ammo na 5 sekund";
new const bronie    = (1<<CSW_SMOKEGRENADE)|(1<<CSW_M4A1)|(1<<CSW_DEAGLE);
new const zdrowie   = 0;
new const kondycja  = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new const pancerz = 20;


new bool:wykorzystal[33];
new bool:ma_klase[33];
new msg_bartime;
    
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");


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


msg_bartime = get_user_msgid("BarTime");


register_event("ResetHUD", "ResetHUD", "abe");
register_event("CurWeapon","CurWeapon","be", "1=1");


}


public cod_class_enabled(id)
{
ma_klase[id] = true;
ResetHUD(id);
give_item(id, "weapon_smokegrenade");
}
public cod_class_disabled(id)
ma_klase[id] = false;
public CurWeapon(id)


{


if(!is_user_connected(id))


return;






if(!ma_klase[id])


return;






set_user_clip(id, 2);






}










stock set_user_clip(id, ammo)


{


new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);


get_weaponname(weapon, weaponname, 31);


while ((weaponid = engfunc(EngFunc_FindEntityByString, weaponid, "classname", weaponname)) != 0)


if (pev(weaponid, pev_owner) == id) {


set_pdata_int(weaponid, 51, ammo, 4);


return weaponid;


}


return 0;


}
public cod_class_skill_used(id)
{
if(!is_user_alive(id))
  return;


if(wykorzystal[id])
{
  ColorChat(id, RED, "Wykorzystales juz bezlik ammo.");
  return;
}
  
wykorzystal[id] = true;
  
set_user_clip(id, 1);
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0);
set_task(CZAS_BEZLIK.0, "WylaczBezlik", id);
  
message_begin(MSG_ONE, msg_bartime, _, id)
write_short(CZAS_BEZLIK)
message_end()
}
public WylaczBezlik(id)
{
if(!is_user_connected(id)) return;
  
set_user_clip(id, 0);
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0);
}
public ResetHUD(id)
wykorzystal[id] = false;

 


  • +
  • -
  • 0

#2 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 16.01.2015 08:25

Dopiero wstałem i myślenie wyłączone, ale myślę, że błąd jest w CurWeapon. set_user_clip z mode =1 i =2 ustawia bezlik, tak ? Bo nie w temacie z tym stock'iem.. Jeśli tak to cały czas ta klasa to ma, gdy zmieni broń, bo nie jest t żaden warunek czy clip jest aktywowany czy co :X

 

Nie wiem czy to dobra metoda i zadziała, nie mam cod'a, więc nie stetuje, ale.. dziwna moda weszłą w życie z pustymi liniami, która zaburza mój ład i czytelność.. irytujące. Linie liniami, ale jak nie chcę Wam się tabulacji robić to używajcie chociaż tego.. http://codegenerators.pl/

 

http://wklej.to/DnYvb

 

Aha, mam codmod.inc bez pancerza i nie chciało mi się skompilować, dodaj go dam sobie ponownie  :X


  • +
  • -
  • 1

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#3 Dragon1020

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:50
  • Lokalizacja:Polska
Offline

Napisano 17.01.2015 02:01

Klasa działa znakomicie :)

Reasumując jeszcze:

 

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


public CurWeapon(id) {
if(!is_user_connected(id) || !ma_klasa[id] || !wlaczone[id]) return;


set_user_clip(id, 2);
}

Poprawione jest na zasadzie, że bezlik działa ale jest zatrzymany i dopiero to użyciu skilla (przycisk "E") uruchamia się ten bezlik później na końcu wyłącza się gdy pasek się zakończy. Czyli błąd był głównie przy tym tak?

 

Bo ogólnie do tego chciałem jeszcze dodać, że ten bezlik odblokowywuje się od danego lvl'a korzystając z tego wycinka:

new level = cod_get_user_level(id)
if(level < 20)
{
return COD_STOP
}
// kod
return COD_CONTINUE

Tylko pytanie gdzie to wstawić.

Czy przed:

public CurWeapon(id) {

 

Czy:

stock set_user_clip(id, ammo) {

 

czy

public cod_class_skill_used(id) {


  • +
  • -
  • 0

#4 pro100wHS

    Pomocny

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:70
  • GG:
  • Lokalizacja:Ziemia
Offline

Napisano 17.01.2015 08:57

Klasa działa znakomicie :)

Reasumując jeszcze:

 

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


public CurWeapon(id) {
if(!is_user_connected(id) || !ma_klasa[id] || !wlaczone[id]) return;


set_user_clip(id, 2);
}

Poprawione jest na zasadzie, że bezlik działa ale jest zatrzymany i dopiero to użyciu skilla (przycisk "E") uruchamia się ten bezlik później na końcu wyłącza się gdy pasek się zakończy. Czyli błąd był głównie przy tym tak?

 

Bo ogólnie do tego chciałem jeszcze dodać, że ten bezlik odblokowywuje się od danego lvl'a korzystając z tego wycinka:

new level = cod_get_user_level(id)
if(level < 20)
{
return COD_STOP
}
// kod
return COD_CONTINUE

Tylko pytanie gdzie to wstawić.

Czy przed:

public CurWeapon(id) {

 

Czy:

stock set_user_clip(id, ammo) {

 

czy

public cod_class_skill_used(id) {

W cod_class_enabled na samym począrku to dajesz. 


  • +
  • -
  • 0

b_350_20_FFFFFF_ACBB53_0A0F2E_000000.png

Jeżeli masz do mnie jakąś sprawę to napisz od razu o co ci chodzi.

Wiadomości typu "pomożesz?" bez wyjaśnienia sprawy będę od razu usuwał


#5 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 17.01.2015 11:54

Tak jak poprzednik, do enabled'a. A co do tego:

public CurWeapon(id) {
if(!is_user_connected(id) || !ma_klasa[id] || !wlaczone[id]) return;


set_user_clip(id, 2);
}

Tobie brakowało 3 warunku '!wlaczone[id]', czyli inaczej zapisane: 'wlaczone[id] == 0'. Jesli wlaczone 0, czyli nie jest wlaczone, na logike. A skoro wlaczone nie jest, to return'uj. Przez to, ze Tobie tego brakowało.. Nie wazne czy kliknales, czy nie.. warunki byly spelnione: gracz jest podlaczony i gracz ma ta klase - wiec daj mu bezlik ammo. A moj kod (dodanie zmiennej wlaczone, przypisanie jej wartosci gdy klika i gdy mija czas oraz ten warunek) dal efekt: jesli ma klase, jest podlaczony I MA WLACZONE - to daj bezlik  :) Chyba juz rozumiesz.

 

Łopatologicznie. 


  • +
  • -
  • 1

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#6 Dragon1020

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:50
  • Lokalizacja:Polska
Offline

Napisano 17.01.2015 16:31

Rozumiem rozumiem :)

 

A co do pana wyżej to dałoby się to przypisać bezpośrednio do klasy ?

 

Bo przykładowo w jednej klasie gdzie mam od 20lvl'a 2skoki to jest mniej więcej tak dlatego pytam:

 

public fwCmdStart_MultiJump(id, uc_handle)
{
new level = cod_get_user_level(id)
if(level < 20)
{
return COD_STOP;
}
if(!is_user_alive(id) || !ma_klase[id])
return COD_CONTINUE;


new flags = pev(id, pev_flags);


if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id])
{
skoki[id]--;
new Float:velocity[3];
pev(id, pev_velocity,velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id, pev_velocity,velocity);
}
else if(flags & FL_ONGROUND)
skoki[id] = 1;


return COD_CONTINUE;
}

Próbowałem też do niej dodać tak, że od 50 lvl'a odblokowuje się jedna umiejętność a blokuje druga, ale nie szło mi i zrezygnowałem z tego  :/

 


  • +
  • -
  • 0

#7 NieWiemMamMac@

    Wszechwidzący

  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:289
  • Imię:Kamil
  • Lokalizacja:Lokalizacja
Offline

Napisano 17.01.2015 17:50

public fwCmdStart_MultiJump(id, uc_handle)
{
    if(!is_user_alive(id) || !ma_klase[id])
        return FMRES_IGNORED;

    new flags = pev(id, pev_flags);

    if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id] && cod_get_user_level(id) >= 20)
    {
        skoki[id]--;
        new Float:velocity[3];
        pev(id, pev_velocity,velocity);
        velocity[2] = random_float(265.0,285.0);
        set_pev(id, pev_velocity,velocity);
    }
    else if(flags & FL_ONGROUND)
        skoki[id] = 1;

    return FMRES_IGNORED;
}

Estetyczniej a jeżli chcesz bezlik od level'a

to w public cod_class_skill_used(id) w warunku if(!is_user_alive(id))

dodaj

&& cod_get_user_level(id) >= 50

Czyli tak powinno wyglądać:

if(!is_user_alive(id) && cod_get_user_level(id) >= 20)

Użytkownik NieWiemMamMac@ edytował ten post 17.01.2015 18:03

  • +
  • -
  • 0

Pomagam z klasami/perkami/silnikiem COD

Kontakt:

[email protected]

PW

 


#8 Dragon1020

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:50
  • Lokalizacja:Polska
Offline

Napisano 18.01.2015 02:13

A za co odpowiada ten znak ? "="

Bo jeśli >20 to jak będzie większy niż 20 a >=20 to znaczy, że jak bedzie 20 lub wyższy lvl ?

 

 

Sprawdziłem i bezlik działa non stop po wypisaniu powyższego kodu


  • +
  • -
  • 0

#9 NieWiemMamMac@

    Wszechwidzący

  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:289
  • Imię:Kamil
  • Lokalizacja:Lokalizacja
Offline

Napisano 18.01.2015 11:55

A za co odpowiada ten znak ? "="

Bo jeśli >20 to jak będzie większy niż 20 a >=20 to znaczy, że jak bedzie 20 lub wyższy lvl ?

 

 

Sprawdziłem i bezlik działa non stop po wypisaniu powyższego kodu

Coś mi się pomieszało :(

if(!is_user_alive(id) || cod_get_user_level(id) < 50)
        return;

Tak możesz dać, lub z wiadomością:

public cod_class_skill_used(id)
{
    if(!is_user_alive(id))
        return;
    
    if(cod_get_user_level(id) < 50)
    {
        ColorChat(id, RED, "Musisz miec 50 poziom by uzyc mocy");
        return;
    }
    
    if(wykorzystal[id])
    {
        ColorChat(id, RED, "Wykorzystales juz bezlik ammo.");
        return;
    }

  • +
  • -
  • 1

Pomagam z klasami/perkami/silnikiem COD

Kontakt:

[email protected]

PW

 


#10 Dragon1020

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:50
  • Lokalizacja:Polska
Offline

Napisano 18.01.2015 16:36

Kozacko :) działa. A da radę wogóle zmienić ten czat ? żeby te info nie pokazywało się w taki sposób tylko tak jak np. przy wygranej "Terrorist Win" jest na środku i czy da się tą grafikę tego napisu zmienić? Bo to bardziej pod RealMod'a by było więc kolory typowo jak kiedyś na Zombie Modzie widziałem jak Zombie Wygrywa to taki zielony napis jest na środku taki "ubrudzony"


  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: klasa

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych