mbbsemu / MBBSEmu

The MajorBBS Emulation Project is an Open Source, Cross-Platform emulator for easily running The MajorBBS & Worldgroup Modules
https://www.mbbsemu.com
MIT License
132 stars 14 forks source link

[SFAYTZ] Yahtzee - Access does not allow you to play Yahtzee #263

Closed tuday2 closed 3 years ago

tuday2 commented 3 years ago

Module Information

Describe the bug Unable to play Yahtzee

To Reproduce Steps to reproduce the behavior:

  1. Enter module
  2. Select "P"lay Game
  3. Received error "Sorry, your current access does not allow you to play Yahtzee."

Expected behavior Ability to play Yahtzee

Screenshots

Original Error -- see below for troubleshooting

2020-11-06 21:55:50.6840 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Enqueue Previous MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:55:50.6901 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Set Current MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:55:50.6901 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setbtv Setting current Btrieve file to SFAYTZ.DAT (1000:A774)
2020-11-06 21:55:50.6901 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.clrprf Reset Output Buffer
2020-11-06 21:55:50.6901 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.cncchr Returned char: 1
2020-11-06 21:55:50.6901 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.haskey Returning 0 for Haskey(YAHTZEE)
2020-11-06 21:55:50.6901 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.prfmsg Added 198 bytes to the buffer from message number 8
2020-11-06 21:55:50.7021 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.haskey Returning 0 for Haskey(YAHTZEE)
2020-11-06 21:55:50.7021 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.outprf Sent 198 bytes to Channel 0
2020-11-06 21:55:52.4578 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Enqueue Previous MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:55:52.4578 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Set Current MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:55:52.4578 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setbtv Setting current Btrieve file to SFAYTZ.DAT (1000:A774)
2020-11-06 21:55:52.4578 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.clrprf Reset Output Buffer
2020-11-06 21:55:52.4578 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.cncchr Returned char: P
2020-11-06 21:55:52.4703 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.hasmkey Returning 0 for Haskey()
2020-11-06 21:55:52.4703 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.getmsg Retrieved option 75 from SFAYTZ.MCV (MCV Pointer: FFFF:0000), saved 78 bytes to 1001:0000
2020-11-06 21:55:52.4703 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.strlen Evaluated string length of 77 for string at 1000:0000:
Sorry, your current access does not allow you to play Yahtzee.

2020-11-06 21:55:52.4703 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.outprf Sent 77 bytes to Channel 0

Tested giving my account the "YAHTZEE" key, changed the first 2 Haskey calls to true, but then still failed

2020-11-06 21:59:17.9245 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Enqueue Previous MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:59:17.9245 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Set Current MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:59:17.9371 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setbtv Setting current Btrieve file to SFAYTZ.DAT (1000:A774)
2020-11-06 21:59:17.9371 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.clrprf Reset Output Buffer
2020-11-06 21:59:17.9371 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.cncchr Returned char: 1
2020-11-06 21:59:17.9371 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.haskey Returning 1 for Haskey(YAHTZEE)
2020-11-06 21:59:17.9530 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.prfmsg Added 231 bytes to the buffer from message number 9
2020-11-06 21:59:17.9530 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.haskey Returning 1 for Haskey(YAHTZEE)
2020-11-06 21:59:17.9530 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.outprf Sent 231 bytes to Channel 0
2020-11-06 21:59:18.9348 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Enqueue Previous MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:59:18.9374 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk Set Current MCV File: SFAYTZ.MCV (Pointer: FFFF:0000)
2020-11-06 21:59:18.9374 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.setbtv Setting current Btrieve file to SFAYTZ.DAT (1000:A774)
2020-11-06 21:59:18.9374 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.clrprf Reset Output Buffer
2020-11-06 21:59:18.9374 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.cncchr Returned char: P
2020-11-06 21:59:18.9374 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.hasmkey Returning 0 for Haskey()
2020-11-06 21:59:18.9531 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.getmsg Retrieved option 75 from SFAYTZ.MCV (MCV Pointer: FFFF:0000), saved 78 bytes to 1001:0000
2020-11-06 21:59:18.9531 Info MBBSEmu.HostProcess.ExportedModules.Majorbbs.strlen Evaluated string length of 77 for string at 1000:0000:
Sorry, your current access does not allow you to play Yahtzee.

2020-11-06 21:59:18.9531 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.outprf Sent 77 bytes to Channel 0

Software Information:

enusbaum commented 3 years ago

This appears to be an issue with haskey() and hasmkey(), where a blank value passed in will always return true. In Yahtzee's case, you have the option to set keys required to play, etc. If you leave these options blank in the MSG, it still calls hasmkey() but passes in the blank value.

I've modified both ordinals to return true if a blank lock is passed in.