JazzJackrabbit Community Forums

JazzJackrabbit Community Forums (http://www.jazz2online.com/jcf/index.php)
-   JCS & Scripting (http://www.jazz2online.com/jcf/forumdisplay.php?f=5)
-   -   tell some of the levels what u are buiding and goning on j2o (http://www.jazz2online.com/jcf/showthread.php?t=14475)

Toni_ Sep 21, 2013 12:40 PM

Quote:

Originally Posted by GoldRabbit (Post 480196)
what

Also, to contribute, I believe that editing can be done to the resources extracted from different locations in order to make them all fit. I know I haven't shown my level in quite some time, but the graphics have been improved in order to make the finished product homogeneous.

What happened with your level by the way? Will it ever be finished and released?

GoldRabbit Sep 21, 2013 04:13 PM

Quote:

Originally Posted by Just a Random User (Post 480199)
What happened with your level by the way? Will it ever be finished and released?

I've been working on it on and off for the last year, especially when the new JJ2+ was released, but it won't be done any time soon, unfortunately. One day, though, I hope to finish it. If everything goes well, I may even post an update soon.

minmay Oct 27, 2013 12:13 AM


cooba Oct 27, 2013 01:05 AM

Finally, something worthy of page 100.

Jerrythabest Oct 28, 2013 12:13 AM

I think the "???" is supposed to read something like "GroundForce with settings"! Do I get a cookie now? :D

DennisKainz Jan 2, 2014 04:30 AM

[IMG]http://img17.imageshack.us/img17/2509/on42.png[/IMG]

It's a remake of Labrat that I'm working on. I'm using pencil, sheets and a scanner.

Slaz Jan 2, 2014 06:54 AM

Wow, that looks pretty cool, Gus, especially the sketchy background! I'd make the saturation for the purple ground tiles slightly darker for the final tileset, but that's just my opinon, it's your set! ;)

Stijn Jan 2, 2014 08:55 AM

I love that background <3

Love & Thunder Jan 2, 2014 09:56 AM

It would be nice to see a high-res version of that when it's finished. :) (It would be kinda useless in JJ2 unless the devs do some black magic, but it would be nice to look at)

Also, [Insert generic praise related to the epic background].

KRSplatinum Jan 2, 2014 05:24 PM

That's a nice Labrat remake by Gus, haha. Gus, don't forget about the Labrat robot boss, if that's something you want to draw XD

DoubleGJ Jan 3, 2014 05:39 AM

background - very yes
event layer - hope it's a work in progress

Love & Thunder Jan 3, 2014 06:01 AM

IMO, apart from some(Mostly minor) tilebugs, the event layer looks quite nice. :)
Also, this redesign(?) makes it look less like New Junk City, and more like some kind of weird alien laboratory of some kind, so that's a plus. I think.

DennisKainz Jan 9, 2014 11:36 AM

I'm working on a new levelpack called Another Tomb Rabbit Adventure.

I'm not allowed to upload previews on J2O downloads, so I'm showing you the script:

Code:

uint isjumping = 0;
uint isfalling = 0;
uint issliding = 0;
uint fallbad = 0;
uint realhealth = 100;
uint jumplock = 0;
uint zone = 0;
uint reload = 0;
uint skelekill = 0;
uint ghoulkill = 0;
uint mode = 0;
uint deathtype = 0;
uint kills = 0;
uint redkeyGET = 0;
uint bullshot = 0;
void onLevelLoad()
{
jjObjectPresets[OBJECT::SKELETON].scriptedCollisions = true;
jjObjectPresets[OBJECT::SKELETON].behavior = TheSkeleton;
jjObjectPresets[OBJECT::SKELETON].energy = 5;
jjObjectPresets[OBJECT::RAPIER].scriptedCollisions = true;
jjObjectPresets[OBJECT::RAPIER].behavior = TheGhoul;
jjObjectPresets[OBJECT::RAPIER].energy = 9;
jjObjectPresets[OBJECT::TOASTERBULLETPU].ySpeed = -2;
jjObjectPresets[OBJECT::TOASTERBULLETPU].xSpeed = 0;
jjObjectPresets[OBJECT::APPLE].determineCurAnim(ANIM::MENU, 5);
jjObjectPresets[OBJECT::APPLE].behavior = RedKey;
jjObjectPresets[OBJECT::APPLE].scriptedCollisions = true;
}
void onLevelBegin()
{
jjPalette.gradient(255, 176, 0, 192, 64, 0, 208, 10, 1.0);
jjPalette.gradient(255, 192, 64, 0, 0, 0, 96, 24, 1.0);
jjPalette.gradient(176, 64, 0, 0, 0, 0, 195, 13, 1.0);
jjPalette.gradient(255, 160, 0, 32, 16, 0, 160, 16, 1.0);
jjPalette.gradient(255, 176, 0, 32, 16, 0, 134, 19, 1.0);
jjPalette.gradient(192, 255, 0, 0, 0, 0, 179, 11, 1.0);
jjPalette.gradient(224, 144, 0, 224, 128, 0, 222, 2, 1.0);
jjPalette.apply();
}
void onMain()
{
if (p.charCurr != CHAR::LORI)
{
p.morphTo(CHAR::LORI, false);
}
if (p.yPos > 4*480)
{
mode = 1;
deathtype = 1;
}
p.food = 0;
if (redkeyGET == 1 && mode == 2)
{
jjDrawSprite(p.cameraX+608, p.cameraY+16, ANIM::MENU, 5, 0, 0, SPRITE::PALSHIFT, 80);
}
if (redkeyGET == 2)
{
jjSamplePriority(SOUND::COMMON_COIN);
redkeyGET = 1;
}
if (skelekill == 1)
{
jjSamplePriority(SOUND::AMMO_BOEM1);
skelekill = 0;
kills = kills + 1;
}
if (ghoulkill == 1)
{
jjSamplePriority(SOUND::BILSBOSS_SCARY3);
ghoulkill = 0;
kills = kills + 1;
}
if (p.yPos > 0 && p.yPos < 480)
{
jjMusicLoad("camel.xm", false);
}
if (p.yPos > 480 && p.yPos < 2*480)
{
jjMusicLoad("midnight.s3m", false);
}
if (p.yPos > 2*480 && p.yPos < 3*480)
{
jjMusicLoad("digsh.s3m", false);
}
if (p.yPos > 3*480 && p.yPos < 4*480)
{
jjMusicLoad("voice_of.j2b", false);
}
p.invincibility = 0;
p.blink = 0;
if (p.health > 2)
{
p.health = 2;
}
if (p.health == 1)
{
p.xPos = 16;
p.yPos = 16;
mode = 1;
deathtype = 2;
jjSamplePriority(SOUND::LORISOUNDS_DIE1);
p.health = 2;
}
if (realhealth < 0 || realhealth > 80000000)
{
mode = 1;
realhealth = 100;
jjSamplePriority(SOUND::LORISOUNDS_DIE1);
p.xPos = 16;
p.yPos = 16;
}
if (mode == 0)
{
p.cameraFreeze(p.xPos, (p.yPos - p.yPos%480)+240, true, true);
jjDrawSprite(p.cameraX+5, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+10, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+15, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+20, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+25, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+30, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+35, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+40, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+45, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+50, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+55, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+60, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+65, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+70, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+75, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+80, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+85, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+90, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+95, p.cameraY+16, ANIM::PICKUPS, 21, 0, 0, SPRITE::SINGLECOLOR, 0);
jjDrawSprite(p.cameraX+626, p.cameraY+464, ANIM::PICKUPS, 29, jjGameTicks/7, 1, SPRITE::TINTED, 44);
jjDrawSprite(p.cameraX+622, p.cameraY+464, ANIM::PICKUPS, 29, (jjGameTicks/7)+5, -1, SPRITE::TINTED, 44);
}
if (mode == 1)
{
p.cameraFreeze(320, 4.5*480, true, true);
p.xPos = 16;
p.yPos = 16;
jjMusicStop();
}
if (mode == 2 && jjKey[09])
{
p.cameraFreeze(320, 5.5*480, true, true);
}
if (mode == 2 && !jjKey[09])
{
mode = 0;
}
p.jumpStrength = -12;
if (jumplock > 0)
{
jumplock --;
}
if (reload > 0)
{
reload --;
}
if (p.ySpeed > 0 && !jjMaskedHLine(p.xPos-12,24,p.yPos+24))
{
isjumping = 1;
isfalling = 1;
}
if (jjMaskedPixel(p.xPos-12, p.yPos+24) && !jjMaskedPixel(p.xPos-4, p.yPos+24) && jjMaskedPixel(p.xPos-4, p.yPos+48))
{
issliding = 1;
}
if (jjMaskedPixel(p.xPos+12, p.yPos+24) && !jjMaskedPixel(p.xPos+4, p.yPos+24) && jjMaskedPixel(p.xPos-4, p.yPos+48))
{
issliding = -1;
}
if (jjMaskedPixel(p.xPos-12, p.yPos+24) && jjMaskedPixel(p.xPos+12, p.yPos+24) || isjumping == 1)
{
issliding = 0;
}
if (p.ySpeed == 0 && isfalling == 1)
{
isjumping = 0;
isfalling = 0;
jumplock = 10;
}
if (p.ySpeed < -9.75)
{
isjumping = 1;
}
if (isjumping == 1 && p.ySpeed > 0)
{
isfalling = 1;
}
if (isfalling == 1)
{
fallbad = p.ySpeed;
}
if (fallbad > 5 && p.ySpeed == 0)
{
realhealth = realhealth - ((fallbad - 5)*25);
if (realhealth < 0 || realhealth > 80000000)
{
deathtype = 1;
}
fallbad = 0;
}
}
bool onDrawHealth(jjPLAYER@p, jjCANVAS@ canvas)
{
if (mode == 0)
{
canvas.drawString(608, 472, "PISTOLS", STRING::SMALL, STRING::RIGHTALIGN);
canvas.drawString(624, 16, "PRESS TAB FOR STATISTICS AND INVENTORY", STRING::SMALL, STRING::RIGHTALIGN);
}
if (mode == 1 && deathtype == 0)
{
canvas.drawString(112, 32, "LORI WILL AIM AT ENEMIES", STRING::MEDIUM, STRING::NORMAL);
canvas.drawString(192, 64, "AUTOMATICALLY", STRING::MEDIUM, STRING::NORMAL);
}
if (mode == 1 && deathtype == 1)
{
canvas.drawString(128, 32, "YOU FELL FROM TOO HIGH", STRING::MEDIUM, STRING::NORMAL);
canvas.drawString(224, 64, "AND DIED", STRING::MEDIUM, STRING::NORMAL);
}
if (mode == 1 && deathtype == 2)
{
canvas.drawString(112, 32, "SOME TRAPS CAN KILL YOU", STRING::MEDIUM, STRING::NORMAL);
canvas.drawString(224, 64, "INSTANTLY", STRING::MEDIUM, STRING::NORMAL);
}
if (mode == 2)
{
canvas.drawString(0, 16, "KILLS: "+(kills/2), STRING::MEDIUM, STRING::NORMAL);
canvas.drawString(0, 40, "BULLETS SHOT: "+bullshot, STRING::MEDIUM, STRING::NORMAL);
canvas.drawString(0, 48, "", STRING::MEDIUM, STRING::NORMAL);
}
return true;
}
bool onDrawLives(jjPLAYER@p, jjCANVAS@ canvas)
{
return true;
}
bool onDrawAmmo(jjPLAYER@p, jjCANVAS@ canvas)
{
return true;
}
bool onDrawScore(jjPLAYER@p, jjCANVAS@ canvas)
{
if (mode == 0)
{
if (realhealth > 5)
{
canvas.drawSprite(5, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 10)
{
canvas.drawSprite(10, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 15)
{
canvas.drawSprite(15, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 20)
{
canvas.drawSprite(20, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 25)
{
canvas.drawSprite(25, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 30)
{
canvas.drawSprite(30, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 35)
{
canvas.drawSprite(35, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 40)
{
canvas.drawSprite(40, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 45)
{
canvas.drawSprite(45, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 50)
{
canvas.drawSprite(50, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 55)
{
canvas.drawSprite(55, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 60)
{
canvas.drawSprite(60, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 65)
{
canvas.drawSprite(65, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 70)
{
canvas.drawSprite(70, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 75)
{
canvas.drawSprite(75, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 80)
{
canvas.drawSprite(80, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 85)
{
canvas.drawSprite(85, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 90)
{
canvas.drawSprite(90, 16, ANIM::PICKUPS, 21, 0);
}
if (realhealth > 95)
{
canvas.drawSprite(95, 16, ANIM::PICKUPS, 21, 0);
}
}
return true;
}
void onPlayerInput(jjPLAYER@ p)
{
if (mode == 0 && jjKey[09])
{
mode = 2;
}
if (mode != 0)
{
p.keyJump = false;
p.keyRun = false;
p.keyFire = false;
p.keySelect = false;
}
if (reload != 0)
{
p.keyFire = false;
}
if (p.keyFire == true && reload == 0)
{
bullshot ++;
}
for (int i = 1; i < jjObjectCount; i++)
{
jjOBJ@ obj = jjObjects[i];
if (obj.eventID == OBJECT::SKELETON && p.keyFire == true)
{
if (p.xPos - obj.xPos > -128 && -obj.xPos + p.xPos < 128 && p.yPos - obj.yPos > -128 && -obj.yPos + p.yPos < 128)
{
obj.energy --;
jjSamplePriority(SOUND::RAPIER_GOSTOOOH);
if (p.xPos < obj.xPos)
{
obj.xPos = obj.xPos+8;
}
if (p.xPos > obj.xPos)
{
obj.xPos = obj.xPos-8;
}
}
}
if (obj.eventID == OBJECT::RAPIER && p.keyFire == true)
{
if (p.xPos - obj.xPos > -128 && -obj.xPos + p.xPos < 128 && p.yPos - obj.yPos > -128 && -obj.yPos + p.yPos < 128)
{
obj.energy --;
jjSamplePriority(SOUND::HATTER_PTOEI);
if (p.xPos < obj.xPos)
{
obj.xPos = obj.xPos+8;
}
if (p.xPos > obj.xPos)
{
obj.xPos = obj.xPos-8;
}
if (p.yPos < obj.yPos)
{
obj.yPos = obj.yPos+8;
}
if (p.yPos > obj.yPos)
{
obj.yPos = obj.yPos-8;
}
}
}
if (p.keyFire == true)
{
reload = 30;
}
if (obj.eventID == OBJECT::BLASTERBULLET)
{
if (p.direction > 0)
{
obj.xPos = p.xPos + 22;
}
if (p.direction < 0)
{
obj.xPos = p.xPos - 22;
}
obj.yPos = p.yPos - 8;
obj.state = STATE::EXPLODE;
}
}
p.keyDown = false;
p.keyUp = false;
p.keyRun = false;
if (isjumping == 1)
{
p.keyJump = false;
if (p.xSpeed < -3 && isfalling == 0)
{
p.keyLeft = true;
p.keyRight = false;
}
if (p.xSpeed > 3 && isfalling == 0)
{
p.keyRight = true;
p.keyLeft = false;
}
if (isfalling == 1)
{
p.keyRight = false;
p.keyLeft = false;
}
p.keyDown = false;
}
if (issliding == 1)
{
p.keyRight = true;
p.keyLeft = false;
}
if (issliding == -1)
{
p.keyLeft = true;
p.keyRight = false;
}
if (jumplock > 0 || issliding == 1 && p.xSpeed < 3.125 || issliding == -1 && p.xSpeed > -3.125)
{
p.keyJump = false;
}
}
void onObjectHit(jjOBJ@ obj, jjOBJ@ bullet, jjPLAYER@ player, int force)
{
if (obj.eventID == OBJECT::APPLE)
{
redkeyGET = 2;
}
if (obj.eventID == OBJECT::SKELETON)
{
p.xSpeed = (p.xPos - obj.xPos)/8;
if (!jjMaskedHLine(p.xPos-12,24,p.yPos+24))
{
p.ySpeed = (p.yPos - obj.yPos)/8;
}
realhealth = realhealth - 5;
}
if (obj.eventID == OBJECT::RAPIER)
{
p.xSpeed = (p.xPos - obj.xPos)/8;
if (!jjMaskedHLine(p.xPos-12,24,p.yPos+24))
{
p.ySpeed = (p.yPos - obj.yPos)/8;
}
realhealth = realhealth - 5;
}
}
void TheSkeleton(jjOBJ@ skele)
{
skele.behave(BEHAVIOR::SKELETON, false);
{
if (jjMaskedHLine(skele.xPos-6, 12, skele.yPos+32))
{
skele.putOnGround(true);
}
skele.direction = (p.xPos - skele.xPos)%32;
if (jjGameTicks%15+jjRandom()%15+skele.curFrame%15 == 0)
{
jjObjects[jjAddObject(OBJECT::RAPIER, skele.xPos, skele.yPos)];
}
jjDrawSprite(skele.xPos, skele.yPos, ANIM::SKELETON, 2, (jjGameTicks/5)+(skele.xPos/8), skele.direction, SPRITE::NORMAL);
jjDrawSprite(skele.xPos-12, skele.yPos-12, ANIM::AMMO, 55, (jjGameTicks/7)+(skele.xPos/32), skele.direction,

SPRITE::NORMAL);
jjDrawSprite(skele.xPos, skele.yPos-16, ANIM::AMMO, 55, (jjGameTicks/7)+6+(skele.xPos/32), skele.direction,

SPRITE::NORMAL);
jjDrawSprite(skele.xPos+12, skele.yPos-4, ANIM::AMMO, 55, (jjGameTicks/7)+3+(skele.xPos/32), skele.direction,

SPRITE::NORMAL);
jjDrawSprite(skele.xPos, skele.yPos, ANIM::AMMO, 2, (jjGameTicks/7)+(skele.xPos/32), skele.direction, SPRITE::NORMAL);
jjDrawSprite(skele.xPos, skele.yPos+16, ANIM::AMMO, 2, (jjGameTicks/7)+5+(skele.xPos/32), skele.direction,

SPRITE::NORMAL);
jjDrawSprite(skele.xPos, skele.yPos-16, ANIM::AMMO, 2, (jjGameTicks/7)+3+(skele.xPos/32), skele.direction,

SPRITE::NORMAL);
if (!jjMaskedPixel(skele.xPos-24, skele.yPos) && !jjMaskedPixel(skele.xPos+24, skele.yPos) && jjMaskedPixel(skele.xPos-

16,skele.yPos+32) && jjMaskedPixel(skele.xPos+16,skele.yPos+32))
{
skele.xPos = skele.xPos - ((skele.xPos - p.xPos)/64);
}
if (skele.energy < 0)
{
jjObjects[jjAddObject(OBJECT::THING, skele.xPos, skele.yPos)];
skele.state = STATE::KILL;
skelekill = 1;
}
}
}
void TheGhoul(jjOBJ@ ghoul)
{
ghoul.direction = (p.xPos - ghoul.xPos)%32;
ghoul.behave(BEHAVIOR::RAPIER, false);
ghoul.playerHandling = HANDLING::PICKUP;
ghoul.state = STATE::START;
jjDrawSprite(ghoul.xPos, ghoul.yPos, ANIM::RAPIER, 1, (jjGameTicks/5)+((ghoul.xPos+ghoul.yPos)/64), ghoul.direction,

SPRITE::TINTED, 44);
if ((p.yPos - p.yPos%480)+240 == (ghoul.yPos - ghoul.yPos%480)+240)
{
ghoul.xPos = ghoul.xPos - ((ghoul.xPos - p.xPos)/128);
ghoul.yPos = ghoul.yPos - ((ghoul.yPos - p.yPos)/128);
}
if (ghoul.energy < 0)
{
ghoul.state = STATE::KILL;
ghoulkill = 1;
jjObjects[jjAddObject(OBJECT::TOASTERBULLETPU, ghoul.xPos, ghoul.yPos)];
}
}
void RedKey(jjOBJ@ redkey)
{
redkey.yPos = redkey.yPos + (jjSin(jjGameTicks*16));
jjDrawSprite(redkey.xPos, redkey.yPos, ANIM::MENU, 5, 0, 0, SPRITE::PALSHIFT, 80);
if (redkeyGET != 0)
{
redkey.xPos = 0;
}
}

It includes a Lori Jackrabbit behaving exactly like Lara Croft, including a way of shooting enemies that resembles that of the very first Tomb Raider games, new enemies, for now only the necromancer and the ghouls he summons, a brand new way of controlling and showing the player's health and ammo, a statistics and inventory subscreen, collectable keys and other trigger items, and a few more things.

[IMG]http://img22.imageshack.us/img22/2880/49wt.png[/IMG]

If you think the code can be improved and fixed, I will be more than glad to have it improved and fixed, and ofcourse include you in the credits!

cooba Jan 9, 2014 12:21 PM

Looks like a lot of good work!

But please, indent your code so it's readable for others :drugs:

DennisKainz Jan 9, 2014 12:40 PM

Here, I sealed it into a window, so it does no longer flood the page.

Violet CLM Jan 9, 2014 12:43 PM

Quote:

Originally Posted by Gus (Post 481468)
If you think the code can be improved and fixed, I will be more than glad to have it improved and fixed, and ofcourse include you in the credits!

A few minor points that come to mind, without trying to figure out what most of the code really does:
  • You have two longish sections of drawing lots and lots of the exact same sprite to the screen, and that could be simplified if you used loops. If nothing else, it would make it much easier to change some minor detail later.
  • While drawing skeletons, you perform the same calculations (jjGameTicks/7 and skele.xPos/32) over and over, even though the results for each one can't change in the middle of the function.
  • Look out for cases where you could use the else keyword. For instance, you have if if (issliding == 1) and if (issliding != 1) immediately next to one another, but surely they cannot both be true.
  • Your skelekill and ghoulkill variables kind of make sense, but I think the code would be simpler if you wrote KilledAGhoul() and KilledASkeleton() functions (or something like that) instead. As it is, the sample-playing and the incrementing of the killvariable take place in an entirely different part of the code. Even if you do have a good reason for this that I'm not seeing, I think you'd be better off using ++ghoulkill; instead of ghoulkill = 1;, and then while (ghoulkill > 0) instead of if (ghoulkill == 1), in case the player somehow manages to kill two enemies at once.

Looking forward to seeing more!

cooba Jan 9, 2014 12:45 PM

Quote:

Originally Posted by Gus (Post 481470)
Here, I sealed it into a window, so it does no longer flood the page.

No, I meant use tabulators.
Code:

void onMain() {
  if (p.charCurr != CHAR::LORI) {
      p.morphTo(CHAR::LORI, false);
  }
  if (p.yPos > 4*480) {
      mode = 1;
      deathtype = 1;
  }
}

And so on...

DennisKainz Jan 9, 2014 04:57 PM

I'm doing the code all over again. Tidier, simpler, and with NotePad++.

How do I prevent the annoying "BUST A MOVE" text from even appearing? Is there a code line for that?

snzspeed Jan 12, 2014 12:00 AM

[IMG]http://jan.imghost.us/2Fud.png[/IMG]

I was bored and started making something new. Theme of this set is a snowy forest/mountain wasteland with a ruined fortress, and lava ocean beneath the surface.

EDIT: I just realised how stupid and lonely that single brick looks. oh well, I'd appreciate some good feedback and suggestions.

Violet CLM Jan 12, 2014 02:38 PM

snz: One thing that stands out is that the shading on the brick, or at least its edges, is much harsher than anything else in the screenshot. Putting a little buildup of snow in front of it might also help it fit in. The snow looks lovely, btw, very untiled.


Been working on this game, very sporadically, for the last five and a half years. Time to get it done.

DoubleGJ Jan 12, 2014 04:12 PM

spikes coming out of falling lava...?

the whole screenshot looks great but this is bothering me

DennisKainz Jan 12, 2014 05:38 PM

Quote:

Originally Posted by snzspeed (Post 481520)
[IMG]http://jan.imghost.us/2Fud.png[/IMG]

I see you're using Angelscript for essentially 2 things already: 1) removing the gun and 2) using the tunnel mode to create a red giant on the background.

I'm looking forward to playing your levels!

snzspeed Jan 12, 2014 05:39 PM

[IMG]http://imagehost.thehateugave.com/images/2014/01/13/screenshot4.jpg[/IMG]

Progress.

Its quite tilebuggy atm but I will ofcourse fix it. It will also be quite hard to use.

Quote:

I see you're using Angelscript for essentially 2 things already: 1) removing the gun and 2) using the tunnel mode to create a red giant on the background.

I'm looking forward to playing your levels!
Yeah I removed the gun. I think jj2 levels can be much better if you remove the blaster since it can be just mindlessly spammed and then you dont really use any other ammo. :D

DennisKainz Jan 12, 2014 05:46 PM

You say it's a tilebuggy atm, but I don't see any ATM. lol

Jokes apart, here are my suggestions for your tileset to look the best possible:

Some blue diamonds and gold nuggets nudged in the rocks.
Some medieval element such as weapon shacks, chests, herb shacks, armors, thrones and banners upon those bricks. And ofcourse, a back wall made from draker, bluer bricks.
Some warped oaks, willows and birches, and ofcourse, pines or spruces. Some of these are composable like the spruces in Diamondus.
Some iron fence with barbed wire and some alarm light on the top, and some turret and radar.
Some modern military elements, such as hangars, training camps, runways and whatever comes in your mind.
Water pools, not like the water in the Beach levels, but like the ones in the Jungle level. And a variant to have ice upon the water pools.
Gigantic mesas (very steep mountains) with waterfalls on layer 7.
Some vertical 1 pixel stripes with a random color from 176 to 208 to simulate the giant sun's light rays.
Some giant statues of turtles, rhynos and lizards.
Some crystals coming out of the ground.

snzspeed Jan 12, 2014 05:53 PM

Quote:

Originally Posted by Gus (Post 481531)
You say it's a tilebuggy atm, but I don't see any ATM. lol

Heh. :D

DennisKainz Jan 13, 2014 02:35 AM

Did you read my suggestions for your tileset? Maybe you didn't because I edited the message later on. If you didn't, please read them.

Now, since you can use the drawTile operation with uint16 tile set as eg. 64+obj.curFrame%7 if tiles 64 to 71 contain a pretty animation, I'd suggest you to use it to create customized enemy sprites, such as a wolf, a bear or a snake.

cooba Jan 13, 2014 03:22 AM

Quote:

Originally Posted by Gus (Post 481528)
I see you're using Angelscript for essentially 2 things already: 1) removing the gun and 2) using the tunnel mode to create a red giant on the background.

(You can do both those from within JCS without any AS, actually)

snzspeed Jan 13, 2014 04:45 AM

Quote:

Originally Posted by Gus (Post 481536)
Did you read my suggestions for your tileset? Maybe you didn't because I edited the message later on. If you didn't, please read them.

Now, since you can use the drawTile operation with uint16 tile set as eg. 64+obj.curFrame%7 if tiles 64 to 71 contain a pretty animation, I'd suggest you to use it to create customized enemy sprites, such as a wolf, a bear or a snake.

I did read the suggestions and I will implement most of them. Infact I had already planned some of them like the trees and medieval weapon racks/things. :D Custom enemy sprites are a very interesting idea.

Treylina Jan 13, 2014 10:10 AM

Hmm, the snow looks very flat and scratchy. I also think the stones inside the walls should pop out more when there's snow on it. If you can put the tileset table here I will see what I can do with it.

Save as png next time because Jpegs are awful for JJ2, especially if I'm trying to get a good look at the tileset. I guess you saved by it as accident.

The reason the lone brick looks so awkward is due to how flat it looks, considering the tileset seems to be going for a somewhat isometric look. Also, the outlines are too thick compared to the rest of the tileset. But since that screenshot is a bit older, it may have been changed since then.

DennisKainz Jan 13, 2014 04:45 PM

For my new level, it would be useful to find a good tileset sheet ripped from some other game. I've been searching for one for like 2 hours, and I couldn't find a decent one.

Can you please help me find a good source of ripped tilesets? I found nothing but 2 level images with a good tileset:
[IMG]http://4.bp.blogspot.com/_LtwkN4oRTe0/SqJQA04wijI/AAAAAAAABks/zVZgsTe2MdQ/s320/nature_tiles4.png[/IMG]
[IMG]http://www.gameanim.com/images/articles/Flashback_01a.jpg[/IMG]
And I couldn't even find the stand alone tileset! Can somebody please help me?

Don't suggest me opengameart.org because I tried it already, and I didn't find a thing in there.

Love & Thunder Jan 14, 2014 12:16 AM

If either of them are console games, most emulators let you rip any sprites and tilesets in any level you are in.

DennisKainz Jan 14, 2014 07:36 AM

That "yet" leaves to intend that there IS going to be AngelScript eventually, doesn't it?

Don't feel forced to use it, though. Do it if you feel like.

snzspeed Jan 14, 2014 07:39 AM

Quote:

Originally Posted by DennisKainz (Post 481557)
That "yet" leaves to intend that there IS going to be AngelScript eventually, doesn't it?

Don't feel forced to use it, though. Do it if you feel like.

I will use it for many things. I have some great ideas in my head, esp. what I can do with gameplay. :D

DennisKainz Jan 16, 2014 09:09 AM

I started working on a new tileset.
This time, it's going to be a mashup.
[IMG]http://imageshack.com/a/img819/7250/5cz3.png[/IMG]
Any suggestions? Something you think it is important to include?

Love & Thunder Jan 16, 2014 02:36 PM

Looks like Jazz is on something, and I'm not referring to the ground.

Anyway, I suggest adding more grass tiles from Carrotus with mushrooms from Psych coming out of them.

DennisKainz Jan 16, 2014 06:29 PM

Quote:

Originally Posted by Robo4900 (Post 481601)
I suggest adding more grass tiles from Carrotus with mushrooms from Psych coming out of them.

[IMG]http://imageshack.com/a/img850/6928/ysqw.png[/IMG]

How about this?

snzspeed Jan 19, 2014 08:43 AM

[IMG]http://pichost.name/images/2014/01/19/world01.png[/IMG]

[IMG]http://pichost.name/images/2014/01/19/world02.png[/IMG]

Just doing some experiments at the moment. Shots are heavily WIP (I am in progress of editing that shipthing ETC ETC) but I wanted to share and keep this section active. :)

DoubleGJ Jan 19, 2014 10:05 AM

So this is a level select screen? Am I looking at it the right way?

snzspeed Jan 19, 2014 10:12 AM

Quote:

Originally Posted by DoubleGJ (Post 481682)
So this is a level select screen? Am I looking at it the right way?

Yes it is. I know it doesnt look very good yet but I am getting there. :D

EDIT: So far it leads you to this:
[IMG]http://pichost.name/images/2014/01/19/LEVEL1.png[/IMG]

DennisKainz Jan 19, 2014 10:35 AM

Well, the tilesets are a little raw. I suggest you request your pictures in some specialized forum.

Other than that, the level and the intro look AWESOME!!! I'm eager to see the finished game, or even a demonstration of it.


All times are GMT -8. The time now is 02:42 AM.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
JCF © 2001-Infinity Jazz2Online