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.


Topics - robbo007

Pages: [1] 2
1
SCI Community How To's & Tutorials / Thoughts on the LSL4 babes
« on: April 07, 2025, 04:15:06 PM »
Hi guys,
So I've decided to try and tackle the LSL4 babes like in LSL3 but with more interaction with the parser. Here is a test with Bippi. From Bippi's Land Liquors. (Downtown Nontoonyt Mall). "Bippi says: For those special romantic evenings, grab one of my jugs."

Any thoughts, opinions most appreciated.




2
SCI Syntax Help / changeState woos
« on: March 25, 2025, 02:13:47 PM »
Hi Guys,
I've got some issues with calling a changeState from within a changeState.

I have my RoomScript changeState and an actors changeState (IvanaScript).

Code: [Select]
(method (handleEvent pEvent)
(super handleEvent: pEvent)
; handle Said's, etc...
(if (Said 'press/button')
(self changeState: 1)
)
)
(method (changeState newState)
(ShowState self newState 1 2) ; Displays changeState info on screen when debug is enabled.
(= state newState)
(switch state
(0
)
(1 ; Ego goes to soda Machine
(ProgramControl)
(gEgo
illegalBits: 0
ignoreActors:
setMotion: MoveTo 158 177 self
)
)
(2 ; Ego presses soda machine button
(gEgo
cycleSpeed: 1
view: 707
setLoop: 2
setCycle: End self
)
)
(3 ; Done pressing button
(gEgo setCycle: Beg self)
)
(4 ;Soda machine turns on
(gEgo view: 000 setCycle: Walk loop: 3)
(ProgramControl)
(aSoda setCycle: Fwd)
(self changeState: 5)
)
(5
(PlayerControl)
(SetUpEgo) ;this sets ego back to normal
(= cycles 10)
)
(6
(aIvanaScript changeState: 12)
)
(7 ;Ivana walks path back behind counter
(aSoda setCel: 0)
(aIvana setCycle: Walk setMotion: MoveTo 143 17 self)
)
(8 ;Ivana walks path back behind counter
(aIvana setMotion: MoveTo 87 179 self)
)
(9 ;Ivana walks path back behind counter
(aIvana setMotion: MoveTo 111 119 self)
)
(10 ;Ivana walks path back behind counter
(aIvana setCycle: Beg setMotion: MoveTo 78 120 self)
)
(11 ;Ivana walks path back behind counter
(aIvana priority: 8)
(aIvanaScript changeState: 0)
)

)

)
)

Code: [Select]
(method (changeState newState &tmp IvanaLoop)
(ShowState self newState 1 2) ; Displays changeState info on screen when debug is enabled.
(switch (= state newState)
(0
(= seconds (Random 4 8))
)
(1
(aIvana
illegalBits: 0
cycleSpeed: 0
setLoop: -1
setCycle: Walk
setMotion: MoveTo 72 124 self ;Ivanna walks up
)
)
(2
(= seconds (Random 4 8))
)
(3
(aIvana setMotion: MoveTo 53 138 self) ;Ivanna walk down
)
(4
(= seconds (Random 4 8))
)
(5
(aIvana setMotion: MoveTo 53 134 self) ;Ivanna walk down part 2
)
(6
(= seconds (Random 3 9)) ; Ivana does some random poses
(switch (= IvanaLoop (Random 0 5))
(0
(aIvana loop: 6 cycleSpeed:4 setCycle: End self)
)
(1
(aIvana loop: 7 cycleSpeed:4 setCycle: End self)
)
(else
(= state -1)
)
)
)

(7
(self changeState: 0) ;Returns to the start. Only interupted if talked to.
)
(8
(aIvana setMotion: MoveTo 63 128 self) ; Let's try and talk. Ivanna stops and goes to central point.
)
(9
(aIvana setLoop: 5 cycleSpeed:4 setCycle: Beg) ;Talk a little
(= seconds 3)
)
(10
(aIvana setCel: 0 setLoop: 0)
(= cycles 10)
)
(11
(cond
(register
(switch register
(101
(PrintA 33 7) ; "test 2"
)
(102
(PrintA 33 6) ; "test 3"
)
)
)

(else
(switch msgVar
(0
(PrintA 33 8) ; "test 1"
)
(1
(PrintA 33 9) ; "Yes? May I help you?"
)
(2
(PrintA 33 10) ; "Would you like me to call security?"
)
(3
(PrintA 33 11) ; "How may I help you?"
)
)
(if (> (++ msgVar) 3)
(= msgVar 0)
)
)
)
(self changeState: 0) ;Start all over again.
)
(12
(aIvana
illegalBits: 0
cycleSpeed: 0
setLoop: -1
setCycle: Walk
setMotion: MoveTo 78 120 self ;Ivanna walks out behind desk
)
)
(13 ;Ivanna walks path to soda machine
(aIvana setPri: -1 setMotion: MoveTo 111 119 self)
)
(14 ;Ivanna walks path to soda machine
(aIvana setMotion: MoveTo 87 179 self)
)
(15 ;Ivanna walks path to soda machine
(aIvana setMotion: MoveTo 143 179 self)
)
(16 ;Face soda machine and scratches head and waits.
(aIvana setCel: 1 setLoop: 6)
(= cycles 20)
)
(17
(RoomScript changeState: 7)
)
)
)
)

The first issue is when Ivana reaches the SodaMachine . Ego presses the button and she comes out from behind the desk and walks to the sodamachine, but she gets stuck on changeState 7 of the RoomScript changeState. (See screenshot 1)

The second problem is randomly, Ivana does not walk her programmed MoveTo path in the IvanaScript changeState. She will randomly walk behind the SodaMachine doing a completely differnt moveto path that I've not specified.  (see screenshot 2)

Questions: If you are calling different changeStates and jumping between different scripts is there anything special syntax that is needed to avoid any problems? I'm just using the scriptname changeState: x syntax to do this.

Also how do I make sure the Cycler is on Walk when the actor needs to start moving when I use the MoveTo command? Sometimes the actor just seems to moonwalk the MoveTo coordinates. I know with ego you can use the (SetupEgo) syntax. Can this be done with actors? the (SetUpActor) jsut causes a crash.

Thanks,



3
SCI Syntax Help / SCI0: Varibles and changestates
« on: November 21, 2024, 04:29:16 PM »
Hi guys,
I'm trying to create a script that mimics the LSL1 pimp door script in Lefty's Bar. I'm trying to understand what is the best approach.

Player types "knock on door", pimp replies "What's the password", player types password and its checked, if correct then opens door.

Would you use a variable to hold the text the player types in "ken sent me"? How do you then check this is the correct text entered against the variable?

When dealing with a script inside the RoomScript do you generally try and keep all the said statements inside that script? Or do you put the said statements in the RoomScript then declare the changeState you want to goto with that said statement ? I'm getting lost how to organise all my said statements and scripts in each room. What's the best approach?

Thanks,

4
SCI Development Tools / BMP to Vector converter utility
« on: October 28, 2024, 12:28:20 PM »
Hi guys,
In my never ending search to try and reduce the size of a picture when using the "Import BMP to PIC" option in SciCompaion. I reached out to Erik who created a similar utility for the AGS engine back in 2000.

He has now created SCIVEC, which is a nice little utility that converts a bmp file into a SCI Companion compatible "patch" picture file. This can then be imported using the IMPORT menu. The initial results are good and the picture size is about 15% smaller than than if importing via SciCompanion directly. He is planing to tinker a little more with the code to get reduce the size even more.

This is great if you draw your pictures in an external drawing program like Aseprite and then want to run your games on real hardware where space is very limited. Or to go even one step further and release your game on floppy disks :)

Here is the link to the utility: https://github.com/erkkah/scivec

Regards,



5
SCI Syntax Help / SCI0: Issues implementing Trite Phrase Menu item
« on: September 26, 2024, 04:35:18 PM »
Hi guys,
I'm trying to implement something like the Trite Phrase used in LSL2 or the Expletive in LSL3. The LSL2 version seems a lot simpler but I'm getting a crash when using the code in my main.sc

I've added the following to my main.sc
Code: [Select]
(= gExpletive (Format @gExpletiveBuffer 976 0)) ; "Have a nice day."
and I've added the following to menubar.sc

