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

index out of bounds w ColorChat


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

#1 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 09.08.2014 15:19

L 08/06/2014 - 21:09:25: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20140806.log")
L 08/06/2014 - 21:09:25: [AMXX] Displaying debug trace (plugin "menu_spara_turniej.amxx")
L 08/06/2014 - 21:09:25: [AMXX] Run time error 4: index out of bounds
L 08/06/2014 - 21:09:25: [AMXX]    [0] colorchat.inc::ColorChat (line 74)
L 08/06/2014 - 21:09:25: [AMXX]    [1] menu_spara_turniej.sma::client_connect (line 89)
L 08/06/2014 - 21:09:27: [AMXX] Displaying debug trace (plugin "menu_spara_turniej.amxx")
L 08/06/2014 - 21:09:27: [AMXX] Run time error 4: index out of bounds
L 08/06/2014 - 21:09:27: [AMXX]    [0] colorchat.inc::ColorChat (line 74)
L 08/06/2014 - 21:09:27: [AMXX]    [1] menu_spara_turniej.sma::client_putinserver (line 102)
public client_connect(id)
{
        get_user_name(id, dane_gracza[NICK][id], 34);
        get_user_authid(id, dane_gracza[SID][id], 34);
        get_user_ip(id, dane_gracza[IP][id], 34, 1);
       
        for(new i=1;i<=g_MaxPlayers;i++)
        {
                if(is_user_connected(i))
                ColorChat(i, RED, "%s ^x03%s ^x01wchodzi na serwer | ^x04%s", PREFIX, dane_gracza[NICK][id], dane_gracza[SID][id]);
        }
       
        if(pCvar_LOG)
        {
                new tekst[256];
                formatex(tekst, 255, "%s - %s | %s", dane_gracza[NICK][id], dane_gracza[IP][id], dane_gracza[SID][id]);
                write_file(dir, tekst);
        }
}
 
public client_putinserver(id)
{
        ColorChat(0, RED, "%s ^x03%s^x01 dolaczyl do gry!", PREFIX, dane_gracza[NICK][id]);
} 

Wie ktoś może o co chodzi z tymi logami? wink.png


  • +
  • -
  • 0

#2 Niide

    *** it I'm done

  • Użytkownik

Reputacja: 86
Zaawansowany

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

Napisano 09.08.2014 15:26

Pokaż swoje colorchat.inc lub użyj tego (załącznik) i zobacz czy błąd wyskakuje nadal.

 

 

#Edit.

 

Spróbuj tak:

public client_connect(id)
{
        get_user_name(id, dane_gracza[NICK][id], 34);
        get_user_authid(id, dane_gracza[SID][id], 34);
        get_user_ip(id, dane_gracza[IP][id], 34, 1);
       
        for(new i=1;i<=g_MaxPlayers;i++)
        {
                if(is_user_connected(i))
			ColorChat(i, RED, "%s ^x03%s ^x01wchodzi na serwer | ^x04%s", PREFIX, dane_gracza[NICK][id], dane_gracza[SID][id]);
        }
       
        if(pCvar_LOG)
        {
                new tekst[256];
                formatex(tekst, 255, "%s - %s | %s", dane_gracza[NICK][id], dane_gracza[IP][id], dane_gracza[SID][id]);
                write_file(dir, tekst);
        }
}
 
public client_putinserver(id)
{
	for(new i=1;i<=g_MaxPlayers;i++)
		if(is_user_connected(i))
			ColorChat(0, RED, "%s ^x03%s^x01 dolaczyl do gry!", PREFIX, dane_gracza[NICK][id]);
} 

Tak, wiem, też masz tak

for(new i=1;i<=g_MaxPlayers;i++)
        {
                if(is_user_connected(i))
			ColorChat(i, RED, "%s ^x03%s ^x01wchodzi na serwer | ^x04%s", PREFIX, dane_gracza[NICK][id], dane_gracza[SID][id]);
        }

w client_connect, lecz nie użyłeś tabulatora przed ColorChat (nie wiem czy to coś zmienia), ale szukam po prostu rozwiązania.

Załączone pliki


Użytkownik Niide edytował ten post 09.08.2014 15:35

  • +
  • -
  • -1

kP8HWV.png


#3 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 09.08.2014 15:29

ColorChat nie ma tutaj nic do rzeczy, bo błędy występują tylko tutaj, a używam go jeszcze kilkadziesiąt razy w tym pluginie.

 

