I think dialogues could be done server side so the client only gets the message (what the npc says) and options (what you can say as a reply) for any given dialogue. When they choose one option they get the next.
Could be done like so:
Code :
foo = new Dialog("dialog_file.xml"); OnPlayerUse(player,object) { if (object.type == MyOwnGeckObjectTypeThatIsAComputerOrSomething) player.dialog = foo; }
Having a dialogue in a file would make scripting more difficult so the dialogs could be hard-coded too which would give you much more control over what happens (dialogue exits with a timer or whatever you want)
I've made a dialogue system like this for my own game that uses xml files and the scripting is done with lua.
Edit: Removed cdata from scripts since it derped out and came out like this <=!=C=D=A=T=A=[Code :
<?xml version="1.0" encoding="utf-8"?> <dialogue name="Some healer guy"> <segment name="default"> <script> if (player.health < player.maxHealth) then dialog.addOption("heal","Heal me please!")) end </script> <message>...</message> <option goto="exit">Nevermind..</option> </segment> <segment name="heal"> <script> player.health = player.maxHealth </script> <message>There you go. Good as new!</message> <option goto="exit">Thanks!</option> </segment> </dialogue>
There's also a <forward> element that you have in place of options which will append the message to the beginning of what it forwards to.
This would print out "Hello world"Code :
<segment name="foo"> <message>Hello </message> <forward>bar</forward> </segment> <segment name="bar"> <message>world</message> <option goto="exit">Ok</option> </segment>