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 - Duckbutcher

#1
AGS Games in Production / SALARYMAN
Fri 05/04/2019 07:52:51


When every day is the same - work, sleep, work, sleep - don't you want to break the cycle and just drop a vending machine on someone?




Salaryman is my upcoming, mostly done, almost-definitely-will-be-finished return to the wonderful world of AGS.

Guide our potato-headed hero back to his loving family across a crooked world filled with weird characters who will help or hinder you depending on how you treat them.

Multiple puzzle solutions, different paths to different endings and optional/hidden areas!

Slapstick fun abounds, with minigames and secrets, and a whole heap o' retro fun. One click interface - no verb tables! Textless and intuitive - no language barriers!

Stands at roughly 70% done right now. Probably out around June/July 2020.

Have a look at the trailer, and I welcome your feedback. Hope you're all having a good day! Don't work too hard...

I'm also dipping my foot into social media for this one, here are two for a start. Give me a follow/likes and so on if you can! Not much there at the moment but there will be soon...
https://twitter.com/salarymangame
https://duckbutcher.itch.io/salaryman-a-darkly-funny-point-and-click-adventure
https://gamejolt.com/games/salarymangame/407172








Edit November 1st - I have started a developer's vlog for this game! Have a look and please do give me a like or subscribe if you have a minute to spare. Cheers!

#2
Hey all, hope you had a good Christmas.

I'm doing a sub-game in which the player controls a big fish swimming around which has to eat smaller fish. It does this by running into them. This is my code for the collision:

Code: ags

