Fly System

Status
Zamknięty.

Sokou

Advanced User
Zarejestrowany
Dołączył
Czerwiec 25, 2010
Posty
379
Liczba reakcji
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 - Mock fly system v 1.0

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

Kod:
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:

Kod:
fly.login(cid)

w logout.lua dodajemy to:

Kod:
fly.logout(cid)

a w playerdeath dodajemy to:

Kod:
fly.die(cid)

Movements​

w movements.xml

Kod:
<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
Kod:
---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
Kod:
<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:

Kod:
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:

Kod:
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:

Kod:
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? :)

http://www.youtube.com/watch?v=l84Cy6G7EKw
 
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
 
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:
 
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
 
Odp: [8.54] Fly System

Odp: [8.54] Fly System

Refresh ;)
gdzie komantarze panowie i panie ?:)
 
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?
 
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 ?
 
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.
 
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
 
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
 
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.
 
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.
 
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
 
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
 
Odp: [8.54] Fly System

Odp: [8.54] Fly System

``` RefresH ```
 
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 ?
 
Odp: [8.54] Fly System

Odp: [8.54] Fly System

#up
PHP:
CONT_FLYOUTFIT = 239
...
 
Odp: Fly System

Dzi?ki w?a?nie tego szuka?em, a czy bedzie to dzialac na tibi 8.50 ??
 
Ostatnia edycja:
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.
 
Ostatnia edycja:
Odp: Fly System

Wielkie gratulacje odemnie skrypt 10 / 12 ;p
 
Status
Zamknięty.
Back
Do góry