gdzie x to wpisujemy numer piętra.
Jest możliwość ustawienia czasu przejazdu przez jedno piętro, oraz po dojechaniu mamy małą szansę na wystąpienie któregoś z dwóch losowych eventów ;]
Aby nie określać konkretnego piętra, tylko o ile chcemy zmienić nasze położenie, piszemy np. winda "+2 - pojedziemy o 2 piętra wyżej.
winda "-3 i jedziemy o trzy piętra w dół.
W talkactions.xml :
Kod:
<talkaction words="winda" script="winda.lua" />
Kod:
local config = {
storage = 16133, -- storagevalue gdzie przechowujemy informacje o tym czy gracz jedzie windą
czasnapietro = 1000, -- ile zajmuje przejechanie jednego piętra, 1000 = 1 sekunda
pozycjawindy = {x=542,y=521}, -- nie trzeba tłumaczyć :P
z = {min=2,max=7} -- trzeba sprawdzić pozycję najwyższego i najniższego piętra, i wpisać tu pozycje Z
}
function getPlayerFloor(player)
if isPlayer(player) then
return (math.abs(getPlayerPosition(player).z-config.z.max))
else
print("Script error: No player found.")
return -1
end
end
function onSay(cid, words, param)
local x = getPlayerPosition(cid)
if x.x ~= config.pozycjawindy.x or x.y ~= config.pozycjawindy.y or x.z > config.z.max or x.z < config.z.min then
doPlayerSendCancel(cid,"Nie jestes w windzie")
return 0
end
local number = tonumber(param)
if number == nil then
doPlayerSendCancel(cid,"Podaj numer pietra.")
return 0
end
if number == math.abs(x.z-config.z.max) then
doPlayerSendCancel(cid,"Juz jestes na tym pietrze!")
return 0
end
if getPlayerStorageValue(cid,config.storage) == 3 then
doPlayerSendCancel(cid,"Juz jedziesz! Nie baw sie winda.")
return 0
end
local pietro = number
local up = string.find(param, "+", 1)
local down = string.find(param, "-", 1)
if down ~= nil then
pietro = getPlayerFloor(cid)-string.gsub(param, "-", "")
if pietro < 0 then
doPlayerSendCancel(cid,"Tak nisko nie pojedziesz!")
return 0
end
elseif up ~= nil then
pietro = getPlayerFloor(cid)+string.gsub(param, "+", "")
end
if math.abs(pietro) <= (config.z.max-config.z.min) then
local params = {cid=cid, pietro=pietro}
setPlayerStorageValue(cid,config.storage,1)
addEvent(jedziem,config.czasnapietro,params)
else
doPlayerSendCancel(cid,"Budynek nie posiada tylu pieter!")
end
end
function jedziem(params)
local cid = params.cid
local pos = getPlayerPosition(cid)
local pietro = params.pietro
if pos.z == math.abs(pietro-config.z.max) then
local msgkoniec = "Parter"
if getPlayerFloor(cid) > 0 then
msgkoniec = ""..getPlayerFloor(cid)..". pietro"
end
doPlayerSendTextMessage(cid, 19, ""..msgkoniec..". Dotarles do celu.")
setPlayerStorageValue(cid,config.storage,0)
local rand = math.random(10)
if rand == 1 then
local HP = math.random(50)
doCreatureAddHealth(cid,-HP)
doSendMagicEffect(getPlayerPosition(cid),9)
doPlayerSendTextMessage(cid, 19, "Straciles "..HP.." HP w wyniku przeciazenia zwiazanego z zatrzymaniem windy.")
elseif rand == 2 then
doSendMagicEffect(getPlayerPosition(cid),2)
doPlayerSendTextMessage(cid, 19, "Pod warstwa brudu na podlodze windy zauwazyles kilka zlotych monet.")
doPlayerAddItem(cid,2148,math.random(9))
end
return 1
end
local h = 1
if pietro > math.abs(pos.z-config.z.max) then
h = -1
end
local gdzie = math.abs(pos.z-config.z.max)-h
if gdzie == 0 then
gdzie = "parterze"
else
gdzie = ""..gdzie..". pietrze"
end
doTeleportThing(cid,{x=pos.x,y=pos.y,z=pos.z+h})
doPlayerSendCancel(cid,"Jestes na "..gdzie..".")
addEvent(jedziem,config.czasnapietro,params)
end
Zakładki