ID:1826996
 
Code:
mob/verb
Winsay()
set hidden=1
// if(Muted)
// src<<"You're muted!"
// return
if(SayUp)
SayUp=0
winset(src, null, {"
SayBoxChild.focus = "false";
SayBoxChild.is-visible = "false";
"}
)
if(src.Dialogue=="Say")
winset(usr,"SayBox","sayinput.command=\"!Say\"")
if(src.Dialogue=="Vsay")
winset(src,null,"SayBoxChild.command=.Village-Say")
if(src.Dialogue=="Debug")
winset(src,null,"SayBoxChild.command=")
winset(src, null, {"
mapchild.mapwindow.focus = "true";
"}
)
return
winset(usr, null, {"
SayBoxChild.focus = "true";
SayBoxChild.is-visible = "true";
"}
)
SayUp=1


Problem description:When Dialogue equals Say, the winset doesn't set the command on Input when I bring it up. Dunno why :/

One thing I can tell you is that the {" ... "} extended string format is probably not a good way to send winsets. For one thing, it won't actually work as you expect when it comes to special characters. Instead, use list2params() which will do exactly what you want.

winset(usr, "SayBoxChild", list2params("focus" = 1, "is-visible" = 1))

You can use 1 instead of true for true/false values; the skin knows the difference.

As far as the issue at hand, the ! prefix in input.command means "This is the default command" so it ought to appear on the line when you're in say mode--however you also should be including a space after it, and probably an escaped quote character.
At first I tried doing the list2params() but it didn't work; only got two errors--
Player_Verbs.dm:12:error: arglist: arglist() or named arguments cannot be used here
Player_Verbs.dm:12:error: : missing expression

Then I moved onto the input itself: I placed a space between !&Say and the problem still occurred. I also think I placed another \ after Say""
Oh shoot, I forgot to put the list() in there.

winset(usr, "SayBoxChild", list2params(list("focus" = 1, "is-visible" = 1)))
Yeah, that worked lol But still stuck on the input.

            if(src.Dialogue=="Say")
winset(usr,"SayBox","sayinput.command=\"! Say\"")

I think I set it up right.
You don't need a space after the !. You do need one after the verb itself, and you probably also want an open quote.

winset(usr,"SayBox","sayinput.command=\"!Say \\\"\"")

Assuming you do have an input control called SayBox.sayinput, this ought to work fine.

If you're still having trouble, I'd double-check your assumptions. Make sure the controls are where you think they are and the names are right.
It worked. Thanks Lummox.