New to Loops such as these ones, any advice? -
SkyFlare - 18.07.2020
This function is to get the Free Biz ID in my Database... (well actually it doesnt read the database)
Ex: I have BIZ ids 1,2,3,5: Output: Biz ID 4 is free.
This is what the loop looks like and I am just wondering if there's a smarter way to do this, it works right now though.
But I don't think it'll work if I change it in realtime, as the Array's ID's will change if I add ID 4 in, and delete ID 2, my result may not output 2....
PHP Code:
GetFreeBizID()
{
new Result, LastID;
for(new i = 0; i < MAX_BIZS; i++)
{
if(i == 0)
{
printf("Iteration [%i]", i);//Result 0
printf("DynamicBizs[i][ID]: [%i]", DynamicBizs[i][ID]);// Result 1
LastID = DynamicBizs[i][ID];
continue;
}
if(LastID == DynamicBizs[i][ID]-1 && DynamicBizs[i][ID] == LastID +1)
{
LastID = DynamicBizs[i][ID];
printf("Iteration [%i]", i);//Result 0
printf("DynamicBizs[i][ID]: [%i]", DynamicBizs[i][ID]);// Result 1
continue;
}
if(LastID == DynamicBizs[i][ID]-2)
{
Result = i+1;
break;
}
}
printf("GetFreeBizID Result: %i", Result);
return Result;
}
Re: New to Loops such as these ones, any advice? -
grymtn - 18.07.2020
I dont exactly understand what you are trying to do but if you are just trying to get one id, something like below should work. If you remove break you will see all ids.
Important edit: You should never match database id with in game object id that your script gives. Just create another variable called dbid in your enum and do your database jobs on that id. Its fool proof and less resource requiring since you are taking down your loop workload.
Code:
for(new i=0; i<maxbiz; i++)
{
if(biz[i][taken]==free)
{
//The id you want is i. i is free. Do your action here.
Break;
}
}
Re: New to Loops such as these ones, any advice? -
GameOvr - 18.07.2020
This isn't the way to do it. You should consider array as the ID. do what grymton told. make a seperate token called
taken and make it true when taken and false when its removed then loop through all and take the array index which taken is false using break;
Re: New to Loops such as these ones, any advice? -
SkyFlare - 18.07.2020
Welp, doesn't matter I totally forgot about Y_Iterate
Re: New to Loops such as these ones, any advice? -
xRadical3 - 18.07.2020
Quote:
Originally Posted by SkyFlare
Welp, doesn't matter I totally forgot about Y_Iterate
|
Create a iter variable.
pawn Code:
new Iterator:Business<MAX_BUSINESS>;
When you load or create new business, do this for add to iter:
Now you can only get the free slot with this function: