SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian > Релизы/Releases

Reply
 
Thread Tools Display Modes
Old 19/04/2010, 06:17 PM   #1
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Default [INC] Power INI v0.2

Power INI
самый функциональный INI ридер / райтер

Что это за скрипт?
- Это инклуд файл, который является библиотекой функций для чтения и записи INI файлов.

Какие возможности?
[Поддержка секций] - ещё их называют разделами/заголовками
# Поддержка строчных комментариев - сивмолы ; и #
# Можно открывать несколько файлов одновременно
# Сохранение оригинального формата файла
# Поддержка русских секций/ключей/значений/коментов
# Имена/значения могут содержать любые символы
# Пробельные символы ( \t \r \n пробел ) по бокам имен/значений считаются отступами
# Хранение временных данных в сжатом виде в динамической области памяти
# Возможность отслеживать коды и причины ошибок открытия/чтения/записи

Как использовать?
- Поместить файл power_ini.inc в папку {папка сервера}/pawno/include
- В самом верху вашего скрипта после строки #include <a_samp> добавить строку #include <power_ini>
- Использовать нижеуказанные функции

Какие есть функции?
на данный момент

ini_open ( file_name ) // вернет file_id или код ошибки < 0
ini_close ( file_id ) // если не закрыть файл, изменения не сохранятся на диск
ini_rename_file ( file_id, new_file_name, delete_old_file = 1 ) // добавлена в версии 0.2

ini_get ( file_id, section, key, value, max_value_size = sizeof(value) )
ini_get_int ( file_id, section, key, & value )
ini_get_float ( file_id, section, key, & Float: value )

ini_set ( file_id, section, key, value )
ini_set_int ( file_id, section, key, value )
ini_set_float ( file_id, section, key, Float: value )

ini_remove_key ( file_id, section, key ) // добавлена в версии 0.2
ini_remove_section ( file_id, section ) // добавлена в версии 0.2


Заметили баг / недочет?
- Пишите.

Хотите оставить отзыв / пожелание?
- Буду рад.

Скачать
- Исходник версии 0.1 - http://pawn.pastebin.com/E7tN0S7Z
- Исходник версии 0.2 - http://pawn.pastebin.com/Z0ziqash
MX_Master is offline   Reply With Quote
Old 26/04/2010, 05:11 AM   #2
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Default Re: [INC] Power INI (анонс)

Перед релизом хочу спросить тех, кто юзает INI файлы ..

Нужны ли функции для получения/правки ключей, значения которых являются списками значений. Например есть ключ
Code:
ключ = значение1,значение2,значение3,значение4
и сейчас можно прочесть лишь всю строку, а вот "значение2" к примеру, придется выкавыривать самостоятельно. Функции могут называться ini_get_array, ini_get_int_array, ini_get_float_array.

Допустим в файле есть
Code:
...
[секция]
ключ = str,222.654,333.489,444,555,666,777,888,999
...
Возможные будущие примеры использования
Code:
new file_id, str_array[2][20], int_array[5], Float: float_array[4],
  str[20], int, Float: flo;

file_id = ini_open("труляля.ini");

ini_get_array( file_id, "секция", "ключ", str_array, ',' ); // str_array[0] = "str", str_array[1] = "222.654"
ini_get_int_array( file_id, "секция", "ключ", int_array, ',' ); // int_array[0] = 0, int_array[1] = 222, int_array[2] = 333, int_array[3] = 444, int_array[4] = 555
ini_get_float_array( file_id, "секция", "ключ", float_array, ',' ); // float_array[0] = 0.0, float_array[1] = 222.654, float_array[2] = 333.489, float_array[3] = 444.0

ini_get_array_element( file_id, "секция", "ключ", str, 3, ',' ); // 3 это порядковый номер в списке значений. str = "444", т.к. номера начинаются с 0
ini_get_int_array_element( file_id, "секция", "ключ", int, 1, ',' ); // int = 222
ini_get_float_array_element( file_id, "секция", "ключ", flo, 2, ',' ); // flo = 333.489

ini_close(file_id);
',' - это символ, разделяющий значения
set функции выглядят также


Подумайте над этим вопросом те, кто юзает ключи с несколькими значениями внутри.
MX_Master is offline   Reply With Quote
Old 26/04/2010, 06:15 AM   #3
^Woozie^
Gangsta
 
^Woozie^'s Avatar
 
Join Date: Jul 2007
Posts: 716
Reputation: 15
Default Re: [INC] Power INI (анонс)

Безусловно нужны!
^Woozie^ is offline   Reply With Quote
Old 26/04/2010, 07:58 AM   #4
Riaz
Big Clucker
 
Riaz's Avatar
 
