• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Tworzenie i kasowanie kamienia?!

GarQet

Own3d!
Joined
Feb 10, 2009
Messages
1,381
Solutions
14
Reaction score
81
Witam, zadziwia mnie jedna rzecz, mianowicie:
Robię skrypt, klikamy na dźwignię, tworzy się kamień na danych współrzędnych, po czym gracz zostaje przeteleportowany i co sekundę wyświetlają się efekty (6 sec), po efektach kamień ten co się pojawił 6 sekund temu powinien zniknąć, lecz wyskakuje błąd.
Code:
Lua Script Error: [Action Interface]
in a timer event called from:
data/actions/scripts/script by GarQet/1215.lua:onUse

luaDoRemoveItem(). Item not found
Zastanawiam się co jest przyczyną, czy możliwe jest to że gdy skrypt stawia kamień to w tej samej "rundzie" nie może skasować tego czego przed chwilą postawił? Może nie "widzi" tego?
Oto skrypt:
Code:
function onUse(cid, item, fromPosition, itemEx, toPosition, topos, item2, frompos)

	gatepos = {x=1170,y=1119,z=6,stackpos=1}
	getgate = getThingfromPos(gatepos)
	gatepos1 = {x=1171,y=1122,z=6,stackpos=1}
	getgate1 = getThingfromPos(gatepos1)
	thing = getTileItemById({x=1172, y=1116, z=6, stackpos=1},1304)

          zacznijCzekac(function()
	if item.uid == 1215 and item.itemid == 1945 then
		doCreateItem(6840,1,gatepos)
		doCreateItem(6840,1,gatepos1)
		czekaj(1000)
		doTeleportThing(cid, {x=1171,y=1116,z=6})
		doSendMagicEffect(getCreaturePosition(cid),10)
		doCreateItem(1304,1,{x=1172, y=1116, z=6, stackpos=1})
		czekaj(1000)
		doSendAnimatedText({x=1169,y=1116,z=6}, "TRAP!", 215)
		czekaj(1000)
		doSendAnimatedText({x=1171,y=1118,z=6}, "TRAP!", 215)
		czekaj(1000)
		doSendAnimatedText({x=1169,y=1121,z=6}, "TRAP!", 215)
		czekaj(1000)
		doSendAnimatedText({x=1173,y=1121,z=6}, "TRAP!", 215)
		czekaj(1000)
		doSendAnimatedText({x=1172,y=1118,z=6}, "TRAP!", 215)
		doRemoveItem(thing.uid,1)
		doTransformItem(item.uid,1946)
	else
		doPlayerSendCancel(cid,"Warning, skrypt dont work! Report it to GameMaster!")
		end
	return 1
end)

	if item.uid == 1215 and item.itemid == 1946 then
		doRemoveItem(getgate.uid,1)
		doRemoveItem(getgate1.uid,1)
		doTransformItem(item.uid,1945)
	else
		doPlayerSendCancel(cid,"Warning, skrypt dont work! Report it to GameMaster!")
		end
	return 1
end
Prosiłbym o pomoc.
Pozdrawiam GarQet.

Ps. Gdy używam elseif (w tym wypadku) to nie działa połowa, dlatego użyłem 2 razy IF'a.
 
to jest funkcja, jak wpisz np.
Code:
czekaj(1000)
to skrypt wykona kolejną rzecz dopiero za sekundę.
 
Skrypt najpierw szuka kamienia do usuniecie i go do zmiennej laduje, a potem go stawia...

/script by GarQet/
That's right ladies, we are using GarQet's scripts!
 
Gdybys nie zauwazyl to napisalem rozwiazanie, bo najpierw ladujesz UID do zmiennej, a potem stawiasz i go chcesz usunac, ale tam jest zle UID zaladowane ;-)
 
To jak zrobić żeby pierw stawiało kamień a później kasowało?
 
No najpierw doCreateItem, a potem getThingFromPos/getTileItemById, a nie po samym onUse zapisujesz uid :S
 
Back
Top