Advertisement
Guest User

Untitled

a guest
Nov 16th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. registerPlugin({
  2.     name: 'Schere Stein Papier',
  3.     version: '0.1',
  4.     description: 'Schere Stein Papier mit Einsatz (SConomy)',
  5.     author: 'Patrik Montada <patrik.montada@googlemail.com>',
  6.     vars: [
  7.         {
  8.             name: 'challengeCommand',
  9.             title: 'The command to challenge a player',
  10.             type: 'string'
  11.         },
  12.         {
  13.             name: 'acceptCommand',
  14.             title: 'The command to accept a challenge',
  15.             type: 'string'
  16.         },
  17.         {
  18.             name: 'rockCommand',
  19.             title: 'The command to play rock',
  20.             type: 'string'
  21.         },
  22.         {
  23.             name: 'paperCommand',
  24.             title: 'The command to play paper',
  25.             type: 'string'
  26.         },
  27.         {
  28.             name: 'scissorCommand',
  29.             title: 'The command to play scissor',
  30.             type: 'string'
  31.         }
  32.     ]
  33. }, function (sinusbot, config) {
  34.     var engine = require('engine');
  35.     var backend = require('backend');
  36.     var event = require('event');
  37.     var store = require('store');
  38.  
  39.     var acceptCommandMessage = config.acceptCommand || '!sspaccept';
  40.     var paperCommandMessage = config.paperCommand || '!paper';
  41.     var rockCommandMessage = config.rockCommand || '!rock';
  42.     var scissorCommandMessage = config.scissorCommand || '!scissor';
  43.  
  44.     var t1 = '^';
  45.     var t2 = ' *(\\S+) *(\\d+)$';
  46.  
  47.     if (config.challengeCommand != 0) {
  48.         var challengeCommand = t1 + config.challengeCommand + t2;
  49.     }
  50.     else {
  51.         var challengeCommand = t1 + '!ssp' + t2;
  52.     }
  53.  
  54.     var gnmbrCommand = ' *(\\d*)$';
  55.  
  56.     if (config.scissorCommand != 0) {
  57.         var scissorCommand = t1 + config.scissorCommand + gnmbrCommand;
  58.     }
  59.     else {
  60.         var scissorCommand = t1 + '!scissor' + gnmbrCommand;
  61.     }
  62.     if (config.rockCommand != 0) {
  63.         var rockCommand = t1 + config.rockCommand + gnmbrCommand;
  64.     }
  65.     else {
  66.         var rockCommand = t1 + '!rock' + gnmbrCommand;
  67.     }
  68.     if (config.paperCommand != 0) {
  69.         var paperCommand = t1 + config.paperCommand + gnmbrCommand;
  70.     }
  71.     else {
  72.         var paperCommand = t1 + '!paper' + gnmbrCommand;
  73.     }
  74.     if (config.acceptCommand != 0) {
  75.         var acceptCommand = t1 + config.acceptCommand + gnmbrCommand;
  76.     }
  77.     else {
  78.         var acceptCommand = t1 + '!sspaccept' + gnmbrCommand;
  79.     }
  80.  
  81.     var messageBorder = '\n======================================';
  82.     var messageYouAccepted = '\nDu hast die Herausforderung angenommen! Eure Spielnummer lautet: ';
  83.     var messageEnemyAccepted = '\nDein Gegner hat die Herausforderung angenommen! Eure Spielnummer lautet: ';
  84.     var messageChallengeInfo = '\nIch habe den Wetteinsatz eingesammelt.\nSchreibe mir nun was du waehlen moechtest.';
  85.  
  86.     var messagePaperScissor = '\nSo ein Pech! Du hast mit Papier gegen Schere verloren!';
  87.     var messagePaperRock = '\nGlueckwunsch! Du hast mit Papier gegen Stein gewonnen!';
  88.     var messageScissorPaper = '\nGlueckwunsch! Du hast mit Schere gegen Papier gewonnen!';
  89.     var messageRockPaper = '\nSo ein Pech! Du hast mit Stein gegen Papier verloren!';
  90.     var messageRockScissor = '\nGlueckwunsch! Du hast mit Stein gegen Schere gewonnen!';
  91.     var messageScissorRock = '\nSo ein Pech! Du hast mit Schere gegen Stein verloren!';
  92.  
  93.     var challengingPlayerName;
  94.     var challengingPlayerUID;
  95.     var challengingPlayerClient;
  96.     var otherPlayerUID;
  97.     var otherPlayerClient;
  98.  
  99.     var activePlayers = [];
  100.     var games = [];
  101.     var gameNumber = 0;
  102.  
  103.     event.on('chat', function (ev) {
  104.  
  105.         var setCoins = function (winner,loser,wager) {
  106.             games.forEach(function (g) {
  107.                 if (g.game == gameNumber) {
  108.                     var winnerWallet = winner + 'sconomy';
  109.                     var winnerOld = store.getGlobal(winnerWallet);
  110.                     store.setGlobal(winnerWallet, winnerOld + +wager);
  111.  
  112.                     var loserWallet = loser + 'sconomy';
  113.                     var loserOld = store.getGlobal(loserWallet);
  114.                     store.setGlobal(loserWallet, loserOld - wager);
  115.                 }
  116.             })
  117.         }
  118.  
  119.         var checkCoins = function (client, betAmount) {
  120.             var key = client + 'sconomy';
  121.  
  122.             var currentCoins = store.getGlobal(key);
  123.  
  124.             return currentCoins >= betAmount;
  125.         }
  126.         var findOtherPlayer = function (input) {
  127.             var client = backend.getClientByName(input);
  128.             if (client) {
  129.                 return client.uid();
  130.             }
  131.         }
  132.         if (!ev.client.isSelf()) {
  133.             var challenge = ev.text.match(new RegExp(challengeCommand));
  134.             var paper = ev.text.match(new RegExp(paperCommand));
  135.             var rock = ev.text.match(new RegExp(rockCommand));
  136.             var scissor = ev.text.match(new RegExp(scissorCommand));
  137.             var accept = ev.text.match(new RegExp(acceptCommand));
  138.             var activeGame = false;
  139.             if (challenge) {
  140.                 challengingPlayerName = ev.client.name();
  141.                 challengingPlayerClient = ev.client;
  142.                 challengingPlayerUID = ev.client.uid();
  143.                 if (checkCoins(ev.client.uid(), challenge[2])) {
  144.                     otherPlayerUID = findOtherPlayer(challenge[1]);
  145.                     otherPlayerClient = backend.getClientByUID(otherPlayerUID);
  146.                     if (otherPlayerUID == undefined) {
  147.                         ev.client.chat('Dein Gegner wurde nicht gefunden!');
  148.                         return;
  149.                     }
  150.                     if (checkCoins(otherPlayerUID, challenge[2])) {
  151.                         gameNumber++;
  152.                         activePlayers.push(challengingPlayerUID, otherPlayerUID);
  153.                         games.push({ 'game': gameNumber, 'player1': challengingPlayerUID, 'player1Pick': '', 'player2': otherPlayerUID, 'player2Pick': '', 'active': activeGame, 'winner': '','amount': challenge[2] });
  154.                         ev.client.chat('Du hast ' + otherPlayerClient.name() + ' zu Schere Stein Papier herausgefordert');
  155.                         ev.client.chat('Der Wetteinsatz betraegt: ' + challenge[2] + ' Muenzen.');
  156.                         otherPlayerClient.chat('Du wurdest von ' + challengingPlayerName + ' zu Schere Stein Papier herausgefordert! Die Spielnummer lautet: ' + gameNumber);
  157.                         otherPlayerClient.chat('Der Wetteinsatz betraegt: ' + challenge[2] + ' Muenzen. Moechtest du die Herausforderung annehmen?');
  158.                         otherPlayerClient.chat('Wenn ja, dann antworte mit ' + acceptCommandMessage + ' ' + gameNumber);
  159.                     } else {
  160.                         ev.client.chat('Dein Gegner hat nicht genug Muenzen!');
  161.                     }
  162.                 } else {
  163.                     ev.client.chat('Du hast nicht genug Muenzen!');
  164.                 }
  165.                 challengingPlayerName = null;
  166.                 challengingPlayerClient = null;
  167.                 challengingPlayerUID = null;
  168.                 otherPlayerClient = null;
  169.                 otherPlayerUID = null;
  170.             }
  171.  
  172.             if (accept) {
  173.                 games.forEach(function (g) {
  174.                     if (g.game == accept[1]) {
  175.                         if (g.active == false && g.player2 == ev.client.uid() && g.winner == '') {
  176.                             g.active = true;
  177.                             var messageCommandOverview = '\nSchere:\t' + scissorCommandMessage + ' ' + gameNumber + '\nStein:\t' + rockCommandMessage + ' ' + gameNumber + '\nPapier:\t' + paperCommandMessage + ' ' + gameNumber;
  178.                             ev.client.chat(messageBorder + messageYouAccepted + gameNumber + messageChallengeInfo + messageBorder + messageCommandOverview + messageBorder);
  179.                             backend.getClientByUID(g.player1).chat(messageBorder + messageEnemyAccepted + gameNumber + messageChallengeInfo + messageBorder + messageCommandOverview + messageBorder);
  180.                         } else {
  181.                             ev.client.chat('Entweder wurde das Spiel bereits angenommen oder deine ID ist falsch. Ueberpruefe deine Eingabe.');
  182.                         }
  183.                     }
  184.                 });
  185.             }
  186.  
  187.             var checkWinner = function (gameNumber) {
  188.                 games.forEach(function (g) {
  189.                     if (g.game == gameNumber) {
  190.                         switch (g.player1Pick) {
  191.                             case 'papier':
  192.                                 switch (g.player2Pick) {
  193.                                     case 'papier':
  194.                                         backend.getClientByUID(g.player1).chat('Unentschieden! Waehle neu!');
  195.                                         backend.getClientByUID(g.player2).chat('Unentschieden! Waehle neu!');
  196.                                         g.player1Pick = '';
  197.                                         g.player2Pick = '';
  198.                                         break;
  199.                                     case 'stein':
  200.                                         backend.getClientByUID(g.player1).chat(messagePaperRock);
  201.                                         backend.getClientByUID(g.player2).chat(messageRockPaper);
  202.                                         g.winner = backend.getClientByUID(g.player1).name();
  203.                                         setCoins(g.player1, g.player2,g.amount);
  204.                                         break;
  205.                                     case 'schere':
  206.                                         backend.getClientByUID(g.player1).chat(messagePaperScissor);
  207.                                         backend.getClientByUID(g.player2).chat(messageScissorPaper);
  208.                                         g.winner = backend.getClientByUID(g.player2).name();
  209.                                         setCoins(g.player2, g.player1,g.amount);
  210.                                         break;
  211.                                 }
  212.                                 break;
  213.                             case 'stein':
  214.                                 switch (g.player2Pick) {
  215.                                     case 'stein':
  216.                                         backend.getClientByUID(g.player1).chat('Unentschieden! Waehle neu!');
  217.                                         backend.getClientByUID(g.player2).chat('Unentschieden! Waehle neu!');
  218.                                         g.player1Pick = '';
  219.                                         g.player2Pick = '';
  220.                                         break;
  221.                                     case 'papier':
  222.                                         backend.getClientByUID(g.player1).chat(messageRockPaper);
  223.                                         backend.getClientByUID(g.player2).chat(messagePaperRock);
  224.                                         g.winner = backend.getClientByUID(g.player2).name();
  225.                                         setCoins(g.player2, g.player1,g.amount);
  226.                                         break;
  227.                                     case 'schere':
  228.                                         backend.getClientByUID(g.player1).chat(messageRockScissor);
  229.                                         backend.getClientByUID(g.player2).chat(messageScissorRock);
  230.                                         g.winner = backend.getClientByUID(g.player1).name();
  231.                                         setCoins(g.player1, g.player2,g.amount);
  232.                                         break;
  233.                                 }
  234.                                 break;
  235.                             case 'schere':
  236.                                 switch (g.player2Pick) {
  237.                                     case 'schere':
  238.                                         backend.getClientByUID(g.player1).chat('Unentschieden! Waehle neu!');
  239.                                         backend.getClientByUID(g.player2).chat('Unentschieden! Waehle neu!');
  240.                                         g.player1Pick = '';
  241.                                         g.player2Pick = '';
  242.                                         break;
  243.                                     case 'stein':
  244.                                         backend.getClientByUID(g.player1).chat(messageScissorRock);
  245.                                         backend.getClientByUID(g.player2).chat(messageRockScissor);
  246.                                         g.winner = backend.getClientByUID(g.player2).name();
  247.                                         setCoins(g.player2,g.player1,g.amount);
  248.                                         break;
  249.                                     case 'papier':
  250.                                         backend.getClientByUID(g.player1).chat(messageScissorPaper);
  251.                                         backend.getClientByUID(g.player2).chat(messagePaperScissor);
  252.                                         g.winner = backend.getClientByUID(g.player1).name();
  253.                                         setCoins(g.player1, g.player2,g.amount);
  254.                                         break;
  255.                                 }
  256.                                 break;
  257.                         }
  258.                         g.active = false;
  259.                     }
  260.                 });
  261.  
  262.             }
  263.            
  264.             if (paper || rock || scissor) {
  265.                 if (paper) {
  266.                     games.forEach(function (g) {
  267.                         if (g.game == paper[1]) {
  268.                             if (g.winner != '') {
  269.                                 ev.client.chat('Dieses Spiel ist bereits beendet.');
  270.                                 return;
  271.                             } else {
  272.                                 switch (ev.client.uid()) {
  273.                                     case g.player1:
  274.                                         if (g.player1Pick == '') {
  275.                                             g.player1Pick = 'papier';
  276.                                             ev.client.chat('Du hast Papier gewaehlt.');
  277.                                         } else {
  278.                                             ev.client.chat('Du hast deine Auswahl bereits getroffen!');
  279.                                         }
  280.                                         break;
  281.                                     case g.player2:
  282.                                         if (g.player2Pick == '') {
  283.                                             g.player2Pick = 'papier';
  284.                                             ev.client.chat('Du hast Papier gewaehlt.');
  285.                                         } else {
  286.                                             ev.client.chat('Du hast deine Auswahl bereits getroffen!');
  287.                                         }
  288.                                         break;
  289.                                     default:
  290.                                         ev.client.chat('Deine User ID konnte nicht zur Spiel ID zugeordnet werden. Ueberpruefe deine Eingabe!');
  291.                                         break;
  292.                                 }
  293.                                 if ((g.player1Pick != '') && (g.player2Pick != '') && (g.winner == '')) {
  294.                                     checkWinner(paper[1]);
  295.                                     return;
  296.                                 }
  297.                             }
  298.                         }
  299.                     });
  300.                 }
  301.                 if (rock) {
  302.                     games.forEach(function (g) {
  303.                         if (g.game == rock[1]) {
  304.                             if (g.winner != '') {
  305.                                 ev.client.chat('Dieses Spiel ist bereits beendet.');
  306.                                 return;
  307.                             } else {
  308.                                 switch (ev.client.uid()) {
  309.                                     case g.player1:
  310.                                         if (g.player1Pick == '') {
  311.                                             g.player1Pick = 'stein';
  312.                                             ev.client.chat('Du hast Stein gewaehlt.');
  313.                                         } else {
  314.                                             ev.client.chat('Du hast deine Auswahl bereits getroffen!');
  315.                                         }
  316.                                         break;
  317.                                     case g.player2:
  318.                                         if (g.player2Pick == '') {
  319.                                             g.player2Pick = 'stein';
  320.                                             ev.client.chat('Du hast Stein gewaehlt.');
  321.                                         } else {
  322.                                             ev.client.chat('Du hast deine Auswahl bereits getroffen!');
  323.                                         }
  324.                                         break;
  325.                                     default:
  326.                                         ev.client.chat('Deine User ID konnte nicht zur Spiel ID zugeordnet werden. Ueberpruefe deine Eingabe!');
  327.                                         break;
  328.                                 }
  329.                                 if ((g.player1Pick != '') && (g.player2Pick != '') && (g.winner == '')) {
  330.                                     checkWinner(rock[1]);
  331.                                     return;
  332.                                 }
  333.                             }
  334.                         }
  335.                     });
  336.                 }
  337.                 if (scissor) {
  338.                     games.forEach(function (g) {
  339.                         if (g.game == scissor[1]) {
  340.                             if (g.winner != '') {
  341.                                 ev.client.chat('Dieses Spiel ist bereits beendet.');
  342.                                 return;
  343.                             } else {
  344.                                 switch (ev.client.uid()) {
  345.                                     case g.player1:
  346.                                         if (g.player1Pick == '') {
  347.                                             g.player1Pick = 'schere';
  348.                                             ev.client.chat('Du hast Schere gewaehlt.');
  349.                                         } else {
  350.                                             ev.client.chat('Du hast deine Auswahl bereits getroffen!');
  351.                                         }
  352.                                         break;
  353.                                     case g.player2:
  354.                                         if (g.player2Pick == '') {
  355.                                             g.player2Pick = 'schere';
  356.                                             ev.client.chat('Du hast Schere gewaehlt.');
  357.                                         } else {
  358.                                             ev.client.chat('Du hast deine Auswahl bereits getroffen!');
  359.                                         }
  360.                                         break;
  361.                                     default:
  362.                                         ev.client.chat('Deine User ID konnte nicht zur Spiel ID zugeordnet werden. Ueberpruefe deine Eingabe!');
  363.                                         break;
  364.                                 }
  365.                                 if ((g.player1Pick != '') && (g.player2Pick != '') && (g.winner == '')) {
  366.                                     checkWinner(scissor[1]);
  367.                                     return;
  368.                                 }
  369.                             }
  370.                         }
  371.                     });
  372.                 }
  373.  
  374.             }
  375.         }
  376.     });
  377. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement