DayZ Enforce Script Extension
Extensão completa para desenvolvimento de Enforce Script no DayZ com suporte ao Community Framework.
🚀 Características
✅ Suporte Completo à Linguagem
- Syntax Highlighting completo para Enforce Script
- Auto-complete inteligente com documentação
- Validação de sintaxe em tempo real
- Detecção de erros avançada
- Formatação automática de código
🎯 Funções Nativas do DayZ
- 100+ funções nativas do DayZ com documentação completa
- Validação de parâmetros para todas as funções
- Hover documentation com exemplos de uso
- Auto-complete contextual
- Suporte completo ao Community Framework
- Snippets específicos para módulos CF
- Validação de parâmetros para funções CF
- Documentação integrada para todas as classes CF
- Auto-complete para funções e classes CF
📝 Snippets Avançados
- 50+ snippets para estruturas básicas
- 100+ snippets para funções do DayZ
- Snippets específicos para Community Framework
- Snippets para métodos de classes DayZ
- Snippets avançados para sistemas específicos
🔧 Funcionalidades Avançadas
- Diagnósticos em tempo real
- Sugestões de correção automática
- Validação de contexto para funções
- Documentação hover detalhada
- Comandos personalizados
📦 Instalação
- Abra o VS Code
- Vá para a aba Extensions (Ctrl+Shift+X)
- Pesquise por "DayZ Enforce Script"
- Clique em Install
🎮 Como Usar
Arquivos Suportados
.c
- Arquivos C/C++
.cpp
- Arquivos C++
.h
- Arquivos de cabeçalho
.hpp
- Arquivos de cabeçalho C++
.des
- Arquivos Enforce Script
Exemplo Básico
modded class DayZPlayer
{
void DayZPlayer()
{
// Auto-complete e validação automática
Print("Player created!");
// Hover para documentação
vector pos = GetPosition();
// Validação de parâmetros
SetHealth(100.0);
}
}
[CF_RegisterModule(MyModule)]
class MyModule : CF_ModuleWorld
{
override void OnInit()
{
super.OnInit();
// Habilitar eventos
EnableInvokeConnect();
// Logging CF
CF_Log.Info("Module initialized");
}
override void OnInvokeConnect(Class sender, CF_EventArgs args)
{
super.OnInvokeConnect(sender, args);
auto player = CF_EventPlayerArgs.Cast(args).Player;
CF_Log.Info("Player connected: " + player.GetIdentity().GetName());
}
}
🛠️ Configurações
Parâmetros Disponíveis
des.enableParameterValidation
- Validação de parâmetros
des.enableHoverDocumentation
- Documentação no hover
des.enableSyntaxValidation
- Validação de sintaxe avançada
des.enableContextValidation
- Validação de contexto CF
🗂️ Sistema de Arquivos
// Operações de arquivo
CF_TextWriter writer = new CF_TextWriter(new CF_FileStream("$profile:test.txt", FileMode.WRITE));
writer.WriteLine("Hello World!");
writer.Close();
// Leitura de arquivos
CF_TextReader reader = new CF_TextReader(new CF_FileStream("$profile:test.txt", FileMode.READ));
Print(reader.ReadLine());
reader.Close();
📊 Logging Avançado
// Diferentes níveis de log
CF_Log.Trace("Debug detalhado");
CF_Log.Debug("Informação de debug");
CF_Log.Info("Informação geral");
CF_Log.Warn("Aviso");
CF_Log.Error("Erro");
CF_Log.Critical("Erro crítico");
🔄 Event Handler
// Event handler tipado
ref CF_EventHandlerT<float> MyEvent = new CF_EventHandlerT<float>();
void InvokeEvent()
{
MyEvent.Invoke(this, 42.0f);
}
class MyClass
{
autoptr CF_InputBindings m_CF_Bindings = new CF_InputBindings(this);
void MyClass()
{
m_CF_Bindings.Bind("PrintMessage", "UAUIBack", false);
}
void PrintMessage(UAInput input)
{
Print("Hello, World!");
}
}
💾 Mod Storage
modded class KitBase
{
int someVariable;
override void CF_OnStoreSave(CF_ModStorageMap storage)
{
super.CF_OnStoreSave(storage);
auto ctx = storage["MyMod"];
if (!ctx) return;
ctx.Write(someVariable);
}
override bool CF_OnStoreLoad(CF_ModStorageMap storage)
{
if (!super.CF_OnStoreLoad(storage)) return false;
auto ctx = storage["MyMod"];
if (!ctx) return true;
if (!ctx.Read(someVariable)) return false;
return true;
}
}
🎨 Snippets Disponíveis
Snippets Básicos
class
- Criar classe
modded
- Modificar classe existente
function
- Criar função
if
- Estrutura condicional
for
- Loop for
while
- Loop while
Snippets DayZ
getplayer
- Obter jogador
getposition
- Obter posição
sethealth
- Definir saúde
print
- Imprimir no console
fileexist
- Verificar arquivo
cfmodule
- Criar módulo CF
cfrpc
- Configurar RPC
cffile
- Operações de arquivo CF
cflog
- Logging CF
cftrace
- Context tracing
cfsurface
- Informações de superfície
cfweapon
- Operações de arma
cfevent
- Event handler
cfstorage
- Mod storage
cfinput
- Input bindings
cftypeconverter
- Type converter
cflifecycle
- Lifecycle events
cfexpression
- Expression VM
cflocaliser
- Localiser
cfcrypto
- Cryptography
🔍 Comandos Disponíveis
Comandos da Extensão
des.helloWorld
- Comando de teste
des.showFunctionDocumentation
- Mostrar documentação da função
des.validateSyntax
- Validar sintaxe do arquivo
📖 Documentação
Baseada na Documentação Oficial
Recursos Adicionais
- Exemplos completos incluídos
- Documentação hover detalhada
- Validação de parâmetros em tempo real
- Sugestões de correção automática
🚀 Desenvolvimento
Estrutura do Projeto
vscode-dayz-enforce-script-extension/
├── src/
│ ├── extension.ts # Lógica principal
│ ├── parameter-validation.ts # Validação de parâmetros
│ └── syntax-validator.ts # Validação de sintaxe
├── snippets/
│ ├── des.json # Snippets básicos
│ ├── dayz-functions.json # Funções DayZ
│ ├── dayz-complete-methods.json # Métodos completos
│ ├── dayz-advanced-snippets.json # Snippets avançados
│ └── cf-framework-snippets.json # Community Framework
├── syntaxes/
│ └── des.tmLanguage.json # Syntax highlighting
├── examples/
│ ├── player_manager.c # Exemplo básico
│ └── dayz_complete_example.c # Exemplo completo
└── docs/
├── dayz-classes-reference.md # Referência de classes
├── COMPLETE_FEATURES.md # Recursos completos
└── FINAL_IMPROVEMENTS.md # Melhorias finais
Scripts Disponíveis
npm run compile # Compilar TypeScript
npm run watch # Compilar em modo watch
npm run lint # Executar ESLint
🤝 Contribuição
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
📄 Licença
Este projeto está licenciado sob a MIT License.
🙏 Agradecimentos
- DayZ Community - Pelo suporte contínuo
- Community Framework Team - Pela documentação excelente
- DayZ Explorer - Pela documentação completa das funções
📞 Suporte
- Issues: Reporte bugs no GitHub
- Documentação: Consulte a documentação integrada
- Comunidade: Participe da comunidade DayZ
Desenvolvido com ❤️ para a comunidade DayZ