diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-03-19 19:20:55 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-03-19 19:21:53 +0300 |
commit | 975e6d81790ae847b10f31dc65060d08ac51702b (patch) | |
tree | 153e0f092fb9e1587b5fd1b68045b1d77593f18c | |
parent | 2d945f268a10c710067cac8992840c15b06e6824 (diff) | |
download | serverdata-975e6d81790ae847b10f31dc65060d08ac51702b.tar.gz serverdata-975e6d81790ae847b10f31dc65060d08ac51702b.tar.bz2 serverdata-975e6d81790ae847b10f31dc65060d08ac51702b.tar.xz serverdata-975e6d81790ae847b10f31dc65060d08ac51702b.zip |
Add initial version of marriage script. Missing divorce and missing time checks.
-rw-r--r-- | npc/functions/marriage.txt | 234 | ||||
-rw-r--r-- | npc/scripts.conf | 1 | ||||
-rw-r--r-- | npc/test/_import.txt | 1 | ||||
-rw-r--r-- | npc/test/npcmarriage.txt | 17 |
4 files changed, 253 insertions, 0 deletions
diff --git a/npc/functions/marriage.txt b/npc/functions/marriage.txt new file mode 100644 index 00000000..673ce620 --- /dev/null +++ b/npc/functions/marriage.txt @@ -0,0 +1,234 @@ +// Evol functions. +// Author: +// 4144 +// Description: +// Functions for marriage + +// check is player is near marriage npc +// args: +// 0 - player name +// returns: +// true if player located near npc. +function script marriagecheckname { + .@name$ = getarg(0); + if (.@name$ == "") + { + // no other registrand + return false; + } + .@id = getcharid(0, .@name$); + .@accoundId = getcharid(3, .@name$); + if (isloggedin(.@accoundId, .@id) == false) + { + // registrant not logged in + return false; + } + getmapxy(.@mapname$, .@x, .@y, 0, .@name$); + if (.@mapname$ != strnpcinfo(4)) + { + // registrant on other map + return false; + } + if (distance(.@x, .@y, .x, .y) > .distance) + { + // registrand too far + return false; + } + return true; +} + +// return player name registered with same gender like attached player +function script getmarriageregistrant { + if (Sex) + { + .@name$ = getvariableofnpc(.maleName$, strnpcinfo(3)); + } + else + { + .@name$ = getvariableofnpc(.femaleName$, strnpcinfo(3)); + } + return .@name$; +} + +// return registered marriage partner name +function script getmarriagepartner { + if (Sex) + { + .@name$ = getvariableofnpc(.femaleName$, strnpcinfo(3)); + } + else + { + .@name$ = getvariableofnpc(.maleName$, strnpcinfo(3)); + } + if (marriagecheckname(.@name$)) + return .@name$; + return ""; +} + +// register attached player as partner for marriage +function script marriageregisterself { + if (Sex) + { + set getvariableofnpc(.maleName$, strnpcinfo(3)), strcharinfo(0); + set getvariableofnpc(.maleName_partner$, strnpcinfo(3)), ""; + } + else + { + set getvariableofnpc(.femaleName$, strnpcinfo(3)), strcharinfo(0); + set getvariableofnpc(.femaleName_partner$, strnpcinfo(3)), ""; + } + return; +} + +// return player name what was accepted by partner +function script getmarriagepartneraccepted { + if (Sex) + { + .@name$ = getvariableofnpc(.femaleName_partner$, strnpcinfo(3)); + } + else + { + .@name$ = getvariableofnpc(.maleName_partner$, strnpcinfo(3)); + } + return .@name$; +} + +// return true if partner present near and partner accepted you +function script ismarriagepartneraccepted { + .@partner$ = getmarriagepartner(); + if (.@partner$ == "") + return false; + .@name$ = getmarriagepartneraccepted(); + if (.@name$ == strcharinfo(0)) + return true; + return false; +} + +// accept for attached player his/her partner +// args: +// 0 - partner name +function script marriageacceptpartner { + .@name$ = getarg(0); + if (Sex) + { + set getvariableofnpc(.maleName_partner$, strnpcinfo(3)), .@name$; + } + else + { + set getvariableofnpc(.femaleName_partner$, strnpcinfo(3)), .@name$; + } + return; +} + +function script askmarry { + speech l("Do you want to marry @@?", getarg(0)); + if (select(l("Yes"), l("No")) == 1) + return true; + return false; +} + +// start marriage registration process +function script marriageregister { + .@partner$ = getmarriagepartner(); + if (.@partner$ == "") + { // no partner registered + speech l("Ok I add your name... @@...", strcharinfo(0)); + marriageregisterself(); + next; + speech l("Now wait your partner, and talk with me again"); + npctalk l("@@ registered for marriage. Waiting for partner...", strcharinfo(0)); + close; + } + else + { // partner already registered + if (askmarry(.@partner$) == true) + { + marriageregisterself(); + marriageacceptpartner(.@partner$); + npctalk l("@@ registered for marriage and accepted partner @@!", strcharinfo(0), .@partner$); + npctalk l("Waiting for @@...", .@partner$); + close; + } + else + { + close; + } + } + return; +} + +// remove all marriage registations +function script marriageclear { + set getvariableofnpc(.maleName$, strnpcinfo(3)), ""; + set getvariableofnpc(.femaleName$, strnpcinfo(3)), ""; + set getvariableofnpc(.maleName_partner$, strnpcinfo(3)), ""; + set getvariableofnpc(.femaleName_partner$, strnpcinfo(3)), ""; + return; +} + +// do actual marriage +function script domarriage { + .@name$ = strcharinfo(0); + .@partner$ = getarg(0); + if (marriage(.@partner$)) + { + speech l("You was married to @@!", .@partner$); + npctalk l("@@ and @@ just married!", .@name$, .@partner$); + } + else + { + npctalk l("Marriage failed."); + } + marriageclear(); + return; +} + +// main function for marriage +function script marriagemain { + if (Sex > 1) + { + speech l("Sorry i can't help you. Go away!"); + close; + } + + .@registrant$ = getmarriageregistrant(); + if (marriagecheckname(.@registrant$) == true) + { + if (.@registrant$ == strcharinfo(0)) + { + if (ismarriagepartneraccepted()) + { + .@partner$ = getmarriagepartner(); + if (marriagecheckname(.@partner$) == false) + { + speech l("Partner not ready."); + } + else if (askmarry(.@partner$) == true) + { + domarriage(.@partner$); + } + } + else + { + speech l("You already registered. Wait for your partner."); + } + } + else + { + speech l("Sorry I busy with other registrations"), + l("Come after some time."); + } + close; + } + + speech l("What a can do for you?"); + switch (select(l("I want register for marriage"), + l("Nothing"))) + { + case 1: + marriageregister; + case 2: + break; + } + return; +} diff --git a/npc/scripts.conf b/npc/scripts.conf index de6db6b3..cee9409d 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -15,6 +15,7 @@ npc: npc/functions/goodbye.txt npc: npc/functions/hammocks.txt npc: npc/functions/harbours.txt npc: npc/functions/inventoryplace.txt +npc: npc/functions/marriage.txt npc: npc/functions/npcmove.txt npc: npc/functions/masks.txt npc: npc/functions/openbook.txt diff --git a/npc/test/_import.txt b/npc/test/_import.txt index 54f17ef6..e51002ba 100644 --- a/npc/test/_import.txt +++ b/npc/test/_import.txt @@ -7,5 +7,6 @@ npc: npc/test/npc2.txt npc: npc/test/npc3.txt npc: npc/test/npc4.txt npc: npc/test/npc5.txt +npc: npc/test/npcmarriage.txt npc: npc/test/test1.txt npc: npc/test/test2.txt diff --git a/npc/test/npcmarriage.txt b/npc/test/npcmarriage.txt new file mode 100644 index 00000000..32b0751b --- /dev/null +++ b/npc/test/npcmarriage.txt @@ -0,0 +1,17 @@ +// Evol scripts. +// Authors: +// 4144 +// Description: +// npc marriage + +test,25,14,0 script marriage1 NPC_PLAYER,{ + // debug + mes .maleName$; + mes .femaleName$; + + marriagemain(); + close; +OnInit: + .sex = G_MALE; + .distance = 3; +} |