Advertisement
Lirbo

DynamicObject Parser V2

Dec 7th, 2022
663
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.58 KB | None | 0 0
  1. stock LoadDynamicObjectsFile(path[], virtualworld = -2, interior = -2, playerid = -2, Float:streamdistance = -2.0, Float:drawdistance = -2.0, areaid = -2, priority = -2)
  2. {
  3.     new File:handle = fopen(path, io_read), buffer[186], string[144];
  4.     if(!handle)
  5.     {
  6.         format(string, sizeof string, "%s couldn't be opened!", path);
  7.         return printf(string);
  8.     }
  9.     new tmpobjid, tmpstr[12], objects, materials, texts, removes;
  10.     new o_virtualworld = virtualworld, o_interior = interior, o_playerid = playerid, Float:o_streamdistance = streamdistance, Float:o_drawdistance = drawdistance, o_areaid = areaid, o_priority = priority;
  11.     while(fread(handle, buffer))
  12.     {
  13.         if(strfind(buffer, "CreateDynamicObject(") != -1)
  14.         {
  15.             objects++;
  16.             new objectid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;
  17.             strdel(buffer, 0, strfind(buffer, "(") + 1);
  18.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  19.             objectid = strval(tmpstr);
  20.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  21.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  22.             x = floatstr(tmpstr);
  23.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  24.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  25.             y = floatstr(tmpstr);
  26.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  27.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  28.             z = floatstr(tmpstr);
  29.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  30.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  31.             rx = floatstr(tmpstr);
  32.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  33.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  34.             ry = floatstr(tmpstr);
  35.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  36.             new end = strfind(buffer, ", "), bool:stop;
  37.             if(end == -1)
  38.             {
  39.                 strfind(buffer, ")");
  40.                 stop = true;
  41.             }
  42.             strmid(tmpstr, buffer, 0, end);
  43.             rz = floatstr(tmpstr);
  44.             if(!stop)
  45.             {
  46.                 strdel(buffer, 0, end + 2);
  47.                 end = strfind(buffer, ", ");
  48.                 if(end == -1)
  49.                 {
  50.                     strfind(buffer, ")");
  51.                     stop = true;
  52.                 }
  53.                 strmid(tmpstr, buffer, 0, end);
  54.                 if(o_virtualworld == -2)
  55.                     virtualworld = strval(tmpstr);
  56.                 if(!stop)
  57.                 {
  58.                     strdel(buffer, 0, end + 2);
  59.                     end = strfind(buffer, ", ");
  60.                     if(end == -1)
  61.                     {
  62.                         strfind(buffer, ")");
  63.                         stop = true;
  64.                     }
  65.                     strmid(tmpstr, buffer, 0, end);
  66.                     if(o_interior == -2)
  67.                         interior = strval(tmpstr);
  68.                     if(!stop)
  69.                     {
  70.                         strdel(buffer, 0, end + 2);
  71.                         end = strfind(buffer, ", ");
  72.                         if(end == -1)
  73.                         {
  74.                             strfind(buffer, ")");
  75.                             stop = true;
  76.                         }
  77.                         strmid(tmpstr, buffer, 0, end);
  78.                         if(o_playerid == -2)
  79.                             playerid = strval(tmpstr);
  80.                         if(!stop)
  81.                         {
  82.                             strdel(buffer, 0, end + 2);
  83.                             end = strfind(buffer, ", ");
  84.                             if(end == -1)
  85.                             {
  86.                                 strfind(buffer, ")");
  87.                                 stop = true;
  88.                             }
  89.                             strmid(tmpstr, buffer, 0, end);
  90.                             if(o_streamdistance == -2.0)
  91.                                 streamdistance = floatstr(tmpstr);
  92.                             if(!stop)
  93.                             {
  94.                                 strdel(buffer, 0, end + 2);
  95.                                 end = strfind(buffer, ", ");
  96.                                 if(end == -1)
  97.                                 {
  98.                                     strfind(buffer, ")");
  99.                                     stop = true;
  100.                                 }
  101.                                 strmid(tmpstr, buffer, 0, end);
  102.                                 if(o_drawdistance == -2.0)
  103.                                     drawdistance = floatstr(tmpstr);
  104.                                 if(!stop)
  105.                                 {
  106.                                     strdel(buffer, 0, end + 2);
  107.                                     end = strfind(buffer, ", ");
  108.                                     if(end == -1)
  109.                                     {
  110.                                         strfind(buffer, ")");
  111.                                         stop = true;
  112.                                     }
  113.                                     strmid(tmpstr, buffer, 0, end);
  114.                                     if(o_areaid == -2)
  115.                                     areaid = strval(tmpstr);
  116.                                     if(!stop)
  117.                                     {
  118.                                         strdel(buffer, 0, end + 2);
  119.                                         strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
  120.                                         printf("%s - %d", tmpstr, priority);
  121.                                         if(o_priority == -2)
  122.                                             priority = strval(tmpstr);
  123.                                         printf("priority: %d", priority);
  124.                                     }
  125.                                 }
  126.                             }
  127.                         }
  128.                     }
  129.                 }
  130.             }
  131.             if(virtualworld == -2) virtualworld = -1;
  132.             if(interior == -2) interior = -1;
  133.             if(playerid == -2) playerid = -1;
  134.             if(streamdistance == -2.0) streamdistance = STREAMER_OBJECT_SD;
  135.             if(drawdistance == -2.0) drawdistance = STREAMER_OBJECT_DD;
  136.             if(areaid == -2) areaid = -1;
  137.             if(priority == -2) priority = 0;
  138.             printf("CTO(%d, %.1f, %.1f, %.1f, %.1f, %.1f, %.1f, %d, %d, %d, %.1f, %.1f, %d, %d)", objectid, x, y, z, rx, ry, rz, virtualworld, interior, playerid, streamdistance, drawdistance, areaid, priority);
  139.             tmpobjid = CreateDynamicObject(objectid, x, y, z, rx, ry, rz, virtualworld, interior, playerid, streamdistance, drawdistance, areaid, priority);
  140.             virtualworld = o_virtualworld;
  141.             interior = o_interior;
  142.             playerid = o_playerid;
  143.             streamdistance = o_streamdistance;
  144.             drawdistance = o_drawdistance;
  145.             areaid = o_areaid;
  146.             priority = o_priority;
  147.         }
  148.         else if(strfind(buffer, "SetDynamicObjectMaterial(") != -1)
  149.         {
  150.             materials++;
  151.             new idx, model, txd[48], texture[48], color;
  152.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  153.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  154.             idx = strval(tmpstr);
  155.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  156.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  157.             model = strval(tmpstr);
  158.             strdel(buffer, 0, strfind(buffer, ", \"") + 3);
  159.             strmid(txd, buffer, 0, strfind(buffer, "\", "));
  160.             strdel(buffer, 0, strfind(buffer, ", \"") + 3);
  161.             strmid(texture, buffer, 0, strfind(buffer, "\", "));
  162.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  163.             strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
  164.             sscanf(tmpstr, "x", color);
  165.             SetDynamicObjectMaterial(tmpobjid, idx, model, txd, texture, color);
  166.         }
  167.         else if(strfind(buffer, "SetDynamicObjectMaterialText(") != -1)
  168.         {
  169.             texts++;
  170.             new idx, text[128], materialsize, fontface[32], fontsize, bold, fontcolor, backcolor, textalignment;
  171.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  172.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  173.             idx = strval(tmpstr);
  174.             strdel(buffer, 0, strfind(buffer, ", \"") + 3);
  175.             strmid(text, buffer, 0, strfind(buffer, "\", "));
  176.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  177.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  178.             materialsize = strval(tmpstr);
  179.             strdel(buffer, 0, strfind(buffer, ", \"") + 3);
  180.             strmid(fontface, buffer, 0, strfind(buffer, "\", "));
  181.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  182.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  183.             fontsize = strval(tmpstr);
  184.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  185.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  186.             bold = strval(tmpstr);
  187.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  188.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  189.             sscanf(tmpstr, "x", fontcolor);
  190.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  191.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  192.             sscanf(tmpstr, "x", backcolor);
  193.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  194.             strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
  195.             textalignment = strval(tmpstr);
  196.             SetDynamicObjectMaterialText(tmpobjid, idx, text, materialsize, fontface, fontsize, bold, fontcolor, backcolor, textalignment);
  197.         }
  198.         else if(strfind(buffer, "RemoveBuildingForPlayer(") != -1)
  199.             removes++;
  200.  
  201.     }
  202.     format(string, sizeof string, "%s has been successfully loaded! (Objects: %s, Textures: %s, Texts: %s, Removes: %s)", path, comma(objects), comma(materials), comma(texts), comma(removes));
  203.     printf(string);
  204.     fclose(handle);
  205.     return 1; // Made by Lirbo :]
  206. }
  207.  
  208. stock LoadRemoveBuildingsForPlayer(playerid, path[])
  209. {
  210.     new File:handle = fopen(path, io_read), buffer[186], string[128];
  211.     if(!handle)
  212.     {
  213.         format(string, sizeof string, "%s couldn't be opened!", path);
  214.         return printf(string);
  215.     }
  216.     new tmpstr[12];
  217.     while(fread(handle, buffer))
  218.     {
  219.         if(strfind(buffer, "RemoveBuildingForPlayer(") != -1)
  220.         {
  221.             new objectid, Float:x, Float:y, Float:z, Float:radius;
  222.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  223.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  224.             objectid = strval(tmpstr);
  225.             objectid = strval(tmpstr);
  226.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  227.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  228.             x = floatstr(tmpstr);
  229.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  230.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  231.             y = floatstr(tmpstr);
  232.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  233.             strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
  234.             z = floatstr(tmpstr);
  235.             strdel(buffer, 0, strfind(buffer, ", ") + 2);
  236.             strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
  237.             radius = floatstr(tmpstr);
  238.             RemoveBuildingForPlayer(playerid, objectid, x, y, z, radius);
  239.         }
  240.         else
  241.             break;
  242.     }
  243.     fclose(handle);
  244.     return 1; // Made by Lirbo :]
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement