What's new

Time Door v.3

Status
Not open for further replies.

Karpio

Advanced User
Joined
Apr 11, 2008
Messages
369
Reaction score
58
Witam!
Dzisiaj chc? zaprezentowa? kolejn? wersj? mojego starego skryptu.
Skrypt polega na tym, ?e gdy gracz u?yje drzwi to go przesuwa za drzwi.
Po okre?lonym czasie, gracz jest teleportowany przed drzwi.
Oto kilka ss:



a oto i kod:
PHP:
--Script by Karpio
--Script version: 3.0
function onUse(cid, item, fromPosition, itemEx, toPosition)
--Konfiguracja
local config = {
	uid = 1234, --Uniqueid drzwi
	ile = 15, --ile osob moze byc za drzwiami
	gdzie = "prawo", --w ktora strone przechodzi gracz 
	dir = {["lewo"] = 1, ["prawo"] = 3, ["gora"] = 2, ["dol"] = 0}, --Nie ruszamy
	czas = 90, --Po ilu sekundach nas wyrzuci
	dokad = getCreaturePosition(cid), --Nie ruszamy
	item = getThingPos(item.uid) -- nie ruszamy
	}
--//Konfiguracja
		if(item.uid == config.uid) then
			if(item.actionid == (config.ile + 100)) then
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only ".. config.ile .." people may be behind doors at the same time.")
				return TRUE
			end
			if(getDirectionTo(getCreaturePosition(cid), toPosition) == config.dir[config.gdzie]) then
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You may not get back up to "..timeString(config.czas)..".")
				return TRUE
			end
			if(item.actionid == 0) then
				doSetItemActionId(item.uid, 101)
			else
				doSetItemActionId(item.uid, item.actionid + 1)
			end
			doTransformItem(item.uid, item.itemid + 1)
			doTeleportThing(cid, toPosition, TRUE)
			zacznijCzekac(function()
				czekaj(300)
			if(config.gdzie == "lewo") then
				doMoveCreature(cid, 3)
			elseif(config.gdzie == "prawo") then
				doMoveCreature(cid, 1)
			elseif(config.gdzie == "gora") then
				doMoveCreature(cid, 0)
			elseif(config.gdzie == "dol") then
				doMoveCreature(cid, 2)
			end
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have "..timeString(config.czas)..".")
			if(config.czas > 60) then
				czekaj((config.czas - 60) * 1000)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have only one minute.")
				czekaj(60 * 1000)
				local item = getThingFromPos(config.item)
				doTeleportThing(cid, config.dokad)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The end of time.")
				doSendMagicEffect(config.dokad, 10)
				doSetItemActionId(item.uid, item.actionid - 1)
				return TRUE
			end
				czekaj(config.czas * 1000)
				local item = getThingFromPos(config.item)
				doTeleportThing(cid, config.dokad)
				doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The end of time.")
				doSendMagicEffect(config.dokad, 10)
				doSetItemActionId(item.uid, item.actionid - 1)
				return TRUE
			end)
			return TRUE
		end
	return TRUE
end
w kodzie zmieniamy tylko konfiguracje!
a kod wklejamy do actions/scripts/timedoor.lua
do actions.xml dodajemy:
Code:
<action uniqueid="1234" event="script" value="timedoor.lua"/>
oczywi?cie uniqueid podajemy swoje, albo u?ywamy 1234.

Do lib/function.lua na samym dole doklejamy:
PHP:
czekaj = coroutine.yield
function czekanie(c)
	if(coroutine.status(c) ~= 'dead') then
		local _, czas = coroutine.resume(c)
		addEvent(czekanie, czas, c)
	end
end
function zacznijCzekac(f)
	if(type(f) == 'function') then
		local c = coroutine.create(f)
		czekanie(c)
	end
end
function timeString(timeDiff)
    local dateFormat = { 
        {"day", timeDiff / 60 / 60 / 24},
        {"hour", timeDiff / 60 / 60 % 24},
        {"minute", timeDiff / 60 % 60},
        {"second", timeDiff % 60}
    }
    local out = {}
    for k, t in ipairs(dateFormat) do
        local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
    return table.concat(out)
end

Skrypt testowany na TFS 0.3.4

Czekam na komentarze i pozdrawiam,
Karpio

