Git Product home page Git Product logo

hackex's Introduction

HackEx version 0.0.5-dev

This documentation file is available in the following languages: English and French.

English

Description

HackEX is an ArmA 3 SQF script aiming at introducing actual computers and improving the electronic warfare and hacking gameplay while granting mission-makers innovative and ready-to-use means of story-telling.

This project is developed and maintained by Poslovitch with the kind support of CORP, a French ArmA 3 unit focused on milsim and realism.

Using the script in your mission...

Requirements

This script requires Arma 3 v2.02 and later, as it uses some of the newest features implemented in the SQF script language.

Download

HackEx is currently only available on GitHub. You can either get the most recent version or browse the Releases tab to choose an older version. Download the source code archive (in .zip or .tar.gz format, depending on your preference).

Installation

Extract the contents of the archive into your mission folder and rename the resulting folder to HackEX. If you later want to check the version of your HackEX installation, you can check the first line of the README.md file.

Then, add the code below to your mission's description.ext file:

#include "HackEX\HKX_dialogs.hpp"

class CfgFunctions {
  #include "HackEX\HKX_cfgFunctions.hpp"
}

class CfgHints {
  #include "HackEX\HKX_CfgHints.hpp"
}

If your description.ext already contains a CfgFunctions class, make sure you put the preprocessor instructions in the right place.

HackEX is now ready for use on your mission. It's time to create terminals!

Creating and customizing a terminal

By the method of your choice, place an object in your mission (preferably a laptop, for the sake of consistency - although HackEX can theoretically work with any object). Give your object a variable name.

/!\ DO NOT TURN THE OBJECT INTO A SIMPLE OBJECT

/!\ For the rest of the instructions, we'll assume that the variable name of the object is terminal.

Add the following line to the init.sqf file of your mission: [terminal] execVM "HackEX\hackex.sqf";

Navigate to the HackEX\config\terminals directory. A terminal configuration file, named terminal.sqf, is already there as an example. Since, in our example, the variable name of our object is terminal, this file will be used to configure the corresponding in-game object. In case the variable name of your object is different, create a variablename.sqf file and copy the contents of terminal.sqf into it.

The terminal configuration file allows you to define the accounts, files and custom commands available on the terminal. Apart from the limits imposed by the ArmA 3 game engine, you are free to create as many accounts, files and custom commands as you wish.

Setting up several terminals on the same mission

The process is the same as for the first terminal. You need to place a second object with a different variable name than the first, and then follow the instructions in the previous section.

French / Français

Description

HackEX est un script SQF ArmA 3 qui vise à introduire de véritables ordinateurs et à améliorer le gameplay de guerre électronique et de piratage tout en offrant aux réalisateurs de missions des moyens innovants et prêts à l'emploi pour raconter leurs histoires.

Ce projet est développé et maintenu par Poslovitch avec l'aimable soutien de la CORP, une unité ArmA 3 française axée sur le milsim et le réalisme.

Utiliser le script dans votre mission...

Pré-requis

Ce script nécessite Arma 3 version 2.02 ou plus récente, car il utilise des nouvelles fonctionnalités implémentées dans le langage SQF.

Téléchargement

HackEx n'est pour le moment disponible que sur GitHub. Vous pouvez soit obtenir la version la plus récente, soit naviguer dans l'onglet Releases pour choisir une version plus ancienne. Téléchargez l'archive du code source (en .zip ou en .tar.gz, selon vos préférences).

Installation

Extrayez le contenu de l'archive dans votre dossier de mission puis renommez le dossier ainsi créé en HackEX. Si, par la suite, vous voulez vérifier la version de votre installation de HackEX, il vous suffira de consulter la première ligne du fichier README.md.

Ensuite, ajoutez le code ci-dessous au fichier description.ext de votre mission :

#include "HackEX\HKX_dialogs.hpp"

class CfgFunctions {
  #include "HackEX\HKX_cfgFunctions.hpp"
}

class CfgHints {
  #include "HackEX\HKX_CfgHints.hpp"
}

Si votre description.ext contient déjà une classe CfgFunctions, assurez-vous de placer les instructions préprocesseur au bon endroit.

HackEX est maintenant prêt à l'emploi sur votre mission. Il est temps de créer des terminaux !

Création et personnalisation d'un terminal

Par la méthode de votre choix, placez un objet dans votre mission (de préférence un ordinateur portable, par soucis de cohérence - bien que HackEX puisse théoriquement fonctionner avec n'importe quel objet). Donnez un nom de variable à votre objet.

/!\ ASSUREZ-VOUS QUE L'OBJET N'EST PAS UN OBJET SIMPLE!

/!\ Pour la suite des instructions, nous supposerons que le nom de variable de l'objet est terminal.

Ajoutez la ligne suivante au fichier init.sqf de votre mission : [terminal] execVM "HackEX\hackex.sqf";

Naviguez dans le dossier HackEX\config\terminals. Un fichier de configuration de terminal, nommé terminal.sqf, est déjà présent en guise d'exemple. Puisque, dans notre exemple, le nom de variable de notre objet est terminal, ce fichier sera employé pour configurer l'objet correspondant en jeu. Dans le cas où le nom de variable de votre objet serait différent, créez un fichier nomdevariable.sqf et copiez le contenu de terminal.sqf à l'intérieur.

Le fichier de configuration de terminal vous permet de définir les comptes, fichiers et commandes personnalisées disponibles sur le terminal. Hormis les limites imposées par le moteur de jeu d'ArmA 3, il vous est loisible de créer autant de comptes, fichiers et commandes personnalisées que vous le désirez.

Mise en place de plusieurs terminaux sur une même mission

Le procédé est le même que pour le premier terminal. Il vous faut placer un second objet avec un nom de variable différent du premier, puis suivre les instructions de la partie précédente.

hackex's People

Contributors

poslovitch avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

0xdezzy yfps

hackex's Issues

Wrong Keyboard Mappings

On different keyboard layouts, there are some problems, where keys are not mapped correctly. I rewrite your input file, but maybe its a good idea to support that over a configuration setting as well (or maybe read out automatically, if possible, which layout the user has).

Here is the swiss german layout, as a payback for the good script you wrote!

	case 1: {  if (_shift) then { _char = "@ESC"; } else { _char = "@ESC";  }; };
	case 2: {  if (_shift) then { _char = "+"; } else { _char = "1";  }; };
	case 3: {  if (_shift) then { _char = """"; } else { _char = "2";  }; };
	case 4: {  if (_shift) then { _char = "*"; } else { _char = "3";  }; };
	case 5: {  if (_shift) then { _char = "ç"; } else { _char = "4";  }; };
	case 6: {  if (_shift) then { _char = "%"; } else { _char = "5";  }; };
	case 7: {  if (_shift) then { _char = "&"; } else { _char = "6";  }; };
	case 8: {  if (_shift) then { _char = "/"; } else { _char = "7";  }; };
	case 9: {  if (_shift) then { _char = "("; } else { _char = "8";  }; };
	case 10: {  if (_shift) then { _char = ")"; } else { _char = "9";  }; };
	case 11: {  if (_shift) then { _char = "="; } else { _char = "0";  }; };
	case 12: {  if (_shift) then { _char = "?"; } else { _char = "";  }; };
	case 13: {  if (_shift) then { _char = "`"; } else { _char = "^";  }; };
	case 14: {  if (_shift) then { _char = "@BACKSPACE"; } else { _char = "@BACKSPACE";  }; };
	case 15: {  if (_shift) then { _char = "@TAB"; } else { _char = "@TAB";  }; };
	case 16: {  if (_shift) then { _char = "Q"; } else { _char = "q";  }; };
	case 17: {  if (_shift) then { _char = "W"; } else { _char = "w";  }; };
	case 18: {  if (_shift) then { _char = "E"; } else { _char = "e";  }; };
	case 19: {  if (_shift) then { _char = "R"; } else { _char = "r";  }; };
	case 20: {  if (_shift) then { _char = "T"; } else { _char = "t";  }; };
	case 21: {  if (_shift) then { _char = "Z"; } else { _char = "z";  }; };
	case 22: {  if (_shift) then { _char = "U"; } else { _char = "u";  }; };
	case 23: {  if (_shift) then { _char = "I"; } else { _char = "i";  }; };
	case 24: {  if (_shift) then { _char = "O"; } else { _char = "o";  }; };
	case 25: {  if (_shift) then { _char = "P"; } else { _char = "p";  }; };
	case 26: {  if (_shift) then { _char = "è"; } else { _char = "ü";  }; };
	case 27: {  if (_shift) then { _char = "!"; } else { _char = "¨";  }; };
	case 28: {  if (_shift) then { _char = "@ENTER"; } else { _char = "@ENTER";  }; };
	case 30: {  if (_shift) then { _char = "A"; } else { _char = "a";  }; };
	case 31: {  if (_shift) then { _char = "S"; } else { _char = "s";  }; };
	case 32: {  if (_shift) then { _char = "D"; } else { _char = "d";  }; };
	case 33: {  if (_shift) then { _char = "F"; } else { _char = "f";  }; };
	case 34: {  if (_shift) then { _char = "G"; } else { _char = "g";  }; };
	case 35: {  if (_shift) then { _char = "H"; } else { _char = "h";  }; };
	case 36: {  if (_shift) then { _char = "J"; } else { _char = "j";  }; };
	case 37: {  if (_shift) then { _char = "K"; } else { _char = "k";  }; };
	case 38: {  if (_shift) then { _char = "L"; } else { _char = "l";  }; };
	case 39: {  if (_shift) then { _char = "é"; } else { _char = "ö";  }; };
	case 40: {  if (_shift) then { _char = "à"; } else { _char = "ä";  }; };
	case 41: {  if (_shift) then { _char = "£"; } else { _char = "$";  }; };
	case 43: {  if (_shift) then { _char = ">"; } else { _char = "<";  }; };
	case 44: {  if (_shift) then { _char = "Y"; } else { _char = "y";  }; };
	case 45: {  if (_shift) then { _char = "X"; } else { _char = "x";  }; };
	case 46: {  if (_shift) then { _char = "C"; } else { _char = "c";  }; };
	case 47: {  if (_shift) then { _char = "V"; } else { _char = "v";  }; };
	case 48: {  if (_shift) then { _char = "B"; } else { _char = "b";  }; };
	case 49: {  if (_shift) then { _char = "N"; } else { _char = "n";  }; };
	case 50: {  if (_shift) then { _char = "M"; } else { _char = "m";  }; };
	case 51: {  if (_shift) then { _char = ";"; } else { _char = ",";  }; };
	case 52: {  if (_shift) then { _char = ":"; } else { _char = ".";  }; };
	case 53: {  if (_shift) then { _char = "_"; } else { _char = "-";  }; };
	case 55: {  if (_shift) then { _char = "*"; } else { _char = "*";  }; };
	case 57: {  if (_shift) then { _char = " "; } else { _char = " ";  }; };
	case 71: {  if (_shift) then { _char = "7"; } else { _char = "7";  }; };
	case 72: {  if (_shift) then { _char = "8"; } else { _char = "8";  }; };
	case 73: {  if (_shift) then { _char = "9"; } else { _char = "9";  }; };
	case 74: {  if (_shift) then { _char = "-"; } else { _char = "-";  }; };
	case 75: {  if (_shift) then { _char = "4"; } else { _char = "4";  }; };
	case 76: {  if (_shift) then { _char = "5"; } else { _char = "5";  }; };
	case 77: {  if (_shift) then { _char = "6"; } else { _char = "6";  }; };
	case 78: {  if (_shift) then { _char = "+"; } else { _char = "+";  }; };
	case 79: {  if (_shift) then { _char = "1"; } else { _char = "1";  }; };
	case 80: {  if (_shift) then { _char = "2"; } else { _char = "2";  }; };
	case 81: {  if (_shift) then { _char = "3"; } else { _char = "3";  }; };
	case 82: {  if (_shift) then { _char = "0"; } else { _char = "0";  }; };
	case 83: {  if (_shift) then { _char = "."; } else { _char = ".";  }; };
	case 86: {  if (_shift) then { _char = ">"; } else { _char = "<";  }; };
	case 156: {  if (_shift) then { _char = "@ENTER"; } else { _char = "@ENTER";  }; };
	case 181: {  if (_shift) then { _char = "/"; } else { _char = "/";  }; };
	case 200: {  if (_shift) then { _char = "@ARROW_UP"; } else { _char = "@ARROW_UP";  }; };
	case 208: {  if (_shift) then { _char = "@ARROW_DOWN"; } else { _char = "@ARROW_DOWN";  }; };

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.