Advertisement
Guest User

Izanagi

a guest
Jun 27th, 2009
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1.  
  2. #define MAX_OBJECTS 150
  3.  
  4. forward CreateObjectGroup(float:x, float:y, float:z);
  5. forward AddObjectToObjectGroup(object_groupid, objectid);
  6. forward init_GroupedObjects();
  7. forward CreateGroupObject(modelid, groupid, float:aX, float:aY, float:aZ, float:arX, float:arY, float:arZ);
  8. forward MoveObjectGroup(groupid, float:newX, float:newY, float:newZ, float:speed);
  9.  
  10. enum o_i_enum
  11. {
  12.     gid,
  13.     float:X,
  14.     float:Y,
  15.     float:Z,
  16.     float:rX,
  17.     float:rY,
  18.     float:rZ
  19. }
  20.  
  21. enum o_g_enum
  22. {
  23.     float:X,
  24.     float:Y,
  25.     float:Z
  26. }
  27.  
  28. new object_info [MAX_OBJECTS]   [o_i_enum];
  29. new ogroup_info [MAX_OBJECTS]   [o_g_enum];
  30. new obj_groups = 0;
  31.  
  32. public init_GroupedObjects()
  33. {
  34.     for(new i = 0; i < MAX_OBJECTS; i++)
  35.     {
  36.         object_info[i][gid] = 0;
  37.     }
  38. }
  39.  
  40. public CreateObjectGroup(float:x, float:y, float:z)
  41. {
  42.     if(obj_groups >= MAX_OBJECTS) return -1;
  43.     new obj_return = obj_groups;
  44.     ogroup_info[obj_groups][X] = x;
  45.     ogroup_info[obj_groups][Y] = y;
  46.     ogroup_info[obj_groups][Z] = z;
  47.     obj_groups++;
  48.     return obj_return;
  49. }
  50.  
  51. public AddObjectToObjectGroup(object_groupid, objectid)
  52. {
  53.     object_info[objectid][gid] = object_groupid;
  54. }
  55.  
  56. public CreateGroupObject(modelid, groupid, float:aX, float:aY, float:aZ, float:arX, float:arY, float:arZ)
  57. {
  58.     new cur_objects = CreateObject(modelid, float:X, float:Y, float:Z, float:rX, float:rY, float:rZ);
  59.     object_info[cur_objects][X] = aX;   object_info[cur_objects][Y] = aY;   object_info[cur_objects][Z] = aZ;
  60.     object_info[cur_objects][rX] = arX;     object_info[cur_objects][rY] = arY;     object_info[cur_objects][rZ] = arZ;
  61.     object_info[cur_objects][gid] = groupid;
  62. }
  63.  
  64. public MoveObjectGroup(groupid, float:newX, float:newY, float:newZ, float:speed)
  65. {
  66.     ogroup_info[groupid][X] = newX;
  67.     ogroup_info[groupid][Y] = newY;
  68.     ogroup_info[groupid][Z] = newZ;
  69.     for(new i = 0; i < MAX_OBJECTS; i++)
  70.     {
  71.         if(object_info[i][gid] == groupid)
  72.         {
  73.             new float:x[2],
  74.                 float:y[2],
  75.                 float:z[2];
  76.  
  77.             GetObjectPos(i, x[0], y[0], z[0]);
  78.             x[1] = ogroup_info[groupid][X]-x[0]+newX;
  79.             y[1] = ogroup_info[groupid][Y]-y[0]+newY;
  80.             z[1] = ogroup_info[groupid][Z]-z[0]+newZ;
  81.  
  82.             MoveObject(objectid, x[1], y[1], z[1], speed);
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement