-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_woe.lua
More file actions
259 lines (227 loc) · 6.41 KB
/
Copy path_woe.lua
File metadata and controls
259 lines (227 loc) · 6.41 KB
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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
dofile("./var.woe")
local config = woe_config
fileStore = true
infoFile = 'tmp.woe'
infoLua = {}
Woe = {}
Woe.__index = Woe
function Woe.setup()
db.query("DROP TABLE IF EXISTS `woe`;")
db.query("CREATE TABLE `woe` (`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,`started` INT( 11 ) NOT NULL ,`guild` INT( 11 ) NOT NULL ,`breaker` INT( 11 ) NOT NULL ,`time` INT( 11 ) NOT NULL ,PRIMARY KEY ( `id` ) ,UNIQUE (`id`)) ENGINE = MYISAM")
doBroadcastMessage("DB Added [...]", config.bcType)
if fileStore then
local newFile = io.open(infoFile, "w")
for _, i in ipairs({'started', 'guild', 'breaker', 'time'}) do
newFile:write(i .. ' = 0 ;end;\n')
end
newFile:close()
else
db.query("DROP TABLE IF EXISTS `tmpwoe`;")
db.query("CREATE TABLE `tmpwoe` (`started` INT( 11 ) NOT NULL ,`guild` INT( 11 ) NOT NULL ,`breaker` INT( 111 ) NOT NULL ,`time` INT( 1 ) NOT NULL) ENGINE = MYISAM ;")
db.query("ALTER TABLE `tmpwoe` ADD `indexer` INT NOT NULL ")
db.query("INSERT INTO `tmpwoe` (`started` ,`guild` ,`breaker` ,`time`, `indexer`)VALUES ('0', '0', '0', '0', '1');")
end
end
function Woe.getInfo()
if fileStore then
local open = io.open(infoFile, "r")
if open then
for i in io.lines(infoFile) do
for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
if (i:find(k)) then
n = i:match(k .. '.*')
infoLua[v] = tonumber(n:sub(n:find('=') + 2, n:find(';end;') - 2))
end
end
end
open:close()
end
else
for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
local tmp = db.getResult("SELECT " .. k .. " FROM `tmpwoe` WHERE `indexer` = '1';")
infoLua[v] = tmp:getDataInt(k)
tmp:free()
end
end
end
function Woe.updateInfo(tab)
if fileStore then
local open = io.open(infoFile, "w")
if open then
for k, i in ipairs({'started', 'guild', 'breaker', 'time'}) do
open:write(i .. ' = ' .. tab[k] .. ' ;end;\n')
end
open:close()
end
else
for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
db.query("UPDATE `tmpwoe` SET " .. k .. " = " .. tab[v] .. " WHERE `indexer` = 1;")
end
end
end
function Woe.save()
Woe.getInfo()
db.query("INSERT INTO `woe` (`started`, `guild`, `breaker`, `time`) VALUES (" .. infoLua[1] .. ", " .. infoLua[2] .. ", " .. infoLua[3] .. ", " .. infoLua[4] .. ");")
end
function Woe.getGuildName(id)
local res = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. ";")
if (res:getID() ~= -1) then
ret = res:getDataString('name')
res:free()
end
return ret
end
function Woe.breakerName()
Woe.getInfo()
return infoLua[3] ~= 0 and getPlayerNameByGUID(infoLua[3]) or 'None'
end
function Woe.guildName()
Woe.getInfo()
return infoLua[2] ~= 0 and Woe.getGuildName(infoLua[2]) or 'Nones'
end
function Woe.startTime()
Woe.getInfo()
return os.date("%d %B %Y %X ", infoLua[1])
end
function Woe.breakTime()
Woe.getInfo()
return os.date("%d %B %Y %X ", infoLua[4])
end
function Woe.timeToEnd()
Woe.getInfo()
local myTable = {}
for k, i in ipairs({"%M", "%S"}) do
myTable[k] = os.date(i, os.difftime(os.time(), infoLua[1]))
end
return {mins = ((config.timeToEnd - 1) - myTable[1]), secs = (60 - myTable[2])}
end
function Woe.moveBack(cid, fromPosition, text)
doTeleportThing(cid, fromPosition, TRUE)
doPlayerSendCancel(cid, text)
end
function Woe.getGuildMembers(id)
local members = {}
for _, i in ipairs(getPlayersOnline()) do
if id == getPlayerGuildId(i) then
table.insert(members, i)
end
end
return members
end
function Woe.deco(text)
for _, i in ipairs(Castle.decoraciones) do
doItemSetAttribute(i, "description", text)
end
end
function Woe.removePortals()
for _, i in ipairs(Castle.PrePortalsPos) do
if (getThingFromPos(i).itemid > 0) then
doRemoveItem(getThingFromPos(i).uid)
end
end
end
function Woe.removePre()
for _, i in ipairs(Castle.PreEmpes) do
if (isCreature(getThingFromPos(i).uid) == true) then
doRemoveCreature(getThingFromPos(i).uid)
end
end
end
function Woe.checkPre()
local Count = 0
for _, i in ipairs(Castle.PreEmpes) do
if (isCreature(getThingFromPos(i).uid) == false) then
Count = Count + 1
end
end
return (Count == #Castle.PreEmpes)
end
function Woe.isTime()
return (getGlobalStorageValue(stor.WoeTime) == 1)
end
function Woe.isStarted()
return (getGlobalStorageValue(stor.Started) == 1)
end
function Woe.isRegistered(cid)
return (getPlayerStorageValue(cid, stor.register) == 1)
end
function Woe.isInCastle(cid)
local myPos = getCreaturePosition(cid)
if (myPos.x >= Castle.salas.a.fromx and myPos.x <= Castle.salas.a.tox) then
if (myPos.y >= Castle.salas.a.fromy and myPos.y <= Castle.salas.a.toy) then
if isInArray({Castle.salas.a.z, Castle.salas.b.z, Castle.salas.c.z}, myPos.z) then
return true
end
end
end
return false
end
function Woe.expulsar(guild, fromx, tox, fromy, toy, z, outpos)
for _x = fromx, tox do
for _y = fromy, toy do
local player = getThingFromPos({x = _x, y = _y, z = z, stackpos = 253}).uid
if (isPlayer(player) == true) then
if (getPlayerGuildId(player) ~= guild) then
doTeleportThing(player, outpos, false)
end
end
end
end
end
-- extras
function doSetItemActionId(uid, action)
doItemSetAttribute(uid, "aid", action)
end
function exhaust(cid, storevalue, exhausttime)
-- Exhaustion function by Alreth, v1.1 2006-06-24 01:31
-- Returns 1 if not exhausted and 0 if exhausted
newExhaust = os.time()
oldExhaust = getPlayerStorageValue(cid, storevalue)
if (oldExhaust == nil or oldExhaust < 0) then
oldExhaust = 0
end
if (exhausttime == nil or exhausttime < 0) then
exhausttime = 1
end
diffTime = os.difftime(newExhaust, oldExhaust)
if (diffTime >= exhausttime or diffTime < 0) then
setPlayerStorageValue(cid, storevalue, newExhaust)
return 1
else
return 0
end
end
--new
guard_pos =
{
{x = 636, y = 64, z = 6},
{x = 637, y = 64, z = 6},
{x = 638, y = 64, z = 6},
{x = 639, y = 64, z = 6},
{x = 612, y = 64, z = 6},
{x = 613, y = 64, z = 6},
{x = 614, y = 64, z = 6}
}
function Woe.check()
for storage = 24504, 24511 do
local pid = getGlobalStorageValue(storage)
if isCreature(pid) then
return false
end
end
return true
end
function Woe.summon()
for k, i in ipairs(guard_pos) do
local pid = doSummonCreature("guard", i)
setGlobalStorageValue(24503 + k, pid)
end
end
function Woe.remove()
for storage = 24504, 24511 do
local pid = getGlobalStorageValue(storage)
if isCreature(pid) then
doRemoveCreature(pid)
end
end
end