<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[open.mp forum - Releases]]></title>
		<link>https://forum.open.mp/</link>
		<description><![CDATA[open.mp forum - https://forum.open.mp]]></description>
		<pubDate>Tue, 29 Sep 2026 11:00:17 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[statsgoblin.gg | free downtime alerts and market analytics]]></title>
			<link>https://forum.open.mp/showthread.php?tid=6470</link>
			<pubDate>Thu, 24 Sep 2026 19:28:40 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=8485">Benas</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=6470</guid>
			<description><![CDATA[Statsgoblin is the tool we built for ourselves to monitor player trends in the market. It helped us to see if we were growing or shrinking, whether a dip was seasonal or real, and where the market was heading overall. I’m no longer involved in game dev, so I’m excited to release this to the public. Hopefully some of you will find it useful too.<br />
<br />
<img src="https://i.imgur.com/0eiceE7.png" loading="lazy"  alt="[Image: 0eiceE7.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/AsOk4EB.png" loading="lazy"  alt="[Image: AsOk4EB.png]" class="mycode_img" /><br />
<br />
Besides the analytics part, you can also set up alerts to ping you when your server goes offline, your player count drops suspiciously low, or even when you reach a new record high. You can receive your alerts via Discord, SMS and even an automated phone call.<br />
<br />
<img src="https://i.imgur.com/OQoVxyV.png" loading="lazy"  alt="[Image: OQoVxyV.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/Q8K7oVy.png" loading="lazy"  alt="[Image: Q8K7oVy.png]" class="mycode_img" /><br />
<br />
There's nothing to install, all SA-MP servers on the masterlist are already tracked. Would you like to see anything else here?<br />
<br />
👉 <a href="https://statsgoblin.gg" target="_blank" rel="noopener" class="mycode_url">statsgoblin.gg</a>]]></description>
			<content:encoded><![CDATA[Statsgoblin is the tool we built for ourselves to monitor player trends in the market. It helped us to see if we were growing or shrinking, whether a dip was seasonal or real, and where the market was heading overall. I’m no longer involved in game dev, so I’m excited to release this to the public. Hopefully some of you will find it useful too.<br />
<br />
<img src="https://i.imgur.com/0eiceE7.png" loading="lazy"  alt="[Image: 0eiceE7.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/AsOk4EB.png" loading="lazy"  alt="[Image: AsOk4EB.png]" class="mycode_img" /><br />
<br />
Besides the analytics part, you can also set up alerts to ping you when your server goes offline, your player count drops suspiciously low, or even when you reach a new record high. You can receive your alerts via Discord, SMS and even an automated phone call.<br />
<br />
<img src="https://i.imgur.com/OQoVxyV.png" loading="lazy"  alt="[Image: OQoVxyV.png]" class="mycode_img" /><br />
<br />
<img src="https://i.imgur.com/Q8K7oVy.png" loading="lazy"  alt="[Image: Q8K7oVy.png]" class="mycode_img" /><br />
<br />
There's nothing to install, all SA-MP servers on the masterlist are already tracked. Would you like to see anything else here?<br />
<br />
👉 <a href="https://statsgoblin.gg" target="_blank" rel="noopener" class="mycode_url">statsgoblin.gg</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PawnPro 4.0.0 para SA-MP e open.mp — o que mudou e o que foi corrigido]]></title>
			<link>https://forum.open.mp/showthread.php?tid=6465</link>
			<pubDate>Mon, 21 Sep 2026 13:13:53 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=7983">NullSablex</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=6465</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: 28pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #0e639c;" class="mycode_color">PawnPro 4.0.0</span></span></span><br />
<span style="font-size: 15pt;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">🇧🇷 Extensão de VS Code / VSCodium para Pawn — SA-MP e open.mp</span><br />
<span style="font-style: italic;" class="mycode_i">🇬🇧 VS Code / VSCodium extension for Pawn — SA-MP and open.mp</span></span><br />
<br />
<a href="https://marketplace.visualstudio.com/items?itemName=NullSablex.pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Marketplace</span></a> · <a href="https://open-vsx.org/extension/NullSablex/pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Open VSX</span></a> · <a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">GitHub</span></a> · <a href="https://pawnpro.nullsablex.com" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Documentação</span></a></div>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 A <span style="font-weight: bold;" class="mycode_b">4.0.0</span> está no ar. É a maior atualização da extensão até hoje: <span style="font-weight: bold;" class="mycode_b">IntelliSense cinco vezes mais rápido</span> em projeto grande, <span style="font-weight: bold;" class="mycode_b">F12 para ir à definição</span>, <span style="font-weight: bold;" class="mycode_b">depuração de filterscript</span>, log de diagnóstico para relatar bug, e uma lista de correções que inclui a <span style="font-weight: bold;" class="mycode_b">tela de configurações que não respondia a clique</span> e a <span style="font-weight: bold;" class="mycode_b">formatação que danificava código</span>.<br />
<br />
🇧🇷 <span style="font-weight: bold;" class="mycode_b">Não há nada novo para instalar</span> e a sua configuração continua valendo. Só um aviso importa: <span style="font-weight: bold;" class="mycode_b">se você usa o depurador, atualize o plugin do servidor</span> — detalhes no fim.<br />
<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">4.0.0</span> is out — the biggest update yet: <span style="font-weight: bold;" class="mycode_b">5× faster IntelliSense</span> on large projects, <span style="font-weight: bold;" class="mycode_b">F12 go-to-definition</span>, <span style="font-weight: bold;" class="mycode_b">filterscript debugging</span>, a diagnostic log for bug reports, and a long list of fixes including the <span style="font-weight: bold;" class="mycode_b">settings page that ignored clicks</span> and <span style="font-weight: bold;" class="mycode_b">formatting that corrupted code</span>. Nothing new to install; your settings carry over. One caveat: <span style="font-weight: bold;" class="mycode_b">if you debug, update the server plugin</span>.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🆕 Novo na 4.0.0 / New in 4.0.0</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">⌨️ Ir para definição — F12 ou Ctrl+clique</span><br />
🇧🇷 Leva à declaração no próprio arquivo, num include ou em outro arquivo compilado junto. Em cima de um <span style="font-weight: bold;" class="mycode_b">forward</span>, vai direto ao corpo da função.<br />
🇬🇧 Jumps to the declaration in the file, in an include, or in another file compiled with it. On a <span style="font-weight: bold;" class="mycode_b">forward</span>, it goes to the body.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">📓 Log de diagnóstico / Diagnostic log</span><br />
🇧🇷 Configurações → <span style="font-weight: bold;" class="mycode_b">Diagnóstico</span> → nível <span style="font-weight: bold;" class="mycode_b">info</span>. A extensão, o motor de análise e o depurador gravam em <span style="font-weight: bold;" class="mycode_b">.pawnpro/logs/</span>: um <span style="font-weight: bold;" class="mycode_b">pawnpro.log</span> com <span style="font-weight: bold;" class="mycode_b">tudo na ordem em que aconteceu</span>, mais um arquivo por componente. <span style="font-weight: bold;" class="mycode_b">Desligado de fábrica</span> — nenhum arquivo é criado até você ligar —, e os logs entram sozinhos no <span style="font-weight: bold;" class="mycode_b">.gitignore</span>. Ao abrir uma issue, anexar esse arquivo vale mais que qualquer descrição.<br />
🇬🇧 Settings → <span style="font-weight: bold;" class="mycode_b">Diagnostics</span> → <span style="font-weight: bold;" class="mycode_b">info</span>. Extension, analysis engine and debugger all write to <span style="font-weight: bold;" class="mycode_b">.pawnpro/logs/</span>: one <span style="font-weight: bold;" class="mycode_b">pawnpro.log</span> with everything <span style="font-weight: bold;" class="mycode_b">in the order it happened</span>, plus one file per component. <span style="font-weight: bold;" class="mycode_b">Off by default</span>; the logs are gitignored automatically.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🧩 Depuração de filterscript / Debugging filterscripts</span><br />
🇧🇷 Aponte <span style="font-weight: bold;" class="mycode_b">program</span> para o <span style="font-weight: bold;" class="mycode_b">.amx</span> do filterscript: <span style="font-weight: bold;" class="mycode_b">só ele</span> para nos breakpoints, e os outros scripts do servidor seguem rodando normalmente.<br />
🇬🇧 Point <span style="font-weight: bold;" class="mycode_b">program</span> at the filterscript's <span style="font-weight: bold;" class="mycode_b">.amx</span>: <span style="font-weight: bold;" class="mycode_b">only it</span> stops at breakpoints, the server's other scripts keep running.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">✏️ Breakpoint sobrevive a edição durante a sessão / Breakpoints survive edits mid-session</span><br />
🇧🇷 O texto de quando o script foi compilado fica guardado, e cada breakpoint é levado para a linha equivalente do binário em execução. Uma linha nova, que não existe no código compilado, fica marcada como <span style="font-weight: bold;" class="mycode_b">não verificada</span> até você reiniciar — em vez de parar no lugar errado.<br />
🇬🇧 The text as compiled is kept, and each breakpoint is mapped to the matching line of the running binary. A brand-new line shows as <span style="font-weight: bold;" class="mycode_b">unverified</span> until you restart, instead of stopping in the wrong place.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🔁 O IntelliSense volta sozinho quando cai / IntelliSense restarts itself</span><br />
🇧🇷 Antes, uma falha no motor deixava o editor <span style="font-weight: bold;" class="mycode_b">sem análise até recarregar a janela</span>. Agora ele sobe de novo sozinho, e um aviso diz quantas vezes isso aconteceu. Depois de cinco quedas seguidas, desiste e avisa — <span style="font-weight: bold;" class="mycode_b">"PawnPro: Limpar Cache"</span> tenta de novo.<br />
🇬🇧 A crash in the engine used to leave you <span style="font-weight: bold;" class="mycode_b">with no analysis until you reloaded the window</span>. It now comes back on its own, with a notice telling you how many times it happened; after five straight crashes it gives up and says so.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">⚡ O que melhorou no dia a dia / Day-to-day improvements</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Projeto grande ficou rápido</span> — 🇧🇷 num gamemode com <span style="font-weight: bold;" class="mycode_b">84 includes</span>, cada edição caiu de cerca de <span style="font-weight: bold;" class="mycode_b">1 s para 0,2 s</span> / 🇬🇧 with <span style="font-weight: bold;" class="mycode_b">84 includes</span>, from ~<span style="font-weight: bold;" class="mycode_b">1 s to 0.2 s</span> per edit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">O IntelliSense enxerga o programa inteiro — e só ele</span> — 🇧🇷 hover, assinatura, autocomplete, referências e o contador acima das funções passam a considerar tudo o que é compilado junto com o arquivo aberto, <span style="font-weight: bold;" class="mycode_b">inclusive o [b].inc</span> irmão que você não abriu[/b], e nunca outro programa: <span style="font-weight: bold;" class="mycode_b">gamemode e filterscript deixam de se misturar</span>, mesmo com funções de mesmo nome / 🇬🇧 the whole compilation unit, closed sibling includes included, and never another program<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Renomear (F2) respeita escopo</span> — 🇧🇷 um local muda só no bloco onde foi declarado; um parâmetro, só na função. Renomear uma <span style="font-weight: bold;" class="mycode_b">public</span> atualiza o nome em <span style="font-weight: bold;" class="mycode_b">SetTimer("Nome", …)</span>. Renomear uma global que tem um local homônimo é <span style="font-weight: bold;" class="mycode_b">recusado, dizendo onde está o conflito</span> — antes os dois eram trocados juntos / 🇬🇧 scope-aware rename; conflicts are refused with the location<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">A análise vale para o texto não salvo</span> — 🇧🇷 o que você escreve num include aberto já conta nos outros arquivos, antes de salvar / 🇬🇧 unsaved edits in an include already count elsewhere<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">A extensão não trava mais esperando o compilador</span> — 🇧🇷 ele roda em segundo plano e a interface segue respondendo / 🇬🇧 the compiler runs in the background<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Cada falha de RCON diz o que houve</span> — 🇧🇷 servidor parado, RCON desligado no <span style="font-weight: bold;" class="mycode_b">config.json</span>, senha inválida, servidor remoto ou tempo esgotado, em vez de um código interno / 🇬🇧 real reasons instead of an internal code<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Servidor que morre logo ao iniciar</span> (plugin faltando, por exemplo) — 🇧🇷 é informado <span style="font-weight: bold;" class="mycode_b">na hora, com o código de saída</span>, em vez de a extensão ficar esperando a porta até o prazo acabar / 🇬🇧 reported immediately with the exit code<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Seletor de SDK ganha "Automático"</span>, já como padrão — 🇧🇷 usa o SDK do open.mp quando o projeto o tem (<span style="font-weight: bold;" class="mycode_b">qawno/include/open.mp.inc</span> ou o caminho configurado); sem ele, as nativas vêm dos includes, como no SA-MP / 🇬🇧 new default: open.mp SDK when present, otherwise natives from your includes<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Tipo errado no config.json</span> — 🇧🇷 o valor é ignorado sozinho e <span style="font-weight: bold;" class="mycode_b">o resto do arquivo continua valendo</span> / 🇬🇧 the bad value is skipped, the rest still applies<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mudança no config.json chega à análise sem recarregar</span> — 🇧🇷 incluindo as listas <span style="font-weight: bold;" class="mycode_b">.ban</span>/<span style="font-weight: bold;" class="mycode_b">.allow</span> / 🇬🇧 including the <span style="font-weight: bold;" class="mycode_b">.ban</span>/<span style="font-weight: bold;" class="mycode_b">.allow</span> lists<br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🐛 Corrigido / Fixed</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Interface</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">A tela de configurações voltou a responder aos cliques.</span> 🇧🇷 A política de segurança da página usa nonce, e nonce não vale para atributo de evento: os <span style="font-weight: bold;" class="mycode_b">onclick</span>/<span style="font-weight: bold;" class="mycode_b">onchange</span> dos controles eram bloqueados, e o sintoma era a <span style="font-weight: bold;" class="mycode_b">página inteira muda, sem erro visível</span>. A Biblioteca de Recursos tinha o mesmo problema / 🇬🇧 settings page clicks work again (nonce-based CSP was blocking inline handlers); same for the Resource Library<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">A extensão não depende mais do IntelliSense subir para ativar.</span> 🇧🇷 Ela ficava presa numa chamada sem prazo, e o que vinha depois — configurações, biblioteca, barra de status — <span style="font-weight: bold;" class="mycode_b">nunca chegava a existir</span> / 🇬🇧 activation no longer blocks on the engine<br />
</li>
<li>🇧🇷 A página <span style="font-weight: bold;" class="mycode_b">"O que há de novo"</span> mostrava os <span style="font-weight: bold;" class="mycode_b">&gt;</span> do changelog no meio do texto / 🇬🇧 the What's New page rendered raw <span style="font-weight: bold;" class="mycode_b">&gt;</span> markers<br />
</li>
<li>🇧🇷 Os títulos das correções rápidas apareciam sempre em português; agora seguem <span style="font-weight: bold;" class="mycode_b">o idioma configurado</span> / 🇬🇧 quick-fix titles follow your language setting<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Análise de código</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">A formatação danificava código</span> — 🇧🇷 em <span style="font-weight: bold;" class="mycode_b">comentário no fim da linha</span> e de bloco, em <span style="font-weight: bold;" class="mycode_b">string e caractere com espaço</span>, e em <span style="font-weight: bold;" class="mycode_b">macro com continuação</span> <span style="font-weight: bold;" class="mycode_b">\</span>. E não era estável: formatar duas vezes mudava o arquivo. Agora não altera código nem comentário, e formatar de novo não muda nada / 🇬🇧 formatting corrupted trailing/block comments, spaced string and char literals, and <span style="font-weight: bold;" class="mycode_b">\</span>-continued macros — and wasn't idempotent<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Letra acentuada derrubava a análise</span> — 🇧🇷 o limite de nome do Pawn é de <span style="font-weight: bold;" class="mycode_b">31 caracteres</span> e o corte era feito em <span style="font-weight: bold;" class="mycode_b">31 bytes</span>; <span style="font-weight: bold;" class="mycode_b">ç</span>, <span style="font-weight: bold;" class="mycode_b">ã</span> e <span style="font-weight: bold;" class="mycode_b">é</span> ocupam dois, o corte caía no meio do caractere. Mesma coisa na assinatura, com acento antes do cursor / 🇬🇧 accented characters crashed analysis (31-<span style="font-weight: bold;" class="mycode_b">character</span> limit truncated at 31 <span style="font-weight: bold;" class="mycode_b">bytes</span>)<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Aviso de um texto que já não existe</span> deixa de aparecer: análise que termina depois de uma nova edição é descartada / 🇬🇧 stale diagnostics discarded<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Nome dentro de string</span> contava como referência; chamada em <span style="font-weight: bold;" class="mycode_b">new x = Funcao();</span> era ignorada; a coluna saía errada com acento antes do nome / 🇬🇧 reference counting fixes<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">PP0012</span> (<span style="font-weight: bold;" class="mycode_b">#include</span> sem símbolo usado) não disparava, e a verificação de símbolo não usado não via edição feita em outro arquivo / 🇬🇧 <span style="font-weight: bold;" class="mycode_b">PP0012</span> never fired<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">native</span> e <span style="font-weight: bold;" class="mycode_b">forward</span> com corpo aberto na linha seguinte voltam a ser acusados, e <span style="font-weight: bold;" class="mycode_b">diretiva recuada</span> (<span style="font-weight: bold;" class="mycode_b">    #include</span>) passa a ser reconhecida / 🇬🇧 both back to working<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Depuração</span><ul class="mycode_list"><li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Breakpoint parando na linha errada</span> quando o arquivo foi editado depois de compilar / 🇬🇧 wrong-line breakpoints after post-compile edits<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Breakpoint do gamemode disparando dentro de filterscript</span> — o plugin passa a reconhecer qual script está em depuração / 🇬🇧 gamemode breakpoints firing inside filterscripts<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Breakpoint em include por caminho relativo</span> (<span style="font-weight: bold;" class="mycode_b">#include "../include/x.inc"</span>) passa a ser atingido / 🇬🇧 breakpoints in relatively-included files now hit<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Arrays.</span> Elemento de array de várias dimensões ou recebido por referência mostrava <span style="font-weight: bold;" class="mycode_b">valor de outra posição da memória</span>; data breakpoint e edição em <span style="font-weight: bold;" class="mycode_b">grid<span style="font-style: italic;" class="mycode_i">[j]</span></span><span style="font-style: italic;" class="mycode_i"> passam a funcionar / 🇬🇧 multi-dimensional and by-reference array elements read the wrong memory slot</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Edição de variável</span> só aparece como feita depois que o servidor confirma a escrita / 🇬🇧 variable edits confirmed by the server first</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 A <span style="font-weight: bold;" class="mycode_b">pilha de chamadas</span> mostra o arquivo de cada frame — um frame dentro de include abria o arquivo principal / 🇬🇧 call stack opens the right file per frame</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Depurar com <span style="font-weight: bold;" class="mycode_b">.amx</span> sem informação de depuração <span style="font-weight: bold;" class="mycode_b">recompila</span>, em vez de subir um binário em que nenhum breakpoint pega. E qualquer <span style="font-weight: bold;" class="mycode_b">-d</span> da sua configuração é trocado por <span style="font-weight: bold;" class="mycode_b">-d3</span> só naquela compilação: um <span style="font-weight: bold;" class="mycode_b">-d0</span> ou <span style="font-weight: bold;" class="mycode_b">-d1</span> configurado deixava o <span style="font-weight: bold;" class="mycode_b">.amx</span> sem o que breakpoint e variável precisam / 🇬🇧 a debug-less <span style="font-weight: bold;" class="mycode_b">.amx</span> is recompiled, and <span style="font-weight: bold;" class="mycode_b">-d3</span> is forced for that build only</span><br />
</li>
</ul>
[*]<br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">⚙️ Por dentro: de onde vem essa versão / Under the hood</span></span><br />
<br />
🇧🇷 Vale explicar por que uma lista dessas aparece de uma vez. A extensão comandava, em TypeScript, coisas que não possuía: processos do servidor, portas, RCON, o compilador, a configuração e a resolução de includes. Cada tarefa tinha um caminho diferente por sistema operacional (<span style="font-weight: bold;" class="mycode_b">lsof</span>, <span style="font-weight: bold;" class="mycode_b">/proc</span>, <span style="font-weight: bold;" class="mycode_b">netstat</span>, <span style="font-weight: bold;" class="mycode_b">taskkill</span>), por sinal indireto, e a configuração era lida <span style="font-weight: bold;" class="mycode_b">em dois lugares ao mesmo tempo</span>. Daí vinha boa parte dos defeitos: IntelliSense discordando do que o compilador enxergava, include resolvido de um jeito na análise e de outro na compilação, e uma resposta diferente por sistema.<br />
<br />
🇧🇷 A 4.0.0 move tudo isso para o <span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span>, um projeto novo — primeira versão, <span style="font-weight: bold;" class="mycode_b">0.1.0</span> — em <span style="font-weight: bold;" class="mycode_b">Rust</span>, que acompanha a extensão e também passou a hospedar o motor de análise e o depurador, que antes eram binários separados. Agora há <span style="font-weight: bold;" class="mycode_b">uma resposta só para cada pergunta</span>, e o VSIX traz <span style="font-weight: bold;" class="mycode_b">um binário só</span>.<br />
<br />
🇬🇧 Worth explaining why a list this long lands at once. The extension was driving, in TypeScript, things it didn't own: server processes, ports, RCON, the compiler, configuration and include resolution — one code path per OS, all indirect, with configuration read in <span style="font-weight: bold;" class="mycode_b">two places at once</span>. That's where most of the defects came from. 4.0.0 moves all of it into <span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span>, a new project (<span style="font-weight: bold;" class="mycode_b">0.1.0</span>) written in <span style="font-weight: bold;" class="mycode_b">Rust</span>, which also now hosts the analysis engine and the debugger. One answer per question, one binary in the VSIX.<br />
<br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Você não baixa o núcleo:</span> ele vem dentro da extensão, no binário da sua plataforma — Windows x64, Linux x64 e arm64, macOS x64 e arm64 / 🇬🇧 the core ships inside the extension</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Análise, depuração e o plugin do servidor chegam por um <span style="font-weight: bold;" class="mycode_b">soquete local único</span> (named pipe no Windows), não por porta TCP / 🇬🇧 one local socket, not a TCP port</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Encerrar processo confere de novo, na hora</span>, se ele é o servidor deste projeto e do mesmo usuário / 🇬🇧 process kills re-check ownership</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 A ajuda mostra <span style="font-weight: bold;" class="mycode_b">a versão do núcleo</span> no lugar das versões separadas de motor e depurador / 🇬🇧 one version to report</span><br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">⚠️ Antes de atualizar / Before you update</span></span><br />
<br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Se você usa o depurador: atualize o plugin do servidor.</span> O <span style="font-weight: bold;" class="mycode_b">pawnpro_debug</span> (<span style="font-weight: bold;" class="mycode_b">.so</span> / <span style="font-weight: bold;" class="mycode_b">.dll</span>, <span style="font-weight: bold;" class="mycode_b">32 bits</span>, como o servidor) agora sai no release do <span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span> e precisa ser <span style="font-weight: bold;" class="mycode_b">da mesma versão</span>. Plugin desatualizado faz a sessão falhar — é o primeiro lugar a olhar se o <span style="font-weight: bold;" class="mycode_b">F5</span> não responde. A ajuda da extensão aponta o release certo / 🇬🇧 update the <span style="font-weight: bold;" class="mycode_b">32-bit</span> <span style="font-weight: bold;" class="mycode_b">pawnpro_debug</span> plugin to the matching version</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Foram removidos do launch.json</span> os campos <span style="font-weight: bold;" class="mycode_b">server</span>, <span style="font-weight: bold;" class="mycode_b">session</span> e <span style="font-weight: bold;" class="mycode_b">stopOnEntry</span>, que já eram ignorados. O servidor vem da seção <span style="font-weight: bold;" class="mycode_b">server</span> das configurações / 🇬🇧 <span style="font-weight: bold;" class="mycode_b">server</span>, <span style="font-weight: bold;" class="mycode_b">session</span> and <span style="font-weight: bold;" class="mycode_b">stopOnEntry</span> removed from <span style="font-weight: bold;" class="mycode_b">launch.json</span> (they were already ignored)</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Fora isso, <span style="font-weight: bold;" class="mycode_b">sua configuração e seus projetos continuam valendo</span>, e não há nada a instalar à parte / 🇬🇧 otherwise your settings and projects carry over</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Lembrete que ainda é o erro mais comum: <span style="font-weight: bold;" class="mycode_b">abra a PASTA do projeto</span>, não o <span style="font-weight: bold;" class="mycode_b">.pwn</span> solto — sem ela não há como achar seus includes / 🇬🇧 open the project <span style="font-weight: bold;" class="mycode_b">folder</span>, not a lone <span style="font-weight: bold;" class="mycode_b">.pwn</span></span><br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🔎 O que ainda não está verificado</span></span><br />
<span style="font-size: 15pt;" class="mycode_size">Not verified yet</span><br />
<br />
🇧🇷 O depurador continua marcado como <span style="font-weight: bold;" class="mycode_b">instável</span>, e é honesto dizer onde:<br />
<br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">Depuração no Windows nunca foi testada num servidor Windows real.</span> Ela é compilada e publicada, mas lá o canal com o servidor é outro (<span style="font-weight: bold;" class="mycode_b">named pipe</span>) e o encerramento também — o mecanismo que garante que o servidor morre junto com a sessão <span style="font-weight: bold;" class="mycode_b">só existe no Linux</span>. Se você hospeda no Windows e testar, esse relato é o mais útil que existe agora</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">Pausar com jogadores conectados</span> foi medido <span style="font-weight: bold;" class="mycode_b">sem clientes de verdade</span>. Num teste, um jogador continuou se movendo com a execução parada num breakpoint; não se sabe o efeito com servidor cheio, nem se a rajada de sincronia na retomada derruba conexão</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">A posição do breakpoint muda o cenário</span>: parar num comando, que roda de vez em quando, não é o mesmo que parar num callback que roda a cada tick</span><br />
</li>
</ul>
<span style="font-style: italic;" class="mycode_i"><br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Bug encontrado vira issue pública, não vira segredo. Se você esbarrar em algo, ligue o log em <span style="font-weight: bold;" class="mycode_b">info</span>, anexe o arquivo e <span style="font-weight: bold;" class="mycode_b">abra uma issue</span> — é assim que isto melhora.<br />
🇬🇧 Bugs become public issues, not secrets. If you hit something, set logging to <span style="font-weight: bold;" class="mycode_b">info</span>, attach the file and <span style="font-weight: bold;" class="mycode_b">open an issue</span>.</blockquote>
<br />
</span><br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 18pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Links</span></span><br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i"><a href="https://github.com/NullSablex/PawnPro/blob/master/CHANGELOG.md" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Changelog completo da 4.0.0</span></a> — 🇧🇷 com tudo que não caberia aqui / 🇬🇧 the full list</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><a href="https://pawnpro.nullsablex.com" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">pawnpro.nullsablex.com</span></a> — 🇧🇷 documentação da extensão / 🇬🇧 extension docs</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><a href="https://github.com/NullSablex/PawnPro-Core" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span></a> — 🇧🇷 o núcleo em Rust, para quem quiser ver por dentro / 🇬🇧 the Rust core, if you want the internals</span><br />
</li>
</ul>
<span style="font-style: italic;" class="mycode_i"><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ext install NullSablex.pawnpro</code></div></div><br />
</span><br />
<div style="text-align: center;" class="mycode_align"><span style="font-style: italic;" class="mycode_i">[i]🇧🇷 Dúvida, crítica e relato de bug são bem-vindos — aqui no tópico ou nas issues do GitHub.<br />
🇬🇧 Questions, criticism and bug reports are welcome — here or on GitHub issues.</span><br />
<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">⭐ github.com/NullSablex/PawnPro</span></a>[/i]</div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: 28pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #0e639c;" class="mycode_color">PawnPro 4.0.0</span></span></span><br />
<span style="font-size: 15pt;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">🇧🇷 Extensão de VS Code / VSCodium para Pawn — SA-MP e open.mp</span><br />
<span style="font-style: italic;" class="mycode_i">🇬🇧 VS Code / VSCodium extension for Pawn — SA-MP and open.mp</span></span><br />
<br />
<a href="https://marketplace.visualstudio.com/items?itemName=NullSablex.pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Marketplace</span></a> · <a href="https://open-vsx.org/extension/NullSablex/pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Open VSX</span></a> · <a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">GitHub</span></a> · <a href="https://pawnpro.nullsablex.com" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Documentação</span></a></div>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 A <span style="font-weight: bold;" class="mycode_b">4.0.0</span> está no ar. É a maior atualização da extensão até hoje: <span style="font-weight: bold;" class="mycode_b">IntelliSense cinco vezes mais rápido</span> em projeto grande, <span style="font-weight: bold;" class="mycode_b">F12 para ir à definição</span>, <span style="font-weight: bold;" class="mycode_b">depuração de filterscript</span>, log de diagnóstico para relatar bug, e uma lista de correções que inclui a <span style="font-weight: bold;" class="mycode_b">tela de configurações que não respondia a clique</span> e a <span style="font-weight: bold;" class="mycode_b">formatação que danificava código</span>.<br />
<br />
🇧🇷 <span style="font-weight: bold;" class="mycode_b">Não há nada novo para instalar</span> e a sua configuração continua valendo. Só um aviso importa: <span style="font-weight: bold;" class="mycode_b">se você usa o depurador, atualize o plugin do servidor</span> — detalhes no fim.<br />
<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">4.0.0</span> is out — the biggest update yet: <span style="font-weight: bold;" class="mycode_b">5× faster IntelliSense</span> on large projects, <span style="font-weight: bold;" class="mycode_b">F12 go-to-definition</span>, <span style="font-weight: bold;" class="mycode_b">filterscript debugging</span>, a diagnostic log for bug reports, and a long list of fixes including the <span style="font-weight: bold;" class="mycode_b">settings page that ignored clicks</span> and <span style="font-weight: bold;" class="mycode_b">formatting that corrupted code</span>. Nothing new to install; your settings carry over. One caveat: <span style="font-weight: bold;" class="mycode_b">if you debug, update the server plugin</span>.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🆕 Novo na 4.0.0 / New in 4.0.0</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">⌨️ Ir para definição — F12 ou Ctrl+clique</span><br />
🇧🇷 Leva à declaração no próprio arquivo, num include ou em outro arquivo compilado junto. Em cima de um <span style="font-weight: bold;" class="mycode_b">forward</span>, vai direto ao corpo da função.<br />
🇬🇧 Jumps to the declaration in the file, in an include, or in another file compiled with it. On a <span style="font-weight: bold;" class="mycode_b">forward</span>, it goes to the body.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">📓 Log de diagnóstico / Diagnostic log</span><br />
🇧🇷 Configurações → <span style="font-weight: bold;" class="mycode_b">Diagnóstico</span> → nível <span style="font-weight: bold;" class="mycode_b">info</span>. A extensão, o motor de análise e o depurador gravam em <span style="font-weight: bold;" class="mycode_b">.pawnpro/logs/</span>: um <span style="font-weight: bold;" class="mycode_b">pawnpro.log</span> com <span style="font-weight: bold;" class="mycode_b">tudo na ordem em que aconteceu</span>, mais um arquivo por componente. <span style="font-weight: bold;" class="mycode_b">Desligado de fábrica</span> — nenhum arquivo é criado até você ligar —, e os logs entram sozinhos no <span style="font-weight: bold;" class="mycode_b">.gitignore</span>. Ao abrir uma issue, anexar esse arquivo vale mais que qualquer descrição.<br />
🇬🇧 Settings → <span style="font-weight: bold;" class="mycode_b">Diagnostics</span> → <span style="font-weight: bold;" class="mycode_b">info</span>. Extension, analysis engine and debugger all write to <span style="font-weight: bold;" class="mycode_b">.pawnpro/logs/</span>: one <span style="font-weight: bold;" class="mycode_b">pawnpro.log</span> with everything <span style="font-weight: bold;" class="mycode_b">in the order it happened</span>, plus one file per component. <span style="font-weight: bold;" class="mycode_b">Off by default</span>; the logs are gitignored automatically.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🧩 Depuração de filterscript / Debugging filterscripts</span><br />
🇧🇷 Aponte <span style="font-weight: bold;" class="mycode_b">program</span> para o <span style="font-weight: bold;" class="mycode_b">.amx</span> do filterscript: <span style="font-weight: bold;" class="mycode_b">só ele</span> para nos breakpoints, e os outros scripts do servidor seguem rodando normalmente.<br />
🇬🇧 Point <span style="font-weight: bold;" class="mycode_b">program</span> at the filterscript's <span style="font-weight: bold;" class="mycode_b">.amx</span>: <span style="font-weight: bold;" class="mycode_b">only it</span> stops at breakpoints, the server's other scripts keep running.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">✏️ Breakpoint sobrevive a edição durante a sessão / Breakpoints survive edits mid-session</span><br />
🇧🇷 O texto de quando o script foi compilado fica guardado, e cada breakpoint é levado para a linha equivalente do binário em execução. Uma linha nova, que não existe no código compilado, fica marcada como <span style="font-weight: bold;" class="mycode_b">não verificada</span> até você reiniciar — em vez de parar no lugar errado.<br />
🇬🇧 The text as compiled is kept, and each breakpoint is mapped to the matching line of the running binary. A brand-new line shows as <span style="font-weight: bold;" class="mycode_b">unverified</span> until you restart, instead of stopping in the wrong place.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🔁 O IntelliSense volta sozinho quando cai / IntelliSense restarts itself</span><br />
🇧🇷 Antes, uma falha no motor deixava o editor <span style="font-weight: bold;" class="mycode_b">sem análise até recarregar a janela</span>. Agora ele sobe de novo sozinho, e um aviso diz quantas vezes isso aconteceu. Depois de cinco quedas seguidas, desiste e avisa — <span style="font-weight: bold;" class="mycode_b">"PawnPro: Limpar Cache"</span> tenta de novo.<br />
🇬🇧 A crash in the engine used to leave you <span style="font-weight: bold;" class="mycode_b">with no analysis until you reloaded the window</span>. It now comes back on its own, with a notice telling you how many times it happened; after five straight crashes it gives up and says so.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">⚡ O que melhorou no dia a dia / Day-to-day improvements</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Projeto grande ficou rápido</span> — 🇧🇷 num gamemode com <span style="font-weight: bold;" class="mycode_b">84 includes</span>, cada edição caiu de cerca de <span style="font-weight: bold;" class="mycode_b">1 s para 0,2 s</span> / 🇬🇧 with <span style="font-weight: bold;" class="mycode_b">84 includes</span>, from ~<span style="font-weight: bold;" class="mycode_b">1 s to 0.2 s</span> per edit<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">O IntelliSense enxerga o programa inteiro — e só ele</span> — 🇧🇷 hover, assinatura, autocomplete, referências e o contador acima das funções passam a considerar tudo o que é compilado junto com o arquivo aberto, <span style="font-weight: bold;" class="mycode_b">inclusive o [b].inc</span> irmão que você não abriu[/b], e nunca outro programa: <span style="font-weight: bold;" class="mycode_b">gamemode e filterscript deixam de se misturar</span>, mesmo com funções de mesmo nome / 🇬🇧 the whole compilation unit, closed sibling includes included, and never another program<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Renomear (F2) respeita escopo</span> — 🇧🇷 um local muda só no bloco onde foi declarado; um parâmetro, só na função. Renomear uma <span style="font-weight: bold;" class="mycode_b">public</span> atualiza o nome em <span style="font-weight: bold;" class="mycode_b">SetTimer("Nome", …)</span>. Renomear uma global que tem um local homônimo é <span style="font-weight: bold;" class="mycode_b">recusado, dizendo onde está o conflito</span> — antes os dois eram trocados juntos / 🇬🇧 scope-aware rename; conflicts are refused with the location<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">A análise vale para o texto não salvo</span> — 🇧🇷 o que você escreve num include aberto já conta nos outros arquivos, antes de salvar / 🇬🇧 unsaved edits in an include already count elsewhere<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">A extensão não trava mais esperando o compilador</span> — 🇧🇷 ele roda em segundo plano e a interface segue respondendo / 🇬🇧 the compiler runs in the background<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Cada falha de RCON diz o que houve</span> — 🇧🇷 servidor parado, RCON desligado no <span style="font-weight: bold;" class="mycode_b">config.json</span>, senha inválida, servidor remoto ou tempo esgotado, em vez de um código interno / 🇬🇧 real reasons instead of an internal code<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Servidor que morre logo ao iniciar</span> (plugin faltando, por exemplo) — 🇧🇷 é informado <span style="font-weight: bold;" class="mycode_b">na hora, com o código de saída</span>, em vez de a extensão ficar esperando a porta até o prazo acabar / 🇬🇧 reported immediately with the exit code<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Seletor de SDK ganha "Automático"</span>, já como padrão — 🇧🇷 usa o SDK do open.mp quando o projeto o tem (<span style="font-weight: bold;" class="mycode_b">qawno/include/open.mp.inc</span> ou o caminho configurado); sem ele, as nativas vêm dos includes, como no SA-MP / 🇬🇧 new default: open.mp SDK when present, otherwise natives from your includes<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Tipo errado no config.json</span> — 🇧🇷 o valor é ignorado sozinho e <span style="font-weight: bold;" class="mycode_b">o resto do arquivo continua valendo</span> / 🇬🇧 the bad value is skipped, the rest still applies<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mudança no config.json chega à análise sem recarregar</span> — 🇧🇷 incluindo as listas <span style="font-weight: bold;" class="mycode_b">.ban</span>/<span style="font-weight: bold;" class="mycode_b">.allow</span> / 🇬🇧 including the <span style="font-weight: bold;" class="mycode_b">.ban</span>/<span style="font-weight: bold;" class="mycode_b">.allow</span> lists<br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🐛 Corrigido / Fixed</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Interface</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">A tela de configurações voltou a responder aos cliques.</span> 🇧🇷 A política de segurança da página usa nonce, e nonce não vale para atributo de evento: os <span style="font-weight: bold;" class="mycode_b">onclick</span>/<span style="font-weight: bold;" class="mycode_b">onchange</span> dos controles eram bloqueados, e o sintoma era a <span style="font-weight: bold;" class="mycode_b">página inteira muda, sem erro visível</span>. A Biblioteca de Recursos tinha o mesmo problema / 🇬🇧 settings page clicks work again (nonce-based CSP was blocking inline handlers); same for the Resource Library<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">A extensão não depende mais do IntelliSense subir para ativar.</span> 🇧🇷 Ela ficava presa numa chamada sem prazo, e o que vinha depois — configurações, biblioteca, barra de status — <span style="font-weight: bold;" class="mycode_b">nunca chegava a existir</span> / 🇬🇧 activation no longer blocks on the engine<br />
</li>
<li>🇧🇷 A página <span style="font-weight: bold;" class="mycode_b">"O que há de novo"</span> mostrava os <span style="font-weight: bold;" class="mycode_b">&gt;</span> do changelog no meio do texto / 🇬🇧 the What's New page rendered raw <span style="font-weight: bold;" class="mycode_b">&gt;</span> markers<br />
</li>
<li>🇧🇷 Os títulos das correções rápidas apareciam sempre em português; agora seguem <span style="font-weight: bold;" class="mycode_b">o idioma configurado</span> / 🇬🇧 quick-fix titles follow your language setting<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Análise de código</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">A formatação danificava código</span> — 🇧🇷 em <span style="font-weight: bold;" class="mycode_b">comentário no fim da linha</span> e de bloco, em <span style="font-weight: bold;" class="mycode_b">string e caractere com espaço</span>, e em <span style="font-weight: bold;" class="mycode_b">macro com continuação</span> <span style="font-weight: bold;" class="mycode_b">\</span>. E não era estável: formatar duas vezes mudava o arquivo. Agora não altera código nem comentário, e formatar de novo não muda nada / 🇬🇧 formatting corrupted trailing/block comments, spaced string and char literals, and <span style="font-weight: bold;" class="mycode_b">\</span>-continued macros — and wasn't idempotent<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Letra acentuada derrubava a análise</span> — 🇧🇷 o limite de nome do Pawn é de <span style="font-weight: bold;" class="mycode_b">31 caracteres</span> e o corte era feito em <span style="font-weight: bold;" class="mycode_b">31 bytes</span>; <span style="font-weight: bold;" class="mycode_b">ç</span>, <span style="font-weight: bold;" class="mycode_b">ã</span> e <span style="font-weight: bold;" class="mycode_b">é</span> ocupam dois, o corte caía no meio do caractere. Mesma coisa na assinatura, com acento antes do cursor / 🇬🇧 accented characters crashed analysis (31-<span style="font-weight: bold;" class="mycode_b">character</span> limit truncated at 31 <span style="font-weight: bold;" class="mycode_b">bytes</span>)<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Aviso de um texto que já não existe</span> deixa de aparecer: análise que termina depois de uma nova edição é descartada / 🇬🇧 stale diagnostics discarded<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Nome dentro de string</span> contava como referência; chamada em <span style="font-weight: bold;" class="mycode_b">new x = Funcao();</span> era ignorada; a coluna saía errada com acento antes do nome / 🇬🇧 reference counting fixes<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">PP0012</span> (<span style="font-weight: bold;" class="mycode_b">#include</span> sem símbolo usado) não disparava, e a verificação de símbolo não usado não via edição feita em outro arquivo / 🇬🇧 <span style="font-weight: bold;" class="mycode_b">PP0012</span> never fired<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">native</span> e <span style="font-weight: bold;" class="mycode_b">forward</span> com corpo aberto na linha seguinte voltam a ser acusados, e <span style="font-weight: bold;" class="mycode_b">diretiva recuada</span> (<span style="font-weight: bold;" class="mycode_b">    #include</span>) passa a ser reconhecida / 🇬🇧 both back to working<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Depuração</span><ul class="mycode_list"><li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Breakpoint parando na linha errada</span> quando o arquivo foi editado depois de compilar / 🇬🇧 wrong-line breakpoints after post-compile edits<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Breakpoint do gamemode disparando dentro de filterscript</span> — o plugin passa a reconhecer qual script está em depuração / 🇬🇧 gamemode breakpoints firing inside filterscripts<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Breakpoint em include por caminho relativo</span> (<span style="font-weight: bold;" class="mycode_b">#include "../include/x.inc"</span>) passa a ser atingido / 🇬🇧 breakpoints in relatively-included files now hit<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Arrays.</span> Elemento de array de várias dimensões ou recebido por referência mostrava <span style="font-weight: bold;" class="mycode_b">valor de outra posição da memória</span>; data breakpoint e edição em <span style="font-weight: bold;" class="mycode_b">grid<span style="font-style: italic;" class="mycode_i">[j]</span></span><span style="font-style: italic;" class="mycode_i"> passam a funcionar / 🇬🇧 multi-dimensional and by-reference array elements read the wrong memory slot</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Edição de variável</span> só aparece como feita depois que o servidor confirma a escrita / 🇬🇧 variable edits confirmed by the server first</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 A <span style="font-weight: bold;" class="mycode_b">pilha de chamadas</span> mostra o arquivo de cada frame — um frame dentro de include abria o arquivo principal / 🇬🇧 call stack opens the right file per frame</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Depurar com <span style="font-weight: bold;" class="mycode_b">.amx</span> sem informação de depuração <span style="font-weight: bold;" class="mycode_b">recompila</span>, em vez de subir um binário em que nenhum breakpoint pega. E qualquer <span style="font-weight: bold;" class="mycode_b">-d</span> da sua configuração é trocado por <span style="font-weight: bold;" class="mycode_b">-d3</span> só naquela compilação: um <span style="font-weight: bold;" class="mycode_b">-d0</span> ou <span style="font-weight: bold;" class="mycode_b">-d1</span> configurado deixava o <span style="font-weight: bold;" class="mycode_b">.amx</span> sem o que breakpoint e variável precisam / 🇬🇧 a debug-less <span style="font-weight: bold;" class="mycode_b">.amx</span> is recompiled, and <span style="font-weight: bold;" class="mycode_b">-d3</span> is forced for that build only</span><br />
</li>
</ul>
[*]<br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">⚙️ Por dentro: de onde vem essa versão / Under the hood</span></span><br />
<br />
🇧🇷 Vale explicar por que uma lista dessas aparece de uma vez. A extensão comandava, em TypeScript, coisas que não possuía: processos do servidor, portas, RCON, o compilador, a configuração e a resolução de includes. Cada tarefa tinha um caminho diferente por sistema operacional (<span style="font-weight: bold;" class="mycode_b">lsof</span>, <span style="font-weight: bold;" class="mycode_b">/proc</span>, <span style="font-weight: bold;" class="mycode_b">netstat</span>, <span style="font-weight: bold;" class="mycode_b">taskkill</span>), por sinal indireto, e a configuração era lida <span style="font-weight: bold;" class="mycode_b">em dois lugares ao mesmo tempo</span>. Daí vinha boa parte dos defeitos: IntelliSense discordando do que o compilador enxergava, include resolvido de um jeito na análise e de outro na compilação, e uma resposta diferente por sistema.<br />
<br />
🇧🇷 A 4.0.0 move tudo isso para o <span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span>, um projeto novo — primeira versão, <span style="font-weight: bold;" class="mycode_b">0.1.0</span> — em <span style="font-weight: bold;" class="mycode_b">Rust</span>, que acompanha a extensão e também passou a hospedar o motor de análise e o depurador, que antes eram binários separados. Agora há <span style="font-weight: bold;" class="mycode_b">uma resposta só para cada pergunta</span>, e o VSIX traz <span style="font-weight: bold;" class="mycode_b">um binário só</span>.<br />
<br />
🇬🇧 Worth explaining why a list this long lands at once. The extension was driving, in TypeScript, things it didn't own: server processes, ports, RCON, the compiler, configuration and include resolution — one code path per OS, all indirect, with configuration read in <span style="font-weight: bold;" class="mycode_b">two places at once</span>. That's where most of the defects came from. 4.0.0 moves all of it into <span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span>, a new project (<span style="font-weight: bold;" class="mycode_b">0.1.0</span>) written in <span style="font-weight: bold;" class="mycode_b">Rust</span>, which also now hosts the analysis engine and the debugger. One answer per question, one binary in the VSIX.<br />
<br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Você não baixa o núcleo:</span> ele vem dentro da extensão, no binário da sua plataforma — Windows x64, Linux x64 e arm64, macOS x64 e arm64 / 🇬🇧 the core ships inside the extension</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Análise, depuração e o plugin do servidor chegam por um <span style="font-weight: bold;" class="mycode_b">soquete local único</span> (named pipe no Windows), não por porta TCP / 🇬🇧 one local socket, not a TCP port</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Encerrar processo confere de novo, na hora</span>, se ele é o servidor deste projeto e do mesmo usuário / 🇬🇧 process kills re-check ownership</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 A ajuda mostra <span style="font-weight: bold;" class="mycode_b">a versão do núcleo</span> no lugar das versões separadas de motor e depurador / 🇬🇧 one version to report</span><br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">⚠️ Antes de atualizar / Before you update</span></span><br />
<br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Se você usa o depurador: atualize o plugin do servidor.</span> O <span style="font-weight: bold;" class="mycode_b">pawnpro_debug</span> (<span style="font-weight: bold;" class="mycode_b">.so</span> / <span style="font-weight: bold;" class="mycode_b">.dll</span>, <span style="font-weight: bold;" class="mycode_b">32 bits</span>, como o servidor) agora sai no release do <span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span> e precisa ser <span style="font-weight: bold;" class="mycode_b">da mesma versão</span>. Plugin desatualizado faz a sessão falhar — é o primeiro lugar a olhar se o <span style="font-weight: bold;" class="mycode_b">F5</span> não responde. A ajuda da extensão aponta o release certo / 🇬🇧 update the <span style="font-weight: bold;" class="mycode_b">32-bit</span> <span style="font-weight: bold;" class="mycode_b">pawnpro_debug</span> plugin to the matching version</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 <span style="font-weight: bold;" class="mycode_b">Foram removidos do launch.json</span> os campos <span style="font-weight: bold;" class="mycode_b">server</span>, <span style="font-weight: bold;" class="mycode_b">session</span> e <span style="font-weight: bold;" class="mycode_b">stopOnEntry</span>, que já eram ignorados. O servidor vem da seção <span style="font-weight: bold;" class="mycode_b">server</span> das configurações / 🇬🇧 <span style="font-weight: bold;" class="mycode_b">server</span>, <span style="font-weight: bold;" class="mycode_b">session</span> and <span style="font-weight: bold;" class="mycode_b">stopOnEntry</span> removed from <span style="font-weight: bold;" class="mycode_b">launch.json</span> (they were already ignored)</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Fora isso, <span style="font-weight: bold;" class="mycode_b">sua configuração e seus projetos continuam valendo</span>, e não há nada a instalar à parte / 🇬🇧 otherwise your settings and projects carry over</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i">🇧🇷 Lembrete que ainda é o erro mais comum: <span style="font-weight: bold;" class="mycode_b">abra a PASTA do projeto</span>, não o <span style="font-weight: bold;" class="mycode_b">.pwn</span> solto — sem ela não há como achar seus includes / 🇬🇧 open the project <span style="font-weight: bold;" class="mycode_b">folder</span>, not a lone <span style="font-weight: bold;" class="mycode_b">.pwn</span></span><br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🔎 O que ainda não está verificado</span></span><br />
<span style="font-size: 15pt;" class="mycode_size">Not verified yet</span><br />
<br />
🇧🇷 O depurador continua marcado como <span style="font-weight: bold;" class="mycode_b">instável</span>, e é honesto dizer onde:<br />
<br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">Depuração no Windows nunca foi testada num servidor Windows real.</span> Ela é compilada e publicada, mas lá o canal com o servidor é outro (<span style="font-weight: bold;" class="mycode_b">named pipe</span>) e o encerramento também — o mecanismo que garante que o servidor morre junto com a sessão <span style="font-weight: bold;" class="mycode_b">só existe no Linux</span>. Se você hospeda no Windows e testar, esse relato é o mais útil que existe agora</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">Pausar com jogadores conectados</span> foi medido <span style="font-weight: bold;" class="mycode_b">sem clientes de verdade</span>. Num teste, um jogador continuou se movendo com a execução parada num breakpoint; não se sabe o efeito com servidor cheio, nem se a rajada de sincronia na retomada derruba conexão</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><span style="font-weight: bold;" class="mycode_b">A posição do breakpoint muda o cenário</span>: parar num comando, que roda de vez em quando, não é o mesmo que parar num callback que roda a cada tick</span><br />
</li>
</ul>
<span style="font-style: italic;" class="mycode_i"><br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Bug encontrado vira issue pública, não vira segredo. Se você esbarrar em algo, ligue o log em <span style="font-weight: bold;" class="mycode_b">info</span>, anexe o arquivo e <span style="font-weight: bold;" class="mycode_b">abra uma issue</span> — é assim que isto melhora.<br />
🇬🇧 Bugs become public issues, not secrets. If you hit something, set logging to <span style="font-weight: bold;" class="mycode_b">info</span>, attach the file and <span style="font-weight: bold;" class="mycode_b">open an issue</span>.</blockquote>
<br />
</span><br />
<hr class="mycode_hr" />
<span style="font-style: italic;" class="mycode_i"><br />
<span style="font-size: 18pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Links</span></span><br />
</span><ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i"><a href="https://github.com/NullSablex/PawnPro/blob/master/CHANGELOG.md" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Changelog completo da 4.0.0</span></a> — 🇧🇷 com tudo que não caberia aqui / 🇬🇧 the full list</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><a href="https://pawnpro.nullsablex.com" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">pawnpro.nullsablex.com</span></a> — 🇧🇷 documentação da extensão / 🇬🇧 extension docs</span><br />
</li>
<li><span style="font-style: italic;" class="mycode_i"><a href="https://github.com/NullSablex/PawnPro-Core" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro-Core</span></a> — 🇧🇷 o núcleo em Rust, para quem quiser ver por dentro / 🇬🇧 the Rust core, if you want the internals</span><br />
</li>
</ul>
<span style="font-style: italic;" class="mycode_i"><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ext install NullSablex.pawnpro</code></div></div><br />
</span><br />
<div style="text-align: center;" class="mycode_align"><span style="font-style: italic;" class="mycode_i">[i]🇧🇷 Dúvida, crítica e relato de bug são bem-vindos — aqui no tópico ou nas issues do GitHub.<br />
🇬🇧 Questions, criticism and bug reports are welcome — here or on GitHub issues.</span><br />
<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">⭐ github.com/NullSablex/PawnPro</span></a>[/i]</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PawnPro 3.5.0 — IntelliSense, debugger e servidor no editor]]></title>
			<link>https://forum.open.mp/showthread.php?tid=6270</link>
			<pubDate>Tue, 01 Sep 2026 19:16:24 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=7983">NullSablex</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=6270</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: 30pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #0e639c;" class="mycode_color">⚡ PawnPro 3.5.0</span></span></span><br />
<br />
<span style="font-size: 15pt;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">Uma IDE completa para Pawn dentro do seu editor — SA-MP e open.mp</span><br />
<span style="font-style: italic;" class="mycode_i">A complete Pawn IDE inside your editor — SA-MP and open.mp</span></span><br />
<br />
<a href="https://marketplace.visualstudio.com/items?itemName=NullSablex.pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Marketplace</span></a> · <a href="https://open-vsx.org/extension/NullSablex/pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Open VSX</span></a> · <a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">GitHub</span></a> · <a href="https://pawnpro.nullsablex.com" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Documentação</span></a></div>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 A 3.5.0 está no ar. Junto com ela, o motor de análise sobe para a <span style="font-weight: bold;" class="mycode_b">1.4.0</span> e o depurador para a <span style="font-weight: bold;" class="mycode_b">0.2.0</span>. É a maior atualização até agora: documentação de funções no hover, depuração de verdade, e uma auditoria de segurança no envio de comandos RCON.<br />
<br />
🇬🇧 3.5.0 is out. The analysis engine moves to <span style="font-weight: bold;" class="mycode_b">1.4.0</span> and the debugger to <span style="font-weight: bold;" class="mycode_b">0.2.0</span>. It's the biggest update so far: function docs on hover, real debugging, and a security audit on RCON command sending.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🤔 O problema / The problem</span></span><br />
<br />
🇧🇷 Quem escreve gamemode conhece o ciclo: salvar, trocar de janela, compilar, ler um erro sem contexto, voltar, procurar a linha. Errou o nome de uma função? Só descobre no compilador. Quer saber o que aquele native faz? Abre o <span style="font-weight: bold;" class="mycode_b">.inc</span> e lê o código.<br />
<br />
🇬🇧 If you write gamemodes, you know the loop: save, alt-tab, compile, read a context-free error, go back, hunt for the line. Typo in a function name? The compiler tells you. Want to know what that native does? Open the <span style="font-weight: bold;" class="mycode_b">.inc</span> and read it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🇧🇷 O PawnPro corta esse ciclo.</span> O código é analisado enquanto você escreve — por um motor próprio escrito em <span style="font-weight: bold;" class="mycode_b">Rust</span>, rodando fora do editor, não por expressões regulares.<br />
<span style="font-weight: bold;" class="mycode_b">🇬🇧 PawnPro cuts that loop.</span> Your code is analyzed as you type — by a dedicated engine written in <span style="font-weight: bold;" class="mycode_b">Rust</span>, running out of process, not by regex.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/Q77hGd0h" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rKKqJs9q/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">✨ O que a 3.5.0 traz / What's new in 3.5.0</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">📖 Documentação de funções no hover</span><br />
🇧🇷 O comentário acima da função vira texto formatado — nada de <span style="font-weight: bold;" class="mycode_b">*</span> e tags soltas na tela. Reconhece <span style="font-weight: bold;" class="mycode_b">Javadoc</span> (<span style="font-weight: bold;" class="mycode_b">@param</span>) e <span style="font-weight: bold;" class="mycode_b">XMLdoc</span> (<span style="font-weight: bold;" class="mycode_b">&lt;summary&gt;</span>, o formato do <span style="font-weight: bold;" class="mycode_b">omp-stdlib</span>). Ao digitar a chamada, a descrição do parâmetro em que você está aparece sozinha.<br />
🇬🇧 The comment above a function becomes formatted text — no more raw <span style="font-weight: bold;" class="mycode_b">*</span> and tags. Recognizes <span style="font-weight: bold;" class="mycode_b">Javadoc</span> and <span style="font-weight: bold;" class="mycode_b">XMLdoc</span>. While typing a call, the description of the parameter you're on shows up on its own.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/p6sMS9PW" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/4wDXH5fs/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🐞 Depuração de verdade / Real debugging</span><br />
🇧🇷 <span style="font-weight: bold;" class="mycode_b">F5</span> e pronto: breakpoints (simples, condicionais, por contagem e logpoints), passo a passo, inspeção de variáveis, watch, call stack e <span style="font-weight: bold;" class="mycode_b">data breakpoints</span> — pausar quando um valor muda. Depuração de gamemode, não <span style="font-weight: bold;" class="mycode_b">print()</span> espalhado pelo código.<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">F5</span> and you're in: breakpoints (plain, conditional, hit-count and logpoints), stepping, variable inspection, watch, call stack and <span style="font-weight: bold;" class="mycode_b">data breakpoints</span>. Gamemode debugging, not <span style="font-weight: bold;" class="mycode_b">print()</span> scattered around.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/1tBvVydK" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/HfRFvwxY/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/3PWDm7Y" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rXMC2mf/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🖥️ Servidor sem sair do editor / Server without leaving the editor</span><br />
🇧🇷 Iniciar, parar, reiniciar e mandar comando RCON pelo painel lateral. Histórico e favoritos com busca, e o log acompanhado em tempo real. A senha do RCON sai do <span style="font-weight: bold;" class="mycode_b">server.cfg</span> sozinha — você não digita.<br />
🇬🇧 Start, stop, restart and send RCON commands from the side panel. History and favorites with search, live log tailing. The RCON password is read from <span style="font-weight: bold;" class="mycode_b">server.cfg</span> — you never type it.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/cX2zFrKC" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/pr4CzL6R/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/RpshzQLw" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/0j6BhYPb/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🔒 Segurança no RCON / RCON security</span><br />
🇧🇷 O RCON do SA-MP é um protocolo de 2005: manda a senha em <span style="font-weight: bold;" class="mycode_b">texto claro</span> por UDP. Esta versão fecha cinco pontos da auditoria — resposta forjada aceita como legítima, envio de senha para fora da máquina, e comandos com credencial que ficavam gravados no histórico. Envio direto agora só para servidor local; remoto vai pelo terminal.<br />
🇬🇧 SA-MP's RCON is a 2005 protocol: it sends the password in <span style="font-weight: bold;" class="mycode_b">cleartext</span> over UDP. This release closes five audit findings — forged replies accepted as legitimate, passwords leaving the machine, and credential-bearing commands stored in history.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🎨 Interface que você ajusta / An interface you tune</span><br />
🇧🇷 Escolha a <span style="font-weight: bold;" class="mycode_b">cor de destaque</span> entre seis opções (ou deixe herdar do seu tema). Painel de configurações visual, sem editar JSON. E cinco idiomas — <span style="font-weight: bold;" class="mycode_b">português, inglês, espanhol, romeno e russo</span> — com a interface e os diagnósticos configuráveis <span style="font-weight: bold;" class="mycode_b">separadamente</span>: dá para ter o editor em português e os erros em inglês.<br />
🇬🇧 Pick an <span style="font-weight: bold;" class="mycode_b">accent color</span> from six options. Visual settings page, no JSON editing. Five languages, with UI and diagnostics configurable <span style="font-weight: bold;" class="mycode_b">independently</span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/0jDccCwm" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/5WM66r7G/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/KcmJptzy" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/TDrsxQqh/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🆚 SA-MP ou open.mp: o que muda / SA-MP vs open.mp</span></span><br />
<br />
🇧🇷 A extensão funciona nos dois, e detecta sozinha qual você usa. Mas <span style="font-weight: bold;" class="mycode_b">o que você vê na tela muda</span>, e vale explicar por quê.<br />
<br />
🇬🇧 The extension works with both and detects which one you use. But <span style="font-weight: bold;" class="mycode_b">what you see differs</span>, and it's worth explaining why.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🟢 Com open.mp (omp-stdlib)</span><br />
🇧🇷 Os includes do open.mp trazem documentação <span style="font-weight: bold;" class="mycode_b">XMLdoc</span> embutida. Resultado: passe o mouse sobre <span style="font-weight: bold;" class="mycode_b">CreateVehicle</span> e você vê o resumo da função, cada parâmetro explicado e o que ela retorna — sem abrir o <span style="font-weight: bold;" class="mycode_b">.inc</span>. O signature help mostra a descrição do parâmetro enquanto você digita.<br />
🇬🇧 open.mp includes ship with embedded <span style="font-weight: bold;" class="mycode_b">XMLdoc</span>. Hover <span style="font-weight: bold;" class="mycode_b">CreateVehicle</span> and you get the summary, every parameter explained and the return value — without opening the <span style="font-weight: bold;" class="mycode_b">.inc</span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/pvfXzNJ5" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/7JnyWB2L/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🟡 Com SA-MP clássico</span><br />
🇧🇷 Os includes do SA-MP não têm essa documentação. Você continua tendo <span style="font-weight: bold;" class="mycode_b">autocomplete, ir para a definição, referências, diagnósticos e o depurador</span> — tudo funciona igual. O que aparece no hover é a assinatura da função. Se o seu projeto tem includes próprios comentados, esses <span style="font-weight: bold;" class="mycode_b">sim</span> aparecem formatados: basta escrever o comentário em Javadoc ou XMLdoc acima da função.<br />
🇬🇧 SA-MP includes don't carry that documentation. You still get <span style="font-weight: bold;" class="mycode_b">autocomplete, go-to-definition, references, diagnostics and the debugger</span>. Hover shows the signature. Your own commented includes <span style="font-weight: bold;" class="mycode_b">do</span> render formatted.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/7dw16wDj" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/39DCLDb4/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/jP3YvMg1" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rR5hG641/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Resumindo:</span> no open.mp você ganha a documentação de graça; no SA-MP você ganha ela se documentar seus próprios includes. O resto — análise, diagnósticos, compilação e debug — é idêntico.<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">In short:</span> on open.mp you get the docs for free; on SA-MP you get them by documenting your own includes. Everything else is identical.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🎯 Como usar / Getting started</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Instale / Install</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ext install NullSablex.pawnpro</code></div></div>🇧🇷 Ou procure por <span style="font-weight: bold;" class="mycode_b">PawnPro</span> no marketplace do seu editor. Funciona no <span style="font-weight: bold;" class="mycode_b">VS Code</span> e no <span style="font-weight: bold;" class="mycode_b">VSCodium</span>, em Windows, Linux e macOS.<br />
🇬🇧 Or search for <span style="font-weight: bold;" class="mycode_b">PawnPro</span> in your editor's marketplace.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Abra a PASTA do gamemode, não o arquivo / Open the FOLDER</span><br />
🇧🇷 Esse é o erro mais comum. Abrindo só o <span style="font-weight: bold;" class="mycode_b">.pwn</span> solto, a extensão não tem como achar seus includes. Abra a pasta do projeto.<br />
🇬🇧 Most common mistake. Opening a lone <span style="font-weight: bold;" class="mycode_b">.pwn</span> leaves the extension without your includes. Open the project folder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Atalhos que valem decorar / Shortcuts worth memorizing</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Ctrl+Alt+B</span> — 🇧🇷 compila o arquivo atual / 🇬🇧 compile current file<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">F5</span> — 🇧🇷 inicia a depuração / 🇬🇧 start debugging<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Ctrl+.</span> — 🇧🇷 correção automática no erro sob o cursor / 🇬🇧 quick fix<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">F12</span> — 🇧🇷 ir para a definição / 🇬🇧 go to definition<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Shift+F12</span> — 🇧🇷 ver todas as referências / 🇬🇧 find all references<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">4. Dica: deixe o assistente de nomes trabalhar / Tip: let the naming assistant work</span><br />
🇧🇷 Nas configurações, seção <span style="font-weight: bold;" class="mycode_b">Nomenclatura</span>, escolha a convenção de cada tipo de identificador. Tem os cinco estilos prontos (<span style="font-weight: bold;" class="mycode_b">camelCase</span>, <span style="font-weight: bold;" class="mycode_b">snake_case</span>, <span style="font-weight: bold;" class="mycode_b">PascalCase</span>, <span style="font-weight: bold;" class="mycode_b">UPPER_CASE</span>, <span style="font-weight: bold;" class="mycode_b">Capitalized_Snake</span>) e, novidade da 3.5.0, <span style="font-weight: bold;" class="mycode_b">seu próprio padrão por expressão regular</span> — útil se a casa usa <span style="font-weight: bold;" class="mycode_b">g_</span> nas globais, por exemplo. Vem desligado; ligue se quiser.<br />
🇬🇧 Under <span style="font-weight: bold;" class="mycode_b">Naming</span>, pick the convention per identifier type. Five built-in styles plus, new in 3.5.0, <span style="font-weight: bold;" class="mycode_b">your own regex pattern</span>. Off by default.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/G481MRZ5" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/hJ4ndVGm/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/pv7t9p75" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/bg0S8n0D/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<span style="font-weight: bold;" class="mycode_b">5. Se os includes não forem achados / If includes aren't found</span><br />
🇧🇷 Barra de status → <span style="font-weight: bold;" class="mycode_b">PawnPro</span> → <span style="font-weight: bold;" class="mycode_b">Configurações</span> → aponte o caminho do <span style="font-weight: bold;" class="mycode_b">pawno/include</span>. Na maioria dos projetos a detecção automática resolve sozinha.<br />
🇬🇧 Status bar → <span style="font-weight: bold;" class="mycode_b">PawnPro</span> → <span style="font-weight: bold;" class="mycode_b">Settings</span> → point to <span style="font-weight: bold;" class="mycode_b">pawno/include</span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/GvYvCLwT" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rG8G5SPs/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🎬 Em breve: vídeos / Coming: videos</span></span><br />
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Estão sendo preparados <span style="font-weight: bold;" class="mycode_b">mini-tutoriais em vídeo</span> — instalação, primeiro projeto, uso do depurador e as configurações que valem a pena mexer. Curtos e diretos ao ponto. <span style="font-weight: bold;" class="mycode_b">Sem data definida</span> ainda, mas vêm.<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">Short video tutorials</span> are in the works — install, first project, using the debugger, and the settings worth touching. <span style="font-weight: bold;" class="mycode_b">No date yet</span>, but they're coming.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🐛 Transparência: o que já achamos depois do lançamento</span></span><br />
<span style="font-size: 15pt;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">Being upfront: what we found after release</span></span><br />
<br />
🇧🇷 A versão saiu e, algumas horas depois, testando a fundo, apareceram bugs. Preferimos dizer isso na cara do que deixar você descobrir sozinho:<br />
<br />
🇬🇧 The release went out and, a few hours later, thorough testing turned up bugs. We'd rather tell you than let you find out on your own:<br />
<ul class="mycode_list"><li><a href="https://github.com/NullSablex/PawnPro/issues/83" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#83</span></a> — 🇧🇷 comandos RCON pelo painel podem não ter efeito nem retorno / 🇬🇧 RCON commands from the panel may have no effect<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro/issues/84" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#84</span></a> — 🇧🇷 iniciando o servidor pelo depurador, o painel não reconhece que ele está no ar e a saída do console se perde / 🇬🇧 starting the server via the debugger leaves the panel unaware and the console output missing<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro/issues/85" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#85</span></a> — 🇧🇷 se o plugin de depuração do servidor estiver desatualizado, a sessão falha <span style="font-weight: bold;" class="mycode_b">em silêncio</span>. Se a depuração não responder, é o primeiro lugar a olhar: o plugin precisa ser o <span style="font-weight: bold;" class="mycode_b">0.2.0</span> / 🇬🇧 an outdated server debug plugin makes the session fail silently — check that the plugin is <span style="font-weight: bold;" class="mycode_b">0.2.0</span><br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro/issues/82" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#82</span></a> — 🇧🇷 o exemplo do padrão próprio de nomenclatura não aparece para alguns padrões válidos (só a pré-visualização; a análise funciona) / 🇬🇧 cosmetic: the custom naming pattern preview doesn't show an example for some valid patterns<br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Nenhum deles impede o uso da extensão, e todos estão registrados publicamente. A ideia é justamente essa: bug encontrado vira issue, não vira segredo. Se você esbarrar em algo, <span style="font-weight: bold;" class="mycode_b">abra uma issue</span> — é assim que a coisa melhora.<br />
<br />
🇬🇧 None of these block using the extension, and all are publicly tracked. That's the point: bugs become issues, not secrets. If you hit something, <span style="font-weight: bold;" class="mycode_b">open an issue</span> — that's how this gets better.</blockquote>
<br />
<span style="font-weight: bold;" class="mycode_b">🔬 O depurador está em estudo prático / The debugger is under practical study</span><br />
🇧🇷 Vale ser claro sobre isto: <span style="font-weight: bold;" class="mycode_b">o depurador é território novo</span>. O SA-MP é fechado — não há especificação para consultar, e boa parte do que se sabe veio de engenharia reversa da comunidade ao longo dos anos. O open.mp é aberto, mas tem suas próprias diferenças de comportamento. Então o que existe hoje foi construído testando, observando e ajustando.<br />
<br />
O que ainda está sendo estudado, honestamente:<br />
<ul class="mycode_list"><li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Até que ponto dá para depurar com jogadores conectados.</span> O manual dizia que o servidor congela por inteiro; testando, um jogador continuou se movendo normalmente com o breakpoint parado num comando. Ainda não sabemos se isso vale para servidor cheio, nem o que acontece na hora de retomar com muita coisa acumulada.<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Onde o breakpoint está parece mudar tudo.</span> Parar dentro de um comando (que roda de vez em quando) não é o mesmo que parar dentro de um callback que roda a cada tick.<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Data breakpoint em array</span> — funciona, mas ainda estamos entendendo em que posição marcar e por quê.<br />
</li>
</ul>
<br />
🇬🇧 To be clear: <span style="font-weight: bold;" class="mycode_b">the debugger is new ground</span>. SA-MP is closed source — there's no spec to consult, and much of what's known came from years of community reverse engineering. open.mp is open, but behaves differently in its own ways. What exists today was built by testing, observing and adjusting. Still under study: how far debugging with connected players actually goes, how much the breakpoint's location changes the picture, and the details of data breakpoints on arrays.<br />
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Isso não é aviso de "use por sua conta e risco" — é convite. Se você testar em cenário diferente do nosso e vir algo, <span style="font-weight: bold;" class="mycode_b">conte</span>. Cada relato encurta o caminho.<br />
🇬🇧 This isn't a "use at your own risk" disclaimer — it's an invitation. If you test in a scenario we haven't and see something, <span style="font-weight: bold;" class="mycode_b">tell us</span>.</blockquote>
<br />
<span style="font-weight: bold;" class="mycode_b">⏱️ Fique de olho: correção em até 2 dias / Heads up: fix within 2 days</span><br />
🇧🇷 Uma versão com essas correções — e com o que mais aparecer nesse meio-tempo — deve sair em <span style="font-weight: bold;" class="mycode_b">até 2 dias</span>. Vale manter a atualização automática da extensão ligada, ou passar aqui para conferir.<br />
🇬🇧 A release with these fixes — plus whatever else turns up in the meantime — should land <span style="font-weight: bold;" class="mycode_b">within 2 days</span>. Keep auto-update on, or check back here.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 18pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">📋 Changelog completo / Full changelog</span></span><br />
🇧🇷 A 3.5.0 tem 50 entradas registradas, divididas em Adicionado, Alterado, Segurança, Corrigido e Documentação.<br />
<a href="https://github.com/NullSablex/PawnPro/blob/master/CHANGELOG.md" target="_blank" rel="noopener" class="mycode_url">CHANGELOG.md</a><br />
<br />
<span style="font-size: 18pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🧩 Os três projetos / The three projects</span></span><ul class="mycode_list"><li><a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro</span></a> — 🇧🇷 a extensão / 🇬🇧 the extension<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro-Engine" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro Engine</span></a> — 🇧🇷 o motor de análise em Rust (LSP) / 🇬🇧 the Rust analysis engine<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro-Debugger" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro Debugger</span></a> — 🇧🇷 o adaptador de depuração / 🇬🇧 the debug adapter<br />
</li>
</ul>
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-style: italic;" class="mycode_i">🇧🇷 Feedback, dúvidas e relatos de bug são bem-vindos — aqui no tópico ou nas issues do GitHub.<br />
🇬🇧 Feedback, questions and bug reports are welcome — here or on GitHub issues.</span><br />
<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">⭐ github.com/NullSablex/PawnPro</span></a></div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: 30pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><span style="color: #0e639c;" class="mycode_color">⚡ PawnPro 3.5.0</span></span></span><br />
<br />
<span style="font-size: 15pt;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">Uma IDE completa para Pawn dentro do seu editor — SA-MP e open.mp</span><br />
<span style="font-style: italic;" class="mycode_i">A complete Pawn IDE inside your editor — SA-MP and open.mp</span></span><br />
<br />
<a href="https://marketplace.visualstudio.com/items?itemName=NullSablex.pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Marketplace</span></a> · <a href="https://open-vsx.org/extension/NullSablex/pawnpro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Open VSX</span></a> · <a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">GitHub</span></a> · <a href="https://pawnpro.nullsablex.com" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Documentação</span></a></div>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 A 3.5.0 está no ar. Junto com ela, o motor de análise sobe para a <span style="font-weight: bold;" class="mycode_b">1.4.0</span> e o depurador para a <span style="font-weight: bold;" class="mycode_b">0.2.0</span>. É a maior atualização até agora: documentação de funções no hover, depuração de verdade, e uma auditoria de segurança no envio de comandos RCON.<br />
<br />
🇬🇧 3.5.0 is out. The analysis engine moves to <span style="font-weight: bold;" class="mycode_b">1.4.0</span> and the debugger to <span style="font-weight: bold;" class="mycode_b">0.2.0</span>. It's the biggest update so far: function docs on hover, real debugging, and a security audit on RCON command sending.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🤔 O problema / The problem</span></span><br />
<br />
🇧🇷 Quem escreve gamemode conhece o ciclo: salvar, trocar de janela, compilar, ler um erro sem contexto, voltar, procurar a linha. Errou o nome de uma função? Só descobre no compilador. Quer saber o que aquele native faz? Abre o <span style="font-weight: bold;" class="mycode_b">.inc</span> e lê o código.<br />
<br />
🇬🇧 If you write gamemodes, you know the loop: save, alt-tab, compile, read a context-free error, go back, hunt for the line. Typo in a function name? The compiler tells you. Want to know what that native does? Open the <span style="font-weight: bold;" class="mycode_b">.inc</span> and read it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🇧🇷 O PawnPro corta esse ciclo.</span> O código é analisado enquanto você escreve — por um motor próprio escrito em <span style="font-weight: bold;" class="mycode_b">Rust</span>, rodando fora do editor, não por expressões regulares.<br />
<span style="font-weight: bold;" class="mycode_b">🇬🇧 PawnPro cuts that loop.</span> Your code is analyzed as you type — by a dedicated engine written in <span style="font-weight: bold;" class="mycode_b">Rust</span>, running out of process, not by regex.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/Q77hGd0h" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rKKqJs9q/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">✨ O que a 3.5.0 traz / What's new in 3.5.0</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">📖 Documentação de funções no hover</span><br />
🇧🇷 O comentário acima da função vira texto formatado — nada de <span style="font-weight: bold;" class="mycode_b">*</span> e tags soltas na tela. Reconhece <span style="font-weight: bold;" class="mycode_b">Javadoc</span> (<span style="font-weight: bold;" class="mycode_b">@param</span>) e <span style="font-weight: bold;" class="mycode_b">XMLdoc</span> (<span style="font-weight: bold;" class="mycode_b">&lt;summary&gt;</span>, o formato do <span style="font-weight: bold;" class="mycode_b">omp-stdlib</span>). Ao digitar a chamada, a descrição do parâmetro em que você está aparece sozinha.<br />
🇬🇧 The comment above a function becomes formatted text — no more raw <span style="font-weight: bold;" class="mycode_b">*</span> and tags. Recognizes <span style="font-weight: bold;" class="mycode_b">Javadoc</span> and <span style="font-weight: bold;" class="mycode_b">XMLdoc</span>. While typing a call, the description of the parameter you're on shows up on its own.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/p6sMS9PW" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/4wDXH5fs/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🐞 Depuração de verdade / Real debugging</span><br />
🇧🇷 <span style="font-weight: bold;" class="mycode_b">F5</span> e pronto: breakpoints (simples, condicionais, por contagem e logpoints), passo a passo, inspeção de variáveis, watch, call stack e <span style="font-weight: bold;" class="mycode_b">data breakpoints</span> — pausar quando um valor muda. Depuração de gamemode, não <span style="font-weight: bold;" class="mycode_b">print()</span> espalhado pelo código.<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">F5</span> and you're in: breakpoints (plain, conditional, hit-count and logpoints), stepping, variable inspection, watch, call stack and <span style="font-weight: bold;" class="mycode_b">data breakpoints</span>. Gamemode debugging, not <span style="font-weight: bold;" class="mycode_b">print()</span> scattered around.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/1tBvVydK" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/HfRFvwxY/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/3PWDm7Y" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rXMC2mf/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🖥️ Servidor sem sair do editor / Server without leaving the editor</span><br />
🇧🇷 Iniciar, parar, reiniciar e mandar comando RCON pelo painel lateral. Histórico e favoritos com busca, e o log acompanhado em tempo real. A senha do RCON sai do <span style="font-weight: bold;" class="mycode_b">server.cfg</span> sozinha — você não digita.<br />
🇬🇧 Start, stop, restart and send RCON commands from the side panel. History and favorites with search, live log tailing. The RCON password is read from <span style="font-weight: bold;" class="mycode_b">server.cfg</span> — you never type it.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/cX2zFrKC" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/pr4CzL6R/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/RpshzQLw" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/0j6BhYPb/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🔒 Segurança no RCON / RCON security</span><br />
🇧🇷 O RCON do SA-MP é um protocolo de 2005: manda a senha em <span style="font-weight: bold;" class="mycode_b">texto claro</span> por UDP. Esta versão fecha cinco pontos da auditoria — resposta forjada aceita como legítima, envio de senha para fora da máquina, e comandos com credencial que ficavam gravados no histórico. Envio direto agora só para servidor local; remoto vai pelo terminal.<br />
🇬🇧 SA-MP's RCON is a 2005 protocol: it sends the password in <span style="font-weight: bold;" class="mycode_b">cleartext</span> over UDP. This release closes five audit findings — forged replies accepted as legitimate, passwords leaving the machine, and credential-bearing commands stored in history.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🎨 Interface que você ajusta / An interface you tune</span><br />
🇧🇷 Escolha a <span style="font-weight: bold;" class="mycode_b">cor de destaque</span> entre seis opções (ou deixe herdar do seu tema). Painel de configurações visual, sem editar JSON. E cinco idiomas — <span style="font-weight: bold;" class="mycode_b">português, inglês, espanhol, romeno e russo</span> — com a interface e os diagnósticos configuráveis <span style="font-weight: bold;" class="mycode_b">separadamente</span>: dá para ter o editor em português e os erros em inglês.<br />
🇬🇧 Pick an <span style="font-weight: bold;" class="mycode_b">accent color</span> from six options. Visual settings page, no JSON editing. Five languages, with UI and diagnostics configurable <span style="font-weight: bold;" class="mycode_b">independently</span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/0jDccCwm" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/5WM66r7G/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/KcmJptzy" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/TDrsxQqh/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🆚 SA-MP ou open.mp: o que muda / SA-MP vs open.mp</span></span><br />
<br />
🇧🇷 A extensão funciona nos dois, e detecta sozinha qual você usa. Mas <span style="font-weight: bold;" class="mycode_b">o que você vê na tela muda</span>, e vale explicar por quê.<br />
<br />
🇬🇧 The extension works with both and detects which one you use. But <span style="font-weight: bold;" class="mycode_b">what you see differs</span>, and it's worth explaining why.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">🟢 Com open.mp (omp-stdlib)</span><br />
🇧🇷 Os includes do open.mp trazem documentação <span style="font-weight: bold;" class="mycode_b">XMLdoc</span> embutida. Resultado: passe o mouse sobre <span style="font-weight: bold;" class="mycode_b">CreateVehicle</span> e você vê o resumo da função, cada parâmetro explicado e o que ela retorna — sem abrir o <span style="font-weight: bold;" class="mycode_b">.inc</span>. O signature help mostra a descrição do parâmetro enquanto você digita.<br />
🇬🇧 open.mp includes ship with embedded <span style="font-weight: bold;" class="mycode_b">XMLdoc</span>. Hover <span style="font-weight: bold;" class="mycode_b">CreateVehicle</span> and you get the summary, every parameter explained and the return value — without opening the <span style="font-weight: bold;" class="mycode_b">.inc</span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/pvfXzNJ5" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/7JnyWB2L/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<span style="font-weight: bold;" class="mycode_b">🟡 Com SA-MP clássico</span><br />
🇧🇷 Os includes do SA-MP não têm essa documentação. Você continua tendo <span style="font-weight: bold;" class="mycode_b">autocomplete, ir para a definição, referências, diagnósticos e o depurador</span> — tudo funciona igual. O que aparece no hover é a assinatura da função. Se o seu projeto tem includes próprios comentados, esses <span style="font-weight: bold;" class="mycode_b">sim</span> aparecem formatados: basta escrever o comentário em Javadoc ou XMLdoc acima da função.<br />
🇬🇧 SA-MP includes don't carry that documentation. You still get <span style="font-weight: bold;" class="mycode_b">autocomplete, go-to-definition, references, diagnostics and the debugger</span>. Hover shows the signature. Your own commented includes <span style="font-weight: bold;" class="mycode_b">do</span> render formatted.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/7dw16wDj" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/39DCLDb4/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/jP3YvMg1" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rR5hG641/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Resumindo:</span> no open.mp você ganha a documentação de graça; no SA-MP você ganha ela se documentar seus próprios includes. O resto — análise, diagnósticos, compilação e debug — é idêntico.<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">In short:</span> on open.mp you get the docs for free; on SA-MP you get them by documenting your own includes. Everything else is identical.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🎯 Como usar / Getting started</span></span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">1. Instale / Install</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>ext install NullSablex.pawnpro</code></div></div>🇧🇷 Ou procure por <span style="font-weight: bold;" class="mycode_b">PawnPro</span> no marketplace do seu editor. Funciona no <span style="font-weight: bold;" class="mycode_b">VS Code</span> e no <span style="font-weight: bold;" class="mycode_b">VSCodium</span>, em Windows, Linux e macOS.<br />
🇬🇧 Or search for <span style="font-weight: bold;" class="mycode_b">PawnPro</span> in your editor's marketplace.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">2. Abra a PASTA do gamemode, não o arquivo / Open the FOLDER</span><br />
🇧🇷 Esse é o erro mais comum. Abrindo só o <span style="font-weight: bold;" class="mycode_b">.pwn</span> solto, a extensão não tem como achar seus includes. Abra a pasta do projeto.<br />
🇬🇧 Most common mistake. Opening a lone <span style="font-weight: bold;" class="mycode_b">.pwn</span> leaves the extension without your includes. Open the project folder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">3. Atalhos que valem decorar / Shortcuts worth memorizing</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Ctrl+Alt+B</span> — 🇧🇷 compila o arquivo atual / 🇬🇧 compile current file<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">F5</span> — 🇧🇷 inicia a depuração / 🇬🇧 start debugging<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Ctrl+.</span> — 🇧🇷 correção automática no erro sob o cursor / 🇬🇧 quick fix<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">F12</span> — 🇧🇷 ir para a definição / 🇬🇧 go to definition<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Shift+F12</span> — 🇧🇷 ver todas as referências / 🇬🇧 find all references<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">4. Dica: deixe o assistente de nomes trabalhar / Tip: let the naming assistant work</span><br />
🇧🇷 Nas configurações, seção <span style="font-weight: bold;" class="mycode_b">Nomenclatura</span>, escolha a convenção de cada tipo de identificador. Tem os cinco estilos prontos (<span style="font-weight: bold;" class="mycode_b">camelCase</span>, <span style="font-weight: bold;" class="mycode_b">snake_case</span>, <span style="font-weight: bold;" class="mycode_b">PascalCase</span>, <span style="font-weight: bold;" class="mycode_b">UPPER_CASE</span>, <span style="font-weight: bold;" class="mycode_b">Capitalized_Snake</span>) e, novidade da 3.5.0, <span style="font-weight: bold;" class="mycode_b">seu próprio padrão por expressão regular</span> — útil se a casa usa <span style="font-weight: bold;" class="mycode_b">g_</span> nas globais, por exemplo. Vem desligado; ligue se quiser.<br />
🇬🇧 Under <span style="font-weight: bold;" class="mycode_b">Naming</span>, pick the convention per identifier type. Five built-in styles plus, new in 3.5.0, <span style="font-weight: bold;" class="mycode_b">your own regex pattern</span>. Off by default.<br />
<br />
<div style="text-align: center;" class="mycode_align"><table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;"><tr>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/G481MRZ5" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/hJ4ndVGm/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
<td class="trow1" valign="top" align="center"><a href="https://ibb.co/pv7t9p75" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/bg0S8n0D/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></td>
</tr></table></div>
<br />
<span style="font-weight: bold;" class="mycode_b">5. Se os includes não forem achados / If includes aren't found</span><br />
🇧🇷 Barra de status → <span style="font-weight: bold;" class="mycode_b">PawnPro</span> → <span style="font-weight: bold;" class="mycode_b">Configurações</span> → aponte o caminho do <span style="font-weight: bold;" class="mycode_b">pawno/include</span>. Na maioria dos projetos a detecção automática resolve sozinha.<br />
🇬🇧 Status bar → <span style="font-weight: bold;" class="mycode_b">PawnPro</span> → <span style="font-weight: bold;" class="mycode_b">Settings</span> → point to <span style="font-weight: bold;" class="mycode_b">pawno/include</span>.<br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://ibb.co/GvYvCLwT" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.ibb.co/rG8G5SPs/image.png" loading="lazy"  alt="[Image: image.png]" class="mycode_img" /></a></div>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🎬 Em breve: vídeos / Coming: videos</span></span><br />
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Estão sendo preparados <span style="font-weight: bold;" class="mycode_b">mini-tutoriais em vídeo</span> — instalação, primeiro projeto, uso do depurador e as configurações que valem a pena mexer. Curtos e diretos ao ponto. <span style="font-weight: bold;" class="mycode_b">Sem data definida</span> ainda, mas vêm.<br />
🇬🇧 <span style="font-weight: bold;" class="mycode_b">Short video tutorials</span> are in the works — install, first project, using the debugger, and the settings worth touching. <span style="font-weight: bold;" class="mycode_b">No date yet</span>, but they're coming.</blockquote>
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 22pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🐛 Transparência: o que já achamos depois do lançamento</span></span><br />
<span style="font-size: 15pt;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">Being upfront: what we found after release</span></span><br />
<br />
🇧🇷 A versão saiu e, algumas horas depois, testando a fundo, apareceram bugs. Preferimos dizer isso na cara do que deixar você descobrir sozinho:<br />
<br />
🇬🇧 The release went out and, a few hours later, thorough testing turned up bugs. We'd rather tell you than let you find out on your own:<br />
<ul class="mycode_list"><li><a href="https://github.com/NullSablex/PawnPro/issues/83" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#83</span></a> — 🇧🇷 comandos RCON pelo painel podem não ter efeito nem retorno / 🇬🇧 RCON commands from the panel may have no effect<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro/issues/84" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#84</span></a> — 🇧🇷 iniciando o servidor pelo depurador, o painel não reconhece que ele está no ar e a saída do console se perde / 🇬🇧 starting the server via the debugger leaves the panel unaware and the console output missing<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro/issues/85" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#85</span></a> — 🇧🇷 se o plugin de depuração do servidor estiver desatualizado, a sessão falha <span style="font-weight: bold;" class="mycode_b">em silêncio</span>. Se a depuração não responder, é o primeiro lugar a olhar: o plugin precisa ser o <span style="font-weight: bold;" class="mycode_b">0.2.0</span> / 🇬🇧 an outdated server debug plugin makes the session fail silently — check that the plugin is <span style="font-weight: bold;" class="mycode_b">0.2.0</span><br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro/issues/82" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">#82</span></a> — 🇧🇷 o exemplo do padrão próprio de nomenclatura não aparece para alguns padrões válidos (só a pré-visualização; a análise funciona) / 🇬🇧 cosmetic: the custom naming pattern preview doesn't show an example for some valid patterns<br />
</li>
</ul>
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Nenhum deles impede o uso da extensão, e todos estão registrados publicamente. A ideia é justamente essa: bug encontrado vira issue, não vira segredo. Se você esbarrar em algo, <span style="font-weight: bold;" class="mycode_b">abra uma issue</span> — é assim que a coisa melhora.<br />
<br />
🇬🇧 None of these block using the extension, and all are publicly tracked. That's the point: bugs become issues, not secrets. If you hit something, <span style="font-weight: bold;" class="mycode_b">open an issue</span> — that's how this gets better.</blockquote>
<br />
<span style="font-weight: bold;" class="mycode_b">🔬 O depurador está em estudo prático / The debugger is under practical study</span><br />
🇧🇷 Vale ser claro sobre isto: <span style="font-weight: bold;" class="mycode_b">o depurador é território novo</span>. O SA-MP é fechado — não há especificação para consultar, e boa parte do que se sabe veio de engenharia reversa da comunidade ao longo dos anos. O open.mp é aberto, mas tem suas próprias diferenças de comportamento. Então o que existe hoje foi construído testando, observando e ajustando.<br />
<br />
O que ainda está sendo estudado, honestamente:<br />
<ul class="mycode_list"><li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Até que ponto dá para depurar com jogadores conectados.</span> O manual dizia que o servidor congela por inteiro; testando, um jogador continuou se movendo normalmente com o breakpoint parado num comando. Ainda não sabemos se isso vale para servidor cheio, nem o que acontece na hora de retomar com muita coisa acumulada.<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Onde o breakpoint está parece mudar tudo.</span> Parar dentro de um comando (que roda de vez em quando) não é o mesmo que parar dentro de um callback que roda a cada tick.<br />
</li>
<li>🇧🇷 <span style="font-weight: bold;" class="mycode_b">Data breakpoint em array</span> — funciona, mas ainda estamos entendendo em que posição marcar e por quê.<br />
</li>
</ul>
<br />
🇬🇧 To be clear: <span style="font-weight: bold;" class="mycode_b">the debugger is new ground</span>. SA-MP is closed source — there's no spec to consult, and much of what's known came from years of community reverse engineering. open.mp is open, but behaves differently in its own ways. What exists today was built by testing, observing and adjusting. Still under study: how far debugging with connected players actually goes, how much the breakpoint's location changes the picture, and the details of data breakpoints on arrays.<br />
<br />
<blockquote class="mycode_quote"><cite>Quote:</cite>🇧🇷 Isso não é aviso de "use por sua conta e risco" — é convite. Se você testar em cenário diferente do nosso e vir algo, <span style="font-weight: bold;" class="mycode_b">conte</span>. Cada relato encurta o caminho.<br />
🇬🇧 This isn't a "use at your own risk" disclaimer — it's an invitation. If you test in a scenario we haven't and see something, <span style="font-weight: bold;" class="mycode_b">tell us</span>.</blockquote>
<br />
<span style="font-weight: bold;" class="mycode_b">⏱️ Fique de olho: correção em até 2 dias / Heads up: fix within 2 days</span><br />
🇧🇷 Uma versão com essas correções — e com o que mais aparecer nesse meio-tempo — deve sair em <span style="font-weight: bold;" class="mycode_b">até 2 dias</span>. Vale manter a atualização automática da extensão ligada, ou passar aqui para conferir.<br />
🇬🇧 A release with these fixes — plus whatever else turns up in the meantime — should land <span style="font-weight: bold;" class="mycode_b">within 2 days</span>. Keep auto-update on, or check back here.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: 18pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">📋 Changelog completo / Full changelog</span></span><br />
🇧🇷 A 3.5.0 tem 50 entradas registradas, divididas em Adicionado, Alterado, Segurança, Corrigido e Documentação.<br />
<a href="https://github.com/NullSablex/PawnPro/blob/master/CHANGELOG.md" target="_blank" rel="noopener" class="mycode_url">CHANGELOG.md</a><br />
<br />
<span style="font-size: 18pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">🧩 Os três projetos / The three projects</span></span><ul class="mycode_list"><li><a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro</span></a> — 🇧🇷 a extensão / 🇬🇧 the extension<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro-Engine" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro Engine</span></a> — 🇧🇷 o motor de análise em Rust (LSP) / 🇬🇧 the Rust analysis engine<br />
</li>
<li><a href="https://github.com/NullSablex/PawnPro-Debugger" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">PawnPro Debugger</span></a> — 🇧🇷 o adaptador de depuração / 🇬🇧 the debug adapter<br />
</li>
</ul>
<br />
<div style="text-align: center;" class="mycode_align"><span style="font-style: italic;" class="mycode_i">🇧🇷 Feedback, dúvidas e relatos de bug são bem-vindos — aqui no tópico ou nas issues do GitHub.<br />
🇬🇧 Feedback, questions and bug reports are welcome — here or on GitHub issues.</span><br />
<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">⭐ github.com/NullSablex/PawnPro</span></a></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[NEW!! SA:MP MAP EDITOR  2026!!]]></title>
			<link>https://forum.open.mp/showthread.php?tid=4354</link>
			<pubDate>Fri, 31 Jul 2026 03:32:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=2637">babushkaSA</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=4354</guid>
			<description><![CDATA[[Removed]]]></description>
			<content:encoded><![CDATA[[Removed]]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PawnPro 3.3.0 Released]]></title>
			<link>https://forum.open.mp/showthread.php?tid=4301</link>
			<pubDate>Sun, 21 Jun 2026 09:25:30 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=7983">NullSablex</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=4301</guid>
			<description><![CDATA[<span style="font-weight: bold;" class="mycode_b">Português (PT-BR)</span><br />
<br />
Olá pessoal!<br />
<br />
Hoje estou lançando o <span style="font-weight: bold;" class="mycode_b">PawnPro 3.3.0</span>, acompanhado da nova versão da <span style="font-weight: bold;" class="mycode_b">PawnPro Engine 1.2.0</span>.<br />
<br />
Esta é uma das maiores atualizações do projeto até agora, trazendo recursos focados em produtividade, qualidade de código, personalização e melhorias gerais na experiência de desenvolvimento Pawn dentro do Visual Studio Code.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links</span><br />
<br />
• PawnPro Extension<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro</a><br />
<br />
• PawnPro Engine<br />
<a href="https://github.com/NullSablex/PawnPro-Engine" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro-Engine</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Destaques</span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Formatação de código Pawn</span><br />
Formatação completa de documentos e seleções diretamente pelo Language Server, com suporte aos estilos Allman, K&amp;R, Compact e Custom.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Assistente de Nomenclatura (PP0018)</span><br />
Novo analisador opcional capaz de identificar nomes pouco descritivos e validar padrões para funções, variáveis, parâmetros, constantes e macros.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Renomeação de Símbolos</span><br />
Suporte completo a Rename Symbol e atualização automática de referências.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Quick Fixes Inteligentes</span><br />
Conversão automática para o padrão de nomenclatura configurado e remoção rápida de código não utilizado.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Arquivos .ban e .allow</span><br />
As listas de nomes bloqueados e exceções de índices de loop agora podem ser mantidas em arquivos dedicados com destaque de sintaxe.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Biblioteca de Recursos (Preview)</span><br />
Nova interface experimental para navegação de recursos, com pesquisa, visualização em lista e grade.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Melhorias Visuais</span><br />
Novas seções de configuração, cartões com prévias de código, navegação aprimorada, ícones personalizados e animação opcional do título.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mais Idiomas</span><br />
Estrutura preparada para Espanhol, Russo e Romeno, além de Português e Inglês.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Melhorias da Engine</span><br />
<br />
A PawnPro Engine 1.2.0 recebeu uma grande atualização interna.<br />
<br />
O sistema de formatação foi reescrito utilizando análise estrutural do código, foram adicionados diagnósticos de nomenclatura em tempo real, suporte a renomeação de símbolos, novas ações rápidas, mais testes automatizados e diversas melhorias de desempenho e manutenção.<br />
<br />
Também foram corrigidos vários problemas relacionados à formatação, operadores, indentação, assinaturas multilinha e outros casos que podiam gerar resultados incorretos.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Segurança e Infraestrutura</span><br />
<br />
Esta versão também inclui atualizações de dependências, correções de vulnerabilidades reportadas por ferramentas automatizadas, integração com OpenSSF Scorecard, Cargo Audit no CI e melhorias na infraestrutura de build, documentação e releases.<br />
<br />
A documentação foi atualizada para cobrir todos os novos recursos introduzidos nesta versão.<br />
<br />
Feedbacks, sugestões e relatórios de bugs são sempre bem-vindos.<br />
<br />
Obrigado e aproveitem a atualização!<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-weight: bold;" class="mycode_b">English</span><br />
<br />
Hello everyone!<br />
<br />
Today I'm releasing <span style="font-weight: bold;" class="mycode_b">PawnPro 3.3.0</span>, together with the new <span style="font-weight: bold;" class="mycode_b">PawnPro Engine 1.2.0</span>.<br />
<br />
This is one of the largest updates to the project so far, bringing new features focused on productivity, code quality, customization and overall developer experience for Pawn development inside Visual Studio Code.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links</span><br />
<br />
• PawnPro Extension<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro</a><br />
<br />
• PawnPro Engine<br />
<a href="https://github.com/NullSablex/PawnPro-Engine" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro-Engine</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Highlights</span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Pawn Code Formatting</span><br />
Format entire documents or selected code directly through the Language Server, with support for Allman, K&amp;R, Compact and Custom styles.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Naming Assistant (PP0018)</span><br />
New optional analyzer capable of detecting poor naming patterns and validating conventions for functions, variables, parameters, constants and macros.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Symbol Renaming</span><br />
Full Rename Symbol support with automatic reference updates.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Smart Quick Fixes</span><br />
Automatic naming style conversion and quick removal of unused code.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">External .ban and .allow Files</span><br />
Blocked-name lists and loop-index exceptions can now be maintained through dedicated files with syntax highlighting.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Resource Library Preview</span><br />
New experimental resource browser featuring search, list view and grid view.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Visual Improvements</span><br />
New configuration sections, code preview cards, improved navigation, custom icons and optional title animations.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">More Languages</span><br />
Translation scaffolding added for Spanish, Russian and Romanian, alongside Portuguese and English.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Engine Improvements</span><br />
<br />
PawnPro Engine 1.2.0 introduces a major internal update.<br />
<br />
The formatting system was rewritten using structural code analysis, real-time naming diagnostics were added, symbol renaming support was implemented, new code actions were introduced, automated test coverage was expanded, and several performance and maintainability improvements were made.<br />
<br />
Multiple formatting-related issues were also fixed, including operator handling, indentation, multiline signatures and other edge cases that could produce incorrect output.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Security &amp; Infrastructure</span><br />
<br />
This release also includes dependency updates, security vulnerability fixes, OpenSSF Scorecard integration, Cargo Audit validation and improvements to the build, documentation and release infrastructure.<br />
<br />
Documentation has been updated to cover all features introduced in this release.<br />
<br />
Feedback, suggestions and bug reports are always welcome.<br />
<br />
Thank you and enjoy the update!]]></description>
			<content:encoded><![CDATA[<span style="font-weight: bold;" class="mycode_b">Português (PT-BR)</span><br />
<br />
Olá pessoal!<br />
<br />
Hoje estou lançando o <span style="font-weight: bold;" class="mycode_b">PawnPro 3.3.0</span>, acompanhado da nova versão da <span style="font-weight: bold;" class="mycode_b">PawnPro Engine 1.2.0</span>.<br />
<br />
Esta é uma das maiores atualizações do projeto até agora, trazendo recursos focados em produtividade, qualidade de código, personalização e melhorias gerais na experiência de desenvolvimento Pawn dentro do Visual Studio Code.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links</span><br />
<br />
• PawnPro Extension<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro</a><br />
<br />
• PawnPro Engine<br />
<a href="https://github.com/NullSablex/PawnPro-Engine" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro-Engine</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Destaques</span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Formatação de código Pawn</span><br />
Formatação completa de documentos e seleções diretamente pelo Language Server, com suporte aos estilos Allman, K&amp;R, Compact e Custom.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Assistente de Nomenclatura (PP0018)</span><br />
Novo analisador opcional capaz de identificar nomes pouco descritivos e validar padrões para funções, variáveis, parâmetros, constantes e macros.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Renomeação de Símbolos</span><br />
Suporte completo a Rename Symbol e atualização automática de referências.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Quick Fixes Inteligentes</span><br />
Conversão automática para o padrão de nomenclatura configurado e remoção rápida de código não utilizado.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Arquivos .ban e .allow</span><br />
As listas de nomes bloqueados e exceções de índices de loop agora podem ser mantidas em arquivos dedicados com destaque de sintaxe.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Biblioteca de Recursos (Preview)</span><br />
Nova interface experimental para navegação de recursos, com pesquisa, visualização em lista e grade.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Melhorias Visuais</span><br />
Novas seções de configuração, cartões com prévias de código, navegação aprimorada, ícones personalizados e animação opcional do título.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mais Idiomas</span><br />
Estrutura preparada para Espanhol, Russo e Romeno, além de Português e Inglês.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Melhorias da Engine</span><br />
<br />
A PawnPro Engine 1.2.0 recebeu uma grande atualização interna.<br />
<br />
O sistema de formatação foi reescrito utilizando análise estrutural do código, foram adicionados diagnósticos de nomenclatura em tempo real, suporte a renomeação de símbolos, novas ações rápidas, mais testes automatizados e diversas melhorias de desempenho e manutenção.<br />
<br />
Também foram corrigidos vários problemas relacionados à formatação, operadores, indentação, assinaturas multilinha e outros casos que podiam gerar resultados incorretos.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Segurança e Infraestrutura</span><br />
<br />
Esta versão também inclui atualizações de dependências, correções de vulnerabilidades reportadas por ferramentas automatizadas, integração com OpenSSF Scorecard, Cargo Audit no CI e melhorias na infraestrutura de build, documentação e releases.<br />
<br />
A documentação foi atualizada para cobrir todos os novos recursos introduzidos nesta versão.<br />
<br />
Feedbacks, sugestões e relatórios de bugs são sempre bem-vindos.<br />
<br />
Obrigado e aproveitem a atualização!<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-weight: bold;" class="mycode_b">English</span><br />
<br />
Hello everyone!<br />
<br />
Today I'm releasing <span style="font-weight: bold;" class="mycode_b">PawnPro 3.3.0</span>, together with the new <span style="font-weight: bold;" class="mycode_b">PawnPro Engine 1.2.0</span>.<br />
<br />
This is one of the largest updates to the project so far, bringing new features focused on productivity, code quality, customization and overall developer experience for Pawn development inside Visual Studio Code.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Links</span><br />
<br />
• PawnPro Extension<br />
<a href="https://github.com/NullSablex/PawnPro" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro</a><br />
<br />
• PawnPro Engine<br />
<a href="https://github.com/NullSablex/PawnPro-Engine" target="_blank" rel="noopener" class="mycode_url">https://github.com/NullSablex/PawnPro-Engine</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Highlights</span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Pawn Code Formatting</span><br />
Format entire documents or selected code directly through the Language Server, with support for Allman, K&amp;R, Compact and Custom styles.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Naming Assistant (PP0018)</span><br />
New optional analyzer capable of detecting poor naming patterns and validating conventions for functions, variables, parameters, constants and macros.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Symbol Renaming</span><br />
Full Rename Symbol support with automatic reference updates.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Smart Quick Fixes</span><br />
Automatic naming style conversion and quick removal of unused code.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">External .ban and .allow Files</span><br />
Blocked-name lists and loop-index exceptions can now be maintained through dedicated files with syntax highlighting.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Resource Library Preview</span><br />
New experimental resource browser featuring search, list view and grid view.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Visual Improvements</span><br />
New configuration sections, code preview cards, improved navigation, custom icons and optional title animations.<br />
<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">More Languages</span><br />
Translation scaffolding added for Spanish, Russian and Romanian, alongside Portuguese and English.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Engine Improvements</span><br />
<br />
PawnPro Engine 1.2.0 introduces a major internal update.<br />
<br />
The formatting system was rewritten using structural code analysis, real-time naming diagnostics were added, symbol renaming support was implemented, new code actions were introduced, automated test coverage was expanded, and several performance and maintainability improvements were made.<br />
<br />
Multiple formatting-related issues were also fixed, including operator handling, indentation, multiline signatures and other edge cases that could produce incorrect output.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Security &amp; Infrastructure</span><br />
<br />
This release also includes dependency updates, security vulnerability fixes, OpenSSF Scorecard integration, Cargo Audit validation and improvements to the build, documentation and release infrastructure.<br />
<br />
Documentation has been updated to cover all features introduced in this release.<br />
<br />
Feedback, suggestions and bug reports are always welcome.<br />
<br />
Thank you and enjoy the update!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Qawno for macOS — native open.mp Pawn editor]]></title>
			<link>https://forum.open.mp/showthread.php?tid=4270</link>
			<pubDate>Sat, 30 May 2026 19:20:32 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=4409">Xyranaut</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=4270</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Qawno for macOS — native open.mp Pawn editor</span></span><br />
<br />
Qawno is the open.mp Pawn editor. This is a **native macOS port** (Apple Silicon + Intel) that now ships and runs a **native Pawn compiler** — compiling no longer needs Wine or CrossOver.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Background</span><br />
Upstream Qawno is Windows-only (Win32 API), and the macOS workaround used to route the Pawn compiler through Wine/CrossOver. That's no longer necessary: a native <span style="font-family: Courier New;" class="mycode_font">pawncc</span> built with 32-bit cells emits the AMX magic <span style="font-family: Courier New;" class="mycode_font">0xF1E0</span> the open.mp server expects, so this build compiles natively end to end.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Features</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Native editor</span> — real macOS window chrome, traffic lights, system shadow. No Win32 emulation.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Native Pawn compiler</span> — a native <span style="font-family: Courier New;" class="mycode_font">pawncc</span> ships in the app and deploys into each project's <span style="font-family: Courier New;" class="mycode_font">qawno/native/</span> on compile. No pawncc download, no Wine, no bottle.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">One-click compile</span> — Compile / ⌘B, with a progress popup and the output panel.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Syntax highlighting + autocomplete</span> — per-language themes; auto-completion from the native list.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Dark / Light / System themes.</span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Updater</span> — checks GitHub for new Qawno releases.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Download</span><br />
Grab <span style="font-family: Courier New;" class="mycode_font">Qawno.app</span> (zipped) from the releases page, unzip, and drag it to /Applications:<br />
<a href="https://github.com/Mac-Andreas/Qawno-macOS/releases/latest" target="_blank" rel="noopener" class="mycode_url">github.com/Mac-Andreas/Qawno-macOS/releases/latest</a><br />
<br />
The app is <span style="font-weight: bold;" class="mycode_b">self-signed (ad-hoc), not notarized</span> — Apple notarization isn't available for this build, so Gatekeeper warns on first launch. It's safe to open; right-click <span style="font-family: Courier New;" class="mycode_font">Qawno.app</span> → Open → Open, or run:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>xattr -dr com.apple.quarantine /Applications/Qawno.app</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Compiling</span><br />
Open a project folder (it needs a <span style="font-family: Courier New;" class="mycode_font">qawno/include</span> folder for the .inc files), open a <span style="font-family: Courier New;" class="mycode_font">.pwn</span>, and hit Compile. Qawno deploys the native compiler into <span style="font-family: Courier New;" class="mycode_font">qawno/native/</span> and writes the <span style="font-family: Courier New;" class="mycode_font">.amx</span> beside your script. The output is byte-compatible with a Windows build — run it on your Windows/Linux server as usual.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Prefer VS Code?</span><br />
The same native, Wine-free compiler is also available as a VS Code extension (also works in Cursor / VSCodium):<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://marketplace.visualstudio.com/items?itemName=Mac-Andreas.open-pawn" target="_blank" rel="noopener" class="mycode_url">Open Pawn — on the VS Code Marketplace</a></span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>code --install-extension Mac-Andreas.open-pawn</code></div></div><br />
It bundles a native <span style="font-family: Courier New;" class="mycode_font">pawncc</span> for Windows, macOS, and Linux, plus full editor tooling:<br />
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;">
<tr>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Feature</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Open Pawn (VS Code)</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Qawno (this app)</span></td>
</tr>
<tr><td class="trow1" valign="top" align="center">Native compiler — no Wine</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Bundled compiler (Win / macOS / Linux)</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">macOS</td></tr>
<tr><td class="trow1" valign="top" align="center">Syntax highlighting</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Snippets</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Autocomplete / IntelliSense</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Hover · Go-to-definition</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Document / workspace symbols</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Code folding</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Document formatter</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Build task · compile-on-save</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Compile button</td></tr>
<tr><td class="trow1" valign="top" align="center">Problems-panel diagnostics</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Output panel</td></tr>
<tr><td class="trow1" valign="top" align="center">Cross-platform editor</td><td class="trow1" valign="top" align="center">Yes (VS Code)</td><td class="trow1" valign="top" align="center">macOS only</td></tr>
</table>
<br />
Both produce the same open.mp-compatible <span style="font-family: Courier New;" class="mycode_font">.amx</span> (<span style="font-family: Courier New;" class="mycode_font">0xF1E0</span>) — use whichever fits your workflow.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Source</span><br />
<a href="https://github.com/Mac-Andreas/Qawno-macOS" target="_blank" rel="noopener" class="mycode_url">github.com/Mac-Andreas/Qawno-macOS</a> — GPL (upstream Qawno licence). Bug reports and pull requests welcome.]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Qawno for macOS — native open.mp Pawn editor</span></span><br />
<br />
Qawno is the open.mp Pawn editor. This is a **native macOS port** (Apple Silicon + Intel) that now ships and runs a **native Pawn compiler** — compiling no longer needs Wine or CrossOver.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Background</span><br />
Upstream Qawno is Windows-only (Win32 API), and the macOS workaround used to route the Pawn compiler through Wine/CrossOver. That's no longer necessary: a native <span style="font-family: Courier New;" class="mycode_font">pawncc</span> built with 32-bit cells emits the AMX magic <span style="font-family: Courier New;" class="mycode_font">0xF1E0</span> the open.mp server expects, so this build compiles natively end to end.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Features</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Native editor</span> — real macOS window chrome, traffic lights, system shadow. No Win32 emulation.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Native Pawn compiler</span> — a native <span style="font-family: Courier New;" class="mycode_font">pawncc</span> ships in the app and deploys into each project's <span style="font-family: Courier New;" class="mycode_font">qawno/native/</span> on compile. No pawncc download, no Wine, no bottle.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">One-click compile</span> — Compile / ⌘B, with a progress popup and the output panel.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Syntax highlighting + autocomplete</span> — per-language themes; auto-completion from the native list.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Dark / Light / System themes.</span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Updater</span> — checks GitHub for new Qawno releases.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Download</span><br />
Grab <span style="font-family: Courier New;" class="mycode_font">Qawno.app</span> (zipped) from the releases page, unzip, and drag it to /Applications:<br />
<a href="https://github.com/Mac-Andreas/Qawno-macOS/releases/latest" target="_blank" rel="noopener" class="mycode_url">github.com/Mac-Andreas/Qawno-macOS/releases/latest</a><br />
<br />
The app is <span style="font-weight: bold;" class="mycode_b">self-signed (ad-hoc), not notarized</span> — Apple notarization isn't available for this build, so Gatekeeper warns on first launch. It's safe to open; right-click <span style="font-family: Courier New;" class="mycode_font">Qawno.app</span> → Open → Open, or run:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>xattr -dr com.apple.quarantine /Applications/Qawno.app</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Compiling</span><br />
Open a project folder (it needs a <span style="font-family: Courier New;" class="mycode_font">qawno/include</span> folder for the .inc files), open a <span style="font-family: Courier New;" class="mycode_font">.pwn</span>, and hit Compile. Qawno deploys the native compiler into <span style="font-family: Courier New;" class="mycode_font">qawno/native/</span> and writes the <span style="font-family: Courier New;" class="mycode_font">.amx</span> beside your script. The output is byte-compatible with a Windows build — run it on your Windows/Linux server as usual.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Prefer VS Code?</span><br />
The same native, Wine-free compiler is also available as a VS Code extension (also works in Cursor / VSCodium):<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><a href="https://marketplace.visualstudio.com/items?itemName=Mac-Andreas.open-pawn" target="_blank" rel="noopener" class="mycode_url">Open Pawn — on the VS Code Marketplace</a></span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>code --install-extension Mac-Andreas.open-pawn</code></div></div><br />
It bundles a native <span style="font-family: Courier New;" class="mycode_font">pawncc</span> for Windows, macOS, and Linux, plus full editor tooling:<br />
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;">
<tr>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Feature</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Open Pawn (VS Code)</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Qawno (this app)</span></td>
</tr>
<tr><td class="trow1" valign="top" align="center">Native compiler — no Wine</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Bundled compiler (Win / macOS / Linux)</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">macOS</td></tr>
<tr><td class="trow1" valign="top" align="center">Syntax highlighting</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Snippets</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Autocomplete / IntelliSense</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Hover · Go-to-definition</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Document / workspace symbols</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Code folding</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Document formatter</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">—</td></tr>
<tr><td class="trow1" valign="top" align="center">Build task · compile-on-save</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Compile button</td></tr>
<tr><td class="trow1" valign="top" align="center">Problems-panel diagnostics</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Output panel</td></tr>
<tr><td class="trow1" valign="top" align="center">Cross-platform editor</td><td class="trow1" valign="top" align="center">Yes (VS Code)</td><td class="trow1" valign="top" align="center">macOS only</td></tr>
</table>
<br />
Both produce the same open.mp-compatible <span style="font-family: Courier New;" class="mycode_font">.amx</span> (<span style="font-family: Courier New;" class="mycode_font">0xF1E0</span>) — use whichever fits your workflow.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Source</span><br />
<a href="https://github.com/Mac-Andreas/Qawno-macOS" target="_blank" rel="noopener" class="mycode_url">github.com/Mac-Andreas/Qawno-macOS</a> — GPL (upstream Qawno licence). Bug reports and pull requests welcome.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Open Pawn — Cross-platform Pawn compiler & tools for VS Code]]></title>
			<link>https://forum.open.mp/showthread.php?tid=4268</link>
			<pubDate>Sat, 30 May 2026 14:09:08 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=4409">Xyranaut</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=4268</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Open Pawn — Cross-platform Pawn compiler &amp; tools for VS Code (no Wine on macOS)</span></span><br />
