3D Map Creator: Image Combiner

From Hack Wars Wiki

Jump to: navigation, search
void main() {
            setOffscreenProcessing(false);
    int check=indexOf(getGlobal("spriteIDs"), appendDigits(getID()+"", 4)+char(92), 0);
	int ID=check/5; ID++;
	int ZOffset=mapIntValue(getGlobal("data-ZOffset"), ID);
    if (getGlobal("hero")==getID()) ZOffset=getGlobal("sprite-ZOffset");
        int mouseWorldX=getMouseWorldX();
    int mouseWorldY=getMouseWorldY();
    int mouseWorldZ=getMouseWorldZ();
       if (mouseWorldX>getX()-32 && mouseWorldX<getX()+32 && mouseWorldY>getY()-32 && mouseWorldY<getY()+32 && mouseWorldZ<ZOffset+32+32 && mouseWorldZ>ZOffset-32-32) {
            drawText("Highlighting: "+getID(),"Lucida Console",12,10,10,255,0,0,255);
        }
    //if (getGlobal("scriptExecute")=="true") {
 
    int myID=getID();
    boolean imageFound=false;
    int Z=getZ();
    int X=getX();
    int Y=getY();
    int XRot=getXRotation();
    int YRot=getYRotation();
    int Height=32;
    int Width=32;
    int Frame=0;
    int Image=1;
    int spriteAmount=1;
    boolean repeatTexture=false;
    boolean create=false;
    if (getGlobal(myID+" top")=="") create=true;
 
if (getImage()==12 && getFrame()==0) {
     float angle=360;
angle=angle-getYRotation();
   X=intValue((cos(angle)*3.0)*11)+X;
   Y=intValue(((-1)*sin(angle)*3.0)*11)+Y;
       int diffX=getX()-X;
       int diffY=getY()-Y;
       int diff=32;
   while (abs(diffX)>diff || abs(diffY)>diff) {
       if (abs(diffX)>diff) {
           if (X>0) X--;
           if (X<0) X++;
       }
       if (abs(diffY)>diff) {
           if (Y>0) Y--;
           if (Y<0) Y++;
       }
       int diffX=getX()-X;
       int diffY=getY()-Y;
       //debug("X:"+diffX+",Y:"+diffY);
   }
imageFound=true;
spriteAmount++;
//second image
Image=12;
Frame=1; int frame1=2; int frame2=3;
generateSprite("-3", Image, Frame, X, Y, Z, Height, Width/2, ZOffset, true, XRot, YRot);
generateSprite("-1", Image, frame1,getX(), getY()+8, getZ(), Height/2, Width, ZOffset-32+(Height/4), true, XRot, YRot);
generateSprite("-2", Image, frame2,X, Y+8, Z, Height/2, Width/2, ZOffset-32+(Height/4), true, XRot, YRot);
 
}
if (getImage()==12 && getFrame()==4) { //Big Door
processFourPiece(12, 5, 6, 7);
imageFound=true;
spriteAmount++;
}
if (getImage()==13 && getFrame()==0) { //Big Door
processFourPiece(13, 1, 2, 3);
imageFound=true;
spriteAmount++;
}
if (getImage()==13 && getFrame()==4) { //Big Door
processFourPiece(13, 5, 6, 7);
imageFound=true;
spriteAmount++;
}
if (getImage()==6 && getFrame()==0) { //Skull thing
processFourPiece(6, 1, 2, 3);
imageFound=true;
spriteAmount++;
}
if (getImage()==5) { //blood fall
    if (getGlobal("bloodFallTime")!="true") {
        createTimeStamp("bloodFall");
        setGlobal("bloodFallTime", "true");
    }
    int time=0;
    if (getGlobal("bloodFallTime")=="true") time=checkTimeStamp("bloodFall");
    if (time>100) {
        int f=getFrame();
         if (f==0) setFrame(2);
         if (f==2) setFrame(4);
         if (f==4) setFrame(6);
         if (f==6) setFrame(0);
         deleteTimeStamp("bloodFall");
         createTimeStamp("bloodFall");
    }
    if (getFrame()==0) Frame=1;
    if (getFrame()==2) Frame=3;
    if (getFrame()==4) Frame=5;
    if (getFrame()==6) Frame=7;
    ZOffset-=32;
    Image=5;
    repeatTexture=true;
    XRot=90;
    setXRotation(90);
    imageFound=true; spriteAmount++;
    generateSprite("-1", 5, Frame, X, Y, Z, Height, Width, ZOffset, repeatTexture, XRot, YRot);
}
if (getImage()==4) { //body on the wall
    if (getFrame()==0 || getFrame()==4) {
Image=4; 
int frames[]={0};
if (getFrame()==0) { Frame=1; frames[0]=2; frames[1]=3; }
if (getFrame()==4) { Frame=5; frames[0]=6; frames[1]=7; }
processFourPiece(4, Frame, frames[0], frames[1]);
imageFound=true;
spriteAmount++;
    }
}
if (getImage()==1 && getFrame()==4) { //Exit Door
    Y+=14;
    ZOffset-=18;
    Image=1;
    Frame=5;
    Height=4;
    imageFound=true;
    repeatTexture=true;
    Width=getWidth();
}
if (getImage()==1 && getFrame()==2) { //some thing..
    Y+=14;
    ZOffset-=18;
    Image=1;
    Frame=3;
    Height=4;
    imageFound=true;
    repeatTexture=true;
    Width=getWidth();
}
if (getImage()==1 && getFrame()==0) { //Entry Door
    Image=1;
    Frame=1;
    Y+=14;
    Height=4;
    ZOffset-=18;
    repeatTexture=true;
//debug("creating bottom of door");
    imageFound=true;
    Width=getWidth();
}
if (getImage()==2 && getFrame()==2) { //Wall-First Section
	int relation=getHeight()-11;
	float ratio=32/getHeight();
	relation=relation*ratio;
    Image=2;
    Frame=0;
	if (getHeight()==24) relation+=4;
    Y+=relation;
    ZOffset+=relation;
    repeatTexture=true;
    Height=-10;
    Width=getWidth();
	//if (getHeight()!=32) ZOffset=ZOffset-(32-getHeight());
    imageFound=true;
}
if (imageFound && spriteAmount==1) {
	if (create==true) {
    debug("generating image");
	    int top=createSprite(Image,5,X,Y,Z);
        setFrame(top, Frame);
	    setHeight(top, Height);
        setWidth(top, Width);
	    setZOffset(top, ZOffset);
	    setRepeatTexture(top, repeatTexture);
	    setXRotation(top, getXRotation());
	    setYRotation(top, getYRotation());
	    setGlobal(myID+" top", top);
	}
	else {
	    int top=getGlobal(getID()+" top");
	    setX(top, X);
	    setY(top, Y);
        setZ(top, Z);
	    setHeight(top, Height);
        setWidth(top, Width);
	    setZOffset(top, ZOffset);
        setRepeatTexture(top, repeatTexture);
	    setXRotation(top, getXRotation());
	    setYRotation(top, getYRotation());
	}
}
if (imageFound==false && getGlobal(getID()+" top")!="") {
    destroySprite(getGlobal(getID()+" top"));
    setGlobal(getID()+" top", "");
}
 
for(int b=0;b<=10;b++) {
    string bb="-"+b;
    if (b==0) bb=" top";
    int bla=getGlobal(getID()+bb);
if ((imageFound==false || getImage(bla)!=getImage(getID())) && getGlobal(getID()+bb)!="") {
    destroySprite(bla);
    debug("killed:"+bb);
    setGlobal(getID()+bb, "");
}
}
setGlobal("image:"+getID(), getImage());
//}
}
int mapIntValue(string str, int n) {
    int len=strlen(str);
    int count=intValue(getGlobal("data-spriteCount"));
    int size=0;
    string bla="";
    int ret=0;
    if (count>0) {
        size=intValue(len/count);
        n--;
        bla=substr(str, n*size, (n*size)+size);
        if (indexOf(bla, "-", 0)>0) bla=substr(bla, indexOf(bla, "-", 0), strlen(bla));
        if (bla!="") ret=parseInt(bla);
    }
    return ret;
}
string appendDigits(string str, int n) {
    string nn="0";
    int len=strlen(str);
    while(len<n) { str=nn+str; len++; }
return str;  
}
void processFourPiece(int Image, int frame1, int frame2, int frame3) {
    float angle=360;
angle=angle-getYRotation();
   X=intValue((cos(angle)*3.0)*11)+X;
   Y=intValue(((-1)*sin(angle)*3.0)*11)+Y;
       int diffX=getX()-X;
       int diffY=getY()-Y;
       int diff=32;
   while (abs(diffX)>diff || abs(diffY)>diff) {
       if (abs(diffX)>diff) {
           if (X>0) X--;
           if (X<0) X++;
       }
       if (abs(diffY)>diff) {
           if (Y>0) Y--;
           if (Y<0) Y++;
       }
       int diffX=getX()-X;
       int diffY=getY()-Y;
       //debug("X:"+diffX+",Y:"+diffY);
   }
//imageFound=true;
Frame=frame1;
//second image
generateSprite("-3", Image, frame1, X, Y, Z, Height, Width, ZOffset, true, XRot, YRot);
generateSprite("-1", Image, frame2[0],getX(), getY(), getZ(), Height, Width, ZOffset-32, true, XRot, YRot);
generateSprite("-2", Image, frame3[1],X, Y, Z, Height, Width, ZOffset-32, true, XRot, YRot);
}
void generateSprite(string name, int Image, int Frame, int X, int Y, int Z, int Height, int Width, int ZOffset, boolean repeatTexture, int XRot, int YRot) {
	if (getGlobal(getID()+name)=="") {
    debug("generating image");
	    int top=createSprite(Image,5,X,Y,Z);
        setFrame(top, Frame);
	    setHeight(top, Height);
        setWidth(top, Width);
	    setZOffset(top, ZOffset);
	    setRepeatTexture(top, repeatTexture);
	    setXRotation(top, XRot);
	    setYRotation(top, YRot);
	    setGlobal(myID+name, top);
	}
	else {
	    int top=getGlobal(getID()+name);
	    setX(top, X);
	    setY(top, Y);
        setZ(top, Z);
	    setHeight(top, Height);
        setWidth(top, Width);
        setFrame(top, Frame);
	    setZOffset(top, ZOffset);
        setRepeatTexture(top, repeatTexture);
	    setXRotation(top, getXRotation());
	    setYRotation(top, getYRotation());
	}
 
}
Personal tools