What's new

Fly System

Status
Not open for further replies.

Sokou

Advanced User
Joined
Jun 25, 2010
Messages
379
Reaction score
25
  • Author: Mock
  • Testowane na: TFS 0.3.6


Jest na tym wiele os?b, kt?re tworz? r?znego rodzaju ots'y i wi?kszo?? chce zamie?ci? u siebie latanie ale co smutne nie potrafi? oni wejs? na otland i poszuka? chwil kilka tego systemu, dlatego ja wam u?atwie i wrzuce go tutaj dla was ;)

Orginalny temat -

Najpierw tworzymy plik flylib.lua w data/lib a w nim umieszczamy to:

Code:
CONST_FLYVOID = 460
CONT_FLYOUTFIT = 239
IGNORED = {6495,7096,7099,5167,5162,5163,405,7100,
5315,5521,5316,5193,5192,5191,945,5048,923,950,951,
952,953,3623,954,955,949,9101,3352,9106,9103,1524,
1111,437,433,443,434,442,436,445,941,444,435,943,
1027,925,930,926,928,922,921,1112,406,904,931,934,
932,933,5319} --- Config here
 
 
up = {}
down = {}
fly = {}
fly.win = function(cid)-- Script by mock
	setPlayerStorageValue(cid, 102015,1)
	doPlayerSendTextMessage(cid,27,'Now you can fly.')
end
fly.add = function(cid)-- Script by mock
	if getPlayerStorageValue(cid, 102015) == -1 or getPlayerStorageValue(cid,13241) == 1 then
		return false
	end
	if getPlayerStorageValue(cid, 102059) <= 0 then
		local outfit = getCreatureOutfit(cid)
		outfit.lookType = CONT_FLYOUTFIT
		doSetCreatureOutfit(cid, outfit, -1)
		setPlayerStorageValue(cid, 102059,1)
		doChangeSpeed(cid, 390)
		doPlayerSendTextMessage(cid,27,'Fale \'up\' e \'down\'.' )
		return true
	else
		doPlayerSendTextMessage(cid,27, "Você ja esta voando.")
		return false
	end
 
end
function doSetItemActionId(uid,aid)
	doItemSetAttribute(uid,'aid',aid)
end
function hasSqm(pos)-- by Mock
	return getTileThingByPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).itemid ~= 0
end
function isWalkable(pos, creature, proj, pz)-- by Nord
	if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
	if getTopCreature(pos).uid > 0 and creature then return false end
	if getTileInfo(pos).protection and pz then return false, true end
	local n = not proj and 3 or 2
	for i = 0, 255 do
		pos.stackpos = i
		local tile = getTileThingByPos(pos)
		if tile.itemid ~= 0 and not isCreature(tile.uid) then
			if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
				return false
			end
		end
	end
	return true
end
fly.using=function(cid)-- Script by mock
   return getPlayerStorageValue(cid, 102059) > 0
end
fly.logout = function(cid)-- Script by mock
	if fly.using(cid) then
		local p = getCreaturePosition(cid)
		setPlayerStorageValue(cid, 102010,1)
		setPlayerStorageValue(cid, 102011,p.x)
		setPlayerStorageValue(cid, 102012,p.y)
		setPlayerStorageValue(cid, 102013,p.z)
		deletarEmVolta(p)
		fly.del(cid)
	end
	return true
end
fly.login = function(cid)-- Script by mock
	if getPlayerStorageValue(cid, 102010) ~= -1 then
		setPlayerStorageValue(cid, 102010,-1)
		local p = {}
		p.x = getPlayerStorageValue(cid, 102011)
		p.y = getPlayerStorageValue(cid, 102012)
		p.z = getPlayerStorageValue(cid, 102013)
		if not checkAround(p) then
			fly.add(cid)
			down.gerarEmVolta(p)
			doTeleportThing(cid,p)
		end
	end
	return true
end
fly.die = function(cid)-- Script by mock
	if fly.using(cid) then
		local p = getCreaturePosition(cid)
		setPlayerStorageValue(cid, 102011,-1)
		setPlayerStorageValue(cid, 102012,-1)
		setPlayerStorageValue(cid, 102013,-1)
		deletarEmVolta(p)
		fly.del(cid)
	end
	return true
end
fly.del = function(cid)-- Script by mock
	if getPlayerStorageValue(cid, 102059) > 0 then
		if getSqmId(getCreaturePosition(cid)).itemid == CONST_FLYVOID then
			return false
		end
		doRemoveCondition(cid, CONDITION_OUTFIT)
		setPlayerStorageValue(cid, 102059,-1)
		doChangeSpeed(cid, -390)
		return true
	end
end
function hasSqm2(pos)-- Script by mock
	local f = getTileThingByPos(pos)
	if f.itemid ~= 0 and f.itemid ~= 1 and (not isWalkable(pos) and not isInArray(IGNORED,f.itemid)) then
		return true
	end
	return false
end
function hasSqm3(pos)-- Script by mock
	local f = getTileThingByPos(pos)
	if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID and not isInArray(IGNORED,f.itemid) then
		return true
	end
	return false
end
 function deletar(pos)-- Script by mock
	if hasSqm(pos) then
		local sqm = getSqmId(pos)
		if sqm.itemid == CONST_FLYVOID then
			doRemoveItem(sqm.uid,1)
		end
	end
end
function deletarEmVolta(pos)
	for x=-1,1 do
		for y=-1,1 do
			deletar({x=pos.x+x,y=pos.y+y,z=pos.z})
		end
	end
end
function checkAround(pos)-- Script by mock
	for x=-1,1 do
		for y=-1,1 do
			if hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z}) then
				return true
			end
		end
	end
	return false
end
 
function fly.checkAround(pos)-- Script by mock
	local n = 0
	for x=-1,1 do
		for y=-1,1 do
			local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z})
 
			if g.itemid == CONST_FLYVOID then
				n = n+1
			end
			if isCreature(getTopCreature({x=pos.x+x,y=pos.y+y,z=pos.z}).uid) then
				return false
			end
		end
	end
	if n == 9 then
		return true
	end
	return false
end
 
function up.checkAround(pos)-- Script by mock
	for x=-1,1 do
		for y=-1,1 do
		local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z})
			if hasSqm3({x=pos.x+x,y=pos.y+y,z=pos.z}) or g.itemid == CONST_FLYVOID then
				return true
			end
		end
	end
	return false
end
 
function down.checkAround(pos,f)-- Script by mock
	for x=-1,1 do
		for y=-1,1 do
		local g = getTileThingByPos({x=pos.x+x,y=pos.y+y,z=pos.z})
			if (not f and hasSqm2({x=pos.x+x,y=pos.y+y,z=pos.z})) or g.itemid == CONST_FLYVOID then
				return true
			end
		end
	end
	return false
end
function gerarEmVolta(pos)-- Script by mock
	local n = 30000
	for x=-1,1 do
		for y=-1,1 do
			n =n+1
			doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n)
		end
	end
end
function doItem(pos,a,d)-- Script by mock
	if not hasSqm2(pos) then
		doCreateTile(CONST_FLYVOID,pos)
		pos.stackpos = 0
		local c = getTileThingByPos(pos)
		doSetItemActionId(c.uid, a)
	end
end
function getSqmId(pos,t)-- Script by mock
	if hasSqm(pos) or t then
		pos.stackpos = 0
		local i = getTileThingByPos(pos)
		return i
	end
	return nil
end
 
function down.doItem(pos,a)-- Script by mock
	if not hasSqm(pos) then
		doCreateTile(CONST_FLYVOID,pos)
		pos.stackpos = 0
		local c = getTileThingByPos(pos)
		doSetItemActionId(c.uid, a)
	end
end
 
function down.gerarEmVolta(pos)-- Script by mock
	local n = 30000
	for x=-1,1 do
		for y=-1,1 do
			n =n+1
			down.doItem({x=pos.x+x,y=pos.y+y,z=pos.z},n)
		end
	end
end
 
function doCreateTile(id,pos) -- Script by mock
	doAreaCombatHealth(0,0,pos,0,0,0,255)
	doCreateItem(id,1,pos)
end

Creaturescripts​

w pliku login.lua dodajemy to:

Code:
fly.login(cid)

w logout.lua dodajemy to:

Code:
fly.logout(cid)

a w playerdeath dodajemy to:

Code:
fly.die(cid)

Movements​

w movements.xml

Code:
<movevent type="StepIn" actionid="30001" event="script" value="fly.lua"/>
	<movevent type="StepIn" actionid="30002" event="script" value="fly.lua"/>
	<movevent type="StepIn" actionid="30003" event="script" value="fly.lua"/>
	<movevent type="StepIn" actionid="30004" event="script" value="fly.lua"/>
	<movevent type="StepOut" actionid="30005" event="script" value="fly.lua"/>
	<movevent type="StepIn" actionid="30006" event="script" value="fly.lua"/>
	<movevent type="StepIn" actionid="30007" event="script" value="fly.lua"/>
	<movevent type="StepIn" actionid="30008" event="script" value="fly.lua"/>
	<movevent type="StepIn" actionid="30009" event="script" value="fly.lua"/>
	<movevent type="AddItem" tileitem="1" itemid="460" event="script" value="fly.lua"/>

tworzymy i wklejamy tamfly.lua
Code:
---Script by mock the bear
function doCopyItem(item,pos) ---Script by mock the bear
	for i=1,6 do
		pos.z = pos.z+1
		if hasSqm(pos) and getSqmId(pos).itemid ~= 10217 then
				local i = doCreateItem(item.itemid,item.type,pos)
				if item.actionid ~= 0 then
					doSetItemActionid(i,item.actionid)
				end
				doSendMagicEffect(pos,9)
				return i
		else
			local p2 = {x=pos.x+1,y=pos.y+1,z=pos.z}
			doSendDistanceShoot(pos,p2,40)
			doSendMagicEffect(pos,2)
		end
	end
end
function onAddItem(item,pos,k) ---Script by mock the bear
  doCopyItem(item,k)
  doRemoveItem(item.uid,item.type == 0 and 1 or item.type)
end
function onStepIn(cid, item, position, fromPosition) ---Script by mock the bear
	local dir = {
	[30004] = {0,6,7},
	[30007] = {7,0,6,1,5},
	[30008] = {1,5,7},
	[30009] = {5,4,2,1,7},
	[30006] = {2,5,4},
	[30003] = {4,3,6,2,5},
	[30002] = {3,4,6},
	[30001] = {6,0,7,3,4},
	}
	if isPlayer(cid) then
		local chkps = {x=position.x,y=position.y,z=position.z}
		local ig = false
		for i,b in pairs(dir[item.actionid]) do
			local nw = getPosByDir(chkps,b)
			local g = getTileThingByPos(nw)
			if hasSqm3(nw) or g.itemid == CONST_FLYVOID or nw.x < 35 or nw.y < 35 then
				ig = true
				break
			end
		end
		if not ig then
			deletarEmVolta(fromPosition)
			gerarEmVolta(getCreaturePosition(cid))
		else
			doTeleportThing(cid,fromPosition,false)
			doPlayerSendTextMessage(cid,27, "Sorry, you cannot fly here.")
		end
	end
end
function onStepOut(cid, item, position, fromPosition,q)
	addEvent(function(pos) if fly.checkAround(pos) then deletarEmVolta(pos) end end,10000,position)
end

Talkactions​

w talkactions.xml
Code:
<talkaction words="up" case-sensitive="no" event="script" value="flyup.lua"/>
	<talkaction words="down" case-sensitive="no" event="script" value="flydown.lua"/>
	<talkaction words="!fly" case-sensitive="no" event="script" value="fly.lua"/>

tworzymy fly.lua i wklejamy to:

Code:
function onSay(cid, words, param) --- By moc kthe bear (MTB)
	if param ~= '' and getPlayerGroupId(cid) > 3 then
		local cida = getPlayerByName(param)
		if cida and isPlayer(cida) then
			fly.win(cida)
		end
		return true
	end
	if fly.using(cid)  then
		local p = getCreaturePosition(cid)
		p.stackpos = 0
		local f = getTileThingByPos(p)
		if fly.del(cid) then
			if f.itemid ~= 0 and f.itemid ~= 1 and f.itemid ~= CONST_FLYVOID then
				return true
			else
				setPlayerStorageValue(cid,10941,1)
				local p = getCreaturePosition(cid)
				setPlayerStorageValue(cid, 102011,p.x)
				setPlayerStorageValue(cid, 102012,p.y)
				setPlayerStorageValue(cid, 102013,p.z)
				return true
			end
		else
			doPlayerSendTextMessage(cid,27,'You cannot turn off the fly here.')
		end
	else
		if fly.add(cid) then
			local pos = getCreaturePosition(cid)
			if getSqmId(pos).itemid == 10217 then
				down.gerarEmVolta(pos)
			end
			return true
		else
			doPlayerSendTextMessage(cid,27,'You cannot fly.')
			return true
		end
	end
	return true
end

tworzymy flyup.lua wklejamy to:

