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

[ROZWIĄZANE] Index out of bounds


  • Zamknięty Temat jest zamknięty
13 odpowiedzi w tym temacie

#1 PrezydenT

    Zaawansowany

  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 18.03.2014 16:20

Witam, mam problem z jednym pluginem , mianowicie przed dodaniem do klasy działał bezproblemowo, jednak po dodaniu nie trybi  i wywala logi:

L 03/18/2014 - 16:14:26: [AMXX] Displaying debug trace (plugin "klasa.amxx")
L 03/18/2014 - 16:14:26: [AMXX] Run time error 4: index out of bounds 
L 03/18/2014 - 16:14:26: [AMXX]    [0] klasa.sma::fw_SecondaryAttack_Post (line 38)
L 03/18/2014 - 16:14:43: [AMXX] Displaying debug trace (plugin "klasa.amxx")
L 03/18/2014 - 16:14:43: [AMXX] Run time error 4: index out of bounds 
L 03/18/2014 - 16:14:43: [AMXX]    [0] klasa.sma::fw_SecondaryAttack_Post (line 38)

Kod klasy:

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <codmod>
#define Time 1.0
#define Task 100

new ma_klase[33]
new const nazwa[]   = "klasa";
new const opis[]    = "klasa";
new const bronie    = (1<<CSW_M4A1)|(1<<CSW_AK47);
new const zdrowie   = 0;
new const kondycja  = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

public plugin_init()
{
    register_plugin("Change adding/removing silencer time", "0.1", "Sqwareck");
    RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1", "fw_SecondaryAttack_Post", 1);
    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 fw_SecondaryAttack_Post(id)
{
    if(!task_exists(Task+id) && ma_klase[id])
    {
        set_task(Time-0.1, "UstawTlumik", Task+id)
        set_pdata_float(id,46,Time,4)
        set_pdata_float(id,47,Time,4)
    }
}

public UstawTlumik(id)
{
    id-=Task    //Wyciagam id
    if(get_pdata_int(id,43,3) != CSW_M4A1)    return 0
    if(!get_pdata_int(id,74,4))    set_pdata_int(id,74,0,4)
    else    set_pdata_int(id,74,1<<2,4)
    return 0
}


Użytkownik Sqwareck edytował ten post 18.03.2014 16:21

  • +
  • -
  • 0

#2 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 18.03.2014 17:19

Chyba id to nie jest id gracza w fw_SecondaryAttack_Post

 

 

static client;
client = get_pdata_cbase(id, 41, 4);
 
i wszędzie indziej podmienić id na client

  • +
  • -
  • 1

#3 PrezydenT

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 18.03.2014 17:47

Wszędzie gdzie jest id? Bez wyjątku?

 


  • +
  • -
  • 0

#4 Niide

    *** it I'm done

  • Użytkownik

Reputacja: 86
Zaawansowany

  • Postów:216
  • Imię:Paweł
  • Lokalizacja:Holandia
Offline

Napisano 18.03.2014 17:51

Dodaj:

if(is_user_connected(id) && is_user_alive(id))
{

przed

if(!task_exists(Task+id) && ma_klase[id])

    {

I jeszcze jedną klamrę za:

   set_task(Time-0.1, "UstawTlumik", Task+id)

        set_pdata_float(id,46,Time,4)

        set_pdata_float(id,47,Time,4)

    }

  • +
  • -
  • 0

kP8HWV.png


#5 PrezydenT

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 18.03.2014 17:55

Szczerze? Co to da że sprawdzę czy gracz jest żywy i podłączony?

 

@ no może errory zniknęły, ale moc klasy nie działa.


Użytkownik Sqwareck edytował ten post 18.03.2014 18:07

  • +
  • -
  • 0

#6 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 18.03.2014 18:31

Nie wszędzie, gdzie jest id, tylko w tej funkcji. Moc nie będzie działać, bo tak jak powiedziałem id to nie jest id gracza w tym przypadku. Nigdy nie będzie spełniony warunek is_user_connected(id).


  • +
  • -
  • 0

#7 PrezydenT

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 18.03.2014 18:56

Weź mi napisz jak to powinno być bo ja już nie mam siły do tego, kombinowałem chyba z 10x i nic.


  • +
  • -
  • 0

#8 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 18.03.2014 20:48

1. bierzesz funkcję fw_SecondaryAttack_Post i wewnątrz niej zamieniasz wszystkie wystąpienia zmiennej id na zmienną client.
2. Dodajesz na początku tej funkcji to, co napisał 13117 w pierwszym swoim poście w tym temacie

Takie to trudne? Masz wszystko na tacy, ale nie potrafisz tego zrobić? To nie jest dział "Ej weź zrób to za mnie bo nie umiem/nie chce mi się/jestem na to za głupi" (niepotrzebne skreślić)...
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#9 PrezydenT

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 19.03.2014 13:38

Proszę bardzo, udowadniam iż jestem zbyt głupi:

Wszystko zmieniłem:

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <codmod>
#define Time 0.3
#define Task 100

new ma_klase[33]
new const nazwa[]   = "klasa";
new const opis[]    = "klasa";
new const bronie    = (1<<CSW_M4A1)|(1<<CSW_AK47);
new const zdrowie   = 0;
new const kondycja  = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

public plugin_init()
{
	register_plugin("Change adding/removing silencer time", "0.1", "Sqwareck");
	RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1", "fw_SecondaryAttack_Post", 1);
	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 fw_SecondaryAttack_Post(id)
{
{
	static client;
	client = get_pdata_cbase(id, 41, 4);
	if(!task_exists(Task+client) && ma_klase[id])
	{
		set_task(Time-0.1, "UstawTlumik", Task+client)
		set_pdata_float(client,46,Time,4)
		set_pdata_float(client,47,Time,4)
	}
}
}

public UstawTlumik(id)
{
	id-=Task	//Wyciagam id
	if(get_pdata_int(id,43,3) != CSW_M4A1)	return 0
	if(!get_pdata_int(id,74,4))	set_pdata_int(id,74,0,4)
	else	set_pdata_int(id,74,1<<2,4)
	return 0
}

I nie działa, logi te same.


  • +
  • -
  • 0

#10 Aemiksowy

    Banned

  • Zbanowany

Reputacja: 34
Życzliwy

  • Postów:222
  • Lokalizacja::)
Offline

Napisano 19.03.2014 14:21

ma_klase[id] -> ma_klase[client]...



#11 PrezydenT

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 19.03.2014 16:11

logi zniknęły, ale moc nie działa
 
Ps. Tu jest plugin nie przystosowany do klasy, i działa bez jakichkolwiek clientów itp.
 
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
 
#define Time 1.0 // Czas założenia tłumiku od naciśnięcia ppm
#define Task 100
 
public plugin_init()
{
    register_plugin("Change adding/removing silencer time", "0.1", "d0naciak");
    
    RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1", "fw_SecondaryAttack_Post", 1);
    RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_usp", "fw_SecondaryAttack_Post", 1);
}
 
public fw_SecondaryAttack_Post(id)
{
    if(!task_exists(Task+id))    //Przydało by się sprawdzić czy task nie istnieje
    {
        set_task(Time-0.1, "UstawTlumik", Task+id)
        set_pdata_float(id,46,Time,4)    //Gracz będzie mógł urzyć komendy attack dopiero po tym czasie
        set_pdata_float(id,47,Time,4)    //Gracz będzie mógł urzyć komendy attack2 dopiero po tym czasie
    }
}
 
public UstawTlumik(id)
{
    id-=Task    //Wyciagam id
    new weapon = get_pdata_int(id,43,3) // Pobieram bron gracza
    if(weapon != CSW_USP && weapon != CSW_M4A1)    return 0    //Sprawdzam czy gracz ma usp lub m4 bo gracz mógł zmienić broń
    
    if(!get_pdata_int(id,74,4))    set_pdata_int(id,74,0,4)
    //Sprawdzam czy ma tłumik + zabieram tlumik
    else    set_pdata_int(id,74,(weapon == CSW_USP ? (1<<0):(1<<2)),4)
    //Jeśli gracz nie ma tlumika to go ustawiam
    
    return 0
}

Użytkownik GwynBleidD edytował ten post 22.03.2014 10:19

  • +
  • -
  • 0

#12 ^Grzyboo

    Wszechobecny

  • Użytkownik

Reputacja: 246
Wszechwidzący

  • Postów:461
  • Imię:Grzyboo
  • Lokalizacja:Tak
Offline

Napisano 22.03.2014 12:04

public fw_SecondaryAttack_Post(id)
{
	static client;
	client = get_pdata_cbase(id, 41, 4);
	if(!task_exists(Task+id) && ma_klase[client])
	{
		set_task(Time-0.1, "UstawTlumik", Task+id)
		set_pdata_float(id,46,Time,4)
		set_pdata_float(id,47,Time,4)
	}
}

W takim razie coś takiego spróbuj.


  • +
  • -
  • 1

#13 PrezydenT

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 22.03.2014 16:53

No i działa, dziękuję.


  • +
  • -
  • 0

#14 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 22.03.2014 17:45

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

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


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0




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

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