Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 1,089 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Frage zu Fog of War aus AUM43 #263003
04/27/09 14:04
04/27/09 14:04
Joined: Jul 2008
Posts: 2,107
Germany
rayp Offline OP

X
rayp  Offline OP

X

Joined: Jul 2008
Posts: 2,107
Germany
Habe diesen Code aus AUM43
Code:
function manage_fog()
{
    my.tilt = 90;
    my.alpha = 100;
    my.oriented = on;
    my.transparent = on;
    my.passable = on;
    while (1)
    {
       if (vec_dist(player.x, my.x) < 350)
       {
          my.alpha = 0;
       }
       else
       {
         my.alpha = 100;
       }
       wait (1);
    }
} 

Das ist auch alles schön und gut. Mein Problem ist aber das ich kein PLAYER habe, sondern viele verschiedene Einheiten die man steuern kann (auch gleichzeitig). Sprich fällt PLAYER.X (was ja zwingent nötig ist) flach. Impact kann ich nicht nehmen da die Sprites ja passable sind (und sowie so zu hoch für eine Kollision mit Models...schweben ja über dem Spielfeld).
Kann mir jmd sagen, wie ich einen Entity-Array per Schleife durchgehe?
Oder eine andere Lösung?
Wie gesagt, Problem ist, das sich verschiedene Einheiten auf dem Spielfeld bewegen, nicht nur ein PLAYER=ME-Model.

Wie immer bin ich für alle Hilfen dankbar ^^

Edit:
Ich glaube die Lösung liegt in Handles (siehe AUM47). ^^

Last edited by rayp; 04/27/09 14:12.

Acknex umgibt uns...zwischen Dir, mir, dem Stein dort...
"Hey Griswold ... where u gonna put a tree that big ?"
1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected
rayp.flags |= UNTOUCHABLE;
Re: Frage zu Fog of War aus AUM43 [Re: rayp] #263024
04/27/09 16:49
04/27/09 16:49
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ralph Offline
Senior Member
Ralph  Offline
Senior Member

Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Erstellst du deine Einheiten per Script?
Wenn ja mach das doch so:
Das schreibst du an ganz oben zu den Variablen im Script.
Code:
var* unitHandleArray[max_entities];
var unitHANum = 0;//Nummer der schon eingetragenen Einheiten


Das in die Funktion wo du die Einheiten erstellst.
Code:
you = ent_create("sphere.mdl",nullvector,NULL);//Hier kommt deine ent_create Funktion hin
unitHandleArray[unitHANum] = handle(you);
unitHANum++;

Und das ist die neue "FOG" Funktion.
Code:
function manage_fog()
{
    my.tilt = 90;
    my.alpha = 100;
    my.oriented = on;
    my.transparent = on;
    my.passable = on;
    ENTITY* ent; //temp Entity-Pointer
    var i = 0;
    while (1)
    {
       for(i=0;i<unitHANum;i++)
       {
          ent = ptr_for_handle(unitHandleArray[i]);
          if (vec_dist(ent.x, my.x) < 350)
          {
             my.alpha = 0;
          }
          else
          {
            my.alpha = 100;
          }
          ent = NULL;
       }
       wait (1);
    }
}


Ich habe das jetzt nicht getested, sollte aber funktionieren.
MFG Ralph

Re: Frage zu Fog of War aus AUM43 [Re: Ralph] #263073
04/27/09 19:08
04/27/09 19:08
Joined: Jul 2008
Posts: 2,107
Germany
rayp Offline OP

X
rayp  Offline OP

X

Joined: Jul 2008
Posts: 2,107
Germany
Danke!
Irgendwie geht da nix von. Die ++ Kommandos sowie FOR kennt meine A6 nicht mal. Ich dachte auch an FOR (durch Delphi)...aber kennt er net.

Edit:
ES GEHT EINFACH NICHT, ICH DREH BALD DURCH

Code:
function manage_fog()
{
    my.tilt = 90;
    my.alpha = 100;
    my.oriented = on;
    my.transparent = on;
    my.passable = on;
    WHILE(Zomb_Index==0) { WAIT(1); }

    while (1)
    {

          Carry_Zomb_Array = ptr_for_handle(Zomb_Array[MY.SKILL90]);

IF(Carry_Zomb_Array!=NULL) {
          if (vec_dist(Carry_Zomb_Array.x, my.x) < 350)
          {
             my.alpha = 0;my.invisible=ON;
          }
          else
          {
            my.alpha = 100;
          }
         Carry_Zomb_Array = NULL;
}
 IF (MY.SKILL90>Zomb_Index) { MY.SKILL90=0; }
 ELSE { MY.SKILL90+=1; }
 

       wait (1);
    }
}

So läuft es. ABER: Wenn ich drei Einheiten erstellt hab, geht die zweite auf einmal nicht mehr?!?? Irgendwo ist sowas von der Wurm drin, ich sehe keinen Fehler, ich bin total verwirrt frown *flenn*
Das ist der totale Horror. Es geht, aber auch nicht. Erstellt man wiegesagt ein paar Einheiten, dann wechseln sie sich ab, mit Fog-"Fressen". Manchma können sie plötzlich den Fogofwar nicht mehr vertreiben...ein anderes mal schon...HILFE

Last edited by rayp; 04/27/09 20:19.

Acknex umgibt uns...zwischen Dir, mir, dem Stein dort...
"Hey Griswold ... where u gonna put a tree that big ?"
1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected
rayp.flags |= UNTOUCHABLE;
Re: Frage zu Fog of War aus AUM43 [Re: rayp] #263094
04/27/09 20:56
04/27/09 20:56
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ralph Offline
Senior Member
Ralph  Offline
Senior Member

Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ach du hast A6? Sorry da kann ich weniger helfen... ansonsten guck ich mal Morgen wenn ich wieder zuhause bin.

Re: Frage zu Fog of War aus AUM43 [Re: Ralph] #263097
04/27/09 21:03
04/27/09 21:03
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ralph Offline
Senior Member
Ralph  Offline
Senior Member

Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Okay dann versuch ich das mal zu convertieren...
"unitHANum++;" daraus machst du "unitHANum += 1;"

Und die manage_fog ersetzt du durch das:
Code:
function manage_fog()
{
    my.tilt = 90;
    my.alpha = 100;
    my.oriented = on;
    my.transparent = on;
    my.passable = on;
    ENTITY* ent; //temp Entity-Pointer
    var i = 0;
    var unitisnear = 0; //neue var die speichert ob eine Einheit in der nähe ist
    while (1)
    {
       while(i < unitHANum)
       {
          ent = ptr_for_handle(unitHandleArray[i]);
          if (vec_dist(ent.x, my.x) < 350 && unitisnear == 0)
          {
             unitisnear = 1;
          }
          ent = NULL;
          i += 1;
       }
       if (unitisnear == 1)
       {
          my.alpha = 0;
       }
       else
       {
         my.alpha = 100;
       }
       unitisnear = 0;
       i = 0;
       wait (1);
    }
}


So müsste es funktionieren.

Re: Frage zu Fog of War aus AUM43 [Re: Ralph] #263099
04/27/09 21:04
04/27/09 21:04
Joined: Jul 2008
Posts: 2,107
Germany
rayp Offline OP

X
rayp  Offline OP

X

Joined: Jul 2008
Posts: 2,107
Germany
ja. Aber das liegt ja nicht an A6 oder A7 oder sonst was...irgendwas ist schlecht programmiert in der WHILE Schleife....aber was?
Hier mal mein kompletter code. Es geht teilweise. Mal klappts mal nicht...irgendwas ist total falsch:

Code:
var Zomb_Index=0;         
var Zomb_Array[100];      
entity* Carry_Zomb_Array; 


function Init_Unit()
{
    Zomb_Array[index] = handle (me);
    Zomb_index += 1;
..
.
}

function manage_fog()
{
    my.tilt = 90;
    my.alpha = 100;
    my.oriented = on;
    my.transparent = on;
    my.passable = on;
    WHILE(Zomb_Index==0) { WAIT(1); }

    while (1)
    {

          Carry_Zomb_Array = ptr_for_handle(Zomb_Array[MY.SKILL90]);

IF(Carry_Zomb_Array!=NULL) {
          if (vec_dist(Carry_Zomb_Array.x, my.x) < 350)
          {
             my.alpha = 0;my.invisible=ON;
          }
          else
          {
            my.alpha = 100;
          }
         Carry_Zomb_Array = NULL;
}
 IF (MY.SKILL90>Zomb_Index) { MY.SKILL90=0; }
 ELSE { MY.SKILL90+=1; }
 

       wait (1);
    }
}


starter create_fog_sprites()
{
WHILE (Zomb_Index==0) { WAIT(1); }

    var row_index = 0;
    var column_index = 0;
    while (row_index < 64)
    {
       while (column_index < 64)
       {
          column_index += 1;
          temp.x = column_index * 128 - 4000; // -2000 to 2000 on x
          temp.y = row_index * 128 - 4000; // -2000 to 2000 on y
          temp.z = CAMERA.Z-450;
          ent_create ("fogofwar.tga", temp.x, manage_fog);
       }
       column_index = 0;
       row_index += 1;
    }
} 


Edit:
Ich probier mal deinen Code aus


Wenn ich die erste Einheit erstelle geht es...danach bekomm ich die VEC_DIST Zeile mit LEEREN POINTER angezeigt...keine Ahnung warum.

Das kann garnicht sein, da die Schleife ja nur bis Array-Maxiumum läuft ?!"?!?!

Last edited by rayp; 04/27/09 21:10.

Acknex umgibt uns...zwischen Dir, mir, dem Stein dort...
"Hey Griswold ... where u gonna put a tree that big ?"
1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected
rayp.flags |= UNTOUCHABLE;
Re: Frage zu Fog of War aus AUM43 [Re: rayp] #263100
04/27/09 21:10
04/27/09 21:10
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ralph Offline
Senior Member
Ralph  Offline
Senior Member

Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Okay dann mach mal vor "ent = NULL;" oder wie das bei dir heißt:
unitHandleArray[i] = handle(ent); //bei ent das was du hast

Sonst schick mir schnell das ganze Projekt zu dann guck ich mir das mal an... so aus der ferne das zu beurteilen is ein wenig schwirig..

Last edited by Ralph; 04/27/09 21:13.
Re: Frage zu Fog of War aus AUM43 [Re: Ralph] #263101
04/27/09 21:15
04/27/09 21:15
Joined: Jul 2008
Posts: 2,107
Germany
rayp Offline OP

X
rayp  Offline OP

X

Joined: Jul 2008
Posts: 2,107
Germany
OHHHH Man bin ich sch* blöd! Hatte die Unit mit falscher VAR erstellt! Also falsche var in der eckigen Klammer.....MAN wie dumm. Das hat mich nun einen Tag gekostet, und 3 Jahre Lebensdauer (vor Aufregung).

Ich danke Dir, Ralph, für Deine nette Hilfe ^^

Ps. dein script funzt super (wenn ich die richtigen Vars habe*g)

Last edited by rayp; 04/27/09 21:21.

Acknex umgibt uns...zwischen Dir, mir, dem Stein dort...
"Hey Griswold ... where u gonna put a tree that big ?"
1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected
rayp.flags |= UNTOUCHABLE;
Re: Frage zu Fog of War aus AUM43 [Re: rayp] #263103
04/27/09 21:21
04/27/09 21:21
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Ralph Offline
Senior Member
Ralph  Offline
Senior Member

Joined: Feb 2006
Posts: 385
Oldenburg,Germany
Kein ding..

Last edited by Ralph; 04/27/09 21:21.
Re: Frage zu Fog of War aus AUM43 [Re: Ralph] #263104
04/27/09 21:23
04/27/09 21:23
Joined: Jul 2008
Posts: 2,107
Germany
rayp Offline OP

X
rayp  Offline OP

X

Joined: Jul 2008
Posts: 2,107
Germany
Also das funzt nun...habe die Stelle mit der falschen VAR (von mir) mit Kommentar versehn ^^
Code:
var Zomb_Index=0;              //how many zombies are in the array
var Zomb_Array[100];         //Array for all active Zombies

ACTION Add_To_Object_In_Wed {
    Zomb_Array[Zomb_Index] = handle (me); //HIER WAR DIE FALSCHE VAR
    Zomb_index += 1;
}
    ENTITY* ent; //temp Entity-Pointer

function manage_fog()
{
    my.tilt = 90;
    my.alpha = 100;
    my.oriented = on;
    my.transparent = on;
    my.passable = on;

    var i = 0;
    var unitisnear = 0; //neue var die speichert ob eine Einheit in der nähe ist
    while (1)
    {
       while(i < Zomb_Index)
       {
          ent = ptr_for_handle(Zomb_Array[i]);
          if (vec_dist(ent.x, my.x) < 350 && unitisnear == 0)
          {
             unitisnear = 1;
          }
          ent = NULL;
          i += 1;
       }
       if (unitisnear == 1)
       {
          my.alpha = 0;my.invisible=ON;
       }
       else
       {
         my.alpha = 100;
       }
       unitisnear = 0;
       i = 0;
       wait (1);
    }
}




starter create_fog_sprites()
{
WHILE (Zomb_Index==0) { WAIT(1); }

    var row_index = 0;
    var column_index = 0;
    while (row_index < 64)
    {
       while (column_index < 64)
       {
          column_index += 1;
          temp.x = column_index * 128 - 4000; // -2000 to 2000 on x
          temp.y = row_index * 128 - 4000; // -2000 to 2000 on y
          temp.z = CAMERA.Z-450;
          ent_create ("fogofwar.tga", temp.x, manage_fog);
       }
       column_index = 0;
       row_index += 1;
    }
} 

Gute Nacht und nochma danke!

Edit:
Rein Framerate-Technisch ist der Fog of War irgendwie ein Supergau frown ...oder sagen wirs so, wenns heiss her geht, habe ich 20fps verloren ! Allerdings bei 5000x5000
Quants, 64 Reihen und 64 Spalten fog.

Last edited by rayp; 04/27/09 22:09.

Acknex umgibt uns...zwischen Dir, mir, dem Stein dort...
"Hey Griswold ... where u gonna put a tree that big ?"
1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected
rayp.flags |= UNTOUCHABLE;
Page 1 of 2 1 2

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1