Code: [Select]
(AddMenu
{ Action_}
{Pause Game`^p:Inventory`^I:Retype`#3:--! :Colors`^c :Ask about`^a :Boss Key`^b :Lowe-O-Meter\05`^h :Expletive`^x};:Expletive`^x
)

Code: [Select]
(MENU_EXPLETIVE
(GetInput (Format @temp4 gExpletive) 38
{Enter your favorite expletive:}
)
(if (> (StrLen @temp4) 4)
(Format gExpletive @temp4)
)
)

The game.sh has:
Code: [Select]
(define MENU_EXPLETIVE $0309)
And I have a text file created 976 with the 0 entry holding "Have a nice day"

I get the opps error when starting my game. Using the debug commands I see its getting stuck in room 290 init. This room runs a speed checker for real hardware at startup.

Code: [Select]
(method (init)
(ProgramControl)
(= gProgramControl FALSE)
(SL disable:)
(TheMenuBar hide:)
(super init:)
(gEgo
view: 290
posn: 20 100
setStep: 1 1
setMotion: MoveTo 3000 100
setCycle: Walk ;even though view.290 has only one frame, the overhead of a Cycler makes the simulation more realistic.
init:
)
(gGame setSpeed: 0)
)






6
SCI Syntax Help / SCI0: Events claimed Flags etc
« on: July 31, 2024, 06:33:36 PM »
Hi guys,
Could someone help out and shed some light on how flags and claimed events work? I'm trying to have a changestate run once in a room. When ego walks back into the room I don't want the changestate to run again. I was trying to copy the LSL3 source using a flag procedure but its not working.

Code: [Select]
(procedure (SetFlag flag)
(= [gFlagArray (/ flag 16)]
(| [gFlagArray (/ flag 16)] (>> $8000 (mod flag 16)))
)
)
(procedure (TestFlag flag)
(return
(if (& [gFlagArray (/ flag 16)] (>> $8000 (mod flag 16))) 1 else 0)
)
)

Code: [Select]
(if (not (TestFlag 20))
(aTaxi init:)
)

Code: [Select]
(method (changeState newState)
    (switch (= state newState)
(0
(ProgramControl) ;hands off
(= seconds 5) ; wait 10 seconds
(Print {"A year later...})
)
(1
(Print {"Seeya round buddy", shouts the taxi driver.})
(client
illegalBits: 0
cycleSpeed: 0
setLoop: -1
setCycle: Rev
setMotion: MoveTo -52 97 self
)
(PlayerControl) ;hands on
(SetFlag 20)
)
)
)
)

Thanks :)

7
SCI Syntax Help / SCI0: RegionPath Wandering
« on: May 30, 2024, 06:25:42 AM »
Hi guys,
I'm trying to get an actor to wander around from room to room. Sort of like what they did with the BikiniLadies in Codename: Iceman.

I've found in the Iceman source code this code but don't really understand what its doing all the time.

Water.sc
Code: [Select]
(method (init)
(Load rsVIEW 217)
(Load rsVIEW 216)
(Load rsVIEW 215)
(Load rsVIEW 214)
(Load rsVIEW 702)
(Load rsVIEW 202)
(Load rsVIEW 902)
(super init: &rest)
(gEgo viewer: EgoWaterViewer)
(closeUpView init:)
(if (not script)
(self setScript: beachWalkerScript)
)
(if (IsObject (script register:))
((script register:) init: setMotion: beachWalkerPath)
)
(if (not (gGame script:))
(gGame setScript: musicScript)
)
)

(method (notify param1 param2 &tmp temp0)
(switch param1
(0
(= temp0 0)
(while (< temp0 (- argc 2))
((Clone param2)
x: [param2 (++ temp0)]
y: [param2 (++ temp0)]
loop: [param2 (++ temp0)]
init:
)
)
)
(1
(beachWalkerScript register:)
(return)
)
)
)

So here its loading the views for the BikiniLadies and checking to see if the beachWalkerScript is registered and registering it. I don't know what the method is doing really? I can only seem to get the method compiling if I include it after the (method (handleEvent pEvent) section in my RoomScript.

Code: [Select]
(instance closeUpView of View
(properties
y 85
x 265
view 993
loop 4
)

(method (init)
(super init:)
(self hide: setPri: 15)
)

(method (show param1)
(self view: param1 setLoop: 4)
(super show:)
)
)

(instance aBikini3Lady of Act
(properties
view 993
)

(method (init)
(super init:)
(self
setAvoider: Avoid 1
ignoreHorizon:
setCycle: Walk
observeControl: 2048
)
)

(method (handleEvent event)
(cond
((super handleEvent: event))
((IsOffScreen self))
((Said 'look[<at][/woman,brunette,native[<native,brunette]]')
(closeUpView show: view)
(Animate (gCast elements:) 0)
(Print { Whew, what a hot lookin' native girl!})
(closeUpView hide:)
(event claimed: 1)
)
)
)
)

(instance aBikini4Lady of Act
(properties
view 994
)

(method (init)
(super init:)
(self
setAvoider: Avoid 1
ignoreHorizon:
setCycle: Walk
observeControl: 2048
)
)

(method (handleEvent event)
(cond
((super handleEvent: event))
((IsOffScreen self))
((Said 'look[<at][/blond,woman[<blond]]')
(closeUpView show: view)
(Animate (gCast elements:) 0)
(Print {This blonde is definitely a babe.})
(closeUpView hide:)
(event claimed: 1)
)
((Said 'whistle')
(Print {She ignores your ancient ploy.})
)
((Said 'ask<out/woman')
(Print {She is out.})

)
;;; ((Said '[/bitch,cunt,boob,blond,woman[<blond]]>')
;;; (cond
;;; ((Said 'ask//date')
;;; (localproc_0)
;;; )
((Said 'ask//time')
(Print {Time has no meaning in Tahiti.})
)
;;; ((Said 'chase')
;;; (Print 301 18) ; "You can do that."
;;; )
((Said 'talk')
(Print {She's trying to ignore you.})
)
;;; ((Said 'kiss,suck,fuck,touch')
;;; (if (> (gEgo distanceTo: self) 50)
;;; (Print 301 20) ; "You'll have to get closer than this."
;;; else
;;; (QueScript self 353)
;;; )
)
)
)

(instance beachWalkerPath of RegionPath
(properties
value 29
endType 0
theRegion 028
)

(method (at param1)
(return [local1 param1])
)

(method (nextRoom)
(if
(and
(== (self at: (+ 2 value)) 3)
;(== gRoom newRoomNumber: 28) ; volleyRm
(gRoom newRoom: notify: 0)
)
(repeat
(-= value 2)
(breakif (== (self at: (+ 1 value)) 32767))
)
)
(super nextRoom: &rest)
)
)

(instance beachWalkerScript of Script
(properties)

(method (changeState newState &tmp temp0)
(switch (= state newState)
(0
(= temp0
(switch (Random 2 3)
(2 aBikini3Lady)
(3 aBikini4Lady)
)
)
(beachWalkerPath value: -1)
(if (IsObject register)
(register dispose:)
)
(if (== temp0 register)
(self init:)
else
((= register temp0) init: setMotion: beachWalkerPath self)
)
)
(1
(self init:)
)
)
)
)

So the CloseUp is how it shows the portrait of the bikinilady when looking at her.
The BikiniLadies instances seem more or less clear but I can't see how to get them appearing on screen. Everything compiles fine on my script.
Ive added the RegionPath script #809 also to my script folder. I'm not sure if the SC template has a build in one?
The Beachwalker script is more or less clear.

Here is my final roomscript including the Iceman code:

Code: [Select]
;;; Sierra Script 1.0 - (do not remove this comment)
;**
;** Logics for room 027 - Beach 1
;**
;** Leisure Suit Larry 4 - Never say Nontoonyt (AKA The Missing Floppies)
;**        Copyright 2024
;** by Robbo
;**
;** Last Update: March, 27th, 2024
;**
(script# 28)
(include sci.sh)
(include game.sh)
(use Controls)
(use Cycle)
(use Door)
(use Extra)
(use Feature)
(use FileIO)
(use Follow)
(use Game)
(use Gauge)
(use InitRooms)
(use Inv)
(use Rev)
(use Jump)
(use Main)
(use MenuBar)
(use Obj)
(use RegionPath)
(use DPath)
(use Avoid)

(public
rm028 0
)

(local
local0
[local1 113] = [32767 7 273 117 104 132 48 235 32767 5 72 104 135 104 325 184 32767 4 76 95 128 103 325 178 32767 3 -5 90 325 100 32767 2 -5 100 180 160 325 185 32767 12 -5 170 175 156 325 128 32767 13 -5 128 325 106 32767 24 -5 116 184 111 155 72 -5 130 32767 13 325 106 -5 128 32767 12 325 128 175 156 -5 170 32767 2 325 150 -5 100 32767 3 325 100 -5 90 32767 4 325 178 128 103 76 95 32767 5 325 184 135 104 72 104 32767 7 48 235 104 132 273 117 -32768]
)

(procedure (IsOffScreen theObj)
(return
(not (and (< 0 (theObj x:) 320) (< 0 (- (theObj y:) (theObj z:)) 200)))
)
)

(instance rm028 of Rm
(properties
picture 028
north 0
east 0
south 0
west 029
)

(method (init)
(closeUpView init:)
(if (not script)
(self setScript: beachWalkerScript)
)
(if (IsObject (script register:))
((script register:) init: setMotion: beachWalkerPath)
)


(super init:)
(gAddToPics ;This adds views to the background in a much nicer way :)
add: aUmbrella
add: aUmbrella2
add: aFatGuy
add: aLegs
add: aPalm
doit:
)
(self setScript: RoomScript)
(switch gPreviousRoomNumber
)
(cond
((== gPreviousRoomNumber 026) (gEgo posn: 250 63 loop: 0)
)
((== gPreviousRoomNumber 027) (gEgo posn: 239 67 loop: 0)
)
((== gPreviousRoomNumber 029) (gEgo posn: 9 77 loop: 0)
)
(else
(gEgo posn: 150 100 loop: 1)
)
)
(SetUpEgo)
(gEgo init:)
(if (> gMachineSpeed pc8088)
(aWave init:)
(aWave2 init:)
(aBikini3Lady init:)
(aBikini4Lady init:)


)
)
)

(instance RoomScript of Script
(properties)

(method (doit)
(super doit:)
; code executed each game cycle
(if (& ctlBLUE (gEgo onControl:))
(gRoom newRoom: 027)
)
)

(method (handleEvent pEvent)
(super handleEvent: pEvent)
; handle Said's, etc...
)

(method (notify param1 param2 &tmp temp0)
(switch param1
(0
(= temp0 0)
(while (< temp0 (- argc 2))
((Clone param2)
x: [param2 (++ temp0)]
y: [param2 (++ temp0)]
loop: [param2 (++ temp0)]
init:
)
)
)
(1
(beachWalkerScript register:)
(return)
)
)
)

(method (changeState newState)
(= state newState)
(switch state
(0 ; Handle state changes
)
)
)
)

(instance aFatGuy of View ;Kenowama
(properties
view 028
loop 1
cel 0
x 77
y 142
priority 11
signal ignAct ;16384
)
)

(instance aUmbrella of View ;Red umbrella with Kenowama under it.
(properties
view 028
loop 0
cel 0
x 55
y 153
priority 10
signal ignAct ;16384
)
)
(instance aUmbrella2 of View ;Blue umbrella with two pairs of legs bottom right
(properties
view 028
loop 2
cel 0
x 293
y 169
priority 12
signal ignAct ;16384
)
)
(instance aLegs of View ;Pair of legs under blue umbrella bottom right
(properties
view 028
loop 3
cel 0
x 275
y 157
priority 12
signal ignAct ;16384
)
)
(instance aPalm of View ;Palm tree right
(properties
view 028
loop 4
cel 0
x 285
y 131
priority 09
signal ignAct ;16384
)
)

(instance aWave of Prop ; left wave at bottom
(properties
view 28
loop 5
x 78
y 189
cycleSpeed 15
)

(method (init)
(super init:)
(self
setPri: 1
setScript:(if (> gMachineSpeed pcAT)aWaveScript) ;this stops wave script if PC is a IBM AT or slower.
stopUpd:
)
)
)

(instance aWave2 of Prop ;right wave at bottom
(properties
view 28
loop 6
x 238
y 189
cycleSpeed 15
)

(method (init)
(super init:)
(self
setPri: 1
setScript:(if (> gMachineSpeed pcAT)aWaveScript) ;this stops wave script if PC is a IBM AT or slower.
stopUpd:
)
)
)
(instance aWaveScript of Script ;Here the two wave views are merged together and played at the same time.
  (method (changeState newState)
    (switchto (= state newState)
      (
        (aWave stopUpd:)
        (aWave2 stopUpd:)
        ; Wait for 2 to 6 seconds...
        (= seconds (+ 1 (* (Random 0 3) 2)))
      )
      (
        ; Setting a cycler automatically restarts updating.
        (aWave setCycle: Fwd self)
        (aWave2 setCycle: Fwd self)
      )
      (
        (aWave setCycle: Rev self)
        (aWave2 setCycle: Rev self)
      )
      (
        ; Repeat.
        (self changeState: 0)
        ; A better way might be to (= state -1) (= cycles 1) but nyehh.
      )
    )
  )
)

(instance closeUpView of View
(properties
y 85
x 265
view 993
loop 4
)

(method (init)
(super init:)
(self hide: setPri: 15)
)

(method (show param1)
(self view: param1 setLoop: 4)
(super show:)
)
)

(instance aBikini3Lady of Act
(properties
view 993
)

(method (init)
(super init:)
(self
setAvoider: Avoid 1
ignoreHorizon:
setCycle: Walk
observeControl: 2048
)
)

(method (handleEvent event)
(cond
((super handleEvent: event))
((IsOffScreen self))
((Said 'look[<at][/woman,brunette,native[<native,brunette]]')
(closeUpView show: view)
(Animate (gCast elements:) 0)
(Print { Whew, what a hot lookin' native girl!})
(closeUpView hide:)
(event claimed: 1)
)
)
)
)

(instance aBikini4Lady of Act
(properties
view 994
)

(method (init)
(super init:)
(self
setAvoider: Avoid 1
ignoreHorizon:
setCycle: Walk
observeControl: 2048
)
)

(method (handleEvent event)
(cond
((super handleEvent: event))
((IsOffScreen self))
((Said 'look[<at][/blond,woman[<blond]]')
(closeUpView show: view)
(Animate (gCast elements:) 0)
(Print {This blonde is definitely a babe.})
(closeUpView hide:)
(event claimed: 1)
)
((Said 'whistle')
(Print {She ignores your ancient ploy.})
)
((Said 'ask<out/woman')
(Print {She is out.})

)
;;; ((Said '[/bitch,cunt,boob,blond,woman[<blond]]>')
;;; (cond
;;; ((Said 'ask//date')
;;; (localproc_0)
;;; )
((Said 'ask//time')
(Print {Time has no meaning in Tahiti.})
)
;;; ((Said 'chase')
;;; (Print 301 18) ; "You can do that."
;;; )
((Said 'talk')
(Print {She's trying to ignore you.})
)
;;; ((Said 'kiss,suck,fuck,touch')
;;; (if (> (gEgo distanceTo: self) 50)
;;; (Print 301 20) ; "You'll have to get closer than this."
;;; else
;;; (QueScript self 353)
;;; )
)
)
)

(instance beachWalkerPath of RegionPath
(properties
value 29
endType 0
theRegion 028
)

(method (at param1)
(return [local1 param1])
)

(method (nextRoom)
(if
(and
(== (self at: (+ 2 value)) 3)
;(== gRoom newRoomNumber: 28) ; volleyRm
(gRoom newRoom: notify: 0)
)
(repeat
(-= value 2)
(breakif (== (self at: (+ 1 value)) 32767))
)
)
(super nextRoom: &rest)
)
)

(instance beachWalkerScript of Script
(properties)

(method (changeState newState &tmp temp0)
(switch (= state newState)
(0
(= temp0
(switch (Random 2 3)
(2 aBikini3Lady)
(3 aBikini4Lady)
)
)
(beachWalkerPath value: -1)
(if (IsObject register)
(register dispose:)
)
(if (== temp0 register)
(self init:)
else
((= register temp0) init: setMotion: beachWalkerPath self)
)
)
(1
(self init:)
)
)
)
)


8
SCI Development Tools / View size limits
« on: March 27, 2024, 06:08:16 PM »
Hi everyone,
What type of size restrictions / limits does a view have? I'm seeing some strange things happening. I have a 320x45 loop in my view that has 4 cels of animation. The total size of the view with other loops is: 50921 bytes. Its displayed like this. (See attachment)

If I cut cel into two and create another loop with the second half it works fine.

Regards,

9
SCI Development Tools / SCI0 picture size limits when importing from bmp
« on: February 22, 2024, 06:05:41 PM »
Hi guys,
I've been using Aseprite to draw my pictures as its a lot faster than using the built in drawing tools in SC. Size and disk space restrictions are posing to be a real challenge for my game.

Does anyone know the ins and outs of Phil's algorithm that converts BMP to vector? I've got two backgrounds that look visually very similar. One imports fine using 65120 bytes and the other is using 72228 bytes when imported. Too big for SCI0.  What things influence the size increase? Is it a certain colour? The dithering, or certain shapes? Here are my examples:

b-top-down.bmp imports using 65120 bytes and b-top-left.bmp import using 72228 bytes..

I add views to these basic background pictures to spice them up a little. Rocks, trees and other things...




10
SCI Development Tools / Add Set palette:0 to picture
« on: January 17, 2024, 01:49:58 PM »
Hi guys,
Is there a way to add to the vector timeline after the initial Start on a picture the commands Set Palette:0 Set Palette:1 Set Palette:2 Set Palette:3 ? Or is this only created when you create a new Picture?
I've got a picture I was editing and accidental deleted those commands from the timeline and don't have a backup.
Thanks,

11
Hi guys,
I've been creating my game pictures using Aseprite as its a lot easier to do the artwork than using the built in drawing tools in SciCompanion. I import my BMP pictures from Aseprite and they work perfectly. They are oblivious a lot larger, 50kb per picture compared to the vector drawn ones which are around 5kb-7kb.

Is there any way to import the priority and control screens also? As this would save me loads of time.


12
SCI Syntax Help / SCI0: right click to look like in QFG2
« on: December 26, 2023, 09:09:32 PM »
Hi guys,
Is it possible using the SCI0 template to use the right click mouse button on things to get a look description like what they did with QFG2? What code is involved? How do you link this to your handleEvents etc?
Thanks,

13
SCI Syntax Help / Display procedure
« on: October 26, 2023, 11:49:26 AM »
Hi all,
I'm messing around with a script to try and act like an Apple II screen. Text gets drawn slowly on screen. A flashing block cursor at the end awaiting prompt. User can enter a few basic keyboard commands to get different preset texts displayed onscreen. Maybe a menu system. Press 1 for X press 2 for z etc.

This might be a mission to code but has anyone done anything like this to get an idea of what I need to use code wise? I can't recall any of the Sierra games doing this? I might be wrong.
Thanks,




14
SCI Syntax Help / View instance Prop instance and limitations
« on: September 12, 2023, 09:49:14 AM »
Hi,

Just wondering if someone could shed some light on why when I define an instance of prop/view I get white control area appearing from that view. (see screenshot 1).  The palm tree displays a white line along the bottom. The Zodiacs display the rectangle box.

In order for these control lines/areas to not appear I need to use the signal ignAct/16384 syntax in the properties of the view or prop. Is this normal? Is this the best way to combat the white control lines/areas that appear? I then have to create the desired control lines in the picture as to not have ego walk through the view. Seems I lose the "natural" view control lines when doing this.

Code: [Select]
(instance aZodiac of View
(properties
view vRoom
loop lZodiac
x 215
y 164
priority 7
signal ignAct ;16384
)
)


Also what limitations does a view have? I've long views which seems to get corrupted on screen when they pass a certain length. IE they won't be displayed properly in game. They display fine when you click on the view icon in the picture edit screen. These are all views I have created in Aseprite and then imported into SC.

Is there a list showing all the limitations of pictures and other resources also? So I can understand what the limit is. I've run into picture limits when importing from Aseprite and I normally cut things up and turn some into view to get around this limit. But it would be good to know everything else.

Thanks,


15
SCI Development Tools / Running SCI0 on Atari ST
« on: August 25, 2023, 07:09:27 AM »
Hi guys,
I decided to test my game code on my Atari ST as a proof of concept. I copied all the executable files from the Atari version of LSL3 which uses the interpreter is version 1.002.026 ran the Atari ST version of the Sierra installer to make sure hardware was all detected and resource.cfg written. Game loads fine. Seems to load rooms etc. Crashes when I try and type something. Not sure if its because I'm using Brian's s hack for the User interface? (Something I need to change at a later stage). http://sciwiki.sierrahelp.com//index.php?title=SCI_Studio_Tutorial_2#User_Interface

Could this be causing the crash? Could it be the Atari ST interpreter version I'm using? I don't want to spend much time on this just curious as this is another massive rabbit hole to go down and now is not the time. There is also the Amiga also. I've not got one so I cant test it :)

Thanks,
Rob


Pages: [1] 2

SMF 2.0.19 | SMF © 2021, Simple Machines
Simple Audio Video Embedder

Page created in 0.049 seconds with 18 queries.