Написание плагинов

Костян

Участник
Сообщения
42
Реакции
0
Компилить плагин по новой? Зачем? Ведь вам скинули пример добавления стим айди и путь до звука к ним, что то я не понимаю зачем компилить плагин.
Я как бы выше написал, что есть желание самому сделать плагин, в котором будет просто стим и музыка к нему, без всяких остальных звуков бомбы и т.д., поэтому мне нужен пример как подключить конфиг к плагину в котором будет так же вноситься стим и путь до звука.
--- Добавлено позже ---
в коде плагина в пути к файлу конфига поменять расширение
Так это понятно что поменять расширение,а как подключить и конфиг? чтоб плагин с него брал стим и путь до файла.
--- Добавлено позже ---
[HIDE=""]#include <sdktools>
#include <clientprefs>
#define DOWNLOADLIST_PATH "addons/sourcemod/configs/down.cfg"
#define PLUGIN_VERSION "0.1"
public Plugin:myinfo =
{
name = "j",
author = "j",
description = "j",
version = PLUGIN_VERSION,
url = "j"
}
public OnMapStart()
{
new Handle:file = OpenFile(DOWNLOADLIST_PATH, "r");
if (file == INVALID_HANDLE)
{
SetFailState("Не удалось открыть cfg/down.cfg");
return;
}
decl String:path[150];
while (!IsEndOfFile(file) && ReadFileLine(file, path, 150))
{
TrimString(path);
if (IsCharAlpha(path[0])) AddFileToDownloadsTable(path);
}
CloseHandle(file);
}[/HIDE] Вот как бы пример просто изменил расширение, а дальше то что? нужно ведь еще, что то добавить чтоб допустим из конфига считал просто путь до файла.
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Вот как бы пример просто изменил расширение, а дальше то что? нужно ведь еще, что то добавить чтоб допустим из конфига считал просто путь до файла.
Ну дк что мешает добавить в этот "конфиг" путь до файла?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Костян, просто открой исходник любого плагина, использующего файлы конфига, и посмотри как там реализовано чтение конфига
 

Костян

Участник
Сообщения
42
Реакции
0
@Костян, просто открой исходник любого плагина, использующего файлы конфига, и посмотри как там реализовано чтение конфига
Да смотрел, но нет комментариев от этого все больше не понятного.
--- Добавлено позже ---
Была тема по написанию плагинов, стала тема по поиску плагинов.
--- Добавлено позже ---
Ладно, раз все так сложно, тогда кто может мне написать плагин? Естественно не бесплатно.
 
Последнее редактирование:

Костян

Участник
Сообщения
42
Реакции
0
Ну вот взял я за основу этот плагин steamprotect тут вот такая функция
PHP:
public OnPluginStart()
{
  RegServerCmd("sp_add",cmdcallbackadd);
  RegServerCmd("sp_del",cmdcallbackdel);
  new Handle:db = CreateKeyValues("steamprotect");
  KvJumpToKey(db,"Steam",true); // эти  строчки отвечают за то, что в файле на сервере прописано?
  KvSetString(db,"login","login");//
  KvSetString(db,"password","Password");// или же за то что у клиента прописан пароль и логин
  KvRewind(db);
  if (!FileToKeyValues(db,DOWNLOADLIST_PATH))  // или же если нет файла по этому адресу на сервере то создать его?
  {
    KeyValuesToFile(db,DOWNLOADLIST_PATH);
  }
  CloseHandle(db);
}
--- Добавлено позже ---
Если без комментариев код непонятен, то нужно или ещё подучиться, или вообще в код не лезть.
А где учится то ? То что есть в интернете либо нет вообще примеров либо просто не понятно. По этому и прошу пример с комментариями, чтоб понимание было.
 
Последнее редактирование модератором:

Костян

Участник
Сообщения
42
Реакции
0
Спасибо!
--- Добавлено позже ---
Ни как не получается сделать правильно. Может кто ни будь помочь?
[HIDE=""]public OnPluginStart()
{
new Handle:db = CreateKeyValues("stim_sound");
new String:sound[150];
KvJumpToKey(db,"Steam",true);
KvSetString(db,"sound"," ");
KvSetString(db,"text"," ");
KvSetString(db,"time"," ");
KvRewind(db);
if (!FileToKeyValues(db,DOWNLOADLIST_PATH))
{
KeyValuesToFile(db,DOWNLOADLIST_PATH);
}
if (KvJumpToKey(db,sound,false))
{
KvGetString(db,"sound",sound,sizeof(sound));
decl String:path[150];
while (!IsEndOfFile(sound) && ReadFileLine(sound, path, 150)) // вот эта строка
{
TrimString(path);
if (IsCharAlpha(path[0])) AddFileToDownloadsTable(path);
}
}
CloseHandle(db);
}[/HIDE]
Ошибка
/home/groups/sourcemod/upload_tmp/phpoa9DLZ.sp(37) : error 035: argument type mismatch (argument 1)
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
как ты можешь читать строку из файла (ReadFileLine), если ты сам файл не открыл?
И у этой функции первый параметр - хэндл, а не строка
Примерно должно выглядеть примерно так, как сделано вот тут:
PHP:
    new String:buffer[PLATFORM_MAX_PATH], String:file[PLATFORM_MAX_PATH];

    BuildPath(Path_SM, file, PLATFORM_MAX_PATH, путь_к_конфигу);
    Handle fileh = OpenFile(file, "r");
    while(!IsEndOfFile(fileh) && ReadFileLine(fileh, buffer, PLATFORM_MAX_PATH))
    {
        TrimString(buffer);

        if((StrEqual(buffer[strlen(buffer)-4], ".wav", false) || StrEqual(buffer[strlen(buffer)-4], ".mp3", false)) && FileExists(buffer))
        {
            AddFileToDownloadsTable(buffer);
            PrecacheSound(buffer, true);
        }
    }
    if(fileh != null) CloseHandle(fileh);
Но это только для простого списка файлов
 

Костян

Участник
Сообщения
42
Реакции
0
как ты можешь читать строку из файла (ReadFileLine), если ты сам файл не открыл?
И у этой функции первый параметр - хэндл, а не строка
Примерно должно выглядеть примерно так, как сделано вот тут:
PHP:
    new String:buffer[PLATFORM_MAX_PATH], String:file[PLATFORM_MAX_PATH];

    BuildPath(Path_SM, file, PLATFORM_MAX_PATH, путь_к_конфигу);
    Handle fileh = OpenFile(file, "r");
    while(!IsEndOfFile(fileh) && ReadFileLine(fileh, buffer, PLATFORM_MAX_PATH))
    {
        TrimString(buffer);

        if((StrEqual(buffer[strlen(buffer)-4], ".wav", false) || StrEqual(buffer[strlen(buffer)-4], ".mp3", false)) && FileExists(buffer))
        {
            AddFileToDownloadsTable(buffer);
            PrecacheSound(buffer, true);
        }
    }
    if(fileh != null) CloseHandle(fileh);
Но это только для простого списка файлов
Да! Но как из файла мне сюда вытянуть то, что мне нужно? Вот ни как не могу сообразить. Ладно пока, что отложу чуть позже продолжу с ним бороться.
 

AlexPa1

Участник
Сообщения
292
Реакции
54
Как изменить иконку которая появляется над игроком который разговаривает?
 

AlexPa1

Участник
Сообщения
292
Реакции
54
Есть ли плагин променю (не для зомби) что-бы игрок открыл меню и поставил проп туда куда смотрит его прицел?
 
Сверху Снизу