if (cEgo.IsCollidingWithChar(cfish)){

  if (cEgo.Loop == 0){ //if facing direction, eg down
    player.ChangeView(194);//change to bite anim
    player.Animate(0, 1, eOnce, eBlock);//play bite anim
    player.ChangeView(101);//returns to original view
  }
    
  if (cEgo.Loop == 1){
    player.ChangeView(194);
    player.Animate(1, 1, eOnce, eBlock);
    player.ChangeView(101);
  }
  
  if (cEgo.Loop == 2){
    player.ChangeView(194);
    player.Animate(2, 1, eOnce, eBlock);
    player.ChangeView(101);
  }
  
  if (cEgo.Loop == 2){
    player.ChangeView(194);
    player.Animate(2, 1, eOnce, eBlock);
    player.ChangeView(101);
  }
  
  cfish.ChangeRoom(-1); //fish disappears



It works fine.

HOWEVER - fishes usually just eat through their mouths and as you can probably guess this interaction plays no matter what part of the big fish sprite my little fish come into contact with.

So here's the question - is there some way to have this interaction only play when the little fish collide with the head area of my big fish? Sort of like assigning a hotspot or region to the sprite.

Thanks for your time, hope you're all having a good one.
#3
Hey people, hope you're all well.

I'm playing about with a keyboard controlled top down shooter sort of game. Arrow keys to move and space to fire so far.

I'm using a character (cfire) as the projectile, and have this character binded behind the player character using FOLLOW_EXACTLY.

Upon pressing the space bar, the game checks which direction the character is facing and moves the projectile 50 degrees away from the character in the appropriate direction. There is a short timer which allows the projectile to achieve this distance before respawning behind the player character for the next shot. It works pretty good.

My problem is I have to repeatedly hammer the space bar in order for this to work - holding the spacebar produces some odd effects, ie the projectile slowing to aãâ,¬â,¬snail's pace before stopping suspended in the air. Ideally I don't want to give my players broken wrists, so if there's a simple way to have the projectile fire at a steady rate while holding the spacebar down, I'd be really grateful if you could let me know! I suspect the problem may be something to do with the timer but I'm not sure what to do.

Here's the code, from globalscript function on keypress.

Code: ags


  // FUNCTION KEYS AND SYSTEM SHORTCUTS
  
  if (keycode == eKeySpace){
   cfire.FollowCharacter(null);
   if (player.Loop==2){
   cfire.FaceDirection(eDirectionRight);
   cfire.Move(cego.x+50, cego.y+0, eNoBlock, eAnywhere);
   SetTimer(1, 6); 
   }
   if (player.Loop==1){
   cfire.FaceDirection(eDirectionLeft);
   cfire.Move(cego.x-50, cego.y-0, eNoBlock, eAnywhere);
   SetTimer(1, 8); 
   }
   if (player.Loop==0){
   cfire.FaceDirection(eDirectionDown);
   cfire.Move(cego.x+0, cego.y+50, eNoBlock, eAnywhere);
   SetTimer(1, 8); 
   }
   if (player.Loop==3){
   cfire.FaceDirection(eDirectionUp);
   cfire.Move(cego.x-0, cego.y-50, eNoBlock, eAnywhere);
   SetTimer(1, 8); 
    }
  }


And here is the timer check in global rep- ex.

Code: ags

  if (IsTimerExpired(1)){
   cfire.x=cego.x;
   cfire.y=cego.y;
   cfire.FollowCharacter(cego, FOLLOW_EXACTLY, 1);
   return;
  } 
#4
Hey hey, hope you're all well.

Im using the Sierra template and I'm having some bother with my cursor image when mouseovering a hotspot or object when an inventory item is active. Basically I have an alternative cursor sprite for each inventory item which I want to appear when a useable object or hotspot is mouseovered with an active item. Is there a way to do this globally without putting in code for each individual hotspot or object?

Thanks.
#5
Hey all, hope you're well. I have a problem.

I'm doing trampoline based puzzle. When my character gets on the trampoline, he bounces up and down as an idle animation. The player can then select various hotspots for him to jump to, at which point a specific blocking animation will play showing him jumping from the trampoline to the particular hotspot.
The problem is of course that the new animation interrupts the idle animation no matter what frame it's on, so I get a jarring effect of my character jumping “mid jump” rather than from the trampoline.

Is there any way to get the game to run to the end of the current loop (ie when he lands back on the trampoline) and then play the next animation?
#6
Hey everyone, hope you're all doing well.

I have a sierra style inventory GUI which starts invisible and appears with a right-click. I've used some code which works fine, which tells the engine to make the window appear with a right click, and then disappear with another right click, simple and efficient. Here's the code in full, in function mouse click in the global script.

Code: ags

//yada yada left click functions

else if (button == eMouseRight) { //if right button is pressed
     if (gInventory.Visible == true) { 
       gInventory.Visible = false; //if the gui is visible, turn it off - note this should happen in all situations if the GUI is visible!
       
     } 
        if (player.ActiveInventory){  //if the player has an active item
        player.ActiveInventory = null; // gets rid of it
        mouse.Mode = eModeInteract;   //changes the pointer back to default
        }
        else gInventory.Visible = true; //otherwise, turn the inventory window on



So here's my problem. I open my inventory, select my item and right click out, closing the window, BUT only when I click on the GUI background image, or outside the GUI itself. If my pointer is in the actual inventory window (ie where the item icons are selected), it doesn't respond to a right click at all and I have to move it out of the box in order to shut the GUI. I'd really like to solve this problem for a little more fluidity and consistency!

Can anyone help me out?
#7
Hi guys, hope you're all good today.

I have a keyboard controlled character running around in a top down maze type environment.
I'm currently using the “pressing” mode for arrow key control as in the keyboard movement script that comes with the default template.

My question is - if I'm holding for example up and left when I hit a wall (or rather the edge of the walkable area),how can I have the character continue moving left along the wall instead of stopping outright? Sort of the same way many characters in top-down games like Zelda move.

I hope this is clear enough! Cheers.
#8
Hi guys, hope you can help me out!

I'm making a quick game for a friend, using an adaptation of the sierra template that comes with AGS 3.4 and wanted to really strip out all the interactions and have one mouse click handle everything. Initially I simply disabled everything except the walk function and thought I'd put all the interactions with hotspots, objects and characters into anyclick script and use conditionals to check if an item is being used and so on.

I then discovered that the walk mode doesn't appear to use the anyclick script and is its own entity, so ended up keeping interact, so I now have two mouse modes which I can swap between using a right click.

However, I wanted to have the inventory open with a right click and had really got myself set on just having one interaction mode, so I attempted to have the interact function also walk the character. I put a command in game_start forcing the cursor to interact mode (essentially disabling the walk mode) and tried this in the global script:

Code: ags


function on_mouse_click(MouseButton button) {
  // called when a mouse button is clicked. button is either LEFT or RIGHT
  if (IsGamePaused() == 1) {
    // Game is paused, so do nothing (ie. don't allow mouse click)
  }
  else if (button == eMouseLeft) {
    Room.ProcessClick(mouse.x, mouse.y, mouse.Mode); 
    player.Walk(mouse.x,mouse.y, eNoBlock, eWalkableAreas);
    
  }


Initially it seemed fine - the cursor still interacts with my hotspots, and the character seemed to walk around, like I intended. However, something a little odd happens - the character walks fine in one direction, follows my clicks to the pixel, but if I turn the other direction, the character refuses to walk. He just takes a couple of half steps and won't go any further. He even walks in the opposite direction from my click! I've checked my walkable areas and they're all fine, tried starting him in a different room, and even returned the script to its previous state and the problem disappeared. One thing I noticed is that this only seems to happen in scrolling rooms. Is there something obvious I'm missing? Let me know if you have any ideas! Thanks guys.
#9
I have a vertical background early in my game. It's about 320/400 and the character emerges from a door approximately halfway down. AGS defaults to showing the immediate environment, approximately the middle 3rd of the background, ie centered around the character, but I want to show the top of the background upon entering the room, with the character appearing at the bottom. How can I make AGS display the entire background from the top?

I hope this makes sense.

#10


Meet Keith Stump (the scruffy guy in the black suit) - he's down on his luck. He woke up one morning to find his wife, car, house and job all gone. Luckily he has lots of friends who want to help him, including bespectacled hipster Thursleigh Worplesdon. Help Keith rebuild his life by running errands for his friends and solving puzzles! Or, if you like, smash Thursleigh's TV with a spanner, set him on fire and generally make sure his life is as RUINED as yours is! Fun for all the family in glorious 320/240 resolution.

Get the demo here: http://s000.tinyupload.com/index.php?file_id=86701505766470831380

This is a demo which comprises the first location of many in the town of Blandville. It is incredibly silly and childish. No real idea when the full game will be ready (it's probably quite a way off), just thought I'd put this out as an experiment and see what people think. You start with a spanner and a monkey in your inventory, though you won't in the full game. Start off by trying to use them on anything you can until you get the hang of things. The ultimate goal of the demo is to hospitalise Thursleigh Worplesdon. GOod luck!

It's still a little rough, some of the interactions aren't done (the oven and washing machine are basically useless at this point), but it's fully completeable. There will probably be bugs here and there so if you come across one, let me know!




#11
Hi, quick question, hopefully someone can help me out. Is there a way to temporarily change where dialogue is displayed on the screen? I'm using the Lucasarts template which came with 3.4. I have a scene where I would like different lines of dialogue to be displayed at different points on the screen (ie not directly above the character's head).

I have thought about using character.SayBackground, but I'd rather it was blocking as it's part of a cutscene, not to mention the fact that doing it that way would necessitate me creating several invisible characters.

Thanks in advance!
#12
Hi, this is kind of difficult to explain but here I go..!

I've got a fire as an object in a room, and my character can throw various items into it. However, at one point he'll be carrying a large item (item 14 in the below script), and I want him to not be able to use any other inv items on the fire while he is carrying this item. Here is a sample of the script I've been using - this is the script for using item 6 on the fire, though the script is near identical for the other items.

Code: ags


  //USE INV
    else if(UsedAction(eGA_UseInv)) {
          if(player.ActiveInventory==inventory[6]){
            if (cEgo.InventoryQuantity[14] > 0){
            player.Say("Not while I'm carrying this thing.");
          }
          
      else player.Walk(280, 130, eBlock);
      player.FaceDirection(eDirectionRight);
      cEgo.LockView(48);
      player.LoseInventory(iplun);
      Wait(10);
      obang.SetView(28);
      obang.Visible=true;
      obang.Animate(0, 3, eOnce, eBlock);
      obang.Visible=false;
      Wait(10);
      player.UnlockView();
      cHip.FaceCharacter(cEgo);
      cHip.Say("What was that?!");
      player.FaceCharacter(cHip);
      player.Say("Nothing!");
      player.Say("Fire just burped, that's all.");
      GiveScore(1);
        }
    }



My problem is that he displays the correct dialogue line ("not while I'm carrying this thing") and then goes ahead and does the action anyway. I've done a similar script for most other items as well, and it does the same thing - and then runs the "else unhandled" part of the script too. I fear it might be a closing brace issue, but can't seem to sort it.  I'd appreciate any advice you might have!
#13
Hi guys, hope you can help. I'm putting together the interactions for one of my NPCs and I've hit a snag. When I "talk to" the character I want it to trigger dialog 2. I also have a couple of interactions for using a couple of inventory items on the character. My problem is that when I "Talk To" the character the game first displays the part of the script conditional to my using inventory item 6 - from this statement:

Code: ags

if (player.ActiveInventory==inventory[6]){


..before running dialog 2. Where am I going wrong? Full script for the NPC is below.

Code: ags


function cHip_AnyClick()
{
// TALK TO
  if (UsedAction(eGA_TalkTo)) {
    dDialog2.Start();
  }

  // LOOK AT
  else if(UsedAction(eGA_LookAt)) {
    player.Say("That's Thursleigh Worplesdon.");
    player.Say("I know him through Michelle, they were on the Creative Writing course together.");
    
     }
  // OPEN
  else if(UsedAction(eGA_Open)) {
    player.Say("I'll move him, alright.");
    player.Say("Into the path of a runaway steamroller.");
     }  
  // CLOSE
  else if(UsedAction(eGA_Close)) {
    Unhandled();
  }
  // USE
  else if(UsedAction(eGA_Use)) {
   Unhandled();
  }
  // Push
  else if(UsedAction(eGA_Push)) {
    Unhandled();
  }
  // Pull
  else if(UsedAction(eGA_Pull)) {
    Unhandled();
  } 
  // PICKUP
  else if(UsedAction(eGA_PickUp)) {
    player.Say("I'd quite like to ransack his house, but I'll leave this fool here.");
  }
  // GIVE TO
  else if (UsedAction(eGA_GiveTo)) {
    Unhandled();
    }
  
  }
  //USE INV
  else if(UsedAction(eGA_UseInv)) {
    if (player.ActiveInventory==inventory[5]){
    player.Say("It's very tempting, but a little too blatant.");
    }
  }
    
    if (player.ActiveInventory==inventory[6]){
    player.FaceCharacter(cHip);
    player.Say("Hey Thursleigh!");
    player.Say("I found something really retro and ironic you might like!");
    cHip.FaceCharacter(cEgo);
    cHip.Say("Oh wow!");
    cHip.Say("really?");
    }
    

}
[code]
#14
Hey all hope you're well.

I've done a bit of script for a hotspot. Actually it`s some cooker controls and I want them to turn off and on a hotplate. I want the computer to check a variable (cookervar) to tell whether to turn the hotplate on and off. When cookervar is at 0, the cooker will turn on on when the "use" command is used, and the cold hotplate hotspot will turn off and be replaced by an object representing the hot turned-on hotplate. This part of the script also changes the cookervar to 1 so that the next time the player uses "use", the hotplate object will be removed and the cold hotplate hotspot will come back on.

I fear I'm missing something obvious but I can' find what it is. The hotplate object switches on fine but when I turn it off it disappears for a second and then comes back on. Here's my script, please put me out of my misery.

Code: ags

function hocont_AnyClick()
{
  
// LOOK AT
    if(UsedAction(eGA_LookAt)) {
      player.Say("Stupid electric cooker.");
    }
    // USE
    else if(UsedAction(eGA_Use)) {
      if (cookervar == 1)
      cEgo.Walk(96, 132, eBlock);
      cEgo.FaceDirection(eDirectionUp);
      Wait(10);
      hhplat.Enabled=true;
      oHot.Visible=false;
      cookervar = 0;  
    }
    
      if (cookervar == 0){
      cEgo.Walk(96, 132, eBlock);
      cEgo.FaceDirection(eDirectionUp);
      Wait(10);
      hhplat.Enabled=false;
      oHot.Visible=true;
      cookervar = 1;
    }
    

    // OPEN
      else if(UsedAction(eGA_Open)) {
      player.Say("It doesn't move.");
          }
    // Pull
    else if(UsedAction(eGA_Pull)) {
      Unhandled();
    }  
    // PICKUP
    else if(UsedAction(eGA_PickUp)) {
      Unhandled();
          }
    //USE INV
    else if(UsedAction(eGA_UseInv)) {
      Unhandled();
    }
    
    else Unhandled();
}
#15
Hi all, I`ve got back into AGS after a long break, and have to say the new version (I`m now using 3.4) is giving me brainaches that my trusty old 2.72 could only dream of.

So I`ve got two questions: how do I do nonblocking object animations, eg a fireplace or a flag waving in the wind? I set the object`s view before screen fadein then put the animation command in repeatedly execute, and the object animates but the cursor is gone and I can`t do anything.

Second question - changing the GUI labels. I`m using the default Lucasarts template which comes with 3.4 but it behaves quite differently to the old proskritos MI template I was used to. I want to put in my own simplified version of the gui where I basically combine push, pull open and close into one command called "move". I need to know how to change the label in the command line (and the colour too now I think of it) - can`t seem to find where to do this in the global script.

Thanks, hope you`re all well.


#16
See the bottom of the post for info and link to the demo!




"It's hard not to believe in the Gods when they float over your head in a palace of blue crystal..."

In the far-off magical land of Raithe, Eric Moufflon is a simple Latherham farmhand with dreams. He's got a silly name, a big nose and he's scared of cows. But he gets more than he bargained for when he sets off on the road to great adventure.

Raithe is a complex, God fearing world, a world in which science and technology are shunned and those who support these new additions to Raithe's strictly magic-driven theology are looked on as fringe fanatics. Eric will have to contend with these conflicts. But if that sounds too heavy, he'll also have to contend with carnivourous vegetables, sadistic shopkeepers, buffet-obsessed sailors and spider-librarians.

Inbetween lying to his Adventurer's Club Contact about a) his physical prowess (he doesn't have any) and b) the size of his sword (he left it at home because he thought someone might steal it), Eric must wander around the countryside picking up lots of improbable but oddly useful items while learning some valuable lessons about faith, friendship, fun and flapjacks, and just WHY no one ever put a projectile weapon in an adventure game.