@drakos:
Powinno dzia?a?, ja tylko napisa?em na czym osobi?cie testowa?em.
 

Tibionauta

Advanced User
Joined
May 8, 2008
Messages
388
Reaction score
43
Odp: Time Door v.3

Testowa?em ju? na Valhalli. Skrypt oczywi?cie dzia?a 10/10!
 

Pandori

New User
Joined
Apr 15, 2008
Messages
5
Reaction score
0
Odp: Time Door v.3

nie no jak zwykle przechodzisz samego siebie wlasnie tego potrzebowalem. 10/10
 

drakos

Advanced User
Joined
May 1, 2008
Messages
187
Reaction score
9
Odp: Time Door v.3

a mo?e tak pod mistic spirit ? bardzo bym prosi?
 
Last edited:

Vincyl

New User
Joined
Jul 16, 2009
Messages
6
Reaction score
1
Age
30
Odp: Time Door v.3

Swietne to trzeba miec glowe zeby cos takiego napisac, szkoda ze ja takiej nie mam xd
10/10
 

Karpio

Advanced User
Joined
Apr 11, 2008
Messages
369
Reaction score
58
Odp: Time Door v.3

Gelio co Ci niby nie pasuje?
Sam napisa?em nawet kod jest inny...
A co do skryptu Rahima to pierwszy raz go widz?.

pzdr
 
R

Rahim

Guest
Odp: Time Door v.3

Hmm... Skrypt zasobo?erny. W dodatku jakie? chi?skie funkcje u?yte.

?apcie m?j skrypt, nie testowa?em. Mog?em jebn?? liter?wk?, wi?c jc piszcie :D
PS. Wa?ne jest, aby teren za drzwiami posiada? flag? zabraniaj?c? wylogowywania si? (w rme ?atwo ustawi?).
Code:
local config = {
    czas = 180, --czas w sekundaach
    czas_kiedy_wysle_ostrzezenie = 120,
    ile_osob = 15
    }
    
function onUse(cid,item,fromPosition,itemEx,toPosition)    
    local pos, param = getPosByDir(fromPosition,getDirectionTo(fromPosition,toPosition),2), {cid,fromPosition}
    if(#tp_doors > config.ile_osob) then
        return TRUE
    end
    if(tp_doors[cid] == nil or tp_doors[cid] == false) then
        tp_events[cid] = addEvent(teleport,config.czas,param)
        tp_doors[cid] = true
        doTeleportThing(cid,pos)
        doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Masz tylko "..config.czas.." sekund na wykonanie questu! Spiesz sie!")
        addEvent(ostrze,config.czas_kiedy_wysle_ostrzezenie,param)
        return TRUE
    end
    if(tp_events[cid] ~= nil) then
        stopEvent(tp_events[cid])
        table.remove(tp_events,cid)
        return TRUE
    end
end

function teleport(param)
    if(isPlayer(param[1]) == TRUE) then
        doTeleportThing(param[1],param[2])
        doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Czas sie skonczyl!")
    end
    table.remove(tp_events,param[1])
    table.remove(tp_doors,param[1])
end

function ostrze(param)
    doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Spiesz sie! Zostalo juz tylko "..(cofnig.czas - config.czas_kiedy_wysle_ostrzezenie).." sekund!")
end
Teraz do lib/constant.lua
Code:
tp_events = {}
tp_doors = {}
Pozdro.

@down.
Ju? si? robi... :D Poprawione.
 
Last edited:

Karpio

Advanced User
Joined
Apr 11, 2008
Messages
369
Reaction score
58
Odp: Time Door v.3

tw?j skrypt faktycznie potrzebuje mniej zasob?w, ale m?j ma wi?cej funkcji.
np. tylko okre?lona ilo?? os?b mo?e wej?? i skrypt informuje nas o zbli?aj?cym si? ko?cu czasu (na minute przed ko?cem)

pzdr
 

nabi12

Advanced User
Joined
Jul 11, 2009
Messages
252
Reaction score
12
Odp: Time Door v.3

DZieki 10/10 dzia?a testowa?em uzy?em na swoim otsie no-ip :D Dzi?ki Dzi?ki !
 

Karpio

Advanced User
Joined
Apr 11, 2008
Messages
369
Reaction score
58
Odp: Time Door v.3

refresh - prosz? o komentowanie mego skryptu
Pzdr
 

Kawon

?&#8226;Atania.Pl&#8226;?
Joined
Apr 16, 2008
Messages
1,577
Reaction score
48
Odp: Time Door v.3

SKRYPT BOSKI!

10/10 ;) :up: :up: :up:
 

