<?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=11289&amp;type=atom" />
	<updated>2016-02-05T15:45:29Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=11289</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100867#p100867" />
			<content type="html"><![CDATA[<p><strong>Alectric</strong>, cсылка, которую вы дали, мне не помогла. В том вопросе похожая проблема, но не совсем.<br />Вопрос все ещё актуален.</p>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-05T15:45:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100867#p100867</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100866#p100866" />
			<content type="html"><![CDATA[<p><a href="http://forum.script-coding.com/viewtopic.php?id=7735">Работа с памятью.</a></p><p><a href="https://www.google.ru/search?newwindow=1&amp;espv=2&amp;q=site:forum.script-coding.com+write+memory&amp;spell=1&amp;sa=X&amp;ved=0ahUKEwjmi4vE9ODKAhUHnHIKHS9vDKoQBQgZKAA&amp;biw=1280&amp;bih=899">Метод поиска.</a></p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2016-02-05T15:14:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100866#p100866</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100865#p100865" />
			<content type="html"><![CDATA[<p><strong>tuma4ok</strong>, вопросы сортируются по темам для удобства поиска теми, кто сталкивается с аналогичными проблемами. Замена данных в памяти обычно интересует как раз любителей игр, так что всё логично.</p><p>Что же по сабжу, то, честно говоря, не думаю, что кто-то сможет вам помочь до тех пор, пока вы не придумаете более простой пример для вопроса, чётко демонстрирующий проблему, и не будете отсылать людей разбираться в коде в несколько тысяч строк. <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2016-02-05T15:13:07Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100865#p100865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100863#p100863" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, но ведь суть - изменить данные в памяти процесса. Ну я и подумал что можно в этом разделе создать, ну раз вы перенесли, то я не против.</p>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-05T14:59:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100863#p100863</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100862#p100862" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, Ага. Gta <strong>s</strong>an <strong>a</strong>ndreas <strong>m</strong>ulti<strong>p</strong>layer.</p>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2016-02-05T14:41:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100862#p100862</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100861#p100861" />
			<content type="html"><![CDATA[<p><strong>tuma4ok</strong>, SAMP — это ведь игра, если я не ошибаюсь?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2016-02-05T14:35:53Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100861#p100861</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Изменение данных в адресе процесса и их применение.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=100858#p100858" />
			<content type="html"><![CDATA[<p>Здравствуйте, столкнулся с такой проблемой. Не получается записать в адрес новое значение. Но как сказать, записать получается, но вот применить, эти изменения, не получается.<br />Что я использовал, использовал я <a href="https://github.com/SAMP-UDF/SAMP-UDF-for-AutoHotKey/blob/master/SAMP.ahk">SAMP UDF (нажмите чтобы перейти к исходному файлу).</a></p><p>И так, вот моя функция которую я пытался написать:</p><div class="codebox"><pre><code>
newFunc(id) {
    if(!checkHandles())
        return false
    
    dwAddress := readDWORD(hGTA, dwSAMP + SAMP_INFO_OFFSET)
    if(ErrorLevel || dwAddress==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOLS_OFFSET)
    if(ErrorLevel || dwAddress==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    dwAddress := readDWORD(hGTA, dwAddress + SAMP_PPOOL_PLAYER_OFFSET)
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    dwLocalPlayer := readDWORD(hGTA, dwAddress + 0x22)
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }
    
    PlayerAnimID := readMem(hGTA, dwLocalPlayer + 4, 2) 
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return -1
    }
    
    stOnFootData1 := ReadFloat(hGTA, dwLocalPlayer + 233 + id)
    if(ErrorLevel || dwPlayers==0) {
        ErrorLevel := ERROR_READ_MEMORY
        return -2
    }
    
    dwFunc := dwLocalPlayer + 233 + 5
    
    VarSetCapacity(nop, 4, 0)
    NumPut(&quot;0.4&quot;, nop, 0, &quot;Float&quot;)
    NumPut(0xB9, injectData, 4, &quot;UChar&quot;)
    NumPut(dwFunc, injectData, 5, &quot;UInt&quot;)
    
    NumPut(0xE8, injectData, 9, &quot;UChar&quot;)
    offset := dwFunc - (pInjectFunc + 14)
    NumPut(offset, injectData, 10, &quot;Int&quot;)
    NumPut(0xC3, injectData, 14, &quot;UChar&quot;)
    
    writeRaw(hGTA, pInjectFunc, &amp;nop, dwLen)
    if(ErrorLevel)
        return false
    
    hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
    if(ErrorLevel)
        return false
    
    waitForSingleObject(hThread, 0xFFFFFFFF)
    closeProcess(hThread)

    return stOnFootData
}
</code></pre></div><p>Основной код записи в адрес: Вот это нужно отредактировать.<br /></p><div class="codebox"><pre><code>
dwFunc := dwLocalPlayer + 233 + 5
    
    VarSetCapacity(nop, 4, 0)
    NumPut(&quot;0.4&quot;, nop, 0, &quot;Float&quot;)
    NumPut(0xB9, injectData, 4, &quot;UChar&quot;)
    NumPut(dwFunc, injectData, 5, &quot;UInt&quot;)
    
    NumPut(0xE8, injectData, 9, &quot;UChar&quot;)
    offset := dwFunc - (pInjectFunc + 14)
    NumPut(offset, injectData, 10, &quot;Int&quot;)
    NumPut(0xC3, injectData, 14, &quot;UChar&quot;)
    
    writeRaw(hGTA, pInjectFunc, &amp;nop, dwLen)
    if(ErrorLevel)
        return false
    
    hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
    if(ErrorLevel)
        return false
    
    waitForSingleObject(hThread, 0xFFFFFFFF)
    closeProcess(hThread)
</code></pre></div><p>Структура просчитана верно и адрес со значением верный:<br /></p><div class="codebox"><pre><code>dwFunc := dwLocalPlayer + 233 + 5</code></pre></div><p>Просто не получается применить эти изменения. Может у кого-то есть идеи как это все записать, исходный код SAMP UDF приложил выше, чтобы вы видели как что работает. </p><p>Теперь о адресе:<br />Адрес содержит в себе значение от 0 до 1 и его тип FLOAT</p><p>Если Вам нужно ещё больше информации, спрашивайте, постараюсь ответить на то что знаю.</p>]]></content>
			<author>
				<name><![CDATA[tuma4ok]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32022</uri>
			</author>
			<updated>2016-02-05T12:54:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=100858#p100858</id>
		</entry>
</feed>
