Page 1 of 1

id out of bounds.. again

Posted: 2013 Aug 28 20:29
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?

Re: id out of bounds.. again

Posted: 2013 Aug 28 21:29
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

Re: id out of bounds.. again

Posted: 2013 Aug 28 21:45
by InvIs

Code: Select all

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

Re: id out of bounds.. again

Posted: 2013 Aug 28 21:56
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...

Re: id out of bounds.. again

Posted: 2013 Aug 28 22:14
by xFrostas
va tai tau.. get_players klaida: Num: 0, randNum: 460780124

Re: id out of bounds.. again

Posted: 2013 Aug 28 22:26
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 :)

Re: id out of bounds.. again

Posted: 2013 Aug 28 22:32
by xFrostas
Tai kad buvo žaidėjų.

Re: id out of bounds.. again

Posted: 2013 Aug 28 22:35
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.

Re: id out of bounds.. again

Posted: 2013 Aug 28 22:39
by xFrostas
Oi, atsiprašau mano klaida, virš tikrinimo rinkdavau.. dėkui už pagalbą