<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Сохранение данных]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=14909&amp;type=atom" />
	<updated>2019-08-09T16:19:35Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=14909</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135423#p135423" />
			<content type="html"><![CDATA[<p>А, тфу, где iniwrite abc нужно в знаки процента обрамить (указать интерпретатору что это переменная) - забыл.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2019-08-09T16:19:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135423#p135423</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135422#p135422" />
			<content type="html"><![CDATA[<p><strong>belyankin12</strong><br />Спасибо, конечно, но оно всё время выдаёт только &quot;abc&quot;, это как-то решается?</p>]]></content>
			<author>
				<name><![CDATA[Danny_Angel0s]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40330</uri>
			</author>
			<updated>2019-08-09T13:50:15Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135422#p135422</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135418#p135418" />
			<content type="html"><![CDATA[<p>C errorlevel вы правильно поняли. Давайте я лучше комментарии расставлю, так понятнее будет наверное:<br /></p><div class="codebox"><pre><code>global ini := &quot;ini.ini&quot; ; объявляем переменную с путем до ини файла


IfNotExist, % ini ; если файла не существует то (если существует, то условие будет пропущено)
{
	inputbox, abc,, Введите имя ; спрашиваем имя у пользователя, переменная abc хранит содержимое строки ввода
	if ErrorLevel { ; если окно закрыто нажатием кнопки &quot;Отмена&quot;
		msgbox, Для продолжения работы скрипта необходимо ввести имя
		ExitApp ; выходим из приложения
	} else { ; если закрытием кнопки &quot;Ок&quot;
		IniWrite, %abc%, %ini%, Section, Key1 ; записываем в ини файл значение переменной abc (то, что ввел в строку пользователь) - при этом файл %ini% будет создан
		reload ; перезапускаем скрипт (не обязательная штука впрочем, я вписал эту команду для наглядности, что после перезапуска все сохраняется) - теперь весь код пошел заново
	}
}

; так как до перезапуска скрипта мы сохранили значение переменной abc в ини файл, то условие выше не будет выполнено, так как теперь ini файл существует
IniRead, name, %ini%, Section, Key1 ; читаем значение из ини файла по адресу Секция Section, ключ Key1 в переменную name

msgbox, Ваше имя: %name%</code></pre></div>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2019-08-09T10:24:48Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135418#p135418</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135416#p135416" />
			<content type="html"><![CDATA[<p><strong>belyankin12</strong><br />Делает ник &quot;abc&quot;. В строке &quot;IniWrite, abc, %ini%, Section, Key1&quot;, пытался изменить abc на переменную name, что-бы появилось то, что было написано в inputbox, но выдавало пустое место. И если я правильно понял, строка &quot;if ErrorLevel msgbox Для продолжения работы скрипта необходимо ввести имя&quot; отвечает за то, что если поле ввода будет пустое - появится этот msgbox с этим текстом, но его нет, появляется &quot;abc&quot;.</p><p>Хотя никто не отменял того, что я хочу реализовать невозможное, или просто непонятно объяснил проблему.</p><p>Мне так-же ещё предложили ещё один код, но это в .txt<br /></p><div class="codebox"><pre><code>

!1::
InputBox, varNick, Ввод ника, Введите ник в поле ниже.
if (!ErrorLevel)
  FileAppend, % &quot;`n&quot; varNick, Nick.txt
        MsgBox, Вы ввели ник: %varNick%
Return

!2::
FileRead, nick, Nick.txt
MsgBox, % nick
Return
</code></pre></div><p>И, кстати, после перезапуска текст &quot;Вы ввели ник&quot; в msgbox (при нажатии альт+2) пропадает. Но мне нужно для sendinput, так что думаю это не сильно важно.</p>]]></content>
			<author>
				<name><![CDATA[Danny_Angel0s]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40330</uri>
			</author>
			<updated>2019-08-09T09:17:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135416#p135416</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135414#p135414" />
			<content type="html"><![CDATA[<p>UDF не вариант потому что вам нужно имя не в именительном падеже. Вот вам пример с INI файлами:<br /></p><div class="codebox"><pre><code>global ini := &quot;ini.ini&quot;


IfNotExist, % ini
{
	inputbox, abc,, Введите имя
	if ErrorLevel {
		msgbox, Для продолжения работы скрипта необходимо ввести имя
		ExitApp
	} else {
		IniWrite, abc, %ini%, Section, Key1
		reload
	}
}
	
IniRead, name, %ini%, Section, Key1

msgbox, Ваше имя: %name%</code></pre></div>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2019-08-09T07:02:38Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135414#p135414</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135353#p135353" />
			<content type="html"><![CDATA[<p>На счёт второго варианта: Мне нужен код, в котором будет либо inputbox, либо &quot;edit&quot; из gui и при вводе в строку оно будет сохранять введённое сообщение в файл, а потом уже считывать из файла. Знаю что плохо объяснил, так что лучше наведу пример нужной мне функции:<br />При запуске скрипта активируется либо окно inputbox (допустим). Если ввести в inputbox какое-то сообщение, оно сохраниться в файле (.ini, .txt, не знаю какой там должен быть) и потом будет считываться даже после перезапуска скрипта.<br />С udf не вариант, так как его нет для версии 0.3е. Ну либо я плохо искал.</p>]]></content>
			<author>
				<name><![CDATA[Danny_Angel0s]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40330</uri>
			</author>
			<updated>2019-08-07T22:42:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135353#p135353</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135351#p135351" />
			<content type="html"><![CDATA[<p>Создай файл, не обязательно ini.<br />При первом запуске, в этом файле что-то есть? Если да, то это и будет, то самое имя, если он пуст, то пусть вылезет GUI в котором введёшь имя.<br />Второй вариант - помести в текстовый файл имя, которое от туда постоянно и считывай.<br />Третий вариант - SAMP udf. Функция getUsername()- Возвращает ник локального игрока. И ничего вводить не надо.</p><div class="codebox"><pre><code>name := getUsername()
getUsername() {
    if(!checkHandles())
        return &quot;&quot;
    
    dwAddress := dwSAMP + ADDR_SAMP_USERNAME
    sUsername := readString(hGTA, dwAddress, 25)
    if(ErrorLevel) {
        ErrorLevel := ERROR_READ_MEMORY
        return &quot;&quot;
    }
    
    ErrorLevel := ERROR_OK
    return sUsername
}
checkHandles() {
    if(iRefreshHandles+500&gt;A_TickCount)
        return true
    iRefreshHandles:=A_TickCount
    if(!refreshGTA() || !refreshSAMP() || !refreshMemory()) {
        return false
    } else {
        return true
    }
    
    return true
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[sememix]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33892</uri>
			</author>
			<updated>2019-08-07T21:38:27Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135351#p135351</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Сохранение данных]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=135349#p135349" />
			<content type="html"><![CDATA[<p>Приветствую. Недавно начал заниматься простеньким скриптом и столкнулся с проблемой... В основном скрипт работает на переменной, в которую нужно указать имя персонажа в родительном падеже. Но я хотел-бы сделать так, что-бы при перезапуске скрипта не приходилось вводить имя заново. Примерно такое-же можно заметить и в биндере того-же Кваса. Я поискал ещё пару тем на форуме и нашёл тему с похожей функцией в .ini файле. Но в .ini файле, который лежит в папке биндера - ничего подобного нет (я про текст). Ещё хочу спросить, возможно ли такое: один раз ввести имя персонажа в gui, но последующие разы гуи открываться не будет, но если нажать на бинд - то появится возможность изменить имя персонажа.</p><div class="codebox"><pre><code>
Gui, Add, Button, x167 y139 w100 h30 gKey , Done
Gui, Add, Edit, x92 y99 w130 h30 vName , 
Gui, Add, Text, x42 y99 w50 h30 , На ухе у
Gui, Add, Text, x222 y99 w170 h30 , закреплена bluetooth гарнитура.
Gui, Font, S14 CDefault Bold, Verdana
Gui, Add, Text, x92 y9 w250 h60 , Введите имя в родительном падеже
; Generated using SmartGUI Creator for SciTE
Gui, Show, w438 h228, Имя персонажа
return
GuiClose:
ExitApp
return
Key:
GuiControlGet, Name
Gui, Destroy
1:
:?:/rf:: 													 	 	 		 					     
SendInput, /rf{space}		
input, rf, V, {enter}               						     
SendMessage, 0x50,, 0x4190419,, A
Sleep 100 								 					    
SendInput, {f6}/do На ухе %Name% закреплена bluetooth гарнитура.{enter} 
sleep 1000														
SendInput, {f6}/me зажал кнопку на гарнитуре.{enter}
sleep 1000														
sendinput, {f6}/todo %rf% *зажав кнопку.{enter}  	 
sleep 1000 								 					 	 
SendInput, {f6}/r %rf%{enter}	 					  	
Sleep 1
SendInput, {f6}/me отпустил кнопку на гарнитуре.
return
</code></pre></div><p>И ещё хотел-бы попросить: Если всё-таки найдётся человек, который исправит это какими-то строками - попрошу объяснить за что отвечают новые строки. </p><p>Благодарю за внимание и помощь.</p>]]></content>
			<author>
				<name><![CDATA[Danny_Angel0s]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40330</uri>
			</author>
			<updated>2019-08-07T20:37:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=135349#p135349</id>
		</entry>
</feed>