nie użyłeś tabulatora przez ColorChat

:facepalm:


  • +
  • -
  • 0

#4 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 09.08.2014 15:30

for(new i=1;i<=g_MaxPlayers;i++)

na

for(new i=1;i<g_MaxPlayers;i++)

  • +
  • -
  • 0

#5 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 09.08.2014 15:34

Dlaczego tak, skoro g_MaxPlayers oznacza liczbę slotów, a ja chcę to wyświetlić wszystkim graczom? Wydaje mi się, że gdyby tutaj był błąd to w następnej funkcji nie byłoby takich logów.


  • +
  • -
  • 0

#6 0-0-0

    ● 600 punktów ostrzeżeń

  • Power User

Reputacja: 222
Profesjonalista

  • Postów:599
  • Imię:___
  • Lokalizacja:___
Offline

Napisano 09.08.2014 15:34

Po co tak
 for(new i=1;i<=g_MaxPlayers;i++)
        {
                if(is_user_connected(i))
                ColorChat(i, RED, "%s ^x03%s ^x01wchodzi na serwer | ^x04%s", PREFIX, dane_gracza[NICK][id], dane_gracza[SID][id]);
        }
Skoro można tak
        ColorChat(0, RED, "%s ^x03%s ^x01wchodzi na serwer | ^x04%s", PREFIX, dane_gracza[NICK][id], dane_gracza[SID][id]);
public client_connect(id)
->
public client_authorized(id)
(nie jestem pewien)
  • +
  • -
  • 0
b_350_20_692108_381007_FFFFFF_000000.png - CS:GO [4FUN][Ruletka]
b_350_20_692108_381007_FFFFFF_000000.png - CS:GO [DM]
b_350_20_692108_381007_FFFFFF_000000.png - CS:GO [FFA]
b_350_20_692108_381007_FFFFFF_000000.png - CS:GO [Only Dust2]
b_350_20_692108_381007_FFFFFF_000000.png - CS:GO [Call of Duty]

#7 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 09.08.2014 15:35

Tak, bo szukałem rozwiązania problemu, ponieważ przy tym drugim sposobie też sypie logami, jakbyś nie zauważył w pierwszym poście.

Przecież używam zarówno connect, jak i putinserver :facepalm: Ludzie, czytajcie całego posta...


  • +
  • -
  • 1

#8 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 09.08.2014 18:34

Po co używasz własnej biblioteki colorchat?? To przez nią jest błąd. Ktoś nie do końca przemyślał jej działanie i ci błędami sypie. Użyj colorchat'u z amxmodx'a. client_print_color (http://amxx.pl/dokum.../s107/chatcolor) ale dzięki uproszeniom w bibliotece możesz używać nadal nazwy ColorChat. Niczego w pluginie nie zmieniaj tylko usuń linijkę:
#include <colorchat>
i pobierz najnowsze pliczki .inc amxmodx'a lub skompiluj na amxx.pl Tyle trudu.

Co do błędu to trzeba spojrzeć na bibliotekę colorchat a dokładnie na linijkę 75 (w logach wyskakuje ci 74 ale zazwyczaj chodzi o następną linijkę...) czyli:
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
Jedyną tablicą w tej linijce jest tablica TeamName teraz trzeba zobaczyć jak ona wygląda:
new TeamName[][] = 
{
	"",
	"TERRORIST",
	"CT",
	"SPECTATOR"
}
Wszyscy sobie pewnie pomyślą że jest wszystko okey ale wcale nie gdyż często w amxmodx'ie totalnie wszystko się buguje dlatego wcale się nie dziwię że chce uzyskać komórkę -1... Rozwiazaniem było by użycie funkcji funkcji clamp/cs_get_user_team/get_pdata_int z offsetem team'u
  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#9 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 09.08.2014 18:53

public client_putinserver(id)
{
	for(new i=1;i<=g_MaxPlayers;i++)
		if(is_user_connected(i))
			ColorChat(0, RED, "%s ^x03%s^x01 dolaczyl do gry!", PREFIX, dane_gracza[NICK][id]);
} 

I wiadomość pokaże się tyle razy ile jest slotów.

for(new i=1;i<=g_MaxPlayers;i++)
na
for(new i=1;i<g_MaxPlayers;i++)

To jest dobrze, tutaj nic nie trzeba zmieniać.

Po co tak

 for(new i=1;i<=g_MaxPlayers;i++)
        {
                if(is_user_connected(i))
                ColorChat(i, RED, "%s ^x03%s ^x01wchodzi na serwer | ^x04%s", PREFIX, dane_gracza[NICK][id], dane_gracza[SID][id]);
        }
Skoro można tak
        ColorChat(0, RED, "%s ^x03%s ^x01wchodzi na serwer | ^x04%s", PREFIX, dane_gracza[NICK][id], dane_gracza[SID][id]);

To nie jest dokładnie to samo.

public client_connect(id)
->
public client_authorized(id)
(nie jestem pewien)

Ale wtedy kod będzie wykonywał się w innym momencie, a z tego co widać ma być info o tym, że ktoś wchodzi na serwer (czyli jeszcze nie wszedł, ale że wchodzi).


dane_gracza[NICK][id]
Trochę dziwnie to zrobiłeś. Nie wiem czy to ma jakiś większy wpływ (raczej nie), ale według mnie tablice powinno się tworzyć tak, żeby pod każdym id są obok siebie dane. Zapewne zrobiłeś tak
dane_gracza[struktura][33]
czyli dane układają się tak
{nick,nick,nick} // i tak 33 razy
{ip,ip} // 33 razy
{sid,sid} // 33 razy
ja bym zrobił tak
dane_gracza[33][struktura]
czyli
{nick,ip,sid}
{nick,ip,sid}
// 33 razy

  • +
  • -
  • 2

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#10 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 09.08.2014 19:19

Użyj colorchat'u z amxmodx'a. client_print_color (http://amxx.pl/dokum.../s107/chatcolor) ale dzięki uproszeniom w bibliotece możesz używać nadal nazwy ColorChat. Niczego w pluginie nie zmieniaj tylko usuń linijkę:

Kiedy usunę tę linijkę to muszę zincludować tę drugą bibliotekę, bo inaczej sypie błędami, ale spójrz na jej strukturę. Musiałbym wszędzie zmieniać funkcję ColorChat, bo ta którą podałeś ma inny układ.


  • +
  • -
  • 0

#11 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 09.08.2014 19:27

Kiedy usunę tę linijkę to muszę zincludować tę drugą bibliotekę, bo inaczej sypie błędami

Dlatego napisałem:

pobierz najnowsze pliczki .inc amxmodx'a lub skompiluj na amxx.pl Tyle trudu

Jakoś mi nie sypie ;D Chyba że mam niestandardowe pliczki .inc ale w to wątpię bo chyba tego nie ruszałem ;D


Musiałbym wszędzie zmieniać funkcję ColorChat, bo ta którą podałeś ma inny układ.

Inny układ? Gdzie ty widzisz różnicę? Przeczytaj 10 razy link który tam dałem (do biblioteki amxmodx'a) wszystko śmiga
  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#12 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 09.08.2014 19:31

Inny układ? Gdzie ty widzisz różnicę?
client_print_color(index, sender, const fmt[], any:...);

index się zgadza

w sender mogę użyć ID gracza, którego kolor drużyny chcę przypisać lub jeden z tych kolorów: RED, BLUE, GREY. A gdzie GREEN?

reszta OK

 

pobierz najnowsze pliczki .inc amxmodx'a

Pobrałem AMXX 1.8.3 i nie widzę tam takiej biblioteki nawet.


  • +
  • -
  • 0

#13 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 09.08.2014 20:16

Pobrałem AMXX 1.8.3 i nie widzę tam takiej biblioteki nawet.

To jest dostępne od amxmodx'a 1.8.3 build 185 ;D Nie pamiętam skąd ja to wziąłem wybacz... Sprawdź w kompilatorze amxx.pl ;D

w sender mogę użyć ID gracza, którego kolor drużyny chcę przypisać lub jeden z tych kolorów: RED, BLUE, GREY

enum
{
	Grey = 33,
	Red,
	Blue
}
Przypatrz się!! Pierwszy kolorek to id 33 tzn. zaraz po 32 a 32 to max id gracza.

Wnioski:
Drugi arg ma dwie możliwości:
1 - jest to id gracza 1~32, na podstawie team'u gracza z tego index'u zostanie wybrany kolor
2 - jest to stała RED,BLUE,GREY/Red,Blue,Grey kolory adekwatne do nazw stałych

A gdzie GREEN?

Przykro mi nie ma (bynajmniej nie w łatwy sposó B)
  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#14 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 09.08.2014 20:37

To jest dostępne od amxmodx'a 1.8.3 build 185 ;D

Nie każdy używa najnowszego AMXX'a na serwerze, więc ta opcja raczej odpada.


  • +
  • -
  • 0

#15 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

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

Napisano 10.08.2014 09:08

Bibliotekę można pobrać osobno, do starszego amxmodxa... Nawet dostępna jest w aż 3ch wydaniach: jako plugin, jako moduł i jako stock...

A błędy biorą się dokładnie stąd, że przy client_connect oraz client_putinserver gracz nie jest jeszcze w teamie, a funkcja która jest użyta w "starym" colorchacie do wykrywania teamu, zwraca właśnie czasem -1, co BlackPerfum używał... Dlatego błąd wywala Ci tylko tu, a nie wszędzie, mimo tego, że:

błędy występują tylko tutaj, a używam go jeszcze kilkadziesiąt razy w tym pluginie.


Więc nie jest prawdą, że:

ColorChat nie ma tutaj nic do rzeczy


I nie ma się co sprzeczać, po prostu podmień bibliotekę... Jeśli masz starszego AMXModX to pobierz sobie nowiuśkiego colorchata jako moduł i po sprawie.
  • +
  • -
  • 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


#16 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 10.08.2014 11:30

Wgrałem moduł ColorChat z tego tematu - https://forums.allie...ad.php?t=183388

 

Oczywiście nie działa. Mam takie logi:

L 08/10/2014 - 11:13:41: [AMXX] Plugin "screenshot_spar_turniej.amxx" failed to load: Module/Library "colorchat" required for plugin.  Check modules.ini.
L 08/10/2014 - 11:13:41: [AMXX] Plugin "menu_spara_turniej.amxx" failed to load: Module/Library "colorchat" required for plugin.  Check modules.ini.

modules.ini:

fun
engine
fakemeta
geoip
sockets
regex
nvault
cstrike
csx
hamsandwich
rage
colorchat

meta list:

Currently running plugins:
 [  1] AMX Mod X, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org
 [  2] SB Guardian, v1.4.3.0, Apr 17 2011, by Developer: Fabian "Live" F.  Testers: Moras, DuAuchNicht, Vandit, see http://ste
 [  3] MySQL, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org/
 [  4] SQLite, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org/
 [  5] Fun, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org
 [  6] Engine, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org
 [  7] FakeMeta, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org
 [  8] CStrike, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org
 [  9] CSX, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org/
 [ 10] Ham Sandwich, v1.8.2, Feb 14 2013, by AMX Mod X Dev Team, see http://www.amxmodx.org
 [ 11] Rage, vBETA 3, Mar 21 2012, by joaquimandrade, see http://www.amxmodx.org
 [ 12] ColorChat, v1.1b, Jun 23 2012, by ConnorMcLeod, see 
 [ 13] thiscall_Int__ptr_String, v0.0.1, Apr 21 2012, by ConnorMcLeod, see 
13 plugins

Oczywiście wgrałem nowego includa do kompilatora. Wie ktoś co jest nie tak?


  • +
  • -
  • 0

#17 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 11.08.2014 18:37

Z powyższym błędem się nie uporałem, więc postanowiłem poszukać stocka, który nie zawiera błędu. Niestety po wgraniu tego ColorChata nadal występują te same błędy - http://amxx.pl/topic...-2-inne-wersje/


  • +
  • -
  • 0

#18 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 13.08.2014 11:39

postanowiłem poszukać stocka

Po co? Napisałem co wystarczy by naprawić ten błąd (w bibliotece)

Rozwiazaniem było by użycie funkcji funkcji clamp/cs_get_user_team/get_pdata_int z offsetem team'u


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#19 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 13.08.2014 11:59

Postanowiłem zmienić to na cs_get_user_team, bo odkryłem jedną ciekawą rzecz. Kiedy zabiłem się zmieniając drużynę i sprawdziłem ją jeszcze przed odrodzeniem, pokazały się takie wartości:

Cstrike: 1 / Amxmodx: 2

Dopiero kiedy się odrodziłem pokazało się:

Cstrike: 1 / Amxmodx: 1

Dziwna sprawa wink.png

 

 

PS.

pev(id, pev_team);

Dlaczego to cały czas zwraca zero?


  • +
  • -
  • 0




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

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