LuxurY forum (scripting SA-MP)

Объявление

с 29 марта 2007 года
LuxurY forum - крупнейший российский форум скриптинга в PAWNO
Новый форум
Задавайте свои вопросы

Архив скриптов


Наша кнопка:
LuxurY forum :: Scripting SA-MP
Код:

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



dini.inc

Сообщений 1 страница 10 из 10

1

Библиотека Dini создана для сохранения данных в файл.
Скачать последнюю версию Dini.inc v. 1.4.1 можно тут
Но для работы с Dini нужно скачать библиотеку DUtils. Скачать последнюю версию DUtils.inc v. 1.7 можно тут
Так же для более удобной работы с dini.inc рекомендую скачать a-dini

Все эти три файла нужно поместить в директорию: */samp-server/pawno/includes

И в своем скрипте добавить две строчки:
#include <Dini>
#include <DUtils>

Основные функции Dini.inc

dini_Exists

Параметры:
(filename[])

filename[] - имя файла для проверки

Если файл не существует, то команда возвращается

Пример:

Код:
dini_Exists("logs.txt");

--------------------------------------------------------------------------------------------------

dini_Remove

Эта команда удаляет файл с определенным именем

Параметры:
(filename[])

filename[] - имя файла, которые будет удален

Пример:

Код:
dini_Remove("logs.txt");

--------------------------------------------------------------------------------------------------

dini_Create
Эта команда создает файл с определенным названием

Параметры:
(filename[])

filename[] - имя файла, который будет создан

Пример:

Код:
dini_Create("logs.txt");

--------------------------------------------------------------------------------------------------

dini_Set

Записывает в определенный файл текст в строчку с определенным названием.

Параметры:
(filename[],key[],value[])

filename[] - имя файла, который будет открыт

key[] - обозначение сохраняемых данных

value[] - сохраняемые данные (текст)

Пример:

Код:
dini_Set("logs.txt","Servername","A SA:MP Server");

--------------------------------------------------------------------------------------------------

dini_IntSet

Записывает в определенный файл число в строчку с определенным названием.

Параметры:
(filename[],key[],value)

filename[] - имя файла, который будет открыт

key[] - обозначение сохраняемых данных

value - сохраняемые данные (число)

Пример:

Код:
dini_Set("logs.txt","Servermaxplayers",50);

--------------------------------------------------------------------------------------------------

dini_BoolSet

Устанавливает "истина" (true) или "ложь" (false) в файл с определенным именем и в строчку с определенным названием.

Параметры:
(filename[],key[],value)

filename[] - файл, который будет открыт

key[] - обозначение сохраняемых данных

value - Установить для результатов "истина" (true) или "ложь" (false). 

Пример:

Код:
dini_BoolSet("logs.txt","Serveractive",true);

--------------------------------------------------------------------------------------------------

dini_FloatSet

Записывает в файл переменную величину

Параметры:
(filename[],key[],Float:value)

filename[] - файл, который будет открыт

key[] - обозначение сохраняемых данных

Float:value - переменная величина

Пример:

Код:
dini_FloatSet("logs.txt","PlayerposX",50.124);

--------------------------------------------------------------------------------------------------

dini_Isset

Проверяет установлено ли обозначение строки или нет

Параметры:
(filename[],key[])

filename[] - файл, в который будет задействован

key[] - обозначение строки

Пример:

Код:
dini_Isset("logs.txt","money");

--------------------------------------------------------------------------------------------------

dini_Get

Берет значение из определенного файла и строки.

Параметры:
(filename[],key[])

filename[] - файл, в который будет задействован

key[] - обозначение строки, из которой мы берем значение

Пример:

Код:
dini_Get("spawn.txt","money");

--------------------------------------------------------------------------------------------------

dini_Unset

Удаляет значение из определенного файла и строки.

Параметры:
(filename[],key[])

filename[] - файл, который будет задействован

key[] - обозначение строки, в которой вы удаляем значение

Пример:

Код:
dini_Unset("properties.txt","owner");

--------------------------------------------------------------------------------------------------

Float:dini_Float

Берет переменную из определенного файла и определенной строки

Параметры:
(filename[],key[])

filename[] - файл, который будет задействован

key[] - обозначение строки, в которой проверяем переменную

Пример:

Код:
dini_Float("logs.txt","height");

--------------------------------------------------------------------------------------------------

dini_Int

Берет число из определенного файла и определенной строки

Параметры:
(filename[],key[])

filename[] - файл, который будет задействован

key[] - обозначение строки, в которой проверяем число

Пример:

Код:
dini_Int("logs.txt","maxplayers");

