Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - LeChuck

#1
Does anyone still care for or remember Life of D. Duck? Or should this remain a remnant of the previous decade?

I've uploaded some footage from the wee beginnings of Life of D. Duck 3, thought to be a sort of Ducktales adventure. Game was last worked on in 2009... D. Duck would of course find a way to tag along:
https://www.youtube.com/watch?v=LP8oMhrAHRw

Yes, even Life of D. Duck uses placeholder dialogue and artwork/animations. 8-)
#2
So I finally downloaded the last build of AGS. I made a copy of my old game and converted it to run with version 3, and started deleting rooms and characters I didn't need for this new test game. Without mercy and without repenting. After getting rid of all the errors the compiler found, the game pops up and crashes immidiately with this error:



What the heck does it mean? I have little experience with this version and hardly know where to look.  :-X
#3


This is raptor. He is as stupid as he is adorable.




Here we have Pterodactyl. He is born too early so he has to guard the eggs of his brothers and sisters.


Input please, ladies and gentlemen!
#4


For nearly three years, me and an aspiring artist named Bjornar B have worked on Life of D. Duck II. This game is a celebration of Bjornar's artistic and linguistic abilities, with him dealing with the ingame art and dialogue and me doing pretty much everything else, including interface and menus. Six months after the first game came out, we started working on Life of D. Duck II. Apparently, the first game was the AGS pick of the month in July 2007.


Trailer 1:

(click image or here to open youtube)

Trailer 2:

(click image or here to open youtube)


Let's Play Life of D. Duck II:
(The robotic voices are not in the original game! These videos are fan made.)

Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9


Plot:
D. Duck is a champion. Having won Duckcity (Duckburg) marathon, his only goal left in life is winning the heart of Daisy. When D. Duck comes home with heart medicine for his sick old grandmother, fat Uncle Jubalon arrives at his doorstep. Unable to stop his uncle from breaking into the house, D. Duck is witness to an appetite unlike any other. As his girlfriend flees the scene, she seeks shelter in the loving arms of lucky Cousin Anton (Gladstone Gander). Take control over D. Duck as he struggles to handle his biggest problems yet, and meet up with popular Disney characters such as Uncle Scrooge, Magica De Spell and his three troublemaking nephews.


Cover: (printable high-resolution version included in game)



Screenshots:




Features:
- Same kind of interface as in Sam & Max
- Don't like right-clicking to change cursor mode? Turn on the cursor menu
in the main menu!
- Keyboard shortcuts, check Readme.txt for details.
- All custom made menus
- Hundreds of different ingame sound effects (yes, really)
- Well over 20 different Commodore 64 tunes
- Runs in glorious 640x480 resolution
- Exclusive dialogue and artwork by Bjornar B


Download:
DDuck2Setup1.00.exe (70.7 MB) (Windows installer - recommended)
DDuck2Files1.00.rar (74.4 MB)


We both hope you'll enjoy this journey through this wonderful world of scribble art! :)


Edit: Life of D. Duck II in AGS Games Database.
Edit2: Are you horribly stuck? Check out the walkthrough in the Extras folder!
Edit3: Someone dug this thread up from the grave. Added the second trailer plus a series of fan made "let's play" videos.
#5
Alright, in my game the player can use TAB to open or close the inventory list. Problem is, if I hold it down it flickers like hell. How to I make it wait until the button is released without using Wait(1);?

Here's my code:

Code: ags

if (keycode == 9 || keycode == 54) { // TAB or 6

  if (IsGUIOn(LUGGAGE) && IsGUIOn(OPTIONS)==false) { // Inventory GUI is off, so turn it ON.
    
	PlaySound(358); //bings
	StopMoving(EGO);
	GUIOn(INVENTORY);
	GUIOff(LUGGAGE); // button that opens inventory if clicked on
      
        if (GetCursorMode()==eModeWalk) SetCursorMode(eModeUse);
   }

   else if (IsGUIOn(INVENTORY)==true) { // Inventory GUI is on, so turn it OFF.
     
	PlaySound(359);
        GUIOff(INVENTORY);
        EnableCursorMode(0);
        GUIOn(LUGGAGE); // button that opens inventory if clicked on
        SetGlobalInt(1, 0);
   }
}


Im guessing the clue is the IsKeyPressed function, but I'm not sure what to make of it.
#6
Here's the thing; I've run out of objects in this room. No problem, it can be solved this way:

Code: ags


if (logtaken == 1) { 
     oLog1.SetPosition(167, 132); 
     oLog1.SetView(493,1); 
     oLog1.Animate(1,2,eRepeat,eNoBlock,eForwards); 
     oLog1.Visible = true;
}
else if (logtaken == 2) { 
     oLog2.SetPosition(167, 132); 
     oLog2.SetView(493,1);
     oLog2.Animate(1,2,eRepeat,eNoBlock,eForwards); 
     oLog2.Visible = true;
}



... and so on, with four total objects. Basically what this does is reuse an old object that the user has picked up previously, and reuse that object for this animation. Is there a way of making this simpler? It's basically the same thing over and over with different object names.
#7
Critics' Lounge / Frankenstein's monster
Wed 27/08/2008 11:07:30
Here's a little monster I created a while ago for a Frankenstein themed game. Hit me.






I'm thinking there's something wrong with the walking upwards animation, but I can't quite put my finger on what it is.
#8
When combining an inventory item with an object or a hotspot, I sometimes miss the option to run the unhandled event script when trying to combine an item that's not connected to that object or hotspot. If I don't script anything at all under an objects / hotspots "Use Inventory on object" field, the unhandled event script will kick in. However, if I script one inventory item to trigger something using it on an object, how do I trigger the unhandled event script to take over for the rest of the items?


// script for Object 5: Use inventory on object
if (player.activeinv == 52) UseMagnet();
else unhandled_event(1,3); // this obviously doesn't work, hence this thread!



This secret knowledge I'm sure some of you hold would come in handy when the player is trying completely random stuff that suggests a specialized response. As opposed to objects like a locked door where you'd write something like "I can't unlock the door with this vacuum cleaner!" in the else field! :=
#9
I have this optional GUI at the top of the screen that will sometimes show in front of the spoken dialogue if the player has a low y coordinate / standing high up on the screen. What I'm looking for is some way of detecting whether or not the dialog is crossing paths with this GUI so I can push the spoken dialogue further down or increase this GUI's transparency. Is there a way of doing this?

Edit: Thanks Khris, I'll experiment on your code once I get this damn cold out of my system...
#10
I've got this room that has a tractor driving around in the background (running non-blocking and performing excellent in the rep_exec_always script) and I want the sound of the tractor to scale according to its distance to the player. Don't worry, I ran into some problems...

In the rooms repeatedly execute always script:
Code: ags


  // scale sound
  if (tractordriving == true && IsGUIOn(OPTIONS)==false) {
    
    if (IsChannelPlaying(3)==false) PlaySoundEx(371, 3); 
    
    //adjust volume according to scaling
    if (cChar3.y < 95) SetChannelVolume(3, 30);
    else if (cChar3.y >= 95 && cChar3.y < 110) SetChannelVolume(3, 50);
    else if (cChar3.y >= 110 && cChar3.y < 125) SetChannelVolume(3, 70);
    else if (cChar3.y >= 125 && cChar3.y < 140) SetChannelVolume(3, 100);
    else SetChannelVolume(3, 140); // character has an equal to / larger y-coordinate than 140
    
  }



Now, this sound code works and sounds perfectly when running a blocking sequence, for instance looking at something using the cEgo.Say command, or while in a cutscene. Whenever something non-blocking is happening, like nothing at all (player can move cursor around), the sound stutters and pops like crazy, and it seems to be stuck at the largest volume. This really don't make sense to me. What's going on here?  :'(


Edit: Sorry, I left out the little detail that the code was actually in the rep exec always script...
#11
This problem has been bugging me for ages. Lots of times I want a character to animate specific views while moving. Problem is, if that character for example is moving in a curve, the default walk views will interrupt. (if the character should be moving leftwards while animating loop 7, loop 1 will interrupt and take over).

I've been working around such problems using objects instead of characters, but then there's lots of extra work seeing as you have to resize all objects to fit the size of the character for each walkable areas scaling as you can't scale objects in 2.72.

Any smart solutions to this problem?
#12
I'm just wondering... If I've got a large sprite with a huge transparent area (that pink colour in the editor), will the transparent area make your game bigger or does AGS have a method of removing / compressing this irrelevant data? A bitmap image will be huge in size even if there's just one colour in there... Do you have to be careful to crop away parts of sprites that the game will view transparent?
#13
I've got my own little save and loadgame menus all set up nicely. After I press save, all menus disappear. To let the player know it was a successful save, I've added a GUI with a camera and the text "game saved" that animates in the corner of the screen with a flash sound. It works brilliantly. However, when I load that savegame, the same camera makes another appearance, which makes sense seeing as the game continues right where it left off.

To stop this camera from animating another time after loading, now that's a tricky one. Is it doable? I can't quite find some piece of code or function to detect whether or not the game was just loaded or not. My best guess is to interrupt this GUI by turning it off via repeatedly_execute_always in the main global script... But then again, how to detect it?  ???
#14
I've got four savegame spots that each creates its own savegame file ranging from 1 to 4. If I save games at savegame spot 1, 2 and 3, agssave.001 through agssave.003 will be created. However, if I delete savegame number 2 through the game, AGS rearranges my savegame files so agssave.003 becomes agssave.002. Is there any way to stop the engine from doing this? It's causing problems.
#15
Code: ags
   
// script for Room: Player enters room (before fadein)
SetBackgroundFrame(0); // frame 0 is the normal background
RawSaveScreen();
   


Code: ags
   
 // script for Hotspot 6 (Hotspot 6): Use hotspot
RawRestoreScreen();
SetBackgroundFrame(1); // frame 1 is a totally blank frame, indicating a strong flash

int trans = 99;

while (trans > 0) {
	RawDrawFrameTransparent(0, trans); //fade in the normal background
	trans--;
	Wait(1);
}

SetBackgroundFrame(0); // go back to normal frame
RawSaveScreen(); // save current frame (don't know if this is necessary after already saving it in the before fadein script - either way it won't work the second time)



