Another struct problem declaration

Report core bugs regarding the Ultima Online Emulator Core release (version 097). You can attach your Core Dump. One bug per post.
Locked
User avatar
zandor70
Master Poster
Posts: 93
Joined: Fri Feb 10, 2006 10:06 am

Another struct problem declaration

Post by zandor70 »

If I use

Code: Select all

var db_realm := { };
db_realm[1] := Struct { "total_loops" := Cint(0), "average_decs" := Cint(0), "delay_ms_after_spawnpoint" := Cint(20) };
print("db_realm[1] "+db_realm[1]);
I obtain as output from print:
db_realm[1] error{ errortext = "Array index out of bounds" }
while If I use

Code: Select all

var db_realm := { };
db_realm[1] := Struct;
db_realm[1] := Struct { "total_loops" := Cint(0), "average_decs" := Cint(0), "delay_ms_after_spawnpoint" := Cint(20) };
print("db_realm[1] "+db_realm[1]);
It's ok....
User avatar
tekproxy
Forum Regular
Posts: 352
Joined: Thu Apr 06, 2006 5:11 pm

Post by tekproxy »

If it's a bug Muad will fix it, and you could also try coding it like this:

Code: Select all

CONST DEFAULT_DELAY := 20; // just say "no" to magic numbers
var db_realm := array{struct{ "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) }};
// or just use db_realm.append(struct{ ... });
User avatar
zandor70
Master Poster
Posts: 93
Joined: Fri Feb 10, 2006 10:06 am

Post by zandor70 »

wait I try and post results
User avatar
zandor70
Master Poster
Posts: 93
Joined: Fri Feb 10, 2006 10:06 am

I have retested all:

Post by zandor70 »

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := array{ Struct{ "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) }};
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) }};
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm.Append( Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) });
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm[1] := Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) };
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] error{ errortext = "Array index out of bounds" }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm[1] := Struct;
  db_realm[1] := Struct { "total_loops" := CInt(0), "average_decs" := CInt(0), "delay_ms_after_spawnpoint" := CInt(DEFAULT_DELAY) };
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

Code: Select all

  const DEFAULT_DELAY := 20;
  db_realm := { };
  db_realm[1] := Struct { };
  db_realm[1].+total_loops := CInt(0);
  db_realm[1].+average_decs := CInt(0);
  db_realm[1].+delay_ms_after_spawnpoint := CInt(DEFAULT_DELAY);
  print("db_realm[1] "+db_realm[1]);
result:
db_realm[1] struct{ average_decs = 0, delay_ms_after_spawnpoint = 20, total_loops = 0 }

THe syntax with problem is only when you define and load a struct inside array specifying array index... It seem like a sort of stack problem like the one of function parameter.
User avatar
tekproxy
Forum Regular
Posts: 352
Joined: Thu Apr 06, 2006 5:11 pm

Post by tekproxy »

Thanks for the very thorough testing. I'm sure MuadDib will appreciate it when debugging. ;)
Locked