Retrieving one line from a player file.
#1

Hello,

I have a player file created with Y_INI, however I only want to load one line from this file. The way I want to do this is with native SAMP File Functions (Found here: https://sampwiki.blast.hk/wiki/File_Functions), however I cannot make head or tail of it.

The line I want to retrieve is: "IP = ***.***.***.***"

I do not want to parse the whole file as the player isn't going to be actively online for this function, however I also don't want to use Y_INI to parse one line of information.

I have tried attempting this myself:
pawn Код:
new File:PlayerIP = fopen(LuckyGuy, io_read);
    new string[15 + 5];
    while(fread(PlayerIP, string))
    {
        if(strcmp(string, "IP = ", true)==0)
        {
            strmid(string, string, 5, 20, 15);
        }
    }

    format(LuckyGuy, sizeof(LuckyGuy), Ban_Path, string);
    if(fremove(LuckyGuy)) return SendClientMessage(playerid, COLOR_RED, "|-- Error: Account Deletion Failed!");
As you can see here I am trying to delete a ban file using the IP from within "LuckyGuys" file, which I have set this to the correct path.

pawn Код:
format(LuckyGuy, sizeof(LuckyGuy), PATH, LuckyGuy);
This is shown here by the inital LuckyGuy result back from sccanf is being formatted into string.
Reply
#2

Anyone?
Reply
#3

pawn Код:
new File:PlayerIP = fopen(LuckyGuy, io_read);
new string[MAX_PLAYER_NAME],len;
while((len = fread(PlayerIP, string)))
    if(strcmp(string, "IP = ", true)==0)
    {
        string[len-2] = 0;
        strdel(string,0,5);
        break; // stop searching
    }

fclose(PlayerIP);
format(LuckyGuy, sizeof(LuckyGuy), Ban_Path, string);
if(!fremove(LuckyGuy)) return SendClientMessage(playerid, COLOR_RED, "|-- Error: Account Deletion Failed!");
Reply
#4

when I type their correct name, it says it's an unknown command, with the "break".
Reply
#5

You need type some IP and use print under every line then you will see where code stops
Reply
#6

pawn Код:
CMD:unban(playerid, params[])
{
    new LuckyGuy[MAX_PLAYER_NAME + 6 + 4];
    if(PlayerInfo[playerid][pAdmin] <= 4) return SendClientMessage(playerid, COLOR_RED, "Error: "COL_WHITE" You're not a high enough Administrator.");
    if(sscanf(params, "s[24]", LuckyGuy)) return SendClientMessage(playerid, COLOR_RED, "Error: "COL_WHITE"/unban [Name] (Example: Jammie Dodger)");

    format(LuckyGuy, sizeof(LuckyGuy), PATH, LuckyGuy);

    if(!fexist(LuckyGuy)) return SendClientMessage(playerid, COLOR_RED, "Error: Player doesn't exist! (Tips: Don't use _ | Example Jammie Dodger)");

    new INI:File = INI_Open(LuckyGuy);
    print("File opened");
    INI_SetTag(File, "Statistics");
    print("SetTag");
    INI_WriteInt(File, "Banned", 0);
    print("Set banned");
    INI_Close(File);
    print("Closed File.");
   
    new File:PlayerIP = fopen(LuckyGuy, io_read);
    new string[16 + 7],len;
    while((len = fread(PlayerIP, string)))
    if(strcmp(string, "IP = ", true)==0)
    {
        string[len-2] = 0;
        strdel(string,0,5);
        break; // stop searching
    }

    format(LuckyGuy, sizeof(LuckyGuy), Ban_Path, string);
    if(!fremove(LuckyGuy)) return SendClientMessage(playerid, COLOR_RED, "|-- Error: Account Deletion Failed!");
    SendClientMessage(playerid, COLOR_GREEN, "Account Unbanned!");
    return 1;
}
This says Unknown command..
"/ban player name" 2 parameters? It says it's an unknown command.

E: This is the debug although it said it's an unknown command:
Код:
[19:53:48] File opened
[19:53:48] SetTag
[19:53:48] Set banned
Reply
#7

hey!

try this..

do like this:

Код:
new File:PlayerIP = fopen(LuckyGuy, io_read);
new string[50], Ip[20];
while (fread(PlayerIP, string))
{
     if(!strcmp(string, "IP = ",true, strlen("IP = ")))
     {
            strmid(Ip, string, strlen("IP = "), strlen(string) - 2);
     }
}
Reply
#8

pawn Код:
new
    name[6],
    value[16];
       
new File:PlayerIP = fopen(LuckyGuy, io_read);
new string[24];
   
while(fread(PlayerIP, string))
{
    if(!sscanf(string, "P<= >", name, value))
    {
        if(!strcmp(name, "IP ="))
        {
            //code
            break;
        }
    }
}
fclose(PlayerIP);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)