Code:
function onSay(cid)--- By moc kthe bear (MTB)
	local time = os.time()
	if time < getPlayerStorageValue(cid, 102054) then
		doPlayerSendCancel(cid, "You are exhausted.")
		return true
	end
	if not fly.using(cid) then
		return false
	end
	local pos = getCreaturePosition(cid)
	pos.z = pos.z-1
	if hasSqm(pos) or pos.z < 0 or up.checkAround(pos) then
		doPlayerSendTextMessage(cid,27,'You cannot fly higger.')
		return true
	else
		gerarEmVolta(pos)
		doTeleportThing(cid,pos)
		pos.z = pos.z+1
		deletarEmVolta(pos)
	end
	return true
end

tworzymy flydown.lua i wklejamy to:

Code:
function onSay(cid)--- By moc kthe bear (MTB)
	local time = os.time()
	if time < getPlayerStorageValue(cid, 102054) then
		doPlayerSendCancel(cid, "You are exhausted.")
		return true
	end
	if not fly.using(cid) then
		return false
	end
	local pos = getCreaturePosition(cid)
	pos.stackpos = 0
	local g = getTileThingByPos(pos)
	pos.z = pos.z+1
	local f = getTileThingByPos(pos)
	if getSqmId(getCreaturePosition(cid)).itemid ~= CONST_FLYVOID
		or down.checkAround(pos)
		or (g.itemid ~= CONST_FLYVOID and f.itemid ~= CONST_FLYVOID and f.itemid ~= 0 and f.itemid ~= 1)
		or (not isWalkable(pos,true,false,false) and hasSqm(pos))
		or (hasSqm(pos) and not getTileHouseInfo(pos)) == 0 then
		doPlayerSendTextMessage(cid,27,'You cannot go to down here.')
		return true
	else
		down.gerarEmVolta(pos)
		doTeleportThing(cid,pos)
		pos.z = pos.z-1
		deletarEmVolta(pos)
	end
	return true
end


No i to wszystko odpalamy i si? cieszymy ze kto? za nas znalaz? :)

 

Mefiks

Advanced User
Joined
Aug 30, 2010
Messages
190
Reaction score
34
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Skrypt bardzo ?adny, pierwszy raz widz? go na tym forum.
Fajnie, ?e go wstawi?e? ;p
10/10
 

RevI95

Active User
Joined
May 15, 2008
Messages
116
Reaction score
4
Odp: [8.54] Fly System

Odp: [8.54] Fly System

skrypt zajebiscie wykonany 1 klasa gz dla autora szkoda ze pod starsza tibie to nie dziala pozdrawiam :lol:
 

Sokou

Advanced User
Joined
Jun 25, 2010
Messages
379
Reaction score
25
Odp: [8.54] Fly System

Odp: [8.54] Fly System

staram si? przus?uzy? ;D
to jest ver 1.0 jak tylko bedzie dostepna 2.0 odrazu wstawie
 

Sokou

Advanced User
Joined
Jun 25, 2010
Messages
379
Reaction score
25
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Refresh ;)
gdzie komantarze panowie i panie ?:)
 

olafo

Active User
Joined
Sep 9, 2009
Messages
79
Reaction score
0
Odp: [8.54] Fly System

Odp: [8.54] Fly System

system jest nawet nawet tylko jak zmienic zeby z okreslonego potworka w okreslony zamienic i latac?
 

Sokou

Advanced User
Joined
Jun 25, 2010
Messages
379
Reaction score
25
Odp: [8.54] Fly System

Odp: [8.54] Fly System

@UP
nie rozumiem jak z okreslonego potworka w okre?lonego ?
mo?esz troche ja?niej ?
 

Rage

Active User
Joined
Mar 6, 2009
Messages
141
Reaction score
0
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Ju? dawno widzia?em ten skrypt i nie wstawia?em go tutaj poniewa? powoduje on bugi.
Nie pami?tam dok?adnie z jakich to przyczyn, ale wiem ze po prostu robi dziury na mapie.
Tak po za tym Pan 2x up chcia? by go skonfigurowac do czego? w stylu pokemon ots.

Czyli chcia?by latac na swoim pecie.
O ile si? nie myl? to trzeba co? kombinowac ze storage.
Je?eli kto? potrafi to w ten spos?b skonfigurowac to te? by?bym wdzi?czny.
 

rafixkka

Active User
Joined
Jul 11, 2010
Messages
93
Reaction score
7
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Ten skrypt jest nie zbyt dobry.
Nie nadaje si? do pokemon otsa.
Je?eli si? potrafi to mo?na szybko napisa? lepszy.
Komu by si? chcialo wypelniac ca?a mape niewidzialna podloga?;s
 

Placek

Blue Waffle
Joined
Sep 30, 2008
Messages
6,793
Reaction score
672
Age
8
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Ten skrypt jest nie zbyt dobry.
Nie nadaje si? do pokemon otsa.
Je?eli si? potrafi to mo?na szybko napisa? lepszy.
Komu by si? chcialo wypelniac ca?a mape niewidzialna podloga?;s

Nie zauwarzyles ze w filmiku jest pokazane ze nie mozna sie normalnie teleportowac komenta /up lub /down bo tam nei ma podlogi? I o to chodzi ze tam nie ma podlogi i ten skrypt jest dobry. A o co tobie chodzilo to nie wiem :p
@topic
Skrypcik fajny nawet ale w sumie to nie przydatny zabardzo do niczego, poprostu do zabawy bo po co latac tam gdzie nie ma mapy? :p
 

raphy246

Active User
Joined
Nov 29, 2009
Messages
124
Reaction score
7
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Skrypt przydatny na serwery 4FuN. Ocena dla autora skryptu za pomys? 10/10, a za wykonanie 9/10.
 

Arts18

Signed...
Joined
May 7, 2009
Messages
2,888
Reaction score
231
Age
33
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Skrypt dobry, podobny do tego w WOW. Przydatny do ka?dego OT rpg.
Mo?liwe, ?e te? zastosuj? ten skrypt autorstwa Mocka.

Pozdrawiam.
 

fanx215

Active User
Joined
Mar 29, 2009
Messages
87
Reaction score
17
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Pierwszy raz widz? taki skrypt :D
Jestem pe?en podziwu, i gratulacje dla autora
10/10
 

Sokou

Advanced User
Joined
Jun 25, 2010
Messages
379
Reaction score
25
Odp: [8.54] Fly System

Odp: [8.54] Fly System

heh dzi?ki za wypowiadanie si?:)

je?eli Mock wystawi 2.0 odrazu pow?druje na forum a link bedzie mo?na znale?c w tym temacie ;D
 

Sokou

Advanced User
Joined
Jun 25, 2010
Messages
379
Reaction score
25
Odp: [8.54] Fly System

Odp: [8.54] Fly System

``` RefresH ```
 

Drohix

Advanced User
Joined
Jul 26, 2009
Messages
202
Reaction score
64
Age
27
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Bardzo fajny skrypt, ale na pocz?tku filmiku to wygl?da jakby? po prostu si? w wywke zamieni?. Mo?na zrobi tak ?eby lata? czym? innym ?
 

Sassin

Forum friend
Joined
Jun 13, 2009
Messages
1,281
Reaction score
107
Odp: [8.54] Fly System

Odp: [8.54] Fly System

#up
PHP:
CONT_FLYOUTFIT = 239
...
 

GregRin

Active User
Joined
Apr 3, 2010
Messages
116
Reaction score
4
Odp: Fly System

Dzi?ki w?a?nie tego szuka?em, a czy bedzie to dzialac na tibi 8.50 ??
 
Last edited:
Z

Zbizu

Guest
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Ju? dawno widzia?em ten skrypt i nie wstawia?em go tutaj poniewa? powoduje on bugi.
Nie pami?tam dok?adnie z jakich to przyczyn, ale wiem ze po prostu robi dziury na mapie.
Tak po za tym Pan 2x up chcia? by go skonfigurowac do czego? w stylu pokemon ots.
Czyli chcia?by latac na swoim pecie.
O ile si? nie myl? to trzeba co? kombinowac ze storage.
Je?eli kto? potrafi to w ten spos?b skonfigurowac to te? by?bym wdzi?czny.

u mnie te? dzia?a z b??dami.
jak latam na poziomie +1 to zostawiam niewidzialn? pod?og?(id 460), po kt?rej inni gracze mog? chodzi? u?ywaj?c levitate.
Skrypt raczej nie jest dla graczy, bo mo?na dosta? si? prawie wsz?dzie(poza domkami i miejscami blokowanymi). Nie mo?na wi?c robi? odkrytych skarbc?w co jest niestety wad?.
Czekam na wersj? 2.0.
Tymczasem oceniam 4/10

Pozdrawiam.
 
Last edited:

laza

User
Joined
Dec 20, 2009
Messages
31
Reaction score
2
Odp: Fly System

Wielkie gratulacje odemnie skrypt 10 / 12 ;p
 
Status
Not open for further replies.
Top