Richie56
Компетентный
ColAndreas - Collision Detection
Это инструмент для работы с объектами, как стандартными так и созданными через CreateObject\CreateDynamicObject\CreateDynamicObjectEx.
Демонстрация возможностей:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Установка (c 0:47 по 02:37):
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Известные проблемы:
- Нет поддержки виртуального мира/интерьера (никогда не будет).
PHP:
public OnGameModeInit()
{
// Удаление объектов (это работает только до инициализации)
CA_RemoveBuilding();
// Инициализация мира (это создает всю карту, исключая удаленные объекты)
CA_Init();
return 1;
}
PHP:
CA_ContactTest(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
CA_EulerToQuat(Float:rx, Float:ry, Float:rz, &Float:x, &Float:y, &Float:z, &Float:w)
CA_FindZ_For2DCoord(Float:x, Float:y, &Float:z)
CA_GetModelBoundingBox(modelid, &Float:minx, &Float:miny, &Float:minz, &Float:maxx, &Float:maxy, &Float:maxz)
CA_GetModelBoundingSphere(modelid, &Float:offx, &Float:offy, &Float:offz, &Float:radius)
CA_GetObjectExtraID(index, type)
CA_Init()
CA_IsPlayerBlocked(playerid, Float:dist=1.5, Float:height=0.5)
CA_IsPlayerInWater(playerid, &Float:depth, &Float:playerdepth)
CA_IsPlayerNearWater(playerid, Float:dist=3.0, Float:height=3.0)
CA_IsPlayerOnSurface(playerid, Float:tolerance=1.5)
CA_QuatToEuler(Float:x, Float:y, Float:z, Float:w, &Float:rx, &Float:ry, &Float:rz)
CA_RayCastLine(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z)
CA_RayCastLineAngle(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz)
CA_RayCastLineAngleEx(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz, &Float:ocx, &Float:ocy, &Float:ocz, &Float:orx, &Float:ory, &Float:orz)
CA_RayCastLineExtraID(type, Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z)
CA_RayCastLineEx(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz, &Float:rw, &Float:cx, &Float:cy, &Float:cz)
CA_RayCastLineID(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z)
CA_RayCastLineNormal(Float:startx, Float:starty, Float:startz, Float:endx, Float:endy, Float:endz, &Float:x, &Float:y, &Float:z, &Float:nx, &Float:ny, &Float:nz)
CA_RayCastMultiLine(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, Float:retx[], Float:rety[], Float:retz[], Float:retdist[], ModelIDs[], size = sizeof(retx))
CA_RayCastReflectionVector(Float:startx, Float:starty, Float:startz, Float:endx, Float:endy, Float:endz, &Float:x, &Float:y, &Float:z, &Float:nx, &Float:ny, &Float:nz)
CA_RemoveBarriers()
CA_RemoveBreakableBuildings()
CA_RemoveBuilding(modelid, Float:x, Float:y, Float:z, Float:radius)
CA_SetObjectExtraID(index, type, data)
Float:CA_GetRoomHeight(Float:x, Float:y, Float:z)
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Разработчики: Slice, Chris420, Pottus, uint32, Crayder, Codectile
10 Nob 2019 - ColAndreas 1.5.0
13 Sep 2019 - ColAndreas 1.4.1 draft
With added support for custom DL models.
26 Apr 2016 - ColAndreas 1.4.0
Adds 4 new natives:
CA_RayCastLineID
08 Aug 2015 - ColAndreas 1.3.0
IMPORTANT NOTES:
WizardApp:
Plugin:
Other changes:
20 May 2015 - ColAndreas 1.2
ColAndreas update, gitignore, precompiled
17 May 2015 - ColAndreas 1.1
ColAndreas update
17 May 2015 - ColAndreas 1.0
ColAndreas first release
PHP:
/**--------------------------------------------------------------------------**\
<summary>
CA_RestoreBuilding
</summary>
<param name="modelid">The removed model to be restored</param>
<param name="Float:x, Float:y, Float:z">The coordinates in which the objects will be restored</param>
<param name="Float:radius">The radius around the specified point to restore from</param>
<returns>
0 when the map is not initialized
1 when successfully restored
</returns>
<remarks>
You must use this function after using `CA_Init`
</remarks>
\**--------------------------------------------------------------------------**/
native CA_RestoreBuilding(modelid, Float:x, Float:y, Float:z, Float:radius);
With added support for custom DL models.
PHP:
/**--------------------------------------------------------------------------**\
<summary>
CA_LoadFromDff
</summary>
<param name="newid">Custom model id to be added to col. pool</param>
<param name="dffFileName">Dff file path you want to load its collision</param>
<returns>
-1 if plugin couldn't find/open file (relatd to permissions or wrong path)
0 if dff file had no collision or corrupted data
1 if loading dff file and reading collision data was successful
</returns>
<remarks>
Loads collision from given dff file to support SA-MP 0.3DL custom models.
</remarks>
\**--------------------------------------------------------------------------**/
native CA_LoadFromDff(newid, const dffFileName[]);
Adds 4 new natives:
PHP:
CA_RayCastLineID(Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z);
CA_RayCastLineExtraID(type, Float:StartX, Float:StartY, Float:StartZ, Float:EndX, Float:EndY, Float:EndZ, &Float:x, &Float:y, &Float:z);
CA_SetObjectExtraID(index, type, data);
CA_GetObjectExtraID(index, type);
- Instead of returning the model ID of the collided object, this will return the ColAndreas index.
- Instead of returning the model ID of the collided object, this will return the extra data stored at the type parameter. The 'type's are set by CA_SetObjectExtraID.
- Returns '-1' when an invalid type was specified (something outside of 0 through 9).
- This sets the extra data stored at type of the specified ColAndreas object.
- This returns the extra data stored at type of the specified ColAndreas object.
PHP:
// Before anything
#define CA_STREAMER_ID 0
new testObj;
// Creating the object
testObj = CA_CreateDynamicObject_DC(3095, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0);
CA_SetObjectExtraID(testObj, CA_STREAMER_ID, CA_ObjectList[testObj][ObjectID]);
// Later, with a ray cast
new streamerID = CA_RayCastLineExtraID(CA_STREAMER_ID, 0.0, 0.0, 20.0, 0.0, 0.0, 0.0, sX, sY, sZ);
IMPORTANT NOTES:
- You need to recreate your ColAndreas.cadb file using the new WizardApp, the plugin will refuse to load older versions.
- Use ColAndreas_static.so if you get the following error: Failed (libBulletCollision.so.2.82: cannot open shared object file: No such file or directory)
- Please redownload if you're having trouble using the plugin on Windows XP (see #9)
WizardApp:
- Fixed problems with SA-MP objects.
- Uses static runtime libraries (Avoids MSVCP120D.DLL not found error)
- New user interface using the Qt5 libraries.
- Speed improvements.
Plugin:
- Server will show an error message instead of crashing if CA_CreateObject is called without collision data loaded.
- Updated the database reader to match with the changes made to the WizardApp.
- Plugin version will be displayed when it gets loaded.
- Added statically-linked Linux version (ColAndreas_static.so)
Other changes:
- Removed Visual Studio solution files, CMake is now used for the plugin and wizard.
- CMakeLists.txt moved to the root directory.
- Updated README.md
20 May 2015 - ColAndreas 1.2
ColAndreas update, gitignore, precompiled
17 May 2015 - ColAndreas 1.1
ColAndreas update
17 May 2015 - ColAndreas 1.0
ColAndreas first release
Последнее редактирование:
