House Info Files Loading Not Working
#1

Hi. I'm making a house script where you can buy houses and the information is saved into files.
The info is then loaded from the files when the server restarts, so restarting the server wont affect who owns a house or who rents a room in it.

For some reason, the loading doesn't work. I've check and NO information is loaded, but it is in the files.

Here is the loading part:
pawn Код:
//FUNCTION: Load Saved Houses
public OnHouseLoad(houseid)
{
    new loc[128],data[128],string[128],sdata[128];
    format(loc,128,"/Houses/%d.txt",houseid);
    if(fexist(loc))
    {
      new File:HFILE=fopen(loc,io_read);
      while(fread(HFILE,data,128))
      {
        format(string,sizeof(string),"Cost: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][Cost]=strval(sdata);}
        format(string,sizeof(string),"Rent: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][Rent]=strval(sdata);}
        format(string,sizeof(string),"PickupX: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][PickupX]=floatstr(sdata);}
        format(string,sizeof(string),"PickupY: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][PickupY]=floatstr(sdata);}
        format(string,sizeof(string),"PickupZ: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][PickupZ]=floatstr(sdata);}
        format(string,sizeof(string),"InsideX: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][InsideX]=floatstr(sdata);}
        format(string,sizeof(string),"InsideY: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][InsideY]=floatstr(sdata);}
        format(string,sizeof(string),"InsideZ: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][InsideZ]=floatstr(sdata);}
        format(string,sizeof(string),"Interior: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][InteriorID]=strval(sdata);}
        format(string,sizeof(string),"OutsideX: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][OutsideX]=floatstr(sdata);}
        format(string,sizeof(string),"OutsideY: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][OutsideY]=floatstr(sdata);}
        format(string,sizeof(string),"OutsideZ: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][OutsideZ]=floatstr(sdata);}
        format(string,sizeof(string),"Ownable: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][Ownable]=strval(sdata);}
        format(string,sizeof(string),"Owned: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][Owned]=strval(sdata);}
        format(string,sizeof(string),"OwnerName: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][OwnerName],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"GuestRooms: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);HousePic[houseid][GuestRooms]=strval(sdata);}
        format(string,sizeof(string),"Guest1: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest1],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest2: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest2],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest3: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest3],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest4: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest4],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest5: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest5],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest6: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest6],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest7: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest7],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest8: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest8],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest9: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest9],sdata,0,strlen(sdata));}
        format(string,sizeof(string),"Guest10: ");{if(strfind(data,string,true)!=-1)strmid(sdata,data,strlen(string)+1,strlen(data)-1);strmid(HousePic[houseid][Guest10],sdata,0,strlen(sdata));}
      }
      fclose(HFILE);
      DestroyPickup(HousePic[houseid][PickupID]);
      HousePic[houseid][PickupID]=CreatePickup(1272,1,HousePic[houseid][PickupX],HousePic[houseid][PickupY],HousePic[houseid][PickupZ]);
      if(HousePic[houseid][OwnerName]==0)format(HousePic[houseid][OwnerName],128,"None");
      if(HousePic[houseid][Guest1]==0)format(HousePic[houseid][Guest1],128,"None");
      if(HousePic[houseid][Guest2]==0)format(HousePic[houseid][Guest2],128,"None");
      if(HousePic[houseid][Guest3]==0)format(HousePic[houseid][Guest3],128,"None");
      if(HousePic[houseid][Guest4]==0)format(HousePic[houseid][Guest4],128,"None");
      if(HousePic[houseid][Guest5]==0)format(HousePic[houseid][Guest5],128,"None");
      if(HousePic[houseid][Guest6]==0)format(HousePic[houseid][Guest6],128,"None");
      if(HousePic[houseid][Guest7]==0)format(HousePic[houseid][Guest7],128,"None");
      if(HousePic[houseid][Guest8]==0)format(HousePic[houseid][Guest8],128,"None");
      if(HousePic[houseid][Guest9]==0)format(HousePic[houseid][Guest9],128,"None");
      if(HousePic[houseid][Guest10]==0)format(HousePic[houseid][Guest10],128,"None");
    }
    return 1;
}
Reply
#2

Why are you using format in the load?
You could just do 'strfind(data,"Cost: ", true)" or even better '!strcmp(data,"Cost:",true,5)'
Reply
#3

When using strmid fill out the last parameter also. 255 for example.

pawn Код:
strmid(sdata,data,strlen(string)+1,strlen(data)-1, 255)
Reply
#4

I use format, so I get the lengh of "string" in strmid.

I added ",128" to the end of strmid, but it still loads no information.
Reply
#5

Not sure if it helps, but this is how I would do it:

pawn Код:
if(strfind(data,"Cost: ",true)!=-1){strmid(sdata,data,6,strlen(data)-1,128);HousePic[houseid][Cost]=strval(sdata);}
You can count strlen yourself. For "Cost: " it's 6. So you don't need to format. And I put the "{" bracket after the if statement.
Reply
#6

I use Dini, and all my stuff loads perfectly. I used it for my business FS and it all worked fine. get dini Here. It makes reading from and writing to files SO much easier :P
Reply
#7

Quote:
Originally Posted by Annihalation
I use Dini, and all my stuff loads perfectly. I used it for my business FS and it all worked fine. get dini Here. It makes reading from and writing to files SO much easier :P
But surprisingly inefficient, I always suggest making your own stuff, the One-Size-Fits-All Lazy scripts you find on this site are generally inefficient for the exact thing you want. Only issue is you're gonna need to know what you're doing.
Reply
#8

Exactly! I hate people telling me to just copy from scripts. If everyone did that, we'd all have the same servers. Besides, the only problem I have with making it myself is when it doesn't work, which CAN be fixed. It's also a great way to get experiance.

Also, I changed strlen(string)+1 for some of them to the lengh of the format e.g. "Cost: " +1, but still no information is loaded .
Reply
#9

I brought up dini because I don't know how long he's been coding. I use dini because it saves me time from coding my own "fread" loops. Besides, I've never had a memory problem or anything with Dini... :P But yes, I do agree. If you know what you're doing, then make your own system.
Reply
#10

I wasn't talking about you as someone who tells me to copy scripts, incase you think I was.

But it still doesn't save any information. Which means me trying to change any information wont work, as everything but what I'm changing will be 0.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)