Skip to content

Help Requested: Vondo's "kickout" isn't working

karnagekarnage Member Posts: 92
It's defaulting to the, I think, "mplayer" script: "It's been an honor adventuring with you" or something like that instead of "You are now kicking me out."

------
BEGIN J#VondoP

IF ~Global("VondoJoined","LOCALS",1)~ THEN BEGIN KickOut
SAY ~You are now kicking me out.~
IF ~~ THEN REPLY ~No! Forgive my mispoken words. We want you to stay in the party.~ DO ~JoinParty()~ EXIT
IF ~~ THEN REPLY ~I do not need you in the party right now.~ DO ~SetGlobal("VondoJoined","LOCALS",0)~ EXIT
END

IF ~Global("VondoJoined","LOCALS",0)~ THEN BEGIN Rejoin
SAY ~You want me to rejoin?~
IF ~~ THEN REPLY ~That's right Vondo, get back in formation.~ DO ~SetGlobal("VondoJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~That's right, I don't want you in the party.~ EXIT
END

-------

Also, it appears that Vondo will just disappear from the game at kickout, but I'd rather him return to his point of origin to be re-recruited if desired.

Comments

  • karnagekarnage Member Posts: 92
    Here is the AR1000 script:

    IF
    Global("J#VondoExists","AR1000",0)
    THEN
    RESPONSE #100
    SetGlobal("J#VondoExists","AR1000",1)
    CreateCreature("Vondo",[1137.2046],3)
    // 1137.2046 are the x.y coordinates that will cause him to show up.
    //3 is the direction he's facing. It ranges from 0 (South), to 15, going clockwise.
    END

    -------
    If I just set "J#VONDOEXISTS" back to 0 at kickout, that would respawn Vondo, I am sure; but, would it not respawn Vondo in his original condition without his acquired XP, skills, equipment etc. he gained while traveling with the group to this point?
  • prophet1prophet1 Member Posts: 172
    edited December 2013
    Make sure the CRE file has Exportable flag = false, that's the most likely cause for the multiplayer kickout dialog.

    Also, it appears that Vondo will just disappear from the game at kickout, but I'd rather him return to his point of origin to be re-recruited if desired.
    ...
    If I just set "J#VONDOEXISTS" back to 0 at kickout, that would respawn Vondo, I am sure; but, would it not respawn Vondo in his original condition without his acquired XP, skills, equipment etc. he gained while traveling with the group to this point? He'll do whatever you script him to do in the dialog, the default MULTIG dialog has EscapeArea() action scripted, therefore the NPC is gone for good.

    Either MoveGlobal(), MoveBetweenAreas() or EscapeAreaMove() actions can be used to "transfer" the NPC into another area. Since you're doing this from the NPC's own dialog, EscapeAreaMove() is probably better in this case.
  • karnagekarnage Member Posts: 92
    Okay, will research EscapeAreaMove() and get back to ya. Thanks again, prophet!
  • karnagekarnage Member Posts: 92
    Also, I believe my ExportableFlag is blank; I'll doublecheck. It needs to be false, not blank; correct?
  • karnagekarnage Member Posts: 92
    Okay, the kickout is working. It had to do with neglecting a few lines to update .2da files.

    But, it's not working the way I want it to. He doesn't go anywhere or do anything; just stands there, LoL. I want him to go back to his point of origin.

    EscapeAreaMove() action was recommended to me, but I'm not fully competent in WeiDu syntax yet. I'm not sure when to start a new line, when to use a ~, etc. Is this the correct syntax, etc. to place in Vondo's .d file to cause him to move back where he came from?

    --------------------------------------------------------------
    IF ~Global("zkwVondJoined","LOCALS",1)~ THEN BEGIN KickOut
    SAY ~Do you no longer need my services?.~
    IF ~~ THEN REPLY ~Forgive my mispoken words. We want you to stay in the party.~ DO ~JoinParty()~ EXIT
    IF ~~ THEN REPLY ~I do not need you in the party right now.~ DO ~SetGlobal("zkwVondJoined","LOCALS",0)~ SAY ~Then I will return to the Government District near the Firecam estate. Perhaps we will meet again another day.~ EscapeAreaMove("zkwVond",[1137.2046],3) ~ EXIT
    END
    ---------------------------------------------------------------
  • prophet1prophet1 Member Posts: 172
    You can't have more than one SAY in a dialog state, at least not the way you're trying to do it. If you want NPC to respond to a REPLY picked by the player, you need to redirect the dialog to a new state with GOTO.
    IF ~Global("zkwVondJoined","LOCALS",1)~ THEN BEGIN KickOut SAY ~Do you no longer need my services?.~ IF ~~ THEN REPLY ~Forgive my mispoken words. We want you to stay in the party.~ DO ~JoinParty()~ EXIT IF ~~ THEN REPLY ~I do not need you in the party right now.~ DO ~SetGlobal("zkwVondJoined","LOCALS",0)~ GOTO KickOut2 END IF ~~ KickOut2 SAY ~Then I will return to the Government District near the Firecam estate. Perhaps we will meet again another day.~ IF ~~ THEN DO ~EscapeAreaMove("AR1000",[1137.2046],3) ~ EXIT END
    See existing in-game dialogs for more examples on the syntax.

    The 1st parameter in EscapeAreaMove should be the destination area name.
  • karnagekarnage Member Posts: 92
    Should:
    IF ~~ KickOut2
    Be:
    IF ~~ THEN BEGIN KickOut2
  • WispWisp Member Posts: 1,102
    karnage said:


    IF ~~ THEN BEGIN KickOut2

    That's legacy syntax. You can use it if you want, but it is no longer necessary. (Same goes for pretty much every other instance of "THEN".)
  • karnagekarnage Member Posts: 92
    Thanks!
  • karnagekarnage Member Posts: 92
    UPDATE:

    EscapeAreaMove(), kickout dialog, all works fine except one little thing: When I return to Vondo's spawn point to reacquire him, he "has nothing to say to you". I had to use Ctrl-Q to reacquire him.

    I gave Vondo gear to make sure the Vondo I picked up was the "old" Vondo, not a "new" Vondo. Kicked him out, and went to go pick him up. The Vondo showing up in the Gov't District was the "old" Vondo at first, but I revised at AR file (following the examples of another AR file). So after a couple more tweaks, I have the Vondo who has traveled with the group going back to his point of origin upon kickout.

    I looked at Keldorn's script and noticed another variable used in that script, KeldornMoved (or something similar) which the .dlg file checked. I need to do the same:

    * Need to set a variable for "zkwVondMove". Upon kickout, this "VondMove" needs to be set to 1.
    * Need to test for zkwVondMove in the .d file; this will create an entirely new conversation between char and Vondo.

    These obstacles are a little frustrating because it causes me to feel I'm not making progress, but really, I am; I have Vondo returning to his point of origin (like I wanted him to) on kickout. Just another unforseen step is all ...
  • karnagekarnage Member Posts: 92
    I am getting the hang of how this flow works, but not without a glitch.

    In this file, my errors started at Line 19 and I have made many corrections and looked up information on the web to fix them. The current error, however, eludes me.

    My debug file says:

    [zkwhugh\zkwhugh.d] PARSE ERROR at line 94 column 1-3
    Near Text: END
    syntax error


    Here are the last few blocks; I believe it's in block FinallyJoined, but I don't see it! I have tried commenting out text to narrow it down; it's supposed to be near text EXIT, END or JOINPARTY; and as I have JOINPARTY only 2x in the entire script, I believe the elusive error is somewhere here ----------

    // Refused Again
    IF ~~ THEN BEGIN RefusedAgain
    SAY ~Hookay. Then Hugh will stay right here until someone needs his sword!~
    IF ~~ THEN EXIT
    END

    // Finally Joined
    IF ~~ THEN BEGIN FinallyJoined
    SAY ~Hugh Smeed will not let you down! Your quest is my quest! That is my vow!~
    IF ~~ THEN DO ~SetGlobal("zkwHughJoined","LOCALS",1)~ JoinParty()~ EXIT
    END

    BEGIN zkwHughP

    IF ~Global("zkwHughJoined","LOCALS",1)~ THEN BEGIN KickOut
    SAY ~Is it time for me to leave?.~
    IF ~~ THEN REPLY ~Forgive my mispoken words. We want you to stay in the party.~ DO ~JoinParty()~ EXIT
    IF ~~ THEN REPLY ~I do not need you in the party right now.~ DO ~SetGlobal("zkwHughJoined","LOCALS",0)~ GOTO KickOut2
    END

    IF ~~ THEN BEGIN KickOut2
    SAY ~Hookay. Then I will go back to the slums.~
    IF ~~ THEN DO ~EscapeAreaMove("AR1000",1137,2046,3) ~ EXIT
    END
  • prophet1prophet1 Member Posts: 172
    This line:
    IF ~~ THEN DO ~SetGlobal("zkwHughJoined","LOCALS",1)~ JoinParty()~ EXIT
    should be
    IF ~~ THEN DO ~SetGlobal("zkwHughJoined","LOCALS",1) JoinParty()~ EXIT
  • karnagekarnage Member Posts: 92
    Those ~ are so confusing. It seemed to me that they were used to separate different commands, but here it is not used.

    Thank you for your help.
Sign In or Register to comment.