And finally, perhaps he will discover the secret reality behind his world...the secrets contained within the mysterious Apostolic Megalith, a gigantic floating prism of pure crystal which is said to house the Gods themselves...








OK, here's a new game. Sort of. It's going to be an episodic thing, and the first part has the tentative release date of August 7th. I'm on summer holidays at the moment though, so with more time on my hands it may come out sooner, it depends....

Eric and the Apostolic Megalith is sort of a love letter to the games I loved playing when I was younger...Monkey Island, Simon the Sorceror, Final Fantasy....while I wouldn't say there are any "homages" in there (read rip-offs), hopefully the game itself will offer similar feelings to those games which inspired it. Puzzle-wise, I've tried to capture the surreal-yet-makes-perfect-sense attitude of some of the best MI puzzles. Time will tell whether I got it right or not! Watch this space for updates, as ever....!

Progress:

Graphics = 90%
Story = 100%
Programming = 75%

Estimated completion date = Jan 2010.

Features:

*Classic SCUMM style interface
* Real-Time Sub-Games
* Fancy Cartoon interludes.
* Ludicrous slapstick routines.
* Pretentious back story, subtly offset by wacky humour...
* Talking vegetables.
* 95% non-ripped graphics.
* Soundtrack from obscure 1980s cartoon classic "The Mysterious Cities Of Gold"...if I can get away with it...