Maly Wizak

Advanced User
Joined
Oct 5, 2008
Messages
172
Reaction score
5
Odp: Time Door v.3

Brawo, brawo. Na serio brawo: http://tibia.net.pl/actions/60024-8-x-inne-drzwi-przez-ktore-przejdziemy-po-jakims-czasie-teleportuja-nas-spowrotem.html
No comment.
Pozdrawiam,
Gelio
@down
Nie m?wi?, ?e kopiowa?e?. Po prostu nie potrzebnie dany skrypt, bo ju? istnieje.

@Gelio
Przy najmniej skr?ci? ten skrypt!
@Topic
Noo ?adnie ,chocia? nie tw?j pomys? wi?c nie dam reput ,ale moim zdaniem lepiej ,bo skrypt jest skr?cony i by?y by mniejsze lagi w razie b??du :)
 

Zawodowy Tibian

Active User
Joined
Sep 7, 2008
Messages
64
Reaction score
3
Odp: Time Door v.3

Super ! Przyda si? napewno ! :) Oby tak dalej :) Tw?rz dalej takie skrypty :) Dziex.

Repucik leci ! :):)
 

Kleksu

Advanced User
Joined
Dec 3, 2008
Messages
385
Reaction score
31
Odp: Time Door v.3

Przetestuj? w po?udnie i je?li skrypt dzia?a, edytuje post i dam reputa, tego szuka?em, a nie mia?em pomys?u jak zrobi? to samemu.
__________________

Zapraszam na !
Zajrzyj na nowe open tibia forum z w?asn? ot list? !
 
Last edited:

Karpio

Advanced User
Joined
Apr 11, 2008
Messages
369
Reaction score
58
Odp: Time Door v.3

na pewno dzia?a :D
w ko?cu sam to testowa?em

Pzdr
 

Kleksu

Advanced User
Joined
Dec 3, 2008
Messages
385
Reaction score
31
Odp: Time Door v.3

?miga super, dzi?ki! ;)

EDIT: A jak zrobi? je?li item actionid jest +1 ?eby teleportowa?o na pozycj? przed drzwi i kasowa?o czas?
__________________

Zapraszam na !
Zajrzyj na nowe open tibia forum z w?asn? ot list? !
 
Last edited:

Sassin

Forum friend
Joined
Jun 13, 2009
Messages
1,281
Reaction score
107
Odp: Time Door v.3

@Gelio
Przy najmniej skr?ci? ten skrypt!
@Topic
Noo ?adnie ,chocia? nie tw?j pomys? wi?c nie dam reput ,ale moim zdaniem lepiej ,bo skrypt jest skr?cony i by?y by mniejsze lagi w razie b??du :)

Je?li si? nie znasz nie wypowiadaj si? w ten spos?b, poniewa? skrypty tylko z pozoru s? podobne, ca?a zawarto?? pliku niemal w 100% si? r??ni
A co do obu skrypt?w to ten jest lepszy od tego autorstwa Rahima :(
Pewnie dlatego ?e pisa? go w po?piechu :)
 

Kleksu

Advanced User
Joined
Dec 3, 2008
Messages
385
Reaction score
31
Odp: Time Door v.3

A jak zrobi? je?li item actionid jest +1 ?eby teleportowa?o na pozycj? przed drzwi i kasowa?o czas?

Od?wie?am pro?b?.
__________________

Zapraszam na !
Zajrzyj na nowe open tibia forum z w?asn? ot list? !
 
Last edited:

Karpio

Advanced User
Joined
Apr 11, 2008
Messages
369
Reaction score
58
w sensie aby wyj?? si? da?o?
a potem nie tpa?o z powrotem?

pzdr

@down
jako ?e jutro jade nad morze, to jak wr?c? to Ci to napisz?

pzdr

//Edytuj posty, a nie pisz nowego. Inaczej b?d? musia? da? "post pod postem".
 
Last edited by a moderator:
Status
Not open for further replies.
Top