Manifest
Ура, не такой как все
- Сообщения
- 181
- Реакции
- 128
Данный пользователь был уличен в использовании бэкдора в приватных плагинах. Крайне не рекомендуется покупать какие либо товары у пользователя.
Поскольку когда-то мной разрабатывался RPG с очень гибким (как пластилин) функционалом. Я начал придумывать как можно горе-серверостроителям облегчить задачу по установке модулей.
Генерация конфигов конечно дело хорошее, но без комментариев трудно разобрать работу параметров, а для этого уже требуется вмешательство юзера, что не даёт нам сгенерировать конфигурацию «слёту» для чего я и придумал интересную ф-ию, а также дополнил своеобразную библиотеку.
Библиотека будет дополняться, если увижу интересные предложения
Генерация конфигов конечно дело хорошее, но без комментариев трудно разобрать работу параметров, а для этого уже требуется вмешательство юзера, что не даёт нам сгенерировать конфигурацию «слёту» для чего я и придумал интересную ф-ию, а также дополнил своеобразную библиотеку.
C++:
/*
*
* ┌────────┐ ┌───────┐
* / /\ \ | ┌────┘
* / / \ \ | |
* / /____\ \ | |────┐
* | ______ | | |────┘
* └──┘ └──┘ └──┘
*
* ┌────────────┐ ┌────────┐ ┌───── ┌──┐ ┌──┐ ┌───────┐ ┌──────┐ ┌─────┐ ┌──────┐
* | | / /\ \ | \ | | └──┘ | ┌────┘ | ┌───┘ | ┌──┘ └─┐ ┌─┘
* | ┌─┐ ┌─┐ | / / \ \ | ┌─ \| | ┌──┐ | | | └───┐ | └──┐ | |
* | | | | | | / /____\ \ | | \ \ | | | | |────┐ | ┌───┘ └───┐ | | |
* | | └──┘ | | | ______ | | | \ | | | | |────┘ | └───┐ ┌───┘ | | |
* └──┘ └──┘ └──┘ └──┘ └──┘ └───┘ └──┘ └──┘ └──────┘ └─────┘ └──┘
*
*
* Библиотека дополняющая/упрощающая работу с базовым функционалом SourceMod
* Версия: 0.2
* Автор: Manifest
* Контакты: VK id247879676 | HLMod @Manifest | Telegram: @official_manifest
*/
#define TO_STEAM3 0
#define TO_STEAM2 1
methodmap Additional_Funcs
{
public static bool CopyFile(const char[] szFileCopy, char[] szFileNew)
{
if (FileExists(szFileCopy)) {
char sLine[PLATFORM_MAX_PATH];
Handle hFileOld = OpenFile(szFileCopy, "r");
Handle hFileNew = OpenFile(szFileNew, "w");
while (!IsEndOfFile(hFileOld) && ReadFileLine(hFileOld, sLine, PLATFORM_MAX_PATH)) {
if (TrimString(sLine))
{
WriteFileLine(hFileNew, sLine);
}
}
delete hFileOld;
delete hFileNew;
return true;
} else {
ThrowError("[AF] File \"%s\" is not exist!");
}
return false;
}
public static int Comment(const char[] sPath, const char[] sParametr, char[] sComment, bool Recusrsive)
{
if (FileExists(sPath))
{
char szLabel[256];
char sLine[PLATFORM_MAX_PATH];
int iTime = GetTime();
Format(szLabel, sizeof szLabel, "action_%d%d", iTime, GetRandomInt(0, 9)); // the label of the file
char szPathLabel[PLATFORM_MAX_PATH];
Format(szPathLabel, sizeof szPathLabel, "addons/sourcemod/%s.txt", szLabel);
Handle hFileEdit = OpenFile(sPath, "r");
Handle hFileFinish = OpenFile(szPathLabel, "w");
while (!IsEndOfFile(hFileEdit) && ReadFileLine(hFileEdit, sLine, PLATFORM_MAX_PATH))
{
ReplaceString(sLine, sizeof sLine, "\n", ""); // test
if (StrContains(sLine, sParametr) > 0)
{
Format(sLine, sizeof sLine, "%s // %s", sLine, sComment);
WriteFileLine(hFileFinish, sLine);
if (!Recusrsive)
break;
} else {
WriteFileLine(hFileFinish, sLine);
}
}
delete hFileEdit;
delete hFileFinish;
DeleteFile(sPath); // delete original file
RenameFile(sPath, szPathLabel); // copy new file
}
return true;
}
public static int ConvertSteam(int ConvertType, const char[] OriginalSteam, char[] ConvertedSteam, int iLen)
{
char szBuffer[64];
strcopy(szBuffer, sizeof szBuffer, OriginalSteam);
switch (ConvertType)
{
case 0:
{
if (StrContains(szBuffer, "STEAM_0:1:") > 0)
ReplaceString(szBuffer, sizeof szBuffer, "STEAM_0:1:", "", true);
else
ReplaceString(szBuffer, sizeof szBuffer, "STEAM_0:0:", "", true);
int iDig = StringToInt(szBuffer);
iDig = iDig * 2;
Format(szBuffer, sizeof szBuffer, "[U:1:%d]", iDig);
}
case 1:
{
ReplaceString(szBuffer, sizeof szBuffer, "[U:1:", "", true);
ReplaceString(szBuffer, sizeof szBuffer, "]", "", true);
int iDig = StringToInt(szBuffer) / 2;
int iMod = StringToInt(szBuffer) % 2;
Format(szBuffer, sizeof szBuffer, "STEAM_0:%d:%d", iMod, iDig);
}
default:
{
strcopy(ConvertedSteam, iLen, "INVALID_STEAM");
}
}
strcopy(ConvertedSteam, iLen, szBuffer);
return true;
}
}
// Additional_Funcs.CopyFile(const char[] szFileCopy, char[] szFileNew)
Копирует файл из одной директории в другую
Копирует файл из одной директории в другую
// Additional_Funcs.Comment(const char[] sPath, const char[] sParametr, char[] sComment, bool Recusrsive)
То, ради чего вся библиотека и задумывалась
Позволяет комментировать параметры файлов, причём как первого совпадения, так и рекурсивно (всех попадающих под условия параметров)
TODO:
Смещения: Возможность определить порядок комментирования параметра
То, ради чего вся библиотека и задумывалась
Позволяет комментировать параметры файлов, причём как первого совпадения, так и рекурсивно (всех попадающих под условия параметров)
TODO:
Смещения: Возможность определить порядок комментирования параметра
// Additional_Funcs.ConvertSteam(int ConvertType, const char[] OriginalSteam, char[] ConvertedSteam, int iLen)
Функция протестировать мне так и не довелось, даже не помню насколько она рабочая
Позволяет конвертировать STEAM3->STEAM2 и наоборот
Алгоритм был взят с PHP скрипта и переписан под Pawn
Функция протестировать мне так и не довелось, даже не помню насколько она рабочая
Позволяет конвертировать STEAM3->STEAM2 и наоборот
Алгоритм был взят с PHP скрипта и переписан под Pawn
Библиотека будет дополняться, если увижу интересные предложения
