Problem With Loading/Saving Objects - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (
https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (
https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (
https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Problem With Loading/Saving Objects (
/showthread.php?tid=106426)
Problem With Loading/Saving Objects -
CJ101 - 03.11.2009
Today i created a command that saves the objects that admins can create in my server, and there is a problem where the objects will not load if i want to load them at a different time.
Код:
dcmd_loadset(playerid,params[])
{
new Index, tmp[300];
tmp = strtok(params,Index);
if(IsPlayerAdminLevel(playerid,4))
{
if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED,"Usage: /loadset <filename>");
new filename[50];
format(filename,sizeof(filename),"%s.obj",tmp);
if(!fexist(filename)) return SendClientMessage(playerid,COLOR_RED,"Object Set does not exist.");
new File: propfile = fopen(filename, io_read);
new Argument[7][70];
new entry[256];
for(new a; a< OBJD; a++)
{
fread(propfile, entry);
split(entry, Argument, ',');
ObjData[a][Model] = strval(Argument[0]);
ObjData[a][ox] = floatstr(Argument[1]);
ObjData[a][oy] = floatstr(Argument[2]);
ObjData[a][oz] = floatstr(Argument[3]);
ObjData[a][orx] = floatstr(Argument[4]);
ObjData[a][ory] = floatstr(Argument[5]);
ObjData[a][orz] = floatstr(Argument[6]);
}
fclose(propfile);
new to;
for(new i; i< OBJD; i++)
{
if(ObjData[i][Model] != 0) { CreateStreamObject(ObjData[i][Model],ObjData[i][ox],ObjData[i][oy],ObjData[i][oz],ObjData[i][orx],ObjData[i][ory],ObjData[i][orz],200,0); to++; }
}
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
StreamObjects(playerid,x,y,z);
new msg[150],name[90];
GetPlayerName(playerid,name,sizeof(name));
format(msg,sizeof(msg),"Admin %s has loaded '%s' (%d Objects)",name,params,to);
SendClientMessageToAll(COLOR_YELLOW,msg);
to = 0; // clear object entry
}
return 1;
}
Код:
dcmd_saveset(playerid,params[])
{
new tmp[300], Index;
tmp = strtok(params,Index);
new entry[256],file[90];
format(file,sizeof(file),"%s.obj",tmp);
if(fexist(file)) return SendClientMessage(playerid,COLOR_RED,"Object Set already exists.");
new File: propfile = fopen(file, io_write);
new Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz;
new createdo;
for(new id; id< MAX_A_OBJECTS; id++)
{
if(AdminObjData[playerid][id][Create] != 0)
{
GetStreamObjectPos(AdminObjData[playerid][id][Create],x,y,z);//Get the pos of an object
GetStreamObjectRot(AdminObjData[playerid][id][Create],rx,ry,rz);//Get rotation of an object
format(entry, 128, "%d,%d,%d,%d,%d,%d,%d \r\n",AdminObjData[playerid][id][Model],x,y,z,rx,ry,rz);
fwrite(propfile, entry);
createdo++;
}
}
fclose(propfile);
new str[90];
format(str,sizeof(str),"Admin Objects saved to '%s' (Total: %d)",createdo);
SendClientMessage(playerid,COLOR_WHITE,str);
return 1;
}