Date: 2018/02/12 21:06:27 UTC-08:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#----------#
#ENPC TOOL | For giving and managing NPCS unique dialogue id's
#----------# +region support +delete protected +easy export
shelp_enpc:
type: yaml data
author: BloodEko
name: NPC ID Tool
usage: /enpc syntax
version: 0.1
link: none
#server enpcCounter.173 1
#npc enpc 173_1
#server enpc.173.1 n@npc
#- run newENPC def:<n@npc>|173
newENPC:
type: task
speed: 0t
script:
- flag server enpcCounter.<def[2]>:++
- define ID <server.flag[enpcCounter.<def[2]>].as_int>
- flag <def[1]> enpc:<def[2]>_<def[ID]>
- flag server enpc.<def[2]>.<def[ID]>:<def[1]>
#- run remENPC def:<n@npc>
remENPC:
type: task
speed: 0t
script:
- flag server enpc.<def[1].flag[enpc].before[_]>.<def[1].flag[enpc].after[_]>:!
- flag <def[1]> enpc:!
# TODO: testen
# TODO: import/export funktion ?
# initENPC
dev_enpc:
type: world
enpc_false_syntax:
- narrate "---[/ENPC syntax]---"
- narrate " create [name] (assignment) | resetOwn (t) | count | id (t)"
- narrate " list | overview | unbind (t) | tp [id] | setCounter [id]"
- narrate " del (t) | bind (t) | cleanup "
events:
#pl flag: erpg_tag
on enpc command:
- determine passively fulfilled
- if !<player.is_op> { - narrate no_permission - queue clear }
- choose <context.args.size>:
- case 1:
- choose <context.args.get[1]>:
- case bind:
- define target <player.target||x>
- inject locally checkTargetNotNpc
- inject locally checkTargetHasID
- run newENPC def:<proc[erpg_tag]>|<def[target]>
- narrate "<&2>Set the ID for <&6><def[target].name> <&2>to <&6><def[flagname]>"
- case id:
- inject locally checkTargetNotNpc
- narrate "<&2>ID <&6><player.target.flag[enpc]||<&4>unknown>"
- case count:
- define region <proc[erpg_tag]>
- narrate "<&2>The next ENPC in <&6><def[region]> <&2>will be <&6><server.flag[enpcCounter.<def[region]>].add_int[1]>"
- case resetOwn:
- define target <player.target||x>
- inject locally checkTargetHasNotID
- narrate "<&2>Resetted your playerdata: <&6><def[target].flag[enpc]>"
- flag player <def[target].flag[enpc]>:!
- case list:
- define region <proc[erpg_tag]>
- define items li@
- foreach <server.list_flag_keys[enpc.<def[region]>]> {
- define items <def[items].include[<def[value]>[<server.flag[enpc.<def[region]>.<def[value]>].as_npc.name>]]>
}
- narrate "---[ENPC list: <def[region]>]---"
- narrate "<def[items].separated_by[, ]>"
- case overview:
- narrate "---[ENPC overview]---"
- foreach <server.list_flag_keys[enpc]> {
- narrate "<def[value]>: <server.list_flag_keys[enpc.<def[value]>].size>"
}
- case cleanup:
- narrate "---[ENPC cleanup...]---"
- inject locally cleanupAll
- narrate "ENPC cleanup done!"
- case unbind:
- define target <player.target||x>
- inject locally checkTargetNotNpc
- inject locally checkTargetHasNotID
- narrate "<&2>Unbinded <&6><def[target].name> <&2>[<def[target].flag[enpc]>]"
- run remENPC def:<def[target]>
- case del:
- wait 1t
- define target <player.target||x>
- inject locally checkTargetNotNpc
- inject locally checkTargetHasNotID
- narrate "<&2>Unbinded & deleted <&6><def[target].name> <&2>[<def[target].flag[enpc]>]"
- run remENPC def:<def[target]>
- remove <def[target]>
- default:
- inject locally enpc_false_syntax
- case 2:
- choose <context.args.get[1]>:
- case setCounter:
- define val <context.args.get[2]>
- if <def[val]> matches number {
- define region <proc[erpg_tag]>
- flag server enpcCounter.<def[region]>:<def[val].sub_int[1]>
- narrate "<&2>Set next ENPC <&2>to: <&6><def[region]>_<def[val]>"
} else { - inject locally enpc_false_syntax }
- case create:
- create player <context.args.get[2]> <player.location> save:npc
- run newENPC def:<entry[npc].created_npc>|<proc[erpg_tag]>
- narrate "<&2>Created <&6><context.args.get[2]> <&2>[<entry[npc].created_npc.flag[enpc]>]"
- case tp:
- define ID <context.args.get[2]>
- define region <proc[erpg_tag]>
- if <def[ID]> matches number {
- if <server.has_flag[enpc.<def[region]>.<def[ID]>]> {
- teleport <player> <server.flag[enpc.<def[region]>.<def[ID]>].as_npc.location>
} else {
- narrate "<&4>ERROR npc with this ID not found!"
}
} else { - inject locally enpc_false_syntax }
- default:
- inject locally enpc_false_syntax
- case 3:
- choose <context.args.get[1]>:
- case create:
- define script <el@val[<proc[erpg_tag]>_<context.args.get[3]>_as].as_script||x>
- if <def[script]> == x {
- narrate "<&4>ERROR script <&6><def[script]> <&4>not found."
- queue clear
}
- create player <context.args.get[2]> <player.location> save:npc
- assignment set script:<def[script]> npc:<entry[npc].created_npc>
- run newENPC def:<entry[npc].created_npc>|<proc[erpg_tag]>
- narrate "<&2>Created & assigned <&6><context.args.get[2]> <&2>[<entry[npc].created_npc.flag[enpc]>]"
- default:
- inject locally enpc_false_syntax
- default:
- inject locally enpc_false_syntax
cleanupAll:
- foreach <server.list_flag_keys[enpc]> {
- define r <def[value]>
- foreach <server.list_flag_keys[enpc.<def[value]>]> {
- if <server.flag[enpc.<def[r]>.<def[value]>].as_npc||x> == x {
- flag server enpc.<def[r]>.<def[value]>:!
- narrate "-remove enpc.<def[r]>.<def[value]>"
}
- wait 1t
}
}
checkTargetHasNotID:
- if !<def[target].has_flag[enpc]> {
- narrate "<&4>ERROR Target has is no enpc!"
- queue clear
}
checkTargetHasID:
- if <def[target].has_flag[enpc]> {
- narrate "<&4>ERROR Target has already the ID <&6><def[target].flag[enpc]||x>"
- queue clear
}
checkTargetNotNpc:
- if <def[target]> !matches npc {
- narrate "<&4>ERROR Target is not an npc!"
- queue clear
}