<br />
Open Pawn is a VS Code extension for SA-MP / open.mp Pawn development that bundles a <span style="font-weight: bold;" class="mycode_b">native pawncc compiler for all three desktop platforms</span>, allowing gamemodes to be compiled directly from the editor with no extra setup and <span style="font-weight: bold;" class="mycode_b">no Wine/CrossOver on macOS</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Background</span><br />
On Apple Silicon Macs there was no clean way to compile: the official pawn-lang macOS release ships a 32-bit i386 binary that cannot run on modern macOS, so the common workaround was running the Windows pawncc.exe under Wine. Wine is not actually required — building pawncc natively (with the default 32-bit cells) produces output the open.mp server accepts (AMX magic <span style="font-family: Courier New;" class="mycode_font">0xF1E0</span>). This extension bundles that native compiler for each OS.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Features</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Native pawncc bundled</span> — Windows x64, macOS (Apple Silicon), and Linux x64. All verified producing open.mp-compatible AMX.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Compile workflow</span> — compile command, Ctrl/Cmd+Shift+B build task, compile-on-save, errors/warnings in the Problems panel.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">IntelliSense</span> — autocomplete, hovers, signature help, go-to-definition, document/workspace symbols (indexed live from .inc / .pwn files).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Syntax highlighting</span> — Pawno-equivalent colours, including format placeholders and tags.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Snippets</span> — common callbacks and constructs (OnPlayerConnect, command handlers, dialogs, enum+data arrays, timers, etc.).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Folding &amp; a dependency-free formatter</span> — no astyle WASM, so none of the extension-host crashes that affected other formatters.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Smart compiler discovery</span> — finds pawncc in qawno/, pawno/, on PATH, or uses the bundled one; legacy SA-MP layouts work out of the box. Falls back to a Wine wrapper only if desired.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">How it compares</span><br />
vs the existing <span style="font-style: italic;" class="mycode_i">Pawn Development Tool</span> extension:<br />
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;">
<tr>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Feature</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Pawn Development Tool</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Open Pawn</span></td>
</tr>
<tr><td class="trow1" valign="top" align="center">Syntax highlighting</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Snippets</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Autocomplete / IntelliSense</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Hover / Go-to-definition</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Document / workspace symbols</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Code folding</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Document formatter</td><td class="trow1" valign="top" align="center">Yes (astyle WASM)</td><td class="trow1" valign="top" align="center">Yes (dependency-free, no host crashes)</td></tr>
<tr><td class="trow1" valign="top" align="center">Build task → pawncc</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Problems-panel diagnostics</td><td class="trow1" valign="top" align="center">Partial</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Bundles a compiler</span></td><td class="trow1" valign="top" align="center">No (bring your own)</td><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Yes — Windows / macOS / Linux</span></td></tr>
<tr><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Native macOS (no Wine)</span></td><td class="trow1" valign="top" align="center">No</td><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Yes</span></td></tr>
</table>
<br />
Both can coexist, but running them together may produce duplicate autocomplete/hovers — Open Pawn will offer to help disable the other.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Platform support</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Windows 10/11 (x64)</span> — pawncc.exe runs natively, works out of the box.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">macOS Apple Silicon</span> — native pawncc bundled, no Wine.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Linux x64</span> — native pawncc bundled.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Intel Mac</span> — build once with the included script.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Install</span><ul class="mycode_list"><li><a href="https://marketplace.visualstudio.com/items?itemName=Mac-Andreas.open-pawn" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Microsoft Marketplace</span></a><br />
</li>
<li>Search "<span style="font-weight: bold;" class="mycode_b">Open Pawn</span>" in the VS Code Extensions panel<br />
</li>
<li>or:</li>
</ul>
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>code --install-extension Mac-Andreas.open-pawn</code></div></div>(Also works in Cursor / VSCodium via Open VSX.)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Source &amp; issues</span><br />
<a href="https://github.com/Mac-Andreas/vscode-open-pawn" target="_blank" rel="noopener" class="mycode_url">github.com/Mac-Andreas/vscode-open-pawn</a> — MIT licensed. Bug reports and pull requests welcome.<br />
<br />
This is an early (0.1) release. The compiler pipeline is tested on all three platforms and verified against a real open.mp server; feedback is welcome, particularly from Windows and Linux users.]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Open Pawn — Cross-platform Pawn compiler &amp; tools for VS Code (no Wine on macOS)</span></span><br />
<br />
Open Pawn is a VS Code extension for SA-MP / open.mp Pawn development that bundles a <span style="font-weight: bold;" class="mycode_b">native pawncc compiler for all three desktop platforms</span>, allowing gamemodes to be compiled directly from the editor with no extra setup and <span style="font-weight: bold;" class="mycode_b">no Wine/CrossOver on macOS</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Background</span><br />
On Apple Silicon Macs there was no clean way to compile: the official pawn-lang macOS release ships a 32-bit i386 binary that cannot run on modern macOS, so the common workaround was running the Windows pawncc.exe under Wine. Wine is not actually required — building pawncc natively (with the default 32-bit cells) produces output the open.mp server accepts (AMX magic <span style="font-family: Courier New;" class="mycode_font">0xF1E0</span>). This extension bundles that native compiler for each OS.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Features</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Native pawncc bundled</span> — Windows x64, macOS (Apple Silicon), and Linux x64. All verified producing open.mp-compatible AMX.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Compile workflow</span> — compile command, Ctrl/Cmd+Shift+B build task, compile-on-save, errors/warnings in the Problems panel.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">IntelliSense</span> — autocomplete, hovers, signature help, go-to-definition, document/workspace symbols (indexed live from .inc / .pwn files).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Syntax highlighting</span> — Pawno-equivalent colours, including format placeholders and tags.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Snippets</span> — common callbacks and constructs (OnPlayerConnect, command handlers, dialogs, enum+data arrays, timers, etc.).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Folding &amp; a dependency-free formatter</span> — no astyle WASM, so none of the extension-host crashes that affected other formatters.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Smart compiler discovery</span> — finds pawncc in qawno/, pawno/, on PATH, or uses the bundled one; legacy SA-MP layouts work out of the box. Falls back to a Wine wrapper only if desired.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">How it compares</span><br />
vs the existing <span style="font-style: italic;" class="mycode_i">Pawn Development Tool</span> extension:<br />
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:%;">
<tr>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Feature</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Pawn Development Tool</span></td>
<td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Open Pawn</span></td>
</tr>
<tr><td class="trow1" valign="top" align="center">Syntax highlighting</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Snippets</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Autocomplete / IntelliSense</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Hover / Go-to-definition</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Document / workspace symbols</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Code folding</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Document formatter</td><td class="trow1" valign="top" align="center">Yes (astyle WASM)</td><td class="trow1" valign="top" align="center">Yes (dependency-free, no host crashes)</td></tr>
<tr><td class="trow1" valign="top" align="center">Build task → pawncc</td><td class="trow1" valign="top" align="center">Yes</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center">Problems-panel diagnostics</td><td class="trow1" valign="top" align="center">Partial</td><td class="trow1" valign="top" align="center">Yes</td></tr>
<tr><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Bundles a compiler</span></td><td class="trow1" valign="top" align="center">No (bring your own)</td><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Yes — Windows / macOS / Linux</span></td></tr>
<tr><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Native macOS (no Wine)</span></td><td class="trow1" valign="top" align="center">No</td><td class="trow1" valign="top" align="center"><span style="font-weight: bold;" class="mycode_b">Yes</span></td></tr>
</table>
<br />
Both can coexist, but running them together may produce duplicate autocomplete/hovers — Open Pawn will offer to help disable the other.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Platform support</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Windows 10/11 (x64)</span> — pawncc.exe runs natively, works out of the box.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">macOS Apple Silicon</span> — native pawncc bundled, no Wine.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Linux x64</span> — native pawncc bundled.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Intel Mac</span> — build once with the included script.<br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b">Install</span><ul class="mycode_list"><li><a href="https://marketplace.visualstudio.com/items?itemName=Mac-Andreas.open-pawn" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Microsoft Marketplace</span></a><br />
</li>
<li>Search "<span style="font-weight: bold;" class="mycode_b">Open Pawn</span>" in the VS Code Extensions panel<br />
</li>
<li>or:</li>
</ul>
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>code --install-extension Mac-Andreas.open-pawn</code></div></div>(Also works in Cursor / VSCodium via Open VSX.)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Source &amp; issues</span><br />
<a href="https://github.com/Mac-Andreas/vscode-open-pawn" target="_blank" rel="noopener" class="mycode_url">github.com/Mac-Andreas/vscode-open-pawn</a> — MIT licensed. Bug reports and pull requests welcome.<br />
<br />
This is an early (0.1) release. The compiler pipeline is tested on all three platforms and verified against a real open.mp server; feedback is welcome, particularly from Windows and Linux users.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[open.mp for MacOS]]></title>
			<link>https://forum.open.mp/showthread.php?tid=4251</link>
			<pubDate>Tue, 19 May 2026 22:05:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=4409">Xyranaut</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=4251</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">open.mp Launcher — macOS (Apple Silicon) build</span></span><br />
