Действия с Файлами и Папками
|
|
_wS_
|
Дата: Суббота, 14.01.2012, 03:05:22 | Сообщение # 1 |
|
Действия с Файлами и Папками
bool:FileExists("путь"); - поиск файла. Путь указывайте после папки cstrike (не указывая её), например, cfg/server.cfg, sound/xz.mp3 и т.п.
Код if (FileExists("cfg/server.cfg")) { // файл найден } else { // Нет } bool:DirExists("путь"); - поиск папки bool:DeleteFile("путь"); - удалить файл (вернет true, если удален) bool:RemoveDir("путь"); - удалить папку FileSize("путь"); - возвращает размер файла в байтах
Вот так можно получить список файлов в cstrike/cfg:
Код public OnPluginStart() { new Handle:dir = OpenDirectory("cfg/"); if (dir != INVALID_HANDLE) { decl String:Name[100]; new x = 0, FileType:type; while (ReadDirEntry(dir, Name, 100, type)) { if (type == FileType_File) { PrintToServer("%d. %s", ++x, Name); } } CloseHandle(dir); } else { PrintToServer("Не удалось открыть директорию"); } } FileType_Unknown - неизвестный тип файла FileType_Directory - папка FileType_File - файл
bool:RenameFile(const String:newpath[], const String:oldpath[]); Перемещает файл "oldpath" в "newpath" - можно даже изменить ему имя. Вернёт true, в случае успеха.
Пример:
Код // Переместит OldName.txt в папку cstrike/ с новым именем "NewName.txt" RenameFile("NewName.txt", "cfg/OldName.txt");
|
|
| |
Santa8725
|
Дата: Понедельник, 09.07.2012, 09:38:07 | Сообщение # 2 |
|
Сообщений: 10
Репутация: 0 [ +/- ]
|
|
А как проверить имеется ли запись в файле у клиента? Ну или введена ли команда setinfo "" ""
Сообщение отредактировал Santa8725 - Понедельник, 09.07.2012, 09:38:39 |
|
| |
_wS_
|
Дата: Понедельник, 09.07.2012, 09:40:20 | Сообщение # 3 |
|
Это уже зависит от типа записи (удобно использовать keyvalues). Можно и SQLite, MYSQL. А, у самого клиента? Хм, так нельзя, можно только узнавать значения переменных.
На счет setinfo:
Код public OnClientPutInServer(client) { decl String:info[45]; info[0] = '\0'; GetClientInfo(client, "xz", info, 45); PrintToChat(client, "setinfo xz = \"%s\"", info); }
|
|
| |
Santa8725
|
Дата: Понедельник, 09.07.2012, 09:54:53 | Сообщение # 4 |
|
Сообщений: 10
Репутация: 0 [ +/- ]
|
|
Quote (_wS_) Это уже зависит от типа записи (удобно использовать keyvalues). Можно и SQLite, MYSQL. А, у самого клиента? Хм, так нельзя, можно только узнавать значения переменных.
На счет setinfo:
public OnClientPutInServer(client) { decl String:info[45]; info[0] = '\0'; GetClientInfo(client, "xz", info, 45); PrintToChat(client, "setinfo xz = \"%s\"", info); } Спасибо, а можно по подробнее с setinfo) Как например проверить, прописано ли setinfo "_pw" "12345" в консоле у клиента То есть код (в данном случае 12345) будет постоянно одинаоквым
|
|
| |
_wS_
|
Дата: Понедельник, 09.07.2012, 10:11:29 | Сообщение # 5 |
|
Код #include <sourcemod>
public OnClientPutInServer(client) { decl String:info[64]; info[0] = 0; GetClientInfo(client, "_pw", info, sizeof(info)); if (!strcmp(info, "12345")) { // пароль совпал } else { // не совпал } }
|
|
| |
Santa8725
|
Дата: Вторник, 10.07.2012, 10:00:14 | Сообщение # 6 |
|
Сообщений: 10
Репутация: 0 [ +/- ]
|
|
Еще раз спасибо)Добавлено (10.07.2012, 10:00:14) --------------------------------------------- А как изменить текст в файле?
|
|
| |
«Ba[r]oN»
|
Дата: Вторник, 13.11.2012, 10:05:45 | Сообщение # 7 |
|
Сообщений: 3
Репутация: 0 [ +/- ]
|
|
Quote (Santa8725) А как изменить текст в файле? дописать в файл строку можно так
new Handle:hFile = OpenFile(путь/фаил, "at"); WriteFileLine(hFile,"текс");
|
|
| |
GreenBytes
|
Дата: Воскресенье, 05.01.2020, 11:08:46 | Сообщение # 8 |
|
Сообщений: 19
Репутация: 0 [ +/- ]
|
|
Добрый день, не подскажите как прочитать файл по строке ?
|
|
| |
_wS_
|
Дата: Воскресенье, 05.01.2020, 11:19:20 | Сообщение # 9 |
|
Код new Handle:hFile = OpenFile("cfg/server.cfg", "rt"); if (hFile != INVALID_HANDLE) { decl String:s[512]; while (!IsEndOfFile(hFile) && ReadFileLine(hFile, s, sizeof(s))) { PrintToServer(s); } CloseHandle(hFile); }
|
|
| |
GreenBytes
|
Дата: Воскресенье, 05.01.2020, 11:47:57 | Сообщение # 10 |
|
Сообщений: 19
Репутация: 0 [ +/- ]
|
|
_wS_, как убрать \r\n ? Т.к оно тоже записывается и получается что отступает на след. строку.
|
|
| |
_wS_
|
Дата: Воскресенье, 05.01.2020, 11:54:33 | Сообщение # 11 |
|
Может TrimString(s)
|
|
| |
GreenBytes
|
Дата: Воскресенье, 05.01.2020, 12:02:48 | Сообщение # 12 |
|
Сообщений: 19
Репутация: 0 [ +/- ]
|
|
_wS_, выводит кракозябры, в справке написано UTF-8
|
|
| |
_wS_
|
Дата: Воскресенье, 05.01.2020, 12:06:20 | Сообщение # 13 |
|
Не знаю, у меня и utf-8 и utf-8 без bom вывело правильно.
|
|
| |
GreenBytes
|
Дата: Воскресенье, 05.01.2020, 12:33:43 | Сообщение # 14 |
|
Сообщений: 19
Репутация: 0 [ +/- ]
|
|
_wS_, я понял в чем причина была. Теперь еще вопросик, файл читается построчно, в файле записаны расположения файлов для добавления в таблицу загрузки. как прочитать расширение .mdl к примеру, чтоб автоматически его кешировать на сервере.
|
|
| |
_wS_
|
Дата: Воскресенье, 05.01.2020, 13:09:31 | Сообщение # 15 |
|
addons\sourcemod\scripting\include\string.inc StrContains, FindCharInString и др.
|
|
| |