Forum

> > CS2D > Scripts > Man darf nicht über wasser laufen
Forums overviewCS2D overview Scripts overviewLog in to reply

German Man darf nicht über wasser laufen

13 replies
To the start Previous 1 Next To the start

old Man darf nicht über wasser laufen

RAIGEKI
User Off Offline

Quote
Hi
Ich brauche hilfe bei meinem Script !
Undzwar wie kriege ich das hin ,wie bei den Tibia Maps & Co ,
Das man automatisch zurück geportet wird, wenn man versucht über das Wasser zulaufen!

Vielen Dank!
mfg. Jonleplay

old Re: Man darf nicht über wasser laufen

Necr0
User Off Offline

Quote
Code >


Ich hab keine Ahnung ob's klappt hab's noch nicht ausprobiert, aber so in etwa müsste es gehen.
     ~MFG Necr0

old Re: Man darf nicht über wasser laufen

Necr0
User Off Offline

Quote
upps und gefixxt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
nwTiles={}//wasser tile id einfügen

function initArr(s,e,v)
     ret={}
     for i=s,e do
          ret[i]=v
     end
     return ret
end

prevTiles=initArr(1,32,{0,0})
     
function arrContains(arr,v)
     for i,j in pairs(arr) do
          if j==v then
               return true
          end
     end
     return false
end
     
addhook("movetile","mtHook")
function mtHook(id,x,y)
     if arrContains(nwTiles,tile(x,y,"frame")) then
          parse("setpos "..id.." "..prevTiles[id][1]*32+16.." "..prevTiles[id][2]*32+16)
     else
          prevTiles[id][1]=x
          prevTiles[id][2]=y
     end
end

old Re: Man darf nicht über wasser laufen

gotya2
GAME BANNED Off Offline

Quote
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function initArray(n,v) 
	local ret = {}
	for i = 1, n do
		ret[i] = v
	end
	return ret
end

a = initArray(32,{0,0})

a[1][1] = 5

print(a[1][1])
print(a[2][1])

Sorry for english, but I just noticed something in your script Necr0.
Be careful with the initarray function when creating objects. All elements of the array point to the local table {0,0}, So in fact a[1] and a[2] point to the same table.

old Re: Man darf nicht über wasser laufen

RAIGEKI
User Off Offline

Quote
Thats My Script Now but now is the Error at Line 32
'near 16..'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
nwTiles={34}

function initArray(n,v) 
     local ret = {}
     for i = 1, n do
          ret[i] = v
     end
     return ret
end

a = initArray(32,{0,0})

a[1][1] = 5

print(a[1][1])
print(a[2][1])

prevTiles=initArr(1,32,{0,0})
     
function arrContains(arr,v)
     for i,j in pairs(arr) do
          if j==v then
               return true
          end
     end
     return false
end
     
addhook("movetile","mtHook")
function mtHook(id,x,y)
     if arrContains(nwTiles,tile(x,y,"frame")) then
          parse("setpos "..id.." "..prevTiles[id][1]*32+16.." "..prevTiles[id][2]*32+16)
     else
          prevTiles[id][1]=x
          prevTiles[id][2]=y
     end
end

old Re: Man darf nicht über wasser laufen

VADemon
User Off Offline

Quote
1
2
--quote
parse("setpos "..id.." "..prevTiles[id][1]*32+16.." "..prevTiles[id][2]*32+16)
richtig:
1
parse("setpos "..id.." "..prevTiles[id][1]*32+16 .." "..prevTiles[id][2]*32+16)

old Re: Man darf nicht über wasser laufen

RAIGEKI
User Off Offline

Quote
Ok Habs jetzt verändert jetzt gehts!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
nwTiles={34}

function initArr(s,e,v)
     ret={}
     for i=s,e do
          ret[i]=v
     end
     return ret
end

prevTiles=initArr(1,32,{0,0})
     
function arrContains(arr,v)
     for i,j in pairs(arr) do
          if j==v then
               return true
          end
     end
     return false
end
     
addhook("movetile","mtHook")
function mtHook(id,x,y)
     if arrContains(nwTiles,tile(x,y,"frame")) then
          parse("setpos "..id.." "..prevTiles[id][1]*32+16 .." "..prevTiles[id][2]*32+16)
     else
          prevTiles[id][1]=x
          prevTiles[id][2]=y
     end
end
Danke für eure Hilfe

old Re: Man darf nicht über wasser laufen

Necr0
User Off Offline

Quote
code >


danke an user VADemon der mich auf den fehler hingewiesen hat.
aber noch mehr muss ich user gotya2 danken der mich auf den fatalen fehler hingewiesen hat, dass alle elemente aus der tabelle "prevTiles" auf ein und die selbe variable verweisen..

das heißt, wird ein element aus der tabelle verändert ändern sich alle.

der script, der von dir soeben gepostet wurde, klappt nur mit einem spieler ohne probleme, bei mehreren können schnell probleme auftreten.

so sollte es klappen
     ~MFG Necr0

old Re: Man darf nicht über wasser laufen

Necr0
User Off Offline

Quote
es reicht auch einfach eine leerstelle einzufügen, wie ich es auch in der meinem vorherigen beitrag gemacht habe, anstatt es zu umklammern. (ich würde es zwar mit einem screenshot beweisen können aber puush ist wiedermal down)

old Re: Man darf nicht über wasser laufen

TimeQuesT
User Off Offline

Quote
Oh. Den hatte ich ja ganz übersehen. Das mit der Leerstelle wusste ich nicht. Naja hier muss man nichts beweisen

edit:
user Necr0 has written
(ich würde es zwar mit einem screenshot beweisen können...

Wie denn das ?
To the start Previous 1 Next To the start
Log in to reply Scripts overviewCS2D overviewForums overview