# Files

CS2D Lua Scripts [EngiN33R] Player Collision

# [EngiN33R] Player Collision

#### [EngiN33R] Player Collision

EngiN33R
Moderator Offline

This is an extremely simple and short script that makes players unable to pass through each other. It was also designed as an educational tool to demonstrate some of the mathematics commonly used in CS2D scripts. The entire script is 16 lines long and provided in the description below because of its small size. Be aware that this collision mechanism may be slightly confusing and may not work ideally for players with a high latency.

I welcome any and all questions regarding how it works, and any improvements to it as well - bear in mind, however, that this is not the end-all solution, but a simple script that enables basic collision functionality.

edited 2×, last 17.07.16 01:21:49 pm
Approved by GeoB99

Page
1 2

Yates
Reviewer Offline

@ Pagyra: Here, I optimized the code for you:

1
```addhook("move", "collisionThink") function collisionThink(ply, x, y) for _, ply2 in pairs(player(0, "table")) do if (ply ~= ply2 and player(ply2, "health") > 0) then local x2, y2 = player(ply2, "x"), player(ply2, "y"); local d = math.sqrt((x2-x)^2 + (y2-y)^2); if (d < 30) then local a = -(math.atan2(x2-x,y2-y)+math.pi/2)%(2*math.pi); local nx, ny = x2 + math.cos(a)*30, y2 + math.sin(a)*30; if (tile(math.floor(nx/32), math.floor(ny/32), "walkable")) then parse("setpos " .. ply .. " " .. nx .. " " .. ny); end end end end end
```

`0.000000000000000000000000000000000000000000000002`
seconds faster! (actual 100% legit full proof speed test)
I like it!
Raisun
User Offline

Hey, that's pretty good.
I like it!
Pagyra
User Offline

It is inefficient, there is no optimization with separation space for parts. But the fact that there is nothing similar here, it is good.
I like it!
HPB
User Offline

Nice, even the collision shape is circle.
I like it!
rcl1
User Offline

Nice
I like it!
Avo
User Offline

Nice, Vroom! :3
I like it!
BcY
Reviewer Offline

Pretty useful as it's simple.
I like it!
Mami Tomoe
User Offline

Would be nice if there was a option to push the players if they block you.
I like it!
Rainoth
Moderator Offline

Waldin has written
collision engine

Simple yet useful. With that said, this is just a guess but wouldn't it lag with many players?
I like it!
SANTER
User Offline

nice job dude, this is awesome
I like it!
Marcell
Super User Offline

It's okay
Waldin
User Offline

Thanks man, i was searching for a collision engine
Edit: sry for my bad english i mean, system.
I like it!
edited 1×, last 17.07.16 05:37:35 pm
ArlindS
User Offline

Very good.5/5
I like it!
Masea
Super User Offline

Thanks.
I like it!
sonkii
User Offline

Thanks for create this script.That idea was posted by me.Its better build in the game with options.
I like it!
THEMUD
User Offline

That is a neat masterpiece! Here is my like!
I like it!
Mora
User Offline

Omg when i moving on a players is looks very nice.. When you holding "D" key and automatically going up or down. Like there is really a human, these feelings.
I like it!
DarwinFTW
User Offline

Space Engin33r got dem moves
I like it!
G3tWr3ck3d
User Offline

10/10 love that space engin33r
I like it!
GeoB99
Moderator Offline

In my humble opinion, this feature should come by default amongst with a global server command sv_plcollision to enable / disable the solid state collision between players.

Otherwise, may can you implement this as a small improvement? Would be appreciated.
I like it!
1 2