Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- registerPlugin({
- name: 'Schere Stein Papier',
- version: '0.1',
- description: 'Schere Stein Papier mit Einsatz (SConomy)',
- author: 'Patrik Montada <patrik.montada@googlemail.com>',
- vars: [
- {
- name: 'challengeCommand',
- title: 'The command to challenge a player',
- type: 'string'
- },
- {
- name: 'acceptCommand',
- title: 'The command to accept a challenge',
- type: 'string'
- },
- {
- name: 'rockCommand',
- title: 'The command to play rock',
- type: 'string'
- },
- {
- name: 'paperCommand',
- title: 'The command to play paper',
- type: 'string'
- },
- {
- name: 'scissorCommand',
- title: 'The command to play scissor',
- type: 'string'
- }
- ]
- }, function (sinusbot, config) {
- var engine = require('engine');
- var backend = require('backend');
- var event = require('event');
- var store = require('store');
- var acceptCommandMessage = config.acceptCommand || '!sspaccept';
- var paperCommandMessage = config.paperCommand || '!paper';
- var rockCommandMessage = config.rockCommand || '!rock';
- var scissorCommandMessage = config.scissorCommand || '!scissor';
- var t1 = '^';
- var t2 = ' *(\\S+) *(\\d+)$';
- if (config.challengeCommand != 0) {
- var challengeCommand = t1 + config.challengeCommand + t2;
- }
- else {
- var challengeCommand = t1 + '!ssp' + t2;
- }
- var gnmbrCommand = ' *(\\d*)$';
- if (config.scissorCommand != 0) {
- var scissorCommand = t1 + config.scissorCommand + gnmbrCommand;
- }
- else {
- var scissorCommand = t1 + '!scissor' + gnmbrCommand;
- }
- if (config.rockCommand != 0) {
- var rockCommand = t1 + config.rockCommand + gnmbrCommand;
- }
- else {
- var rockCommand = t1 + '!rock' + gnmbrCommand;
- }
- if (config.paperCommand != 0) {
- var paperCommand = t1 + config.paperCommand + gnmbrCommand;
- }
- else {
- var paperCommand = t1 + '!paper' + gnmbrCommand;
- }
- if (config.acceptCommand != 0) {
- var acceptCommand = t1 + config.acceptCommand + gnmbrCommand;
- }
- else {
- var acceptCommand = t1 + '!sspaccept' + gnmbrCommand;
- }
- var messageBorder = '\n======================================';
- var messageYouAccepted = '\nDu hast die Herausforderung angenommen! Eure Spielnummer lautet: ';
- var messageEnemyAccepted = '\nDein Gegner hat die Herausforderung angenommen! Eure Spielnummer lautet: ';
- var messageChallengeInfo = '\nIch habe den Wetteinsatz eingesammelt.\nSchreibe mir nun was du waehlen moechtest.';
- var messagePaperScissor = '\nSo ein Pech! Du hast mit Papier gegen Schere verloren!';
- var messagePaperRock = '\nGlueckwunsch! Du hast mit Papier gegen Stein gewonnen!';
- var messageScissorPaper = '\nGlueckwunsch! Du hast mit Schere gegen Papier gewonnen!';
- var messageRockPaper = '\nSo ein Pech! Du hast mit Stein gegen Papier verloren!';
- var messageRockScissor = '\nGlueckwunsch! Du hast mit Stein gegen Schere gewonnen!';
- var messageScissorRock = '\nSo ein Pech! Du hast mit Schere gegen Stein verloren!';
- var challengingPlayerName;
- var challengingPlayerUID;
- var challengingPlayerClient;
- var otherPlayerUID;
- var otherPlayerClient;
- var activePlayers = [];
- var games = [];
- var gameNumber = 0;
- event.on('chat', function (ev) {
- var setCoins = function (winner,loser,wager) {
- games.forEach(function (g) {
- if (g.game == gameNumber) {
- var winnerWallet = winner + 'sconomy';
- var winnerOld = store.getGlobal(winnerWallet);
- store.setGlobal(winnerWallet, winnerOld + +wager);
- var loserWallet = loser + 'sconomy';
- var loserOld = store.getGlobal(loserWallet);
- store.setGlobal(loserWallet, loserOld - wager);
- }
- })
- }
- var checkCoins = function (client, betAmount) {
- var key = client + 'sconomy';
- var currentCoins = store.getGlobal(key);
- return currentCoins >= betAmount;
- }
- var findOtherPlayer = function (input) {
- var client = backend.getClientByName(input);
- if (client) {
- return client.uid();
- }
- }
- if (!ev.client.isSelf()) {
- var challenge = ev.text.match(new RegExp(challengeCommand));
- var paper = ev.text.match(new RegExp(paperCommand));
- var rock = ev.text.match(new RegExp(rockCommand));
- var scissor = ev.text.match(new RegExp(scissorCommand));
- var accept = ev.text.match(new RegExp(acceptCommand));
- var activeGame = false;
- if (challenge) {
- challengingPlayerName = ev.client.name();
- challengingPlayerClient = ev.client;
- challengingPlayerUID = ev.client.uid();
- if (checkCoins(ev.client.uid(), challenge[2])) {
- otherPlayerUID = findOtherPlayer(challenge[1]);
- otherPlayerClient = backend.getClientByUID(otherPlayerUID);
- if (otherPlayerUID == undefined) {
- ev.client.chat('Dein Gegner wurde nicht gefunden!');
- return;
- }
- if (checkCoins(otherPlayerUID, challenge[2])) {
- gameNumber++;
- activePlayers.push(challengingPlayerUID, otherPlayerUID);
- games.push({ 'game': gameNumber, 'player1': challengingPlayerUID, 'player1Pick': '', 'player2': otherPlayerUID, 'player2Pick': '', 'active': activeGame, 'winner': '','amount': challenge[2] });
- ev.client.chat('Du hast ' + otherPlayerClient.name() + ' zu Schere Stein Papier herausgefordert');
- ev.client.chat('Der Wetteinsatz betraegt: ' + challenge[2] + ' Muenzen.');
- otherPlayerClient.chat('Du wurdest von ' + challengingPlayerName + ' zu Schere Stein Papier herausgefordert! Die Spielnummer lautet: ' + gameNumber);
- otherPlayerClient.chat('Der Wetteinsatz betraegt: ' + challenge[2] + ' Muenzen. Moechtest du die Herausforderung annehmen?');
- otherPlayerClient.chat('Wenn ja, dann antworte mit ' + acceptCommandMessage + ' ' + gameNumber);
- } else {
- ev.client.chat('Dein Gegner hat nicht genug Muenzen!');
- }
- } else {
- ev.client.chat('Du hast nicht genug Muenzen!');
- }
- challengingPlayerName = null;
- challengingPlayerClient = null;
- challengingPlayerUID = null;
- otherPlayerClient = null;
- otherPlayerUID = null;
- }
- if (accept) {
- games.forEach(function (g) {
- if (g.game == accept[1]) {
- if (g.active == false && g.player2 == ev.client.uid() && g.winner == '') {
- g.active = true;
- var messageCommandOverview = '\nSchere:\t' + scissorCommandMessage + ' ' + gameNumber + '\nStein:\t' + rockCommandMessage + ' ' + gameNumber + '\nPapier:\t' + paperCommandMessage + ' ' + gameNumber;
- ev.client.chat(messageBorder + messageYouAccepted + gameNumber + messageChallengeInfo + messageBorder + messageCommandOverview + messageBorder);
- backend.getClientByUID(g.player1).chat(messageBorder + messageEnemyAccepted + gameNumber + messageChallengeInfo + messageBorder + messageCommandOverview + messageBorder);
- } else {
- ev.client.chat('Entweder wurde das Spiel bereits angenommen oder deine ID ist falsch. Ueberpruefe deine Eingabe.');
- }
- }
- });
- }
- var checkWinner = function (gameNumber) {
- games.forEach(function (g) {
- if (g.game == gameNumber) {
- switch (g.player1Pick) {
- case 'papier':
- switch (g.player2Pick) {
- case 'papier':
- backend.getClientByUID(g.player1).chat('Unentschieden! Waehle neu!');
- backend.getClientByUID(g.player2).chat('Unentschieden! Waehle neu!');
- g.player1Pick = '';
- g.player2Pick = '';
- break;
- case 'stein':
- backend.getClientByUID(g.player1).chat(messagePaperRock);
- backend.getClientByUID(g.player2).chat(messageRockPaper);
- g.winner = backend.getClientByUID(g.player1).name();
- setCoins(g.player1, g.player2,g.amount);
- break;
- case 'schere':
- backend.getClientByUID(g.player1).chat(messagePaperScissor);
- backend.getClientByUID(g.player2).chat(messageScissorPaper);
- g.winner = backend.getClientByUID(g.player2).name();
- setCoins(g.player2, g.player1,g.amount);
- break;
- }
- break;
- case 'stein':
- switch (g.player2Pick) {
- case 'stein':
- backend.getClientByUID(g.player1).chat('Unentschieden! Waehle neu!');
- backend.getClientByUID(g.player2).chat('Unentschieden! Waehle neu!');
- g.player1Pick = '';
- g.player2Pick = '';
- break;
- case 'papier':
- backend.getClientByUID(g.player1).chat(messageRockPaper);
- backend.getClientByUID(g.player2).chat(messagePaperRock);
- g.winner = backend.getClientByUID(g.player2).name();
- setCoins(g.player2, g.player1,g.amount);
- break;
- case 'schere':
- backend.getClientByUID(g.player1).chat(messageRockScissor);
- backend.getClientByUID(g.player2).chat(messageScissorRock);
- g.winner = backend.getClientByUID(g.player1).name();
- setCoins(g.player1, g.player2,g.amount);
- break;
- }
- break;
- case 'schere':
- switch (g.player2Pick) {
- case 'schere':
- backend.getClientByUID(g.player1).chat('Unentschieden! Waehle neu!');
- backend.getClientByUID(g.player2).chat('Unentschieden! Waehle neu!');
- g.player1Pick = '';
- g.player2Pick = '';
- break;
- case 'stein':
- backend.getClientByUID(g.player1).chat(messageScissorRock);
- backend.getClientByUID(g.player2).chat(messageRockScissor);
- g.winner = backend.getClientByUID(g.player2).name();
- setCoins(g.player2,g.player1,g.amount);
- break;
- case 'papier':
- backend.getClientByUID(g.player1).chat(messageScissorPaper);
- backend.getClientByUID(g.player2).chat(messagePaperScissor);
- g.winner = backend.getClientByUID(g.player1).name();
- setCoins(g.player1, g.player2,g.amount);
- break;
- }
- break;
- }
- g.active = false;
- }
- });
- }
- if (paper || rock || scissor) {
- if (paper) {
- games.forEach(function (g) {
- if (g.game == paper[1]) {
- if (g.winner != '') {
- ev.client.chat('Dieses Spiel ist bereits beendet.');
- return;
- } else {
- switch (ev.client.uid()) {
- case g.player1:
- if (g.player1Pick == '') {
- g.player1Pick = 'papier';
- ev.client.chat('Du hast Papier gewaehlt.');
- } else {
- ev.client.chat('Du hast deine Auswahl bereits getroffen!');
- }
- break;
- case g.player2:
- if (g.player2Pick == '') {
- g.player2Pick = 'papier';
- ev.client.chat('Du hast Papier gewaehlt.');
- } else {
- ev.client.chat('Du hast deine Auswahl bereits getroffen!');
- }
- break;
- default:
- ev.client.chat('Deine User ID konnte nicht zur Spiel ID zugeordnet werden. Ueberpruefe deine Eingabe!');
- break;
- }
- if ((g.player1Pick != '') && (g.player2Pick != '') && (g.winner == '')) {
- checkWinner(paper[1]);
- return;
- }
- }
- }
- });
- }
- if (rock) {
- games.forEach(function (g) {
- if (g.game == rock[1]) {
- if (g.winner != '') {
- ev.client.chat('Dieses Spiel ist bereits beendet.');
- return;
- } else {
- switch (ev.client.uid()) {
- case g.player1:
- if (g.player1Pick == '') {
- g.player1Pick = 'stein';
- ev.client.chat('Du hast Stein gewaehlt.');
- } else {
- ev.client.chat('Du hast deine Auswahl bereits getroffen!');
- }
- break;
- case g.player2:
- if (g.player2Pick == '') {
- g.player2Pick = 'stein';
- ev.client.chat('Du hast Stein gewaehlt.');
- } else {
- ev.client.chat('Du hast deine Auswahl bereits getroffen!');
- }
- break;
- default:
- ev.client.chat('Deine User ID konnte nicht zur Spiel ID zugeordnet werden. Ueberpruefe deine Eingabe!');
- break;
- }
- if ((g.player1Pick != '') && (g.player2Pick != '') && (g.winner == '')) {
- checkWinner(rock[1]);
- return;
- }
- }
- }
- });
- }
- if (scissor) {
- games.forEach(function (g) {
- if (g.game == scissor[1]) {
- if (g.winner != '') {
- ev.client.chat('Dieses Spiel ist bereits beendet.');
- return;
- } else {
- switch (ev.client.uid()) {
- case g.player1:
- if (g.player1Pick == '') {
- g.player1Pick = 'schere';
- ev.client.chat('Du hast Schere gewaehlt.');
- } else {
- ev.client.chat('Du hast deine Auswahl bereits getroffen!');
- }
- break;
- case g.player2:
- if (g.player2Pick == '') {
- g.player2Pick = 'schere';
- ev.client.chat('Du hast Schere gewaehlt.');
- } else {
- ev.client.chat('Du hast deine Auswahl bereits getroffen!');
- }
- break;
- default:
- ev.client.chat('Deine User ID konnte nicht zur Spiel ID zugeordnet werden. Ueberpruefe deine Eingabe!');
- break;
- }
- if ((g.player1Pick != '') && (g.player2Pick != '') && (g.winner == '')) {
- checkWinner(scissor[1]);
- return;
- }
- }
- }
- });
- }
- }
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement