id out of bounds.. again

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

id out of bounds.. again

Post by xFrostas »

Code: Select all

new Players[32], Numget_players(Players, Num, "ae", "TERRORIST") new randPl = Players[random(Num)] // index out of bounds
Karts nuo karto išmeta, suprantu, kad užeina už ribų, bet kaip sutvarkyti?

sss
Flooderis arba specialistas
Posts: 621
Joined: 2010 Dec 22 20:00
Location: ey b0s

Re: id out of bounds.. again

Post by sss »

xFrostas wrote:

Code: Select all

new Players[32], Numget_players(Players, Num, "ae", "TERRORIST") new randPl = Players[random(Num)] // index out of bounds
Karts nuo karto išmeta, suprantu, kad užeina už ribų, bet kaip sutvarkyti?
padidink players array dydi +1, nes len kaip supratau yra dabar 31 o turetu 32 buti, jei gerai pamenu ir nerekomenduoju naudoti get players, kartais returnina visiskai blogus rezultatus, loopink su get_maxplayers ir paskui naudok salygas, jei nedaznai call'insi, tai nevertetu cache'inti
"Give me control of a nation's money and I care not who makes it's laws" — Mayer Amschel Bauer Rothschild
Image

InvIs
Gana aktyvus vartotojas
Posts: 421
Joined: 2011 Aug 13 11:12
Skype: pksoldierlt
Location: ATOSTOGOSE

Re: id out of bounds.. again

Post by InvIs »

Code: Select all

new randPl = Players[random(Num)-1]
ISVYKES

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: id out of bounds.. again

Post by aaarnas »

Naujausiam amx build'e patvarkyta get_players funkcija, tad apsimoka ją naudoti. Optimalesnio varianto nerasi.

Dėl error, tai labai keista, nes čia jo neturėtų būti. random funkcija turi grąžinti nuo 0 IKI max. T.y. jei Num yra 32, tai turėtų grąžinti skaičius [0,31]. Šiuo atveju ši funkcija puikiai turėtų tikti čia.
Gali pamėginti padebugint tokiu būdu. Turėtų parodyti problemą:

Code: Select all

new Players[32], Numget_players(Players, Num, "ae", "TERRORIST") new randNum = random(Num)if (randNum >= 32 || randNum < 0)    log_amx("get_players klaida: Num: %d, randNum: %d", Num, randNum)new randPl = Players[randNum] // index out of bounds
Gal -1 koks kur atsiranda.

random realizacija:

Code: Select all

 ...    if (params[1]!=0)        result %= params[1];    return (cell)result;}
Dalinant su moduliu niekaip negausi liekanos lygios dalikliui...
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: id out of bounds.. again

Post by xFrostas »

va tai tau.. get_players klaida: Num: 0, randNum: 460780124

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: id out of bounds.. again

Post by aaarnas »

Tai viskas teisingai ir atitinka. Šitas kodas apskritai neturėtų būti vykdomas, kai yra 0 žaidėjų, arba check pamiršai tiesiog. Na dabar jau aišku viskas :)
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: id out of bounds.. again

Post by xFrostas »

Tai kad buvo žaidėjų.

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: id out of bounds.. again

Post by aaarnas »

Tai gal nebuvo gyvų iš Terrorist team'o. Tiesiog tikrink if (Num) { } ir bus tvarkoj. Priklauso nuo to, kaip turi būti pas tave.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
xFrostas
Flooderis arba specialistas
Posts: 660
Joined: 2010 Sep 02 15:47
Skype: frost.lt

Re: id out of bounds.. again

Post by xFrostas »

Oi, atsiprašau mano klaida, virš tikrinimo rinkdavau.. dėkui už pagalbą

Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests