03.11.2009, 07:28
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; }