problem mit trymove
3 verfasser
Seite 1 von 1
problem mit trymove
also..für mein tropisches szen brauch ich ne func, die guckt, ob sich ein objekt bis eine bestimmte y pos bewegn kann, weil ich es, wenn die bewegung möglich ist wieder löschn will, damit das grad und die bäume nicht im wasser oder am strand spawnen...mein problem ist, dass das nicht klappen will, kann leider auch sein, dass ich nur was bei der höhe falschverstanen hab bei "drawmatrect" deswegn schreib ich hier mal den ganzen script (das creatematrect zeigt ja die wasserhöhe)
- Code:
register getUmwID
{
var i;
i := randomX(1,4);
if(i = 1) {return getID("palme")};
if(i = 2) {return getID("palme")};
if(i = 3) {return getID("palme")};
if(i = 4) {return getID("bstude")};
}
cdecl PlaceUmwObject
{
var o;
o := createobject(getUmwID);
SetPosition(o,randomX(-90000,90000),15000,randomX(-90000,90000));
if(TryMove(o,0,4500,0) <> 0)
{
PutOnGround(o);
}else{
removeobject(o);
};
}
cdecl init
{
drawmatrect(getid("mat_water"),-90000,-1,-90000,180000,10000,180000,255);
var i;
i:=0;
while(i<20)
{
PlaceObject(getid("holzhuette"),randomx(-mapsize,mapsize),randomx(-mapsize,mapsize));
i++;
};
while(i<500)
{
PlaceUmwObject;
i++;
};
}
cdecl initplayer(player)
{
var o;
setwealth(player,250);
o:=placeobject(getid("clonk"),0,0);
addcrew(player,o);
Enter(CreateObject(getid("Flagge")),o);
}
- Code:
size=90000
Pack1=Originalpack
ground=1
voxelscale=400
mapmaterial=mat_sand
mapheight=10000
maplevel=4000
Re: problem mit trymove
y + 4500 würde das Dings ja nach oben bewegen, oder? möchtest du das in dem fall?
Re: problem mit trymove
Trymove eignet sich hier nicht, weil es 0 zurückgibt, wenn es auf nichts stößt und auch 0 zurückgibt wenn es auf Landschaft stößt.
Ich würde vom gewünschten Objekt das GetBottomY() berechnen lassen und anschließend an der Position GetInside(x,y+GetBottomY(o),z) schaun, ob da ein MAterial ist
andererseits seh ich, dass das Wasserlevel 10000 ist.
Wenn nach einem PutOnGround (bei PlaceObject wird das aufgerufen) das y+GetBottomY() unter 10000 ist, so bedeutet das, dass das Objekt unter Wasser ist
Ich würde vom gewünschten Objekt das GetBottomY() berechnen lassen und anschließend an der Position GetInside(x,y+GetBottomY(o),z) schaun, ob da ein MAterial ist
andererseits seh ich, dass das Wasserlevel 10000 ist.
Wenn nach einem PutOnGround (bei PlaceObject wird das aufgerufen) das y+GetBottomY() unter 10000 ist, so bedeutet das, dass das Objekt unter Wasser ist
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: problem mit trymove
hm..jetz spawnt gar nix mehr, aber dann muss ich ja nur noch werte anpassn, thx noma
Re: problem mit trymove
wenn das Erstellen geblockt wurde (weils im Wasser ist) musst du den Zähler wieder runterzählen, weil das Objekt ja nicht erstellt wurde
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: problem mit trymove
stimmt
[EDIT]
frage zu drawmateckt, die arbeitet ich wie viereckige vertices, oder?als ich mal zum test ein ein 0,0,0 gemacht hatte, war dort die obere ecke, also, kann mir das vllt no einer erklärn..?
[EDIT]
frage zu drawmateckt, die arbeitet ich wie viereckige vertices, oder?als ich mal zum test ein ein 0,0,0 gemacht hatte, war dort die obere ecke, also, kann mir das vllt no einer erklärn..?
Re: problem mit trymove
drawmatrect arbeitet nicht wie 4eckige Vertices.
drawmatrect beginnt an x/y/z und nimmt das Rechteck mit dem Diagonalen Eckpunkt x+w/y+h/w+t, wohingegen bei 4eckigen Vertices der Mittelpunkt x/y/z zentriert ist
drawmatrect sucht wie gesagt alle Voxel in dem 4eck, Randvoxel bekommen die angegebene Gewichtung, Voxel in der Mitte bekommen gewichtung 255.
Das Gewichtung 128 z.B. sorgt dafür, dass die Kanten scharf werden und 255 macht runde Kanten.
Dabei wird auf Volle Voxel gerundet (aller 400 Einheiten befindet sich einer)
Wenn du genau die Koordinaten treffen willst, musst du DrawMat() nehmen
drawmatrect beginnt an x/y/z und nimmt das Rechteck mit dem Diagonalen Eckpunkt x+w/y+h/w+t, wohingegen bei 4eckigen Vertices der Mittelpunkt x/y/z zentriert ist
drawmatrect sucht wie gesagt alle Voxel in dem 4eck, Randvoxel bekommen die angegebene Gewichtung, Voxel in der Mitte bekommen gewichtung 255.
Das Gewichtung 128 z.B. sorgt dafür, dass die Kanten scharf werden und 255 macht runde Kanten.
Dabei wird auf Volle Voxel gerundet (aller 400 Einheiten befindet sich einer)
Wenn du genau die Koordinaten treffen willst, musst du DrawMat() nehmen
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: problem mit trymove
nönö, so geht schon auch ohne drawmat für den fall
(p.s. kannst du bei der 2ten steuerung auch noch die dreh-tasten hinzufügen, thx)
(p.s. kannst du bei der 2ten steuerung auch noch die dreh-tasten hinzufügen, thx)
Re: problem mit trymove
dürfte doch unter n und , zu finden sein, ansonsten mal in einstellungen setzen und die neue settings.ini an mich schicken
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Ähnliche Themen
» Problem mit SVN
» Auswahl einiger Probleme, die dringend zu löten sind
» Problem beim Forum Profil editen
» "Größeres Problem" beim Starten.
» Auswahl einiger Probleme, die dringend zu löten sind
» Problem beim Forum Profil editen
» "Größeres Problem" beim Starten.
Seite 1 von 1
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten