<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; SAMP-UDF: Странное поведение маркера.]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12290&amp;type=atom" />
	<updated>2017-01-08T12:03:17Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=12290</id>
		<entry>
			<title type="html"><![CDATA[SAMP-UDF: Странное поведение маркера.]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=110689#p110689" />
			<content type="html"><![CDATA[<p>Доброго времени суток читатель. Прошу помощи, ибо не понимаю почему так происходит.<br />Функция позволяет создать маркер в игре:<br /></p><div class="codebox"><pre><code>setCheckpoint(fX, fY, fZ, fSize ) {
if(!checkHandles())
return false
dwFunc := dwSAMP + 0x9D340
dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
if(ErrorLevel || dwAddress==0) {
ErrorLevel := ERROR_READ_MEMORY
return false
}
VarSetCapacity(buf, 16, 0)
NumPut(fX, buf, 0, &quot;Float&quot;)
NumPut(fY, buf, 4, &quot;Float&quot;)
NumPut(fZ, buf, 8, &quot;Float&quot;)
NumPut(fSize, buf, 12, &quot;Float&quot;)
writeRaw(hGTA, pParam1, &amp;buf, 16)
dwLen := 31
VarSetCapacity(injectData, dwLen, 0)
NumPut(0xB9, injectData, 0, &quot;UChar&quot;)
NumPut(dwAddress, injectData, 1, &quot;UInt&quot;)
NumPut(0x68, injectData, 5, &quot;UChar&quot;)
NumPut(pParam1+12, injectData, 6, &quot;UInt&quot;)
NumPut(0x68, injectData, 10, &quot;UChar&quot;)
NumPut(pParam1, injectData, 11, &quot;UInt&quot;)
NumPut(0xE8, injectData, 15, &quot;UChar&quot;)
offset := dwFunc - (pInjectFunc + 20)
NumPut(offset, injectData, 16, &quot;Int&quot;)
NumPut(0x05C7, injectData, 20, &quot;UShort&quot;)
NumPut(dwAddress+0x24, injectData, 22, &quot;UInt&quot;)
NumPut(1, injectData, 26, &quot;UInt&quot;)
NumPut(0xC3, injectData, 30, &quot;UChar&quot;)
writeRaw(hGTA, pInjectFunc, &amp;injectData, dwLen)
if(ErrorLevel)
return false
hThread := createRemoteThread(hGTA, 0, 0, pInjectFunc, 0, 0, 0)
if(ErrorLevel)
return false
waitForSingleObject(hThread, 0xFFFFFFFF)
closeProcess(hThread)
ErrorLevel := ERROR_OK
return true
}</code></pre></div><p>(Без табуляции, уж простите, сам копировал так)<br />При запуске скрипта отлично работает, первое срабатываение как надо. А вот при попытке создать следующий маркер, он становится не видимым игроку, отмечается только на карте, а в виртуальном пространстве не видно.<br />Удаляется так:<br /></p><div class="codebox"><pre><code>disableCheckpoint()
{
if(!checkHandles())
return false
dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_INCHAT_PTR)
if(ErrorLevel || dwAddress==0) {
ErrorLevel := ERROR_READ_MEMORY
return false
}
VarSetCapacity(enablecp, 4, 0)
NumPut(0,enablecp,0,&quot;Int&quot;)
writeRaw(hGTA, dwAddress+0x24, &amp;enablecp, 4)
ErrorLevel := ERROR_OK
return true
}</code></pre></div><p>Не совсем понимаю, но после перезапуска скрипта функция снова адекватно создает маркер, а при последующей попытке, опять баг. В чем проблема?</p>]]></content>
			<author>
				<name><![CDATA[alekksss]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33684</uri>
			</author>
			<updated>2017-01-08T12:03:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=110689#p110689</id>
		</entry>
</feed>