EDIT 20th Aug. Well, I missed that release date, largely due to moving house and celebrating my 30th, but the game should be seeing light of day in a couple of weeks. In the meantime, here's a new screenie....



EDIT JAN 25th

I've actually had the demo lying around for a while, but haven't quite got round to uploading it until now. Anyhow, here it is. It comprises part one of the game. I'm mired under a lot of Uni work at the moment, so I probably won't start working on the rest of the game until April at the earliest, so make it last!

http://www.filefront.com/user/duckbutcher

As always, feedback is welcome. Cheers!


#17
I've got a clockwork mouse in my inventory. Whenever I "Use" it, I want my main character to put it on the ground and let it wander around the screen (as a 'character' in its own right) until I decide to pick it back up (removing the mouse 'character' from the room and returning the mouse 'item' to my inventory). This should be possible in any room in the game.

Is there any easy way to do this WITHOUT putting conditionals and commands into the repeatedly execute section of every room in my game (something which would take far too much time)? Is there something that can be done from the script of the inventory item itself?

Thanks for your help guys, and be sure to spell everything out for me, I'm still not big on scripting!
#18
...how would I go about this? I want a character / object  (whichever is simpler) to follow the cursor around the game screen.

Any ideas?
#19
Hi guys, quick question and apologies if the answer's right under my nose. I'm using the Proskritos MI2 2.71 template and would like to know how to permanently change the colour of the text on the status bar, "Walk to" etc from its familiar Monkey Island purple to a more 'me' colour. Any ideas? I've looked through the GUI script and can't find anything obvious.
#20
First of all, apologies if this is in the wrong section.

I'm having a bit of a crisis. My laptop's power cut out as I was in the process of saving my game and now the editor will not read the data file.

The compiled file still runs fine by itself, but of course I can't edit it. However, I'm guessing all the data I need is still there, so if there is some way of getting at it that I don't know about and creating another .dat file, the someone please let me know!

Does anyone have any suggestions? I don't back up my games as often as I should, and this setback will cost me about a month's work. Help!
SMF spam blocked by CleanTalk