<br />
Hey everyone — I've put together a native macOS build of the open.mp launcher. Upstream is Windows-only; this fork adds the bits needed to build, sign, and run the same launcher on Apple Silicon Macs, with the rest of the launch flow handled through CrossOver.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Repo:</span> <a href="https://github.com/Mac-Andreas/open.mp-launcher-macOS" target="_blank" rel="noopener" class="mycode_url">GitHub</a><br />
<span style="font-weight: bold;" class="mycode_b">Latest .pkg:</span> <a href="https://github.com/Mac-Andreas/open.mp-launcher-macOS/releases/latest" target="_blank" rel="noopener" class="mycode_url">Releases page</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What's in the build</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Native window chrome</span> — real macOS traffic lights (close / minimise / zoom), green-button tiling + fullscreen, proper drag/double-click zoom.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Apple Silicon optimised</span> — built and tagged as <span style="font-style: italic;" class="mycode_i">1.6.3-arm.N</span>; this is the version channel the launcher checks for updates so you won't get nagged by Windows-only releases.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Overview</span><br />
</li>
<li>CrossOver detection<br />
</li>
<li>Bottle picker (auto-detects bottles containing GTA: SA / Rockstar Games Launcher), one-click <span style="font-style: italic;" class="mycode_i">Show in Finder</span><br />
</li>
<li>SA-MP version dropdown (0.3.7-R5, R4, R3.1, R3, DL, R2, R1) with install / reinstall / "already installed" states, ~4-second install with progress<br />
</li>
<li>Status pills for game detected / Rockstar Launcher detected / installed SA-MP version<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Preferences</span> — language picker, theme (system / dark / light), nickname, default SA-MP version.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Advanced</span> — debug / power-user toggles.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Danger Zone</span> — hold-to-confirm destructive actions:<br />
</li>
<li>Uninstall SA-MP client files<br />
</li>
<li>Clear SA-MP / open.mp config, chat logs and client settings<br />
</li>
<li>Reset launcher data<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → License</span> — bundled MPL + third-party credits.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Server browser</span> — Favorites, Internet, Partners, Recently Joined; search by hostname / mode, language + non-empty + unpassworded + open.mp-only filters, per-column sorting, drag-to-reorder favorites.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Automatic launch flow</span> — when you hit Connect: copies SA-MP files into the game folder, drops the vorbisFile.dll loader proxy, applies the Wine audio fix, launches GTA: SA through CrossOver, then auto-connects with your nickname.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Installer</span> — flat-distribution <span style="font-style: italic;" class="mycode_i">.pkg</span> with license screen, preinstall (gently quits the running copy + cleans up legacy bundles) and postinstall (clears quarantine, drops a Desktop shortcut named "Open Multiplayer", keeps a "SAMP Launcher.app" Finder alias for muscle memory).<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What you need</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Apple Silicon Mac</span> (M1 and above). Intel Macs are not supported.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CrossOver</span> from CodeWeavers — runs the Windows version of GTA: SA on macOS. (<a href="https://www.codeweavers.com/crossover" target="_blank" rel="noopener" class="mycode_url">codeweavers.com/crossover</a>)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">GTA: San Andreas v1.0</span> inside a CrossOver bottle. SA-MP / open.mp only work with the 1.0 executable — Steam / Rockstar Launcher copies have to be downgraded first.<br />
</li>
</ul>
<br />
The launcher cannot install the game or Windows for you — set the two above up once, then it handles everything else automatically.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Install</span></span><br />
<ol type="1" class="mycode_list"><li>Download <span style="font-style: italic;" class="mycode_i">pkg</span> from the <a href="https://github.com/Mac-Andreas/open.mp-launcher-macOS/releases/latest" target="_blank" rel="noopener" class="mycode_url">Releases page</a>.<br />
</li>
<li>Double-click the .pkg, accept the license, enter your password.<br />
</li>
<li>Open <span style="font-weight: bold;" class="mycode_b">Open Multiplayer</span> from Applications (or from the Desktop alias the installer drops).<br />
</li>
</ol>
<br />
<span style="font-weight: bold;" class="mycode_b">First-launch tip:</span> the .pkg itself isn't notarised (no paid Apple Developer account). If macOS refuses to open the installer on double-click, right-click it → <span style="font-style: italic;" class="mycode_i">Open</span> → <span style="font-style: italic;" class="mycode_i">Open</span> to bypass Gatekeeper once.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Updates</span></span><br />
The launcher checks <span style="font-weight: bold;" class="mycode_b">this repo's GitHub releases</span> for updates, not the upstream Windows channel. Versions are tagged <span style="font-style: italic;" class="mycode_i">1.6.3-arm.N</span> — a Windows release like 1.6.4 will <span style="font-weight: bold;" class="mycode_b">not</span> prompt this build to update. The "Update available" badge only appears when a new -arm tag ships here.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Launcher's Known limitations</span></span><br />
<ul class="mycode_list"><li>Apple Silicon only — no Intel build.<br />
</li>
<li>Ad-hoc signed, not notarised. Bundle launches without a "damaged" warning because the postinstall clears the quarantine flag; the .pkg itself still needs the right-click → Open dance on first run.<br />
</li>
<li>Requires CrossOver — there's no built-in Wine. Free Wine builds run GTA: SA poorly enough that bundling them wasn't worth the support load.<br />
</li>
<li>GTA: SA must be v1.0; the launcher cannot downgrade Steam / Rockstar copies for you.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tested on</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">CPU:</span> Apple M1 (8-core)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">GPU:</span> 7-core<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">RAM:</span> 8 GB<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Model:</span> MacBook Air A2337, base variant with upgraded storage using the dosdude1 method (Late 2020)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Software Used:</span> CrossOver 26.1.0<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CrossOver Bottle Setting:</span> OS = Windows XP; Graphics = Auto; DLSS = Off; MSync = Off; High Resolution Mode = Off<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Setup Used:</span> Rockstar Games Launcher -&gt; GTA Trilogy -&gt; GTA San Andreas -&gt; Steam patch<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Downgrader:</span> RockstarNexus<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Add-ons:</span> SilentPatch and StreamMemFix<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Issues Identified:</span> Text rendering issues in the chatbox and score tab, along with crashes when changing display settings from the in-game menu<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Fixes:</span> Delete the gta_sa.set file to restore functionality. In some cases, reinstalling the SA-MP files may also be required.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Credits</span></span><br />
<br />
All launcher functionality is the work of the <a href="https://github.com/openmultiplayer/launcher" target="_blank" rel="noopener" class="mycode_url">open.mp team</a>. This fork only adds the macOS build path. If you'd like to support upstream development: <a href="https://opencollective.com/openmultiplayer" target="_blank" rel="noopener" class="mycode_url">opencollective.com/openmultiplayer</a>.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Legal &amp; disclaimer</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">You must own a legitimate copy of GTA: San Andreas.</span> This project does not distribute, link to, or help anyone obtain the game, its assets, or any Rockstar / Take-Two property. Use a copy you have lawfully purchased (Steam, Rockstar Games Launcher, retail disc).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No piracy.</span> This project does not endorse, condone, or support pirated copies of GTA: San Andreas, SA-MP, open.mp, CrossOver, Windows, or any other software. Requests for pirated material will not be entertained — please don't ask in this thread, in DMs, or on the GitHub repo.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Not affiliated.</span> This is an unofficial, community-built fork. It is not affiliated with, endorsed by, or sponsored by Rockstar Games, Take-Two Interactive, CodeWeavers (CrossOver), the SA-MP team, the open.mp team, or Apple. All trademarks and product names are the property of their respective owners.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Third-party tools at your own risk.</span> Any external tools mentioned above (RockstarNexus downgrader, custom executables, bottle patches, etc.) are not part of this project. Use them at your own discretion and only on copies you own.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No warranty.</span> The launcher is provided "as is", without warranty of any kind. You are responsible for backups and for any consequences of running it on your machine.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">License.</span> Source code is distributed under the <a href="https://www.mozilla.org/en-US/MPL/2.0/" target="_blank" rel="noopener" class="mycode_url">Mozilla Public License 2.0</a>, inherited from upstream. The "open.mp" name and logo remain subject to upstream's trademark policy.<br />
</li>
</ul>
<br />
<div style="text-align: right;" class="mycode_align">(I just did it for the love of the game, literally and figuratively)</div>]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">open.mp Launcher — macOS (Apple Silicon) build</span></span><br />
<br />
Hey everyone — I've put together a native macOS build of the open.mp launcher. Upstream is Windows-only; this fork adds the bits needed to build, sign, and run the same launcher on Apple Silicon Macs, with the rest of the launch flow handled through CrossOver.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Repo:</span> <a href="https://github.com/Mac-Andreas/open.mp-launcher-macOS" target="_blank" rel="noopener" class="mycode_url">GitHub</a><br />
<span style="font-weight: bold;" class="mycode_b">Latest .pkg:</span> <a href="https://github.com/Mac-Andreas/open.mp-launcher-macOS/releases/latest" target="_blank" rel="noopener" class="mycode_url">Releases page</a><br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What's in the build</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Native window chrome</span> — real macOS traffic lights (close / minimise / zoom), green-button tiling + fullscreen, proper drag/double-click zoom.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Apple Silicon optimised</span> — built and tagged as <span style="font-style: italic;" class="mycode_i">1.6.3-arm.N</span>; this is the version channel the launcher checks for updates so you won't get nagged by Windows-only releases.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Overview</span><br />
</li>
<li>CrossOver detection<br />
</li>
<li>Bottle picker (auto-detects bottles containing GTA: SA / Rockstar Games Launcher), one-click <span style="font-style: italic;" class="mycode_i">Show in Finder</span><br />
</li>
<li>SA-MP version dropdown (0.3.7-R5, R4, R3.1, R3, DL, R2, R1) with install / reinstall / "already installed" states, ~4-second install with progress<br />
</li>
<li>Status pills for game detected / Rockstar Launcher detected / installed SA-MP version<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Preferences</span> — language picker, theme (system / dark / light), nickname, default SA-MP version.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Advanced</span> — debug / power-user toggles.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → Danger Zone</span> — hold-to-confirm destructive actions:<br />
</li>
<li>Uninstall SA-MP client files<br />
</li>
<li>Clear SA-MP / open.mp config, chat logs and client settings<br />
</li>
<li>Reset launcher data<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings → License</span> — bundled MPL + third-party credits.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Server browser</span> — Favorites, Internet, Partners, Recently Joined; search by hostname / mode, language + non-empty + unpassworded + open.mp-only filters, per-column sorting, drag-to-reorder favorites.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Automatic launch flow</span> — when you hit Connect: copies SA-MP files into the game folder, drops the vorbisFile.dll loader proxy, applies the Wine audio fix, launches GTA: SA through CrossOver, then auto-connects with your nickname.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Installer</span> — flat-distribution <span style="font-style: italic;" class="mycode_i">.pkg</span> with license screen, preinstall (gently quits the running copy + cleans up legacy bundles) and postinstall (clears quarantine, drops a Desktop shortcut named "Open Multiplayer", keeps a "SAMP Launcher.app" Finder alias for muscle memory).<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What you need</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Apple Silicon Mac</span> (M1 and above). Intel Macs are not supported.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CrossOver</span> from CodeWeavers — runs the Windows version of GTA: SA on macOS. (<a href="https://www.codeweavers.com/crossover" target="_blank" rel="noopener" class="mycode_url">codeweavers.com/crossover</a>)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">GTA: San Andreas v1.0</span> inside a CrossOver bottle. SA-MP / open.mp only work with the 1.0 executable — Steam / Rockstar Launcher copies have to be downgraded first.<br />
</li>
</ul>
<br />
The launcher cannot install the game or Windows for you — set the two above up once, then it handles everything else automatically.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Install</span></span><br />
<ol type="1" class="mycode_list"><li>Download <span style="font-style: italic;" class="mycode_i">pkg</span> from the <a href="https://github.com/Mac-Andreas/open.mp-launcher-macOS/releases/latest" target="_blank" rel="noopener" class="mycode_url">Releases page</a>.<br />
</li>
<li>Double-click the .pkg, accept the license, enter your password.<br />
</li>
<li>Open <span style="font-weight: bold;" class="mycode_b">Open Multiplayer</span> from Applications (or from the Desktop alias the installer drops).<br />
</li>
</ol>
<br />
<span style="font-weight: bold;" class="mycode_b">First-launch tip:</span> the .pkg itself isn't notarised (no paid Apple Developer account). If macOS refuses to open the installer on double-click, right-click it → <span style="font-style: italic;" class="mycode_i">Open</span> → <span style="font-style: italic;" class="mycode_i">Open</span> to bypass Gatekeeper once.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Updates</span></span><br />
The launcher checks <span style="font-weight: bold;" class="mycode_b">this repo's GitHub releases</span> for updates, not the upstream Windows channel. Versions are tagged <span style="font-style: italic;" class="mycode_i">1.6.3-arm.N</span> — a Windows release like 1.6.4 will <span style="font-weight: bold;" class="mycode_b">not</span> prompt this build to update. The "Update available" badge only appears when a new -arm tag ships here.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Launcher's Known limitations</span></span><br />
<ul class="mycode_list"><li>Apple Silicon only — no Intel build.<br />
</li>
<li>Ad-hoc signed, not notarised. Bundle launches without a "damaged" warning because the postinstall clears the quarantine flag; the .pkg itself still needs the right-click → Open dance on first run.<br />
</li>
<li>Requires CrossOver — there's no built-in Wine. Free Wine builds run GTA: SA poorly enough that bundling them wasn't worth the support load.<br />
</li>
<li>GTA: SA must be v1.0; the launcher cannot downgrade Steam / Rockstar copies for you.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tested on</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">CPU:</span> Apple M1 (8-core)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">GPU:</span> 7-core<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">RAM:</span> 8 GB<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Model:</span> MacBook Air A2337, base variant with upgraded storage using the dosdude1 method (Late 2020)<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Software Used:</span> CrossOver 26.1.0<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CrossOver Bottle Setting:</span> OS = Windows XP; Graphics = Auto; DLSS = Off; MSync = Off; High Resolution Mode = Off<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Setup Used:</span> Rockstar Games Launcher -&gt; GTA Trilogy -&gt; GTA San Andreas -&gt; Steam patch<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Downgrader:</span> RockstarNexus<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Add-ons:</span> SilentPatch and StreamMemFix<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Issues Identified:</span> Text rendering issues in the chatbox and score tab, along with crashes when changing display settings from the in-game menu<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Fixes:</span> Delete the gta_sa.set file to restore functionality. In some cases, reinstalling the SA-MP files may also be required.<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Credits</span></span><br />
<br />
All launcher functionality is the work of the <a href="https://github.com/openmultiplayer/launcher" target="_blank" rel="noopener" class="mycode_url">open.mp team</a>. This fork only adds the macOS build path. If you'd like to support upstream development: <a href="https://opencollective.com/openmultiplayer" target="_blank" rel="noopener" class="mycode_url">opencollective.com/openmultiplayer</a>.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Legal &amp; disclaimer</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">You must own a legitimate copy of GTA: San Andreas.</span> This project does not distribute, link to, or help anyone obtain the game, its assets, or any Rockstar / Take-Two property. Use a copy you have lawfully purchased (Steam, Rockstar Games Launcher, retail disc).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No piracy.</span> This project does not endorse, condone, or support pirated copies of GTA: San Andreas, SA-MP, open.mp, CrossOver, Windows, or any other software. Requests for pirated material will not be entertained — please don't ask in this thread, in DMs, or on the GitHub repo.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Not affiliated.</span> This is an unofficial, community-built fork. It is not affiliated with, endorsed by, or sponsored by Rockstar Games, Take-Two Interactive, CodeWeavers (CrossOver), the SA-MP team, the open.mp team, or Apple. All trademarks and product names are the property of their respective owners.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Third-party tools at your own risk.</span> Any external tools mentioned above (RockstarNexus downgrader, custom executables, bottle patches, etc.) are not part of this project. Use them at your own discretion and only on copies you own.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No warranty.</span> The launcher is provided "as is", without warranty of any kind. You are responsible for backups and for any consequences of running it on your machine.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">License.</span> Source code is distributed under the <a href="https://www.mozilla.org/en-US/MPL/2.0/" target="_blank" rel="noopener" class="mycode_url">Mozilla Public License 2.0</a>, inherited from upstream. The "open.mp" name and logo remain subject to upstream's trademark policy.<br />
</li>
</ul>
<br />
<div style="text-align: right;" class="mycode_align">(I just did it for the love of the game, literally and figuratively)</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[SARP Gamemode]]></title>
			<link>https://forum.open.mp/showthread.php?tid=3588</link>
			<pubDate>Tue, 21 Oct 2025 12:58:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=7631">Bilal</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=3588</guid>
			<description><![CDATA[Hello everyone, does anyone happen to have the <span style="font-weight: bold;" class="mycode_b">SARP gamemode</span> that’s based on The Godfather (with MySQL support)?]]></description>
			<content:encoded><![CDATA[Hello everyone, does anyone happen to have the <span style="font-weight: bold;" class="mycode_b">SARP gamemode</span> that’s based on The Godfather (with MySQL support)?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Open.mp / SAMP Query]]></title>
			<link>https://forum.open.mp/showthread.php?tid=3215</link>
			<pubDate>Wed, 09 Jul 2025 01:43:56 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=7264">laex</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=3215</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="color: red;" class="mycode_color">GTA SA-MP / Open.MP Server Monitor</span></div>