Join Date: Oct 2007
Posts: 180
Reputation: 1
Default Re: [INC] Power INI (анонс)

Так удобнее, нужно
__________________
Tomsknet A/D :: 217.18.138.23:7776
Riaz is offline   Reply With Quote
Old 26/04/2010, 10:40 AM   #5
Virtual1ty
Banned
 
Join Date: Jun 2009
Location: Croatia (Hrvatska)
Posts: 734
Reputation: 102
Default Re: [INC] Power INI (анонс)

I know this is Russian section, sorry, but you understand English so I think it's alright.

- I'm looking forward to this release, it would be very, very, very helpfull to me, and all of us.
- Hope you finish it soon MX_Master, best regards!

Edit: Also I hope you could use strmid to store strings in an array,
Example:
Code:
strmid(PlayerInfo[playerid][pNote], "None", 0, strlen("None"), 255);
Because it doesn't work for me with your older mx_INI, and I don't know how to use your 'fparam, sparam, iparam' thingy.
Virtual1ty is offline   Reply With Quote
Old 26/04/2010, 11:13 AM   #6
Zeex
Guest
 
Posts: n/a
Default Re: [INC] Power INI (анонс)

А что насчет эскейп-символов? То есть последовательности символов типа \x воспринимать как это делается самой пешкой

По моим сведениям их список таков: \a, \b, \f, \n, \r, \t, \', \", \\

И еще предложение - разбиение значений на несколько строк с помощью обратного слэша ('\\'), очень удобно если строка достаточно большой длины (например, текст диалога)
  Reply With Quote
Old 26/04/2010, 11:56 AM   #7
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Default Re: [INC] Power INI (анонс)

Zeex
* - можно. А зачемэкранированные \', \", \\? Они итак будут читаться как есть.
* Многострочные значения - можно. Но придется убрать из механизма замены эскейп-символов - \r и \n.
MX_Master is offline   Reply With Quote
Old 26/04/2010, 12:31 PM   #8
MX_Master
High-roller
 
Join Date: Jul 2007
Posts: 1,427
Reputation: 9
Default Re: [INC] Power INI (анонс)

Теперь это релиз. Версия 0.1. Желающие могут протестировать.

ЗЫ: прикол, иностранцы за нами следят (: а мы за ними следим хоть?
MX_Master is offline   Reply With Quote
Old 26/04/2010, 01:24 PM   #9
Zeex
Guest
 
Posts: n/a
Default Re: [INC] Power INI (анонс)

Quote:
Originally Posted by MX_Master
* Многострочные значения - можно. Но придется убрать из механизма замены эскейп-символов - \r и \n.
Не, я имел ввиду при переносе строк сами переносы убирать, т.е. объединять в одну строку и убирать пробелы в начале новой

Например
Code:
ключ = очень \ 
      длинное \
      значение
в результате должно преобразоваться в
Code:
ключ = очень длинное значение
Ну а \r и \n заменять на '\r' и '\n'

Quote:
Originally Posted by MX_Master
Zeex
* - можно. А зачем экранированные \', \", \\ ? Они итак будут читаться как есть.
хз, наверное для полного набора ))
  Reply With Quote
Old 26/04/2010, 02:13 PM   #10
Mishanzanza
Little Clucker
 
Join Date: Jan 2008
Posts: 28
Reputation: 0
Default Re: [INC] Power INI (анонс)

Nice work! Теперь все конфиги можно в одном файле делать


Quote:
Originally Posted by Virtual1ty
I don't know how to use your 'fparam, sparam, iparam' thingy.
Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
  SendClientMessage(playerid, 0xAAFF00, "OnPlayerOnPlayerCommandText start");
	new tmp[256];
	new targetid;
	
	new cmd[256];
	sparam(cmd, sizeof(cmd), cmdtext, 0);
	if(!strcmp("/setname", cmdtext, true, 8)) //Ex: /setname 1 lol
	{
    targetid = iparam(cmdtext, 1);
    if(IsPlayerConnected(targetid))
    {
      sparam(tmp, sizeof(tmp), cmdtext, 2);
      if(!strlen(tmp))
      {
        SetPlayerName(targetid, tmp);
			}
			else
			{
			  SendClientMessage(playerid, 0xAAFF00FF, "[ERROR] Invalid name");
			}
		}
		else
		{
		  SendClientMessage(playerid, 0xAAFF00FF, "[ERROR] Invalid player");
		}
		return 1;
	}
	
	return 0;
}
just example

Mishanzanza is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[GameMode] [GM] Power Deathmatch NitroSWA Gamemode Scripts 19 23/04/2010 03:11 PM
Operator '^' ( power ) UsaBoy91 Help Archive 8 21/10/2009 08:06 PM


All times are GMT. The time now is 06:59 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.