А если плагином sourcepawn?
Вы можете попробовать прочитать весь файл, пропустить нужную строку и перезаписать его. И да, я сейчас говорю не про массив, про который вы писали выше.А если плагином sourcepawn?
Во так записываю в файлPS: лучше бы прикрепить пример файла ._.
STEAM_0:1:259653923 | NEW NAME
STEAM_0:1:965543929 | we
STEAM_0:1:296855392 | 3213
Могу я поинтересоваться, в каких целях вы делаете такого рода файл? Возможно я не совсем понял, в чём ценность, но пока создания бд выглядит более правильным решением, имхо.Во так записываю в файл
C-подобный:STEAM_0:1:259653923 | NEW NAME STEAM_0:1:965543929 | we STEAM_0:1:296855392 | 3213
Может, стоит KV заюзать? Там вроде можно удалить ключ простоВо так записываю в файл
C-подобный:STEAM_0:1:259653923 | NEW NAME STEAM_0:1:965543929 | we STEAM_0:1:296855392 | 3213
Записываю кому админ сменил ник и при пере заходе из этого файла меняю ему обратно если он есть там.Могу я поинтересоваться, в каких целях вы делаете такого рода файл? Возможно я не совсем понял, в чём ценность, но пока создания бд выглядит более правильным решением, имхо.
Можно, но почему то захотел файлом. Если не найдется нормальное решение то придется KV использовать.Может, стоит KV заюзать? Там вроде можно удалить ключ просто
Тогда уже лучше KV использовать, дабы сохранить возможно ручного просмотра и редактирование файла без доп программ.может стоит таблицу в базе данных создать вместо файла?
public Action:Command_DeleteLegend(client, args)
{
new String:arg[128];
GetCmdArgString(arg, sizeof(arg));
if(StrContains(arg, "steam_", false) != -1)
{
new String:SteamID[128];
SteamID = arg;
TrimString(SteamID);
new check = FindStringInArray(Legends_Array, SteamID);
if(check != -1)
{
RemoveFromArray(Legends_Array, check);
new Handle:file;
file = OpenFile(Legends_File, "w");
for (new i = 0; i < GetArraySize(Legends_Array); i++)
{
new String:new_SteamID[128];
GetArrayString(Legends_Array, i, new_SteamID, sizeof(new_SteamID));
WriteFileLine(file, new_SteamID);
}
CloseHandle(file);
new String:i_SteamID[128];
for (new i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i))
{
GetClientAuthId(i, AuthId_Steam2, i_SteamID, sizeof(i_SteamID));
if(StrEqual(i_SteamID, SteamID))
{
PLAYER_LEGEND[i] = false;
break;
}
}
}
PrintToChat(client, " \x08[\x10Legends\x08] SteamID \x01%s\x08 успешно удалён из списка легенд.", SteamID);
}
else
{
PrintToChat(client, " \x08[\x10Legends\x08] Игрока со SteamID \x01%s\x08 нет в списке легенд.", SteamID);
}
}
else
{
new target = FindLegend(client, arg);
if(target != -1)
{
new String:SteamID[128];
GetClientAuthId(target, AuthId_Steam2, SteamID, sizeof(SteamID));
new check = FindStringInArray(Legends_Array, SteamID);
if(check != -1)
{
RemoveFromArray(Legends_Array, check);
new Handle:file;
file = OpenFile(Legends_File, "w");
for (new i = 0; i < GetArraySize(Legends_Array); i++)
{
new String:new_SteamID[128];
GetArrayString(Legends_Array, i, new_SteamID, sizeof(new_SteamID));
WriteFileLine(file, new_SteamID);
}
CloseHandle(file);
PrintToChat(client, " \x08[\x10Legends\x08] Игрок \x01%N\x08 (\x01%s\x08) успешно удалён из списка легенд.", target, SteamID);
PLAYER_LEGEND[target] = false;
}
else
{
PrintToChat(client, " \x08[\x10Legends\x08] Игрока \x01%N\x08 (\x01%s\x08) нет в списке легенд.", target, SteamID);
}
}
else PrintToChat(client, " \x08[\x10Legends\x08] Игрока не найден, используйте удаление по SteamID.");
}
return Plugin_Stop;
}
char szPath[256];
BuildPath(Path_SM, szPath, sizeof(szPath), "configs/file.txt");
File hFile = OpenFile(szPath, "r");
ArrayList hList = new ArrayList(ByteCountToCells(128));
char szLine[128];
while(!hFile.EndOfFile() && hFile.ReadLine(szLine, sizeof(szLine)))
{
if(StrContains(szLine, "we") == -1)
{
hList.PushString(szLine);
}
}
delete hFile;
if(hList.Length > 0)
{
hFile = OpenFile(szPath, "w");
char szBuffer[128];
for(int i = 0; i < hList.Length; i++)
{
hList.GetString(i, szBuffer, sizeof(szBuffer));
TrimString(szBuffer);
hFile.WriteLine(szBuffer, false);
}
delete hFile;
}
delete hList;
блокнот - это тоже доп.программаТогда уже лучше KV использовать, дабы сохранить возможно ручного просмотра и редактирование файла без доп программ.