<div style="text-align: center;" class="mycode_align"><span style="font-style: italic;" class="mycode_i">Modern Web-Based Real-Time Server Monitoring Tool</span></div>
<div style="text-align: center;" class="mycode_align">
<hr class="mycode_hr" />
<br />
<img src="https://samp.laex.com.tr/img/samp-query.png" loading="lazy"  alt="[Image: samp-query.png]" class="mycode_img" /><br />
<br />
<span style="color: blue;" class="mycode_color">About The Project</span><br />
<br />
Hello SA-MP / Open.MP Community!<br />
<br />
I'm presenting you a modern and useful SA-MP/Open.MP server monitoring project. This tool provides a responsive web interface that allows you to track servers in real-time.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: green;" class="mycode_color">Features</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Real-Time Data:</span> Direct UDP SA-MP/Open.MP query protocol implementation<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Modern Interface:</span> Responsive design with TailwindCSS and Alpine.js<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Fast Performance:</span> Optimized UDP socket connections<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Smart Search:</span> Filter by server name, IP, gamemode, or server type<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mobile Compatible:</span> Perfect display on all devices<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Auto Refresh:</span> Automatic updates every 30 seconds<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Detailed Information:</span> Player count, ping, gamemode, language and more<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No External APIs:</span> Direct protocol implementation for reliability<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Open.MP Support:</span> Full compatibility with both SA-MP and Open.MP servers<br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<br />
<span style="color: orange;" class="mycode_color">Live Demo</span><br />
<br />
You can see the demo here: <a href="https://samp.laex.com.tr" target="_blank" rel="noopener" class="mycode_url">https://samp.laex.com.tr</a> (demo site updates automatically once per hour)<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: purple;" class="mycode_color">Technical Details</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Backend:</span> PHP 8.0+<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Frontend:</span> HTML5, TailwindCSS, Alpine.js<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Protocol:</span> SA-MP/Open.MP UDP Query Protocol<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Icons:</span> Font Awesome 6<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">License:</span> MIT (Open Source)<br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<br />
<span style="color: red;" class="mycode_color">Installation</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Requirements:</span><br />
- PHP 8.0 or higher<br />
- Socket extension (php-sockets)<br />
- JSON extension (php-json)<br />
- Web server (Apache/Nginx)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Quick Installation:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>git clone https://github.com/thislaex/samp-query.git<br />
cd samp-query<br />
# Copy files to your web server</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Server Configuration:</span><br />
Edit the &#36;servers array in index.php:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>private &#36;servers = [<br />
    ['ip' =&gt; 'your-server-ip', 'port' =&gt; 7777, 'type' =&gt; 'samp'],<br />
    ['ip' =&gt; 'openmp-server-ip', 'port' =&gt; 7777, 'type' =&gt; 'openmp'],<br />
];</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Server Types:</span><br />
- <span style="color: blue;" class="mycode_color">'type' =&gt; 'samp'</span> - For SA-MP servers<br />
- <span style="color: orange;" class="mycode_color">'type' =&gt; 'openmp'</span> - For Open.MP servers<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: navy;" class="mycode_color">API Usage</span><br />
The project also provides a JSON API:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>GET /path/to/samp/?api=servers</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Example Response:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>{<br />
    "success": true,<br />
    "servers": [<br />
        {<br />
            "hostname": "[0.3.7/DL] Your SAMP Server",<br />
            "players": 42,<br />
            "maxplayers": 100,<br />
            "gamemode": "Roleplay/Freeroam",<br />
            "language": "English",<br />
            "password": false,<br />
            "ping": 85,<br />
            "ip": "192.168.1.100",<br />
            "port": 7777,<br />
            "server_type": "samp",<br />
            "is_openmp": false<br />
        },<br />
        {<br />
            "hostname": "Open.MP Test Server",<br />
            "players": 25,<br />
            "maxplayers": 100,<br />
            "gamemode": "Freeroam/DM",<br />
            "language": "English",<br />
            "password": false,<br />
            "ping": 65,<br />
            "ip": "192.168.1.101",<br />
            "port": 7777,<br />
            "server_type": "openmp",<br />
            "is_openmp": true<br />
        }<br />
    ],<br />
    "count": 2,<br />
    "timestamp": "2025-07-09 15:30:45"<br />
}</code></div></div><br />
You can use this in your own projects as well!<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: teal;" class="mycode_color">Customization</span><br />
<span style="font-weight: bold;" class="mycode_b">Timeout Settings:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>// Change timeout from 2 seconds to 5 seconds<br />
@socket_set_option(&#36;socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' =&gt; 5, 'usec' =&gt; 0));</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Auto Refresh Interval:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>// Change from 30 seconds to 60 seconds<br />
setInterval(() =&gt; {<br />
    if (!this.loading) {<br />
        this.refreshServers();<br />
    }<br />
}, 60000);</code></div></div><br />
<hr class="mycode_hr" />
<br />
<span style="color: brown;" class="mycode_color">Contributing</span><br />
This project is open source! You can fork it on GitHub and contribute to development.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Steps:</span><br />
1. Fork the repository<br />
2. Create a development branch<br />
3. Make your changes<br />
4. Send a Pull Request<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Code Standards:</span><br />
- Follow PSR-12 coding standards<br />
- Use Conventional Commits format<br />
- Test with different SA-MP and Open.MP servers<br />
- Check mobile compatibility<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: maroon;" class="mycode_color">Troubleshooting</span><br />
<span style="font-weight: bold;" class="mycode_b">Servers not showing:</span> Check if PHP sockets extension is installed<br />
<br />
<span style="font-weight: bold;" class="mycode_b">UDP connection failed:</span> Make sure firewall allows UDP connections<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Slow queries:</span> Adjust timeout values or check network<br />
<br />
<span style="font-weight: bold;" class="mycode_b">API returns empty:</span> Make sure servers are online and accessible<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Open.MP server not showing:</span> Make sure server type is set to 'openmp'<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Windows Firewall Configuration:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>New-NetFirewallRule -DisplayName "SAMP/OpenMP UDP" -Direction Outbound -Protocol UDP -LocalPort 7777</code></div></div></div>
<hr class="mycode_hr" />
<div style="text-align: center;" class="mycode_align">
<span style="color: gray;" class="mycode_color">Contact and Links</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">GitHub Repository:</span> <a href="https://github.com/thislaex/samp-query" target="_blank" rel="noopener" class="mycode_url">thislaex/samp-query</a><br />
<span style="font-weight: bold;" class="mycode_b">GitHub Profile:</span> <a href="https://github.com/thislaex" target="_blank" rel="noopener" class="mycode_url">@thislaex</a><br />
<span style="font-weight: bold;" class="mycode_b">Discord:</span> thislaex<br />
<span style="font-weight: bold;" class="mycode_b">Bug Report:</span> <a href="https://github.com/thislaex/samp-query/issues" target="_blank" rel="noopener" class="mycode_url">Issues</a></div>
<br />
<hr class="mycode_hr" />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: green;" class="mycode_color">If this project helped you, don't forget to star it on GitHub!</span><br />
<br />
<span style="color: gray;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Language Note:</span> Currently, the interface is in Turkish. If you'd like to contribute an English translation or other languages, feel free to submit a Pull Request!</span><br />
<br />
<span style="font-style: italic;" class="mycode_i">Made with &lt;3 for SA-MP &amp; Open.MP Community</span></div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="color: red;" class="mycode_color">GTA SA-MP / Open.MP Server Monitor</span></div>
<div style="text-align: center;" class="mycode_align"><span style="font-style: italic;" class="mycode_i">Modern Web-Based Real-Time Server Monitoring Tool</span></div>
<div style="text-align: center;" class="mycode_align">
<hr class="mycode_hr" />
<br />
<img src="https://samp.laex.com.tr/img/samp-query.png" loading="lazy"  alt="[Image: samp-query.png]" class="mycode_img" /><br />
<br />
<span style="color: blue;" class="mycode_color">About The Project</span><br />
<br />
Hello SA-MP / Open.MP Community!<br />
<br />
I'm presenting you a modern and useful SA-MP/Open.MP server monitoring project. This tool provides a responsive web interface that allows you to track servers in real-time.<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: green;" class="mycode_color">Features</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Real-Time Data:</span> Direct UDP SA-MP/Open.MP query protocol implementation<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Modern Interface:</span> Responsive design with TailwindCSS and Alpine.js<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Fast Performance:</span> Optimized UDP socket connections<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Smart Search:</span> Filter by server name, IP, gamemode, or server type<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mobile Compatible:</span> Perfect display on all devices<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Auto Refresh:</span> Automatic updates every 30 seconds<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Detailed Information:</span> Player count, ping, gamemode, language and more<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">No External APIs:</span> Direct protocol implementation for reliability<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Open.MP Support:</span> Full compatibility with both SA-MP and Open.MP servers<br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<br />
<span style="color: orange;" class="mycode_color">Live Demo</span><br />
<br />
You can see the demo here: <a href="https://samp.laex.com.tr" target="_blank" rel="noopener" class="mycode_url">https://samp.laex.com.tr</a> (demo site updates automatically once per hour)<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: purple;" class="mycode_color">Technical Details</span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Backend:</span> PHP 8.0+<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Frontend:</span> HTML5, TailwindCSS, Alpine.js<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Protocol:</span> SA-MP/Open.MP UDP Query Protocol<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Icons:</span> Font Awesome 6<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">License:</span> MIT (Open Source)<br />
</li>
</ul>
<br />
<hr class="mycode_hr" />
<br />
<span style="color: red;" class="mycode_color">Installation</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Requirements:</span><br />
- PHP 8.0 or higher<br />
- Socket extension (php-sockets)<br />
- JSON extension (php-json)<br />
- Web server (Apache/Nginx)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Quick Installation:</span><br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>git clone https://github.com/thislaex/samp-query.git<br />
cd samp-query<br />
# Copy files to your web server</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Server Configuration:</span><br />
Edit the &#36;servers array in index.php:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>private &#36;servers = [<br />
    ['ip' =&gt; 'your-server-ip', 'port' =&gt; 7777, 'type' =&gt; 'samp'],<br />
    ['ip' =&gt; 'openmp-server-ip', 'port' =&gt; 7777, 'type' =&gt; 'openmp'],<br />
];</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Server Types:</span><br />
- <span style="color: blue;" class="mycode_color">'type' =&gt; 'samp'</span> - For SA-MP servers<br />
- <span style="color: orange;" class="mycode_color">'type' =&gt; 'openmp'</span> - For Open.MP servers<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: navy;" class="mycode_color">API Usage</span><br />
The project also provides a JSON API:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>GET /path/to/samp/?api=servers</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Example Response:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>{<br />
    "success": true,<br />
    "servers": [<br />
        {<br />
            "hostname": "[0.3.7/DL] Your SAMP Server",<br />
            "players": 42,<br />
            "maxplayers": 100,<br />
            "gamemode": "Roleplay/Freeroam",<br />
            "language": "English",<br />
            "password": false,<br />
            "ping": 85,<br />
            "ip": "192.168.1.100",<br />
            "port": 7777,<br />
            "server_type": "samp",<br />
            "is_openmp": false<br />
        },<br />
        {<br />
            "hostname": "Open.MP Test Server",<br />
            "players": 25,<br />
            "maxplayers": 100,<br />
            "gamemode": "Freeroam/DM",<br />
            "language": "English",<br />
            "password": false,<br />
            "ping": 65,<br />
            "ip": "192.168.1.101",<br />
            "port": 7777,<br />
            "server_type": "openmp",<br />
            "is_openmp": true<br />
        }<br />
    ],<br />
    "count": 2,<br />
    "timestamp": "2025-07-09 15:30:45"<br />
}</code></div></div><br />
You can use this in your own projects as well!<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: teal;" class="mycode_color">Customization</span><br />
<span style="font-weight: bold;" class="mycode_b">Timeout Settings:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>// Change timeout from 2 seconds to 5 seconds<br />
@socket_set_option(&#36;socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' =&gt; 5, 'usec' =&gt; 0));</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Auto Refresh Interval:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>// Change from 30 seconds to 60 seconds<br />
setInterval(() =&gt; {<br />
    if (!this.loading) {<br />
        this.refreshServers();<br />
    }<br />
}, 60000);</code></div></div><br />
<hr class="mycode_hr" />
<br />
<span style="color: brown;" class="mycode_color">Contributing</span><br />
This project is open source! You can fork it on GitHub and contribute to development.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Steps:</span><br />
1. Fork the repository<br />
2. Create a development branch<br />
3. Make your changes<br />
4. Send a Pull Request<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Code Standards:</span><br />
- Follow PSR-12 coding standards<br />
- Use Conventional Commits format<br />
- Test with different SA-MP and Open.MP servers<br />
- Check mobile compatibility<br />
<br />
<hr class="mycode_hr" />
<br />
<span style="color: maroon;" class="mycode_color">Troubleshooting</span><br />
<span style="font-weight: bold;" class="mycode_b">Servers not showing:</span> Check if PHP sockets extension is installed<br />
<br />
<span style="font-weight: bold;" class="mycode_b">UDP connection failed:</span> Make sure firewall allows UDP connections<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Slow queries:</span> Adjust timeout values or check network<br />
<br />
<span style="font-weight: bold;" class="mycode_b">API returns empty:</span> Make sure servers are online and accessible<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Open.MP server not showing:</span> Make sure server type is set to 'openmp'<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Windows Firewall Configuration:</span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>New-NetFirewallRule -DisplayName "SAMP/OpenMP UDP" -Direction Outbound -Protocol UDP -LocalPort 7777</code></div></div></div>
<hr class="mycode_hr" />
<div style="text-align: center;" class="mycode_align">
<span style="color: gray;" class="mycode_color">Contact and Links</span><br />
<br />
<span style="font-weight: bold;" class="mycode_b">GitHub Repository:</span> <a href="https://github.com/thislaex/samp-query" target="_blank" rel="noopener" class="mycode_url">thislaex/samp-query</a><br />
<span style="font-weight: bold;" class="mycode_b">GitHub Profile:</span> <a href="https://github.com/thislaex" target="_blank" rel="noopener" class="mycode_url">@thislaex</a><br />
<span style="font-weight: bold;" class="mycode_b">Discord:</span> thislaex<br />
<span style="font-weight: bold;" class="mycode_b">Bug Report:</span> <a href="https://github.com/thislaex/samp-query/issues" target="_blank" rel="noopener" class="mycode_url">Issues</a></div>
<br />
<hr class="mycode_hr" />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: green;" class="mycode_color">If this project helped you, don't forget to star it on GitHub!</span><br />
<br />
<span style="color: gray;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">Language Note:</span> Currently, the interface is in Turkish. If you'd like to contribute an English translation or other languages, feel free to submit a Pull Request!</span><br />
<br />
<span style="font-style: italic;" class="mycode_i">Made with &lt;3 for SA-MP &amp; Open.MP Community</span></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pawn Kit for Sublime Text]]></title>
			<link>https://forum.open.mp/showthread.php?tid=3093</link>
			<pubDate>Wed, 26 Feb 2025 18:20:58 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=5383">punkochel</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=3093</guid>
			<description><![CDATA[<img src="https://img.shields.io/github/v/release/punkochel/pawn-openmp-sublime-kit.svg" loading="lazy"  alt="[Image: pawn-openmp-sublime-kit.svg]" class="mycode_img" /><br />
<br />
<div style="text-align: center;" class="mycode_align"><div style="text-align: left;" class="mycode_align"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Pawn Kit for Sublime Text</span></span></div>
</div>
This plugin is a fork of <a href="https://github.com/Southclaws/pawn-sublime-language" target="_blank" rel="noopener" class="mycode_url">Pawn syntax</a>, visiting the parent page will give you more details on the plugin's capabilities.  <br />
If you development for SA:MP, use Pawn syntax.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Description</span></span><br />
The plugin is adapted for development to <a href="https://www.open.mp/" target="_blank" rel="noopener" class="mycode_url">Open MP</a>.<br />
Refactored snippets and completions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Supported Libraries</span></span><ul class="mycode_list"><li><a href="https://github.com/Y-Less/sscanf" target="_blank" rel="noopener" class="mycode_url">sscanf2</a><br />
</li>
<li><a href="https://github.com/Open-GTO/foreach" target="_blank" rel="noopener" class="mycode_url">foreach</a><br />
</li>
<li><a href="https://github.com/katursis/Pawn.CMD" target="_blank" rel="noopener" class="mycode_url">Pawn.CMD</a><br />
</li>
<li><a href="https://github.com/katursis/Pawn.Regex" target="_blank" rel="noopener" class="mycode_url">Pawn.Regex</a><br />
</li>
<li><a href="https://github.com/samp-incognito/samp-streamer-plugin" target="_blank" rel="noopener" class="mycode_url">streamer</a><br />
</li>
<li><a href="https://github.com/Open-GTO/mdialog" target="_blank" rel="noopener" class="mycode_url">mdialog</a><br />
</li>
<li><a href="https://github.com/pBlueG/SA-MP-MySQL" target="_blank" rel="noopener" class="mycode_url">a_mysql v40+</a><br />
</li>
<li><a href="https://github.com/Sreyas-Sreelal/samp-bcrypt" target="_blank" rel="noopener" class="mycode_url">samp-bcrypt</a><br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Compilation on F5 key</span></span><br />
Create a Default.sublime-keymap file in your Packages/User/ directory, then put the following code in it:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>[<br />
    { "keys": ["f5"], "command": "build", "context" : [{"key": "selector", "operator": "equal", "operand": "source.pawn", "match_all": true}] },<br />
    { "keys": ["pause"], "command": "exec", "args": {"kill": true}, "context" : [{"key": "selector", "operator": "equal", "operand": "source.pawn", "match_all": true}] }<br />
]</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Install</span></span><br />
Package Control<br />
<br />
<br />
Repository: <a href="https://github.com/punkochel/pawn-openmp-sublime-kit" target="_blank" rel="noopener" class="mycode_url">GitHub</a>]]></description>
			<content:encoded><![CDATA[<img src="https://img.shields.io/github/v/release/punkochel/pawn-openmp-sublime-kit.svg" loading="lazy"  alt="[Image: pawn-openmp-sublime-kit.svg]" class="mycode_img" /><br />
<br />
<div style="text-align: center;" class="mycode_align"><div style="text-align: left;" class="mycode_align"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Pawn Kit for Sublime Text</span></span></div>
</div>
This plugin is a fork of <a href="https://github.com/Southclaws/pawn-sublime-language" target="_blank" rel="noopener" class="mycode_url">Pawn syntax</a>, visiting the parent page will give you more details on the plugin's capabilities.  <br />
If you development for SA:MP, use Pawn syntax.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Description</span></span><br />
The plugin is adapted for development to <a href="https://www.open.mp/" target="_blank" rel="noopener" class="mycode_url">Open MP</a>.<br />
Refactored snippets and completions.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Supported Libraries</span></span><ul class="mycode_list"><li><a href="https://github.com/Y-Less/sscanf" target="_blank" rel="noopener" class="mycode_url">sscanf2</a><br />
</li>
<li><a href="https://github.com/Open-GTO/foreach" target="_blank" rel="noopener" class="mycode_url">foreach</a><br />
</li>
<li><a href="https://github.com/katursis/Pawn.CMD" target="_blank" rel="noopener" class="mycode_url">Pawn.CMD</a><br />
</li>
<li><a href="https://github.com/katursis/Pawn.Regex" target="_blank" rel="noopener" class="mycode_url">Pawn.Regex</a><br />
</li>
<li><a href="https://github.com/samp-incognito/samp-streamer-plugin" target="_blank" rel="noopener" class="mycode_url">streamer</a><br />
</li>
<li><a href="https://github.com/Open-GTO/mdialog" target="_blank" rel="noopener" class="mycode_url">mdialog</a><br />
</li>
<li><a href="https://github.com/pBlueG/SA-MP-MySQL" target="_blank" rel="noopener" class="mycode_url">a_mysql v40+</a><br />
</li>
<li><a href="https://github.com/Sreyas-Sreelal/samp-bcrypt" target="_blank" rel="noopener" class="mycode_url">samp-bcrypt</a><br />
</li>
</ul>
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Compilation on F5 key</span></span><br />
Create a Default.sublime-keymap file in your Packages/User/ directory, then put the following code in it:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>[<br />
    { "keys": ["f5"], "command": "build", "context" : [{"key": "selector", "operator": "equal", "operand": "source.pawn", "match_all": true}] },<br />
    { "keys": ["pause"], "command": "exec", "args": {"kill": true}, "context" : [{"key": "selector", "operator": "equal", "operand": "source.pawn", "match_all": true}] }<br />
]</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: medium;" class="mycode_size">Install</span></span><br />
Package Control<br />
<br />
<br />
Repository: <a href="https://github.com/punkochel/pawn-openmp-sublime-kit" target="_blank" rel="noopener" class="mycode_url">GitHub</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Vehicle saves / placement]]></title>
			<link>https://forum.open.mp/showthread.php?tid=3067</link>
			<pubDate>Fri, 07 Feb 2025 16:28:50 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=5917">Lark_1</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=3067</guid>
			<description><![CDATA[some years ago i made vehicle placement for server, this server was never online.<br />
  I have no interest to run any server.<br />
  <br />
  For anyone who needs cars placed all over SA this might be useful.<br />
  (1753 vehicles, no boats !)<br />
<br />
  File has standard data format as saved with  /save  command:<br />
 AddStaticVehicle(533,847.2242,-1831.3566,11.9767,257.2146,75,1); //<br />
<br />
<br />
 Only some areas in LS might need some attention.<br />
<br />
<br />
<a href="https://1drv.ms/u/c/5524f66686356092/EYd9D5a0rX5Hs2TsjtkVzooBMoSywkmZWDkUNSphbmwAWw?e=CRTgVW" target="_blank" rel="noopener" class="mycode_url">https://1drv.ms/u/c/5524f66686356092/EYd...w?e=CRTgVW</a><br />
<hr class="mycode_hr" />]]></description>
			<content:encoded><![CDATA[some years ago i made vehicle placement for server, this server was never online.<br />
  I have no interest to run any server.<br />
  <br />
  For anyone who needs cars placed all over SA this might be useful.<br />
  (1753 vehicles, no boats !)<br />
<br />
  File has standard data format as saved with  /save  command:<br />
 AddStaticVehicle(533,847.2242,-1831.3566,11.9767,257.2146,75,1); //<br />
<br />
<br />
 Only some areas in LS might need some attention.<br />
<br />
<br />
<a href="https://1drv.ms/u/c/5524f66686356092/EYd9D5a0rX5Hs2TsjtkVzooBMoSywkmZWDkUNSphbmwAWw?e=CRTgVW" target="_blank" rel="noopener" class="mycode_url">https://1drv.ms/u/c/5524f66686356092/EYd...w?e=CRTgVW</a><br />
<hr class="mycode_hr" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[TACO_GTASA]]></title>
			<link>https://forum.open.mp/showthread.php?tid=2811</link>
			<pubDate>Thu, 04 Jul 2024 06:53:16 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=5917">Lark_1</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=2811</guid>
			<description><![CDATA[Here is a tool, i was using a lot when i was developing  my never finished game-mode.<br />
I never searched if this kind of tool exists, i had base of this program already made for one other game and it was only matter of changing some addresses to make it work for GTAsa.<br />
<br />
It offers in-game camera movement and teleporting. <br />
Both useful functions for dev work and maybe for Admin work in server.<br />
It works on the principle of memory manipulation: Read/write data in game memory (RAM)<br />
It might be inconvenient for WASD users because it uses keys: q,w,e,a,s,d,f,r,g,z,x<br />
<br />
Its never tested with Open.mp ! ! !<br />
<br />
<a href="https://github.com/DWORDLARK/GTA_SA_TACO" target="_blank" rel="noopener" class="mycode_url">https://github.com/DWORDLARK/GTA_SA_TACO</a>]]></description>
			<content:encoded><![CDATA[Here is a tool, i was using a lot when i was developing  my never finished game-mode.<br />
I never searched if this kind of tool exists, i had base of this program already made for one other game and it was only matter of changing some addresses to make it work for GTAsa.<br />
<br />
It offers in-game camera movement and teleporting. <br />
Both useful functions for dev work and maybe for Admin work in server.<br />
It works on the principle of memory manipulation: Read/write data in game memory (RAM)<br />
It might be inconvenient for WASD users because it uses keys: q,w,e,a,s,d,f,r,g,z,x<br />
<br />
Its never tested with Open.mp ! ! !<br />
<br />
<a href="https://github.com/DWORDLARK/GTA_SA_TACO" target="_blank" rel="noopener" class="mycode_url">https://github.com/DWORDLARK/GTA_SA_TACO</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Texture Studio 2024]]></title>
			<link>https://forum.open.mp/showthread.php?tid=2769</link>
			<pubDate>Mon, 03 Jun 2024 12:26:27 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=5870">nsesu7</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=2769</guid>
			<description><![CDATA[<img src="https://i.imgur.com/tGBT7kD.jpeg" loading="lazy"  alt="[Image: tGBT7kD.jpeg]" class="mycode_img" /><br />
<br />
<a href="https://vk.com/non7ense" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/3dThTvQ.png" loading="lazy"  width="618" height="156" alt="[Image: 3dThTvQ.png]" class="mycode_img" /></a><br />
<br />
<a href="https://vk.com/non7ense" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/zhto5Q6.png" loading="lazy"  width="618" height="156" alt="[Image: zhto5Q6.png]" class="mycode_img" /></a>]]></description>
			<content:encoded><![CDATA[<img src="https://i.imgur.com/tGBT7kD.jpeg" loading="lazy"  alt="[Image: tGBT7kD.jpeg]" class="mycode_img" /><br />
<br />
<a href="https://vk.com/non7ense" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/3dThTvQ.png" loading="lazy"  width="618" height="156" alt="[Image: 3dThTvQ.png]" class="mycode_img" /></a><br />
<br />
<a href="https://vk.com/non7ense" target="_blank" rel="noopener" class="mycode_url"><img src="https://i.imgur.com/zhto5Q6.png" loading="lazy"  width="618" height="156" alt="[Image: zhto5Q6.png]" class="mycode_img" /></a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Query open.mp servers in Rust]]></title>
			<link>https://forum.open.mp/showthread.php?tid=2495</link>
			<pubDate>Wed, 29 Nov 2023 11:30:04 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.open.mp/member.php?action=profile&uid=804">Carlos</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.open.mp/showthread.php?tid=2495</guid>
			<description><![CDATA[<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><a href="https://github.com/carlos-menezes/openmultiplayer-query" target="_blank" rel="noopener" class="mycode_url">openmultiplayer-query</a></span></span><br />
<br />
Implements the needed builders and parsers for SA:MP's/Open Multiplayer's <a href="https://sampwiki.blast.hk/wiki/Query_Mechanism" target="_blank" rel="noopener" class="mycode_url">Query Mechanism</a>, allowing a developer to retrieve data from a running server.<br />
<br />
You cannot send RCON packets yet.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Examples</span></span><br />
<br />
You can check <div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>tests/packet.rs</code></div></div> to see how the tests for this library are crafted.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>use openmultiplayer_query::{Packet, Opcodes};<br />
<br />
// Assume you have a UDP socket running<br />
let socket = UdpSocket::bind("0.0.0.0:0")?;<br />
<br />
// We'll send a packet to 149.56.84.18:7777<br />
let address: Ipv4Addr = "149.56.84.18".parse::&lt;Ipv4Addr&gt;().unwrap();<br />
let port = 7777;<br />
<br />
let mut packet = PacketBuilder::new(Opcodes::I, address, port)?;<br />
// ...<br />
packet.build()?; // This is needed in order to populate the data buffer with query data.<br />
<br />
// Send the packet through the socket.<br />
socket.send_to(packet.get_data().unwrap(), (address, port))?;<br />
let mut recv_buf = [0u8; 2048];<br />
socket.recv(&amp;mut recv_buf)?;<br />
let result: Result&lt;Packet::InformationPacket, _&gt; = (&amp;recv_buf[..]).try_into();<br />
// Use result as you please</code></div></div>]]></description>
			<content:encoded><![CDATA[<span style="font-size: x-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><a href="https://github.com/carlos-menezes/openmultiplayer-query" target="_blank" rel="noopener" class="mycode_url">openmultiplayer-query</a></span></span><br />
<br />
Implements the needed builders and parsers for SA:MP's/Open Multiplayer's <a href="https://sampwiki.blast.hk/wiki/Query_Mechanism" target="_blank" rel="noopener" class="mycode_url">Query Mechanism</a>, allowing a developer to retrieve data from a running server.<br />
<br />
You cannot send RCON packets yet.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Examples</span></span><br />
<br />
You can check <div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>tests/packet.rs</code></div></div> to see how the tests for this library are crafted.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>use openmultiplayer_query::{Packet, Opcodes};<br />
<br />
// Assume you have a UDP socket running<br />
let socket = UdpSocket::bind("0.0.0.0:0")?;<br />
<br />
// We'll send a packet to 149.56.84.18:7777<br />
let address: Ipv4Addr = "149.56.84.18".parse::&lt;Ipv4Addr&gt;().unwrap();<br />
let port = 7777;<br />
<br />
let mut packet = PacketBuilder::new(Opcodes::I, address, port)?;<br />
// ...<br />
packet.build()?; // This is needed in order to populate the data buffer with query data.<br />
<br />
// Send the packet through the socket.<br />
socket.send_to(packet.get_data().unwrap(), (address, port))?;<br />
let mut recv_buf = [0u8; 2048];<br />
socket.recv(&amp;mut recv_buf)?;<br />
let result: Result&lt;Packet::InformationPacket, _&gt; = (&amp;recv_buf[..]).try_into();<br />
// Use result as you please</code></div></div>]]></content:encoded>
		</item>
	</channel>
</rss>