This code is supposed to be a quick flash of white that will fade into the normal screen. However, the fading script will only work the first time, and not the following times. Any ideas why?
#16
I'm just wondering what the best way of drawing a random coordinate that lies on a Rawdraw line is? Is there a way for the engine to select a random coordinate from a region also? I've tried for quite some time but I don't quite know where to begin.

Edited to clear things up a bit...
#17
I've been working on a game for a while now, on one spesific computer. I use Winrar to backup the entire game folder (including AGS 2.72), and I've had to go back to previous versions several times so I know this method should be working great. However, when trying to load the game on two other computers, it fails miserably.


... then I select the game's ac2game.dta file, a few fractions of a second it shows this menu again:



So what I'm asking is why this is happening. If I open it back up on the machine I used to build the game, it will work fine, but on my new one it won't load. What could be causing this? Not the required ogg support on my current pc perhaps? I am all out of ideas.


#18
Somewhere along the road, my game accidentally got turned from 16-bit into 32-bit colour mode. During that time I imported a lot of sprites. I discovered the error, and turned 16-bit back on. Then, a lot of sprites imported show a yellow warning label.

This doesn't seem affect the normal gameplay, but once the game is restarted in-game, certain sprites disappear / become invisible for no apparent reason at all. Worst of all: it's not even consistent, sometimes one spesific sprite will show, but suddenly the next time I enter the screen it's gone. I'm thinking it's because I turned back on 16-bit colour mode with imported 32-bit sprites.

Today I turned 32-bit colour mode back on. I've messed around ingame for half an hour now and has hit no graphical errors that would happen within 2 or 3 minutes when I run it in 16-bit colour mode. Has anyone else had this kind of experience? Is this a viable explanation or are the gods fooling me and having a laugh?

What are the disadvantages as to having 32-bit colour mode today? I would think all computers made in the last five years would support it. Speed is really all that matters to me, as my game doesn't require the transparency options etc. that 32-bit offers. AND FINALLY: Is there a way for me to go back into 16-bit colour mode and convert all those sprites with a warning label (imported in 32-bit mode) back into 16-bit? There are literally hundreds of sprites, and would take forever to do by hand.  :(
#19
Once again I'm having troubles with writing and reading simple ints from a dat file. My apologies for the last thread I created regarding a high score issue, a thread I'll come back to once I get the hang of this...  :-\

Alright here's the code so far, in the room we start in:

Code: ags

 // ROOM THAT THE INTRO STARTS IN
  SetRestartPoint();
  
  // if gamedata.dat is not present, create a new one with blank values
	File *output = File.Open("gamedata.dat", eFileWrite);
	if (output == null) {
	 gamerestartedwithcommentary = 0;
	 hasstartedcommentary = 0; 
	 output.WriteInt(gamerestartedwithcommentary);
	 output.WriteInt(hasstartedcommentary);
	}
	output.Close();
		
  
  
  // read back from gamedata.dat to find out if commentary mode is on
	File *input = File.Open("gamedata.dat", eFileRead);
	gamerestartedwithcommentary = input.ReadInt(); // THIS LINE'S THE TROUBLEMAKER (?)
	input.Close();
	
	// if commentary mode is on
	if (gamerestartedwithcommentary == 1) {
	    gamerestartedwithcommentary = 0;
	    hasstartedcommentary = 1;
	    SetGlobalInt(240, 1);

	    File *output2 = File.Open("gamedata.dat", eFileWrite); // SEE QUESTION 2
	    output2.WriteInt(gamerestartedwithcommentary);
	    output2.Close();
	}
	
  
	SetFadeColor(255, 255, 255);
	
	Wait(40);
	
	StartCutscene(eSkipESCOnly);



Compiling leaves me with the message "Error: FileReadInt: File read back in wrong order". What is going on?

Second question: Why can't I use the code "File *output = ...." twice? It left me with an error message saying "Variable 'output' already defined". So I threw in a 2 behind it and it compiled. I can't wrap my head around this. Do you have to store each int in its own variable? Can anyone explain this or maybe direct me somewhere that makes it easy to understand?
#20
I want to create a running game where the distance ran is measured with the help of a float value with two decimals. My problem is writing and reading this value to and from disk.

// room header
float stepcountinmeters = 0.00;
float stepcountinfeet = 0.00;

//rep exec
if (countdown == 0) { //game is finished
            float hiscore = stepcountinmeters;
   float hischandle = FileOpen("hiscore.dat", FILE_READ);         
   if ((hischandle == 0) || (hiscore > hischandle)){
   FileWriteInt(hischandle, hiscore);
            }
            FileClose(hischandle);
           
            Wait(40);
            cEgo.ChangeRoom(1);
}

Getting the obvious "cannot convert float to int" error when compiling, and that is expected, really. I know I can't use FileWriteInt to write a float value with, but what are my options here? Converting the float value to a string and then back again to be able to compare the numbers (for determining if the current score is the highscore)? I tried this, but it was a catastrophic failure.

I really do not want to lose the two decimal numbers by converting to an int.
SMF spam blocked by CleanTalk