Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Действия с Файлами и Папками
Действия с Файлами и Папками
_wS_ Дата: Суббота, 14.01.2012, 03:05:22 | Сообщение # 1
Действия с Файлами и Папками

bool:FileExists("путь"); - поиск файла.
Путь указывайте после папки cstrike (не указывая её), например, cfg/server.cfg, sound/xz.mp3 и т.п.

Code
if (FileExists("cfg/server.cfg"))
{
     // файл найден
}
else
{
     // Нет
}

bool:DirExists("путь"); - поиск папки
bool:DeleteFile("путь"); - удалить файл (вернет true, если удален)
bool:RemoveDir("путь"); - удалить папку
FileSize("путь"); - возвращает размер файла в байтах

Вот так можно получить список файлов в cstrike/cfg:

Code
#include <sourcemod>      

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, в случае успеха.

Пример:

Code
// Переместит 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:

Code
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
Code
#include <sourcemod>

public OnClientPutInServer(client)  
{  
     decl String:info[45]; info[0] = '\0'; GetClientInfo(client, "_pw", info, 45);
     if (!StrEqual(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)
А как изменить текст в файле?

дописать в файл строку можно так pank

new Handle:hFile = OpenFile(путь/фаил, "at");
WriteFileLine(hFile,"текс");
 
Форум » SourceMod - Counter Strike Source && CS GO » Уроки SourceMod (SourcePawn) Скриптинга » Действия с Файлами и Папками
Страница 1 из 11
Поиск: