Hallo GG Community,
Da mir schon einige per PN angeschrieben haben, oder im Forum danach gefragt haben werde ich das Tutorial für euch nun übersetzen.
Ich bin nicht der Author, sondern PapaBear. Also habt so viel respekt, und entfernt ihn nicht als Author!
Dieses Script wurde von mir ein bisschen Übersetzt.
Fangen wir mal an.
1. Öffnet eure functions.h und fügt unter class Shops folgendes hinzu:
2. Öffnet eure dialog\Masterhandler und fügt folgendes hinz:
3. Öffnet euren dialog Ordner und erstelle eine neue datei namens slot_machine.hpp mit folgendem Inhallt:
/*
File: slot_machine.hpp
Author: Jacob "PapaBear" Tyler
Description: Gui for slotmachine
*/
#define GUI_GRID_X (0)
#define GUI_GRID_Y (0)
#define GUI_GRID_W (0.025)
#define GUI_GRID_H (0.04)
#define GUI_GRID_WAbs (1)
#define GUI_GRID_HAbs (1)
class SlotMachineGUI
{
idd = 5780;
movingEnabled = false;
enableSimulation = true;
class controlsBackground
{
class RscFrame_1800: life_RscText
{
idc = 5770;
colorBackground[] = {0,0,0,0.7};
x = 0 * GUI_GRID_W + GUI_GRID_X;
y = 0 * GUI_GRID_H + GUI_GRID_Y;
w = 40 * GUI_GRID_W;
h = 25 * GUI_GRID_H;
};
class RscText_1000: life_RscText
{
idc = 5774;
text = "Gewonnen: $"; //--- ToDo: Localize;
x = 13 * GUI_GRID_W + GUI_GRID_X;
y = 21 * GUI_GRID_H + GUI_GRID_Y;
w = 5 * GUI_GRID_W;
h = 2 * GUI_GRID_H;
};
class RscText_1003: life_RscText
{
idc = 5783;
text = "Bet"; //--- ToDo: Localize;
x = 6 * GUI_GRID_W + GUI_GRID_X;
y = 14 * GUI_GRID_H + GUI_GRID_Y;
w = 2 * GUI_GRID_W;
h = 1 * GUI_GRID_H;
};
class RscText_1004: life_RscText
{
idc = 5784;
text = "Bet"; //--- ToDo: Localize;
x = 15 * GUI_GRID_W + GUI_GRID_X;
y = 14 * GUI_GRID_H + GUI_GRID_Y;
w = 2 * GUI_GRID_W;
h = 1 * GUI_GRID_H;
};
class RscText_1005: life_RscText
{
idc = 5786;
text = "Bet"; //--- ToDo: Localize;
x = 23 * GUI_GRID_W + GUI_GRID_X;
y = 14 * GUI_GRID_H + GUI_GRID_Y;
w = 2 * GUI_GRID_W;
h = 1 * GUI_GRID_H;
};
class RscText_1006: life_RscText
{
idc = 5787;
text = "Bet"; //--- ToDo: Localize;
x = 32 * GUI_GRID_W + GUI_GRID_X;
y = 14 * GUI_GRID_H + GUI_GRID_Y;
w = 2 * GUI_GRID_W;
h = 1 * GUI_GRID_H;
};
class RscText_1002: life_RscText
{
idc = 5776;
text = "Spielautomat"; //--- ToDo: Localize;
x = 6 * GUI_GRID_W + GUI_GRID_X;
y = 0 * GUI_GRID_H + GUI_GRID_Y;
w = 28 * GUI_GRID_W;
h = 3.5 * GUI_GRID_H;
sizeEx = 4 * GUI_GRID_H;
};
};
class controls
{
class SLOT_1: life_RscPicture
{
idc = 5771;
text = "#(argb,8,8,3)color(1,1,1,1)";
x = 4 * GUI_GRID_W + GUI_GRID_X;
y = 4 * GUI_GRID_H + GUI_GRID_Y;
w = 8 * GUI_GRID_W;
h = 9 * GUI_GRID_H;
};
class SLOT_2: life_RscPicture
{
idc = 5772;
text = "#(argb,8,8,3)color(1,1,1,1)";
x = 16 * GUI_GRID_W + GUI_GRID_X;
y = 4 * GUI_GRID_H + GUI_GRID_Y;
w = 8 * GUI_GRID_W;
h = 9 * GUI_GRID_H;
};
class SLOT_3: life_RscPicture
{
idc = 5773;
text = "#(argb,8,8,3)color(1,1,1,1)";
x = 28 * GUI_GRID_W + GUI_GRID_X;
y = 4 * GUI_GRID_H + GUI_GRID_Y;
w = 8 * GUI_GRID_W;
h = 9 * GUI_GRID_H;
};
class Winnings: life_RscText
{
idc = 5775;
test = "";
x = 18.5 * GUI_GRID_W + GUI_GRID_X;
y = 21 * GUI_GRID_H + GUI_GRID_Y;
w = 7 * GUI_GRID_W;
h = 2 * GUI_GRID_H;
};
class EXIT_BTN: life_RscButtonMenu
{
idc = -1;
text = "EXIT"; //--- ToDo: Localize;
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
onButtonClick = "closeDialog 0;";
x = 35.5 * GUI_GRID_W + GUI_GRID_X;
y = 0.5 * GUI_GRID_H + GUI_GRID_Y;
w = 3.5 * GUI_GRID_W;
h = 1 * GUI_GRID_H;
};
class BET_5K: life_RscButtonMenu
{
idc = 5778;
text = "5000$"; //--- ToDo: Localize;
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
onButtonClick = "[5000] spawn life_fnc_slotSpin;";
x = 5 * GUI_GRID_W + GUI_GRID_X;
y = 15 * GUI_GRID_H + GUI_GRID_Y;
w = 4 * GUI_GRID_W;
h = 2 * GUI_GRID_H;
};
class BET_50K: life_RscButtonMenu
{
idc = 5779;
text = "50000$"; //--- ToDo: Localize;
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
onButtonClick = "[50000] spawn life_fnc_slotSpin;";
x = 31 * GUI_GRID_W + GUI_GRID_X;
y = 15 * GUI_GRID_H + GUI_GRID_Y;
w = 4 * GUI_GRID_W;
h = 2 * GUI_GRID_H;
};
class BET_25K: life_RscButtonMenu
{
idc = 5781;
text = "25000$"; //--- ToDo: Localize;
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
onButtonClick = "[25000] spawn life_fnc_slotSpin;";
x = 22 * GUI_GRID_W + GUI_GRID_X;
y = 15 * GUI_GRID_H + GUI_GRID_Y;
w = 4 * GUI_GRID_W;
h = 2 * GUI_GRID_H;
};
class BET_10K: life_RscButtonMenu
{
idc = 5782;
text = "10000$"; //--- ToDo: Localize;
colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", 0.5};
onButtonClick = "[10000] spawn life_fnc_slotSpin;";
x = 14 * GUI_GRID_W + GUI_GRID_X;
y = 15 * GUI_GRID_H + GUI_GRID_Y;
w = 4 * GUI_GRID_W;
h = 2 * GUI_GRID_H;
};
};
};
Alles anzeigen
4. Öffnet euren core\shops Ordner, und erstellt eine neue Datei namens fn_slotmachine.sqf mit folgendem Inhallt:
/*
File: fn_slotmachine.sqf
Author: Jacob "PapaBear" Tyler
Description: intializes the slotmachine gui
*/
createDialog "SlotMachineGUI";
disableSerialization;
Alles anzeigen
5. Im selben Ordner ebenfalls wieder eine neue Datei erstellen namens fn_slotSpin.sqf mit folgendem Inhallt:
/*
File: fn_slotSpin.sqf
Author: Jacob "PapaBear" Tyler
Description: Takes bet, spins slots, determines if win, pays
*/
private["_slot","_slot1","_slot2","_slot3","_winnings","_slotcash","_betamt","_display"];
_betamt = [_this,0,1,[0]] call BIS_fnc_param;
if(life_cash < _betamt) exitWith {hint format["Du hast nicht genug Geld, um zu spielen.",_betamt];};
life_cash = life_cash - _betamt;
disableSerialization;
_display = findDisplay 5780;
_slotPic1 = _display displayCtrl 5771;
_slotPic2 = _display displayCtrl 5772;
_slotPic3 = _display displayCtrl 5773;
_winningsText = _display displayCtrl 5775;
_bet1 = _display displayCtrl 5778;
_bet2 = _display displayCtrl 5779;
_bet3 = _display displayCtrl 5781;
_bet4 = _display displayCtrl 5782;
_bet1 ctrlEnable false;
_bet2 ctrlEnable false;
_bet3 ctrlEnable false;
_bet4 ctrlEnable false;
_number = ceil(random 7);
_pplayer = _this select 0;
if (_number == 0) then {_slot1 = 0; _slotPic1 ctrlSetText "textures\automat\slot_zero.jpg";};
if (_number == 1) then {_slot1 = 100; _slotPic1 ctrlSetText "textures\automat\slot_one.jpg";};
if (_number == 2) then {_slot1 = 200; _slotPic1 ctrlSetText "textures\automat\slot_two.jpg";};
if (_number == 3) then {_slot1 = 300; _slotPic1 ctrlSetText "textures\automat\slot_three.jpg";};
if (_number == 4) then {_slot1 = 400; _slotPic1 ctrlSetText "textures\automat\slot_four.jpg";};
if (_number == 5) then {_slot1 = 500; _slotPic1 ctrlSetText "textures\automat\slot_five.jpg";};
if (_number == 6) then {_slot1 = 600; _slotPic1 ctrlSetText "textures\automat\slot_six.jpg";};
if (_number == 7) then {_slot1 = 700; _slotPic1 ctrlSetText "textures\automat\slot_seven.jpg";};
life_action_inUse = true;
sleep 0.5;
_number = ceil(random 7);
_pplayer = _this select 0;
if (_number == 0) then {_slot2 = 0; _slotPic2 ctrlSetText "textures\automat\slot_zero.jpg";};
if (_number == 1) then {_slot2 = 10; _slotPic2 ctrlSetText "textures\automat\slot_one.jpg";};
if (_number == 2) then {_slot2 = 20; _slotPic2 ctrlSetText "textures\automat\slot_two.jpg";};
if (_number == 3) then {_slot2 = 30; _slotPic2 ctrlSetText "textures\automat\slot_three.jpg";};
if (_number == 4) then {_slot2 = 40; _slotPic2 ctrlSetText "textures\automat\slot_four.jpg";};
if (_number == 5) then {_slot2 = 50; _slotPic2 ctrlSetText "textures\automat\slot_five.jpg";};
if (_number == 6) then {_slot2 = 60; _slotPic2 ctrlSetText "textures\automat\slot_six.jpg";};
if (_number == 7) then {_slot2 = 70; _slotPic2 ctrlSetText "textures\automat\slot_seven.jpg";};
sleep 0.5;
_number = ceil(random 7);
_pplayer = _this select 0;
if (_number == 0) then {_slot3 = 0; _slotPic3 ctrlSetText "textures\automat\slot_zero.jpg";};
if (_number == 1) then {_slot3 = 1; _slotPic3 ctrlSetText "textures\automat\slot_one.jpg"; };
if (_number == 2) then {_slot3 = 2; _slotPic3 ctrlSetText "textures\automat\slot_two.jpg"; };
if (_number == 3) then {_slot3 = 3; _slotPic3 ctrlSetText "textures\automat\slot_three.jpg"; };
if (_number == 4) then {_slot3 = 4; _slotPic3 ctrlSetText "textures\automat\slot_four.jpg"; ;};
if (_number == 5) then {_slot3 = 5; _slotPic3 ctrlSetText "textures\automat\slot_five.jpg"; };
if (_number == 6) then {_slot3 = 6; _slotPic3 ctrlSetText "textures\automat\slot_six.jpg"; };
if (_number == 7) then {_slot3 = 7; _slotPic3 ctrlSetText "textures\automat\slot_seven.jpg"; };
sleep 0.5;
_slot = _slot1 + _slot2 + _slot3;
//cases for wins
switch (_slot) do
{
case 111:{_winnings = 4000;};
case 110:{_winnings = 800;};
case 123:{_winnings = 900;};
case 211:{_winnings = 80;};
case 123:{_winnings = 800;};
case 234:{_winnings = 850;};
case 345:{_winnings = 9000;};
case 456:{_winnings = 1100;};
case 567:{_winnings = 1200;};
case 311:{_winnings = 800;};
case 411:{_winnings = 800;};
case 511:{_winnings = 800;};
case 611:{_winnings = 800;};
case 110:{_winnings = 800;};
case 112:{_winnings = 800;};
case 113:{_winnings = 800;};
case 114:{_winnings = 800;};
case 115:{_winnings = 800;};
case 116:{_winnings = 800;};
case 121:{_winnings = 600;};
case 131:{_winnings = 600;};
case 141:{_winnings = 600;};
case 151:{_winnings = 600;};
case 171:{_winnings = 600;};
case 121:{_winnings = 600;};
case 222:{_winnings = 3000;};
case 333:{_winnings = 2000;};
case 444:{_winnings = 2000;};
case 555:{_winnings = 1500;};
case 666:{_winnings = 40000;};
case 777:{_winnings = 100000;};
default {_winnings = 0;}
};
//multiple winnings by bet amount
_slotcash = _winnings * ( _betamt / 1000 );
life_cash = life_cash + _slotcash;
_winningsText ctrlSetText format["%1",_slotcash];
_bet1 ctrlEnable true;
_bet2 ctrlEnable true;
_bet3 ctrlEnable true;
_bet4 ctrlEnable true;
life_action_inUse = false;
Alles anzeigen
Hier könnt ihr auserdem der Gewinn ändern.
6. Öffnet euren textures Ordner, und erstellt in diesem einen neuen Ordner namens automat und zieht da bitte alle Bilder rein. (Bilder im Anhang dabei)
7. und der letzte Punk. Öffnet euren Arma3 Editor, und erstellt einen npc (Oder ein Objekt) mit folgendem Initbefehl:
this allowdamage false; this enablesimulation false; this addAction ["Play Slots ($2500)", life_fnc_slotmachine];
Viel spaß dabei
MfG
Noldy