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ą