Jump to content
  • 0
Lord Ganja

How to get the index of an array variable?

Question

How do I extract the index of an array variable?

 

e.g

 @mob_id[index] <--- How do I extract the index from @mob_id variable?

 

Thanks in advance!

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

May you elaborate what you want to do?

(I don't seem to understand your question)

Share this post


Link to post
Share on other sites
  • 0

@@Lord Ganja

 

The only methode i know would be:

setarray .@mob_ids, 1002, 1003, 1004, 1005;.@mob_id = 1004;for( .@i = 0; .@i < getarraysize(.@mob_ids); .@i++ ) {	if(.@mob_ids[.@i] == .@mob_id) {		.@index = .@i;		break;	}}

Share this post


Link to post
Share on other sites
  • 0

@@Dastgir,

Exactly what Winterfox posted. But I was looking for something like script command, if it even exists.

 

e.g

setarray .@mob_ids, 1002, 1003, 1004, 1005;

.@mob_ids[3]; <-- The index here is 3

getvarindex(.@mob_ids); <-- getvarindex is just an example, which returns the index of the attached variable

-> so 'getvarindex' will return '1005'

 

@@Winterfox

Is there any alternative? Or is it the only way? Thanks btw.

Share this post


Link to post
Share on other sites
  • 0

@@Lord Ganja

 

Depends on what you want to do. If you wan't to use the index to check for a specific value you could do it like this:

setarray .@mob_ids, 1002, 1003, 1004, 1005;.@mob_id = 1004;for(.@i=0; .@i < getarraysize(.@mobIds); .@i++) {    .@blacklist[.@mobIds[.@i]] = 1;}if(!.@blacklist[.@mob_id]) {	 // Do something}

But thats only worth if you want to have some kind of black/white list. Since if you iterate trough it depending on what you store you will get a pretty high index and will have to iterate over tons of empty values.

You also could do something like this:

setarray .@mob_ids$, 1002, 1003, 1004, 1005;.@mob_id$ = 1004;if(strcmp(":" + .@mob_id$ + ":", implode(.@mob_ids$, ":")))  {    // Do something.}

If you really want a way to easily get the index to a value you would need to do it like that i guess:

setarray .@mob_ids, 1002, 1003, 1004, 1005;.@mob_id = 1005;for(.@i=0; .@i < getarraysize(.@mob_ids); .@i++) {    .@mob_ids_lookup[.@mob_ids[.@i]] = .@i;}mes getmonsterinfo(.@mob_ids[.@mob_ids_lookup[.@mob_id]], 0);close;

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.