--------------------------------------------------------------------------------------------------

dini_Bool

Берет "истину" (true) или "ложь" (false) из определенного файла и определенной строки

Параметры:
(filename[],key[])

filename[] - файл, который будет задействован

key[] - обозначение строки, в которой проверяем "истина" (true) или "ложь" (false)

Пример:

Код:
dini_Bool("acertainfile.txt","maxplayers");

===========================================================

Все эти команды можно использовать в любых функциях.

Вот например:

Код:
new PlayerCount;
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, 0x00FF00AA, "Wellcome!");
PlayerCount++;
if (!dini_Exists("OnlinePlayers.txt")) {
dini_Create("OnlinePlayers.txt");
return 1;
}
else {
printf("Server: There are %d players", PlayerCount);
dini_IntSet("OnlinePlayers.txt","Players",PlayerCount);
    return 1;
    }
    return 0;
}

При заходе игрока в консоли сервера будет писаться количество онлайн игроков, и количество онлайн игроков будет записываеть в файл OnlinePlayers.txt Естественно можно добавить запись даты, ников игроков, их ID итд.

Да кстати если будете использовать этот код, то добавьте еще:

Код:
public OnPlayerDisconnect(playerid)
{
PlayerCount--;
if (!dini_Exists("OnlinePlayers.txt")) {
dini_Create("OnlinePlayers.txt");
return 1;
}
else {
printf("Server: There are %d players", PlayerCount);
dini_IntSet("OnlinePlayers.txt","Players",PlayerCount);
    return 1;
    }
    return 0;
}

Удачи!

0

2

divine посмотри все правильно?

0

3

dini_Float(), dini_Int(), dini_Bool() получают переменную соответствующего типа из файла, а ничего не проверяют. В остальном все правильно только не очень понятно, что ты имел под "возвращаются-не возвращаются". Вообще-то возвращают значение только "Get..."- и "Is..."-функции. Функции "Set..." ничего не возвращают (смотри определение функций), их задача только заносить данные в файл.
Только один вопрос: ты сам понял то, что здесь написал? :)

0

4

divine написал(а):

dini_Float(), dini_Int(), dini_Bool() получают переменную соответствующего типа из файла, а ничего не проверяют. В остальном все правильно только не очень понятно, что ты имел под "возвращаются-не возвращаются". Вообще-то возвращают значение только "Get..."- и "Is..."-функции. Функции "Set..." ничего не возвращают (смотри определение функций), их задача только заносить данные в файл.
Только один вопрос: ты сам понял то, что здесь написал?

так то я понял, кроме dini_Float(), dini_Int(), dini_Bool(),
просто я с wiki это все дело переводил, вот и не очень понятно получилось
"возвращаются-не возвращаются" я удалил

0

5

Перезалейте плз "Dini.inc v. 1.4.1", "DUtils.inc v. 1.7",  "a-dini"

0

6

BeLuY написал(а):

Перезалейте плз "Dini.inc v. 1.4.1", "DUtils.inc v. 1.7",  "a-dini"

поиск

0

7

Скажите мне зачем я это сделал?
=====================
http://ldt.jino-net.ru/index.php
=====================

0

8

Есть ли какие-то ограничения на длину/размер/количество строк в файлах, используемых dini?
Это все функции dini? Или есть еще?

Отредактировано maul (2007-11-21 18:46:53)

0

9

maul написал(а):

Есть ли какие-то ограничения на длину/размер/количество строк в файлах, используемых dini?
Это все функции dini? Или есть еще?

Строка не должна быть больше 255, это главное. Целое число не должно превышать разрешенной величины целых чисел (это не связано с dini, это предел возможностей самого языка и использующих его модулей).
А вообще при работе с dini могут возникнуть проблемы другого рода. Некоторые функции могут просто не выполнятся по причине превышения памяти, выделенной под новые динамические переменные (из-за большого количества новых строк). Именно с этой проблемой я столкнулся при разработке своего режима. Это продлена не кода, это проблема компилирования. Чтобы этого избежать, нужно установить дополнительный параметр компилирования:

Код:
#pragma dynamic 8192

Число может быть любым, деляшимся на 4, указанного числа мне вполне хватило для нормального функуионирования моего режима. Не думаю, что у тебя режим будет сложнее моего, но если будут подобные проблемы, увеличь это число.

0

10

divine написал(а):

Число может быть любым, деляшимся на 4, указанного числа мне вполне хватило для нормального функуионирования моего режима. Не думаю, что у тебя режим будет сложнее моего, но если будут подобные проблемы, увеличь это число.

ты разве с дини свой мод делал?

0