Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Yes I know I could have done this much shorter with sscanf, but I guess my brain just didn't think of it at the time. Might re-do it later if I feel like it.
- stock LoadDynamicObjectsFile(path[], virtualworld = -2, interior = -2, playerid = -2, Float:streamdistance = -2.0, Float:drawdistance = -2.0, areaid = -2, priority = -2)
- {
- new File:handle = fopen(path, io_read), buffer[186], string[144];
- if(!handle)
- {
- format(string, sizeof string, "%s couldn't be opened!", path);
- return printf(string);
- }
- new tmpobjid, tmpstr[12], objects, materials, texts, removes;
- new o_virtualworld = virtualworld, o_interior = interior, o_playerid = playerid, Float:o_streamdistance = streamdistance, Float:o_drawdistance = drawdistance, o_areaid = areaid, o_priority = priority;
- while(fread(handle, buffer))
- {
- if(strfind(buffer, "CreateDynamicObject(") != -1)
- {
- objects++;
- new objectid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz;
- strdel(buffer, 0, strfind(buffer, "(") + 1);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", objectid);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", x);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", y);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", z);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", rx);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", ry);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- new end = strfind(buffer, ", "), bool:stop;
- if(end == -1)
- {
- strfind(buffer, ")");
- stop = true;
- }
- strmid(tmpstr, buffer, 0, end);
- sscanf(tmpstr, "f", rz);
- if(!stop)
- {
- strdel(buffer, 0, end + 2);
- end = strfind(buffer, ", ");
- if(end == -1)
- {
- strfind(buffer, ")");
- stop = true;
- }
- strmid(tmpstr, buffer, 0, end);
- if(o_virtualworld == -2)
- sscanf(tmpstr, "d", virtualworld);
- if(!stop)
- {
- strdel(buffer, 0, end + 2);
- end = strfind(buffer, ", ");
- if(end == -1)
- {
- strfind(buffer, ")");
- stop = true;
- }
- strmid(tmpstr, buffer, 0, end);
- if(o_interior == -2)
- sscanf(tmpstr, "d", interior);
- if(!stop)
- {
- strdel(buffer, 0, end + 2);
- end = strfind(buffer, ", ");
- if(end == -1)
- {
- strfind(buffer, ")");
- stop = true;
- }
- strmid(tmpstr, buffer, 0, end);
- if(o_playerid == -2)
- sscanf(tmpstr, "d", playerid);
- if(!stop)
- {
- strdel(buffer, 0, end + 2);
- end = strfind(buffer, ", ");
- if(end == -1)
- {
- strfind(buffer, ")");
- stop = true;
- }
- strmid(tmpstr, buffer, 0, end);
- if(o_streamdistance == -2.0)
- sscanf(tmpstr, "f", streamdistance);
- if(!stop)
- {
- strdel(buffer, 0, end + 2);
- end = strfind(buffer, ", ");
- if(end == -1)
- {
- strfind(buffer, ")");
- stop = true;
- }
- strmid(tmpstr, buffer, 0, end);
- if(o_drawdistance == -2.0)
- sscanf(tmpstr, "f", drawdistance);
- if(!stop)
- {
- strdel(buffer, 0, end + 2);
- end = strfind(buffer, ", ");
- if(end == -1)
- {
- strfind(buffer, ")");
- stop = true;
- }
- strmid(tmpstr, buffer, 0, end);
- if(o_areaid == -2)
- sscanf(tmpstr, "d", areaid);
- if(!stop)
- {
- strdel(buffer, 0, end + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
- if(o_priority == -2)
- sscanf(tmpstr, "d", priority);
- }
- }
- }
- }
- }
- }
- }
- if(virtualworld == -2) virtualworld = -1;
- if(interior == -2) interior = -1;
- if(playerid == -2) playerid = -1;
- if(streamdistance == -2.0) streamdistance = STREAMER_OBJECT_SD;
- if(drawdistance == -2.0) drawdistance = STREAMER_OBJECT_DD;
- if(areaid == -2) areaid = -1;
- if(priority == -2) priority = 0;
- tmpobjid = CreateDynamicObject(objectid, x, y, z, rx, ry, rz, virtualworld, interior, playerid, streamdistance, drawdistance, areaid, priority);
- virtualworld = o_virtualworld;
- interior = o_interior;
- playerid = o_playerid;
- streamdistance = o_streamdistance;
- drawdistance = o_drawdistance;
- areaid = o_areaid;
- priority = o_priority;
- }
- else if(strfind(buffer, "SetDynamicObjectMaterial(") != -1)
- {
- materials++;
- new idx, model, txd[48], texture[48], color;
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", idx);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", model);
- strdel(buffer, 0, strfind(buffer, ", \"") + 3);
- strmid(txd, buffer, 0, strfind(buffer, "\", "));
- strdel(buffer, 0, strfind(buffer, ", \"") + 3);
- strmid(texture, buffer, 0, strfind(buffer, "\", "));
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
- sscanf(tmpstr, "x", color);
- SetDynamicObjectMaterial(tmpobjid, idx, model, txd, texture, color);
- }
- else if(strfind(buffer, "SetDynamicObjectMaterialText(") != -1)
- {
- texts++;
- new idx, text[128], materialsize, fontface[32], fontsize, bold, fontcolor, backcolor, textalignment;
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", idx);
- strdel(buffer, 0, strfind(buffer, ", \"") + 3);
- strmid(text, buffer, 0, strfind(buffer, "\", "));
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", materialsize);
- strdel(buffer, 0, strfind(buffer, ", \"") + 3);
- strmid(fontface, buffer, 0, strfind(buffer, "\", "));
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", fontsize);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", bold);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "x", fontcolor);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "x", backcolor);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
- sscanf(tmpstr, "d", textalignment);
- SetDynamicObjectMaterialText(tmpobjid, idx, text, materialsize, fontface, fontsize, bold, fontcolor, backcolor, textalignment);
- }
- else if(strfind(buffer, "RemoveBuildingForPlayer(") != -1)
- removes++;
- }
- 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));
- printf(string);
- fclose(handle);
- return 1; // Made by Lirbo :]
- }
- stock LoadRemoveBuildingsForPlayer(playerid, path[])
- {
- new File:handle = fopen(path, io_read), buffer[186], string[128];
- if(!handle)
- {
- format(string, sizeof string, "%s couldn't be opened!", path);
- return printf(string);
- }
- new tmpstr[12];
- while(fread(handle, buffer))
- {
- if(strfind(buffer, "RemoveBuildingForPlayer(") != -1)
- {
- new objectid, Float:x, Float:y, Float:z, Float:radius;
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "d", objectid);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", x);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", y);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ", "));
- sscanf(tmpstr, "f", z);
- strdel(buffer, 0, strfind(buffer, ", ") + 2);
- strmid(tmpstr, buffer, 0, strfind(buffer, ")"));
- sscanf(tmpstr, "f", radius);
- RemoveBuildingForPlayer(playerid, objectid, x, y, z, radius);
- }
- else
- break;
- }
- fclose(handle);
- return 1; // Made by Lirbo :]
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement