• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

doTransformItem on timer

Dartanio

New Member
Joined
Jan 1, 2010
Messages
100
Reaction score
0
Jak napisać funkcję "onTimer" bo już próbowałem na kilka sposobów i nie chce iść.
Tak mniej więcej to wygląda:
...
event = addEvent(onTimer, 1*60*1000)
...
function onTimer()
local leverpos = {x=33368, y=32763, z=14}
local lever = getThingfromPos(leverpos)
doTransformItem(lever, 1945)

return 1
end

Próbowałem również tak:
function onTimer()
doTransformItem(item.uid, 1945)

return 1
end

reszta skryptu idzie jak należy ale po minucie dzwignia nie chce się przestawić.
Błąd w konsoli:
luaDoTransformItem(). Item not found
 
event = addEvent(onTimer, 1*60*1000, lever)

function onTimer(lever)
 
[16/02/2010 12:54:21] data/actions/scripts/Tomb/Lever.lua:21: attempt to index global 'item' (a nil value)
[16/02/2010 12:54:21] stack traceback:
[16/02/2010 12:54:21] data/actions/scripts/Tomb/Lever.lua:21: in function <data/actions/scripts/Tomb/Lever.lua:18>

nie poszło
 
event = addEvent(onTimer, 1*60*1000,item)
function onTimer(item)
(Poprostu nie zna warunku item. Jak zaczynasz jakąkolwiek fukcje pamiętaj że ona nie ma żadnych warunków jak do niej nie przypiszesz. u mnie nie wiedziało co to znaczy cid.Jak się pomyliłem to sorki.

Nie napisałeś co chcesz z tym zrobić ani gdzie to wklejasz bo to jest mała różnica czy to wkleisz w skrypcie na dole czy w functions.


#koob
A bo ja wiem jak to mogę nazwać? Nie to localna ani tego typu. Dlatego powiedziałem odrazu że za pomyłkę przepraszam.
 
Last edited:
Code:
function onUse(cid, item, frompos, item2, topos)

	if item.itemid == 1945 then
	doTransformItem(item.uid, item.itemid+1)
	event = addEvent(onTimer, 1*60*1000,lever)
	doPlayerSendTextMessage(cid,25,"Bla bla.")
	
	elseif item.itemid == 1946 then
	doTransformItem(item.uid, item.itemid-1)
	stopEvent(event)

else
		doPlayerSendCancel(cid,"Sorry, not possible.")
	end
return 1
end

function onTimer(lever)
	local leverpos = {x=33368, y=32763, z=14}
	local lever = getThingfromPos(leverpos)
	[COLOR="Red"]doTransformItem(lever, 1945)[/COLOR]
	
	return 1
end

Robiłem też tak:

Code:
function onUse(cid, item, frompos, item2, topos)

	if item.itemid == 1945 then
	doTransformItem(item.uid, item.itemid+1)
	event = addEvent(onTimer, 1*60*1000,lever)
	doPlayerSendTextMessage(cid,25,"Bla bla.")
	
	elseif item.itemid == 1946 then
	doTransformItem(item.uid, item.itemid-1)
	stopEvent(event)

else
		doPlayerSendCancel(cid,"Sorry, not possible.")
	end
return 1
end

function onTimer(lever)
	[COLOR="Red"]doTransformItem(item.uid, 1945)[/COLOR]
	
	return 1
end


Jest to skrypt na dźwignie, którą po ruszeniu graczowi pokazuje się text (narazie nie wpisany) i za 1minute dzwignia przestawia się do początkowej pozycji.
Cały skrypt działa oprócz "doTransformItem" w evencie. (Błąd w konsoli wywala po 1 minucie)
 
lever = nil
onTimer->item = nil

Mam nadzieje ze pomoglem!
 
Code:
local position = { x = 33368, y = 32763, z = 14 }
local event = 0

local function onTimer()
	local item = getTileItemById(position, 1946)
	
	if(item.uid > 0)then
		doTransformItem(item.uid, item.itemid - 1)
		stopEvent(event)
		event = 0
	end
	
	return true
end

function onUse(cid, item, frompos, item2, topos)
	if(item.itemid == 1945)then
		doTransformItem(item.uid, item.itemid + 1)
		event = addEvent(onTimer, 1 * 60 * 1000)
		doPlayerSendTextMessage(cid,25,"Bla bla.")
	elseif(item.itemid == 1946)then
		doTransformItem(item.uid, item.itemid - 1)
		stopEvent(event)
		event = 0
	else
		doPlayerSendCancel(cid, "Sorry, not possible.")
	end

	return true
end

zobacz ;\
 
Namaneth dźwignia się przestawia ale wywala serwer. ;|

Edit##
Usunąłem:
stopEvent(event)
event = 0

i działa bez zarzutu. Dzięki Namaneth rep+

ps. istnieje funkcja która pobiera ID itemu poprzez uniqueid ?
 
Last edited:
Back
Top