Du bist nicht angemeldet. [Anmelden]
Optionen
Thema bewerten
Brauche Hilfe - #2824704 - 26.11.2016, 18:53:56
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Huhu liebe Knuddler,

(Bitte die Rechtschreibung ignorieren, habe schnell getippt)

Ich habe nun meinen eigenen Channel, noch läuft er auf der Testphase und ich habe so grob ein paar Vorstellungen was ich anbieten möchte. Nun stehe ich aber vor so vielen Fragen, wo fangen wir da nur an? Das der Appbot meine Member beim eintreten nach meinen vorstellungen begrüßt habe ich schon eingestellt, aber...

1.) - Kennt Ihr das in einigen GameChannels? ganz oben rechts im öffenlichen Chat ist ein Fenster mit Buttons. (z.B. in Landreise, Dicesky...) und da kann man draufklicken und hat die wahl zwischen Knuddelcent oder Punkte zu gewinnen. Und mit der ansicht wie viele Knuddel man schon erspielt hat. So etwas möchte ich auch gerne erstellen nur ich weiß nicht wie.

2.) - Zusätzlich soll in dem oben (1.) genannten Fenster ein Button sein (wie bei Landreise) das wenn ich den ankliche sich ein extra Fenster öffnet mit einem Spiel was ich selbst erstellen möchte. Wie mache ich das alles? Alles etwas über den Appbot oder benötige ich noch weitere programme?

3.) - Ich möchte ein Glücksrad erstellen, also das der Bot in gewissen zeitabständen einen zufälligen member anschreibt und zum Würfeln auffordert, mit glück kann man knuddel oder punkte gewinnen. Natürlich soll auch nur ein wurf möglich sein pro zug, sonst könnte derjenige ja ständig würfeln und würfeln und würfeln sobald er aufgefordert wurde und gut absahnen :-P

Ich hoffe Ihr könnt mir weiter helfen

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2824709 - 26.11.2016, 19:14:20
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.479
Ort: Bochum
Hey Arsania, schön dass du dich für die Programmierung von User Apps interessierst und dazu auch schon das passende Forum gefunden hast.

Antwort auf: Arsania
Ich habe nun meinen eigenen Channel, noch läuft er auf der Testphase und ich habe so grob ein paar Vorstellungen was ich anbieten möchte. Nun stehe ich aber vor so vielen Fragen, wo fangen wir da nur an? Das der Appbot meine Member beim eintreten nach meinen vorstellungen begrüßt habe ich schon eingestellt, aber...


Das ist schonmal nen guter Anfang. Hast du mit der HeyThere-App angefangen oder hast du das komplett selbst zusammengebastelt? Ich frage nur um herauszufinden, wie deine Programmierkenntnisse so sind.

Antwort auf: Arsania
1.) - Kennt Ihr das in einigen GameChannels? ganz oben rechts im öffenlichen Chat ist ein Fenster mit Buttons. (z.B. in Landreise, Dicesky...) und da kann man draufklicken und hat die wahl zwischen Knuddelcent oder Punkte zu gewinnen. Und mit der ansicht wie viele Knuddel man schon erspielt hat. So etwas möchte ich auch gerne erstellen nur ich weiß nicht wie.


Diese kleinen Fenster nennt man auch HTML UI - HTML UserInterface. In diesen Interface können HTML-Dateien dargestellt werden. Wie man soetwas öffnet und damit umgeht, kannst du dir hier ansehen. Diese Beispielapp heißt Ziegenphobie und wurde von Ironist als Beispiel User App erstellt. Welches sich öffnet, sobald man den AppBot einmal geknuddelt hat.

Antwort auf: Arsania
Alles etwas über den Appbot oder benötige ich noch weitere programme?

Du brauchst für die Entwicklung von User Apps am besten einen FTP-Client, mit dem du die Dateien auf den FTP-Server hochlädst und ein Programm in dem du programmierst.

Alle sonstigen Informationen und wie du eine User App programmieren kannst, ist sehr Zeitintensiv zu lernen. Alle wichtigen Informationen kannst du aber über developer.knuddels.de herausfinden.
_________________________
Wo zum Teufel ist dieser Wayne wenn man ihn braucht?!

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: IgelchenM] - #2824711 - 26.11.2016, 19:27:19
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Ja ich habe mit der HeyThere App angefangen, also ich bin noch frischling, aber wie sagt man? Wenn man sich dahinter klemmt und mit ein bisschen hilfe dann schafft man alles ;-) naja oder zumindest einen großteil *lach*

Ok, wie verpacke ich das jetzt am besten in meinen Appbot? also auch in den der meine Member begrüßt, oder muss ich jetzt einen neuen erstellen? (also das HTML UI - HTML UserInterface aus deinem Link von Ironist)

Und mit dem FTP-Client, meinst du WinSCP? Wenn Du den meinst, den habe ich, sonst hätte ich ja HeyThere nicht machen können.

Danke für die schnelle Antwort übrigens :D

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2824720 - 26.11.2016, 21:05:26
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.479
Ort: Bochum
Antwort auf: Arsania
Ja ich habe mit der HeyThere App angefangen, also ich bin noch frischling, aber wie sagt man? Wenn man sich dahinter klemmt und mit ein bisschen hilfe dann schafft man alles ;-) naja oder zumindest einen großteil *lach*

Das ist richtig. Es wird immer wieder Probleme bei der Entwicklung geben. Davon nur nicht entmutigen lassen. Denn der Moment, wenn man eine Lösung gefunden hat - auch mit Hilfe, ist immer noch ein schönes Gefühl, welches einen mit Stolz erfüllt.

Antwort auf: Arsania

Ok, wie verpacke ich das jetzt am besten in meinen Appbot? also auch in den der meine Member begrüßt, oder muss ich jetzt einen neuen erstellen? (also das HTML UI - HTML UserInterface aus deinem Link von Ironist)

Du musst nicht umbedingt eine neue User App machen, du kannst sehr viele Sachen gleichzeitig laufen lassen und einfach in die vorhandene main.js und die Unterverzeichnisse nutzen. Einfach mal etwas herumspielen. Wenn es nicht funktionieren sollte, gibt der Server dir relativ genaue Fehlermeldungen, wo Probleme aufgetreten sind.

Antwort auf: Arsania
Und mit dem FTP-Client, meinst du WinSCP? Wenn Du den meinst, den habe ich, sonst hätte ich ja HeyThere nicht machen können.

Genau, mit welchem FTP-Client man das macht, ist vollkommen egal. Da gibt es die verschiedensten Programme und jeder hat da sein eigenes Lieblingsprogramm.
_________________________
Wo zum Teufel ist dieser Wayne wenn man ihn braucht?!

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: IgelchenM] - #2824723 - 26.11.2016, 21:31:43
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Habe mir nun den gesammten Ordner von Ziegenphobie runtergeladen (auch mit www ordner und co drinnen). Blicke allerdings noch nicht so recht durch bei den vielen Dateien.

Im Ordner:
www (Ordner)
app.config
main.js

Im www Ordner:
i (ordner)
start.html
style.css
ziegenphobie.js

Im Ordner i:
Die PNG Bilder

Auch ist es ja so, das sich dieses kleine html fenster von ziegenphobie ja erst öffnet sobald ich einen knuddel eingezahlt habe, wie ist das, wenn ich möchte das dieses fester wie bei Landreise oder Dicesky schon bei eintreten des channels offen ist? Ich möchte ungern das von ziegenphobie übernehmen, ich versuche es nur als eine hilfe zum verständniss zu nutzen.

Dachte so an ein fenster wo man (musss nicht unbedingt, wäre aber evt ganz schön) oben seine erspielten knuddel vom spielerkonto sehen könnte, dann unten drunter z.B. ein button wo wenn ich darauf klicke (was nur in gewissen zeitabständenmöglich ist) entweder Punkte oder knuddelcent bekomme. genauso dachte ich an einen button wo ich drauf klicke, sich dann ein neues fenster öffnet (ja wieder landreise als beispiel, dort öffnet sich dann die karte wo man von stadt zu stadt reisen kann im spiel) so an dem server orientiere ich mich etwas, aber NEIN um vorurteile direkt zu vermeiden, ich will den Channel nicht kopieren, ich finde nur den aufbau gut und möchte so mein eigenes spiel einbringen.

Wie stelle ich erstmal part eins am besten an? erstmal das ich ein html fenster oben rechts im chatt habe wo zum beispiel meine spiele spiele via button anklickbar sind.

sorry falls ich euch etwas zutexte oder eure nerven strapaziere ^^

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2824741 - 26.11.2016, 23:38:04
IgelchenM
​Laubhaufenbewohner

Registriert: 10.02.2005
Beiträge: 1.479
Ort: Bochum
Dazu musst du dich erstmal einlesen. Es gibt viele API-Methoden - die alle in der API-Dokumentation zusammengefasst sind. Dort findest du alle möglichen wichtigen Funktionen, die das ermöglichen sollten. Wenn etwas beim Channeljoin bereits vorhanden sein sollte, ist onUserJoined eine Funktion, die du dir genauer anschauen solltest.
_________________________
Wo zum Teufel ist dieser Wayne wenn man ihn braucht?!

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: IgelchenM] - #2824767 - 27.11.2016, 09:10:07
Dependencies
​Keksimperator

Registriert: 29.10.2007
Beiträge: 384
Ort: Cybernet
Ansonsten schaue dir mal die ersten Schritte bei der Entwicklung an.

_________________________
Desto mehr Käse desto weniger Löcher.
Desto mehr Löcher desto weniger Käse.
Also mehr Käse desto weiniger Käse ?!?

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Dependencies] - #2824805 - 27.11.2016, 14:11:41
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Bis jetzt habe ich es ganz gut hinbekommen, habe das spiel (Ziegenphobie) ein wenig nach meinen Vorstellungen verändert bzw angepasst (die Grafiken sind gemeint). Jedoch habe ich ein Problem jetzt was ich nicht verstehe, ich habe die Grafiken, z.B. dir Tür oder den Hintergrund verändert, statt grün z.B. rot gemacht. Als die selbe Datei wieder im Ordner abgespeichert, auch unter dem selben vorherigen namen, aber jetzt wenn ich ziegenphobie starte dann sehe ich meine krafiken nicht, entweder der knuddel bzw die Ziege ist ganz weg, oder der Hintergrund immer noch Grün o.O ? Wo liegt denn nu der Fehler?

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2824807 - 27.11.2016, 14:26:36
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Fehler gefunden alles gut ;-)

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2827258 - 16.12.2016, 16:45:43
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Huhu liebe Knuddel-app-entwickler,

Das spiel Ziegenphobie kennen wir denke mal fast alle. Wie hier schon beschrieben möchte ich diese App auch in meinem Channel anbieten. Nur möchte ich diverses umstellen. und zwar:

Bei eintreten in den Channel begrüßt der App-Bot den User mit einer Privatnachricht "Hallo, lust zu spielen? + Einsatz BUTTON" und erst mit dem klick auf den Button wird mir ein Knuddel abgezogen und das spiel gestartet. Das möchte ich nicht! Ich habe mir mit einer HTML UI ein Menü mit Buttons erstellt, dort habe ich auch den Button "Ziegenphobie" hinzugefügt. Und ich möchte das das Spiel über meinen Button aufgerufen wird, nicht über den in der Privatnachricht. Ich habe auch schon ein wenig rummgetüftelt, aber bis jetzt finde ich keine lösung, bzw. jetzt funktioniert mein ganzes Menü nicht mehr... schmoll... Vielleicht könnt Ihr mir ja helfen.

Ach ja, und evt. möchte ich den Knuddel einsatz, die gewinnchance und die Knuddel die Gewonnen werden können bearbeiten. Vieleicht wisst Ihr ja welche Absätze diese Informationen beinhalten so das ich diese meinen Wünschen anpassen kann.

Ich bedanke mich schoneinmal im Vorraus für Eure Hilfe! ;*


Mein "main.js" . . // Hier muss ja irgendwo der/die Fehler drinnen sein, ich weiß auch nicht, wie ich oder was ich aus der Ziegenphobie main.js in meine main.js so einfüge das es wie oben beschrieben läuft. In meiner habe ich ja nicht mal den Knuddel einsatz oder gewinn drinnen, nur das spiel ansich und trotzdem funktioniert hier rein gar nichts mehr... Verzweifel...

Warnung! Spoiler!

var App = (new function()
{

this.onUserJoined = function(user)
{
var htmlFile = new HTMLFile('startmenu.html');
var overlayContent = AppContent.overlayContent(htmlFile, 236, 313);
user.sendAppContent(overlayContent);
}


this.onEventReceived = function(user, key, type, data, appContentSession)
{
var OpenHTML = new HTMLFile('openmenu.html', {});
var MenuHTML = new HTMLFile('startmenu.html', {});
var ZiegenphobieHTML = new HTMLFile('start.html', {});

var MinesweeperHTML = new HTMLFile('minesweeper.html', {});

var OpenMenu = AppContent.overlayContent(OpenHTML, 70, 40);
var StartMenu = AppContent.overlayContent(MenuHTML, 236, 313);
var Ziegenphobie = AppContent.overlayContent(ZiegenphobieHTML, 236, 313);

var Minesweeper = AppContent.popupContent(MinesweeperHTML, 316, 354);

if (type === 'closed')
{
user.setAppContent(OpenMenu);
}

if (type === 'open')
{
user.setAppContent(StartMenu);
}

if (type === 'Ziegenphobie')
{
user.setAppContent(Ziegenphobie); // hier kommt doch in zukunft noch hin wie viel knuddel gesetzt werden müssen glaube ich
}

if (type === 'Minesweeper')
{
user.setAppContent(Minesweeper);
}


if (key == 'selectedEntry' && usersPlaying[user.getNick()] == 1) // sobald ich das in meine main.js einfüge funktioniert mein komplettes Menü nicht mehr...
{
usersPlaying[user.getNick()] = 2;

setTimeout(function(){
var doorNumber = parseInt(data[data.length - 1], 10);

var winningDoorNumber = RandomOperations.nextInt(2) + 1;

var hasWon = winningDoorNumber == doorNumber;

var text = hasWon ? 'Richtig getippt' : 'Knapp daneben';

user.sendAppEvent('openDoor', { 'door' : doorNumber, 'winningDoor' : winningDoorNumber, 'text' : text });

if (hasWon)
{
user.sendPrivateMessage('Gewonnen!');
}

}, 1500);
}

};

}());



Mein Menü "startmenu.html"

Warnung! Spoiler!

<html>
<head>
<meta charset="UTF-8">
<title>MyChannelName</title>

<script src="/apps/api/knuddels-api.js"></script>

<script>
Client.includeCSS('meinstyle.css');
Client.includeJS('/apps/api/jquery.min.js');
Client.includeJS('main.js');
</script>
</head>

<body>

<div id="mainmenu">
<div id="guthaben">
<span></span></div>
<div id="Closed" onClick="Client.sendEvent('closed');"></div>
<div id="Picture"></div>
<div id="Button01" onClick="Client.sendEvent('Ziegenphobie');" >Ziegenphobie</div>
<div id="Button02" onClick="Client.sendEvent('BBB');" >02</div>
<div id="Button03" onClick="Client.sendEvent('Minesweeper');" >Minesweeper</div>
<div id="Button04" onClick="Client.sendEvent('DDD');" >04</div>
<div id="Button05" onClick="Client.sendEvent('EEE');" >05</div>



</body>
</html>



Original Ziegenphobie "main.js"

Warnung! Spoiler!

var App = (new function() {

var usersPlaying = {};
var isShuttingDown = false;

var htmlFile = new HTMLFile('start.html');
var appContent = AppContent.overlayContent(htmlFile, 243, 266);

this.onUserJoined = function(user)
{
var botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
user.sendPrivateMessage('Lust auf ne Runde Ziegenphobie? Mit nur _°BB>_h1 Knuddel|/appknuddel ' + botNick + '<°°°_ bist du dabei!');
};

this.onUserLeft = function(user)
{
if (usersPlaying[user.getNick()] == 1)
{
KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(1), 'Du hast den Channel verlassen.');

delete usersPlaying[user.getNick()];
}
};

this.onPrepareShutdown = function()
{
if (!isShuttingDown)
{
isShuttingDown = true;

for (var key in usersPlaying)
{
var value = usersPlaying[key];

var userId = KnuddelsServer.getUserId(key);
var user = KnuddelsServer.getUser(userId);

KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(1), 'Die App fährt gleich herunter.');
user.removeAppContent();

delete usersPlaying[key];
}
}
}

this.onBeforeKnuddelReceived = function(knuddelTransfer)
{
var sender = knuddelTransfer.getSender();

if (!sender.canSendAppContent(appContent))
{
knuddelTransfer.reject('Sorry, mit diesem Gerät kannst du gerade nicht spielen.');
}
else if (sender.isChannelOwner() && knuddelTransfer.getKnuddelAmount().asNumber() != 1)
{
knuddelTransfer.accept();
}
else if (isShuttingDown)
{
knuddelTransfer.reject('Du App nimmt gerade keine neuen Spieler an.');
}
else if (usersPlaying[sender.getNick()])
{
knuddelTransfer.reject('Du spielst bereits.');
}
else if (knuddelTransfer.getKnuddelAmount().asNumber() != 1)
{
var botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
knuddelTransfer.reject('Du musst genau _°BB>_h1 Knuddel senden|/appknuddel ' + botNick + '<°°°_...');
}
else
{
knuddelTransfer.accept();
}
};

this.onKnuddelReceived = function(user, receiver, knuddelAmount)
{
if (knuddelAmount.asNumber() == 1)
{
usersPlaying[user.getNick()] = 1;
user.setAppContent(appContent);
}
else
{
user.sendPrivateMessage('Vielen Dank für die Einzahlung.');
}
};

this.onEventReceived = function(user, key, data)
{
if (key == 'selectedEntry' && usersPlaying[user.getNick()] == 1)
{
usersPlaying[user.getNick()] = 2;

setTimeout(function(){
var doorNumber = parseInt(data[data.length - 1], 10);

var winningDoorNumber = RandomOperations.nextInt(2) + 1;

var hasWon = winningDoorNumber == doorNumber;

var text = hasWon ? 'Richtig getippt' : 'Knapp daneben';

user.sendAppEvent('openDoor', { 'door' : doorNumber, 'winningDoor' : winningDoorNumber, 'text' : text });

if (hasWon)
{
KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(2), 'Richtig getippt...');
}


setTimeout(function(){
var botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
user.sendPrivateMessage('Na, Lust auf _°BB>_hnoch eine Runde|/appknuddel ' + botNick + '<°°°_?');

user.removeAppContent();
delete usersPlaying[user.getNick()];
}, 4000);
}, 1500);
}
};


}());



"Ziegenphobie.js"

Warnung! Spoiler!

var LightManager = new function(){

var lightIndex = 0;
var differentLightCount = 3;
var lightRotationMillis = 300;

var rotationInterval;

this.startLightRotation = function()
{
if (!rotationInterval)
{
rotationInterval = window.setInterval(rotateLight, lightRotationMillis);
}
}

function rotateLight()
{
$('.door .light').removeClass('light_rotation_' + lightIndex % 3);

lightIndex++;

$('.door .light').addClass('light_rotation_' + lightIndex % 3);

}

this.stopLightRotation = function($elem)
{
window.clearInterval(rotationInterval);
rotationInterval = null;

$('.light', $elem).addClass('light_selected');
}

}();


$(function(){

LightManager.startLightRotation();


$('.door').on('click', function(event)
{
var $this = $(this);

LightManager.stopLightRotation($this);

Client.sendEvent('selectedEntry', $this.attr('id'));
});
});

// Hier kommt das Event vom AppServer an.
document.addEventListener('eventReceived', function(event){
var key = event.eventKey;
var data = event.eventData;

LightManager.startLightRotation();


$('#result' + data['winningDoor']).attr('src', 'i/result_knuddels.gif');
$('#door' + data['door'] + ' .curtain').animate({ 'top' : '-40px' });
$('.playtext').html(data['text']);
});


Ziegenphobie "start.html"

Warnung! Spoiler!

<html>
<head>
<meta charset="utf-8" />

<script src="/apps/api/knuddels-api.js"></script>

<script>
Client.includeCSS('style.css');
Client.includeJS('/apps/api/jquery.min.js');
Client.includeJS('ziegenphobie.js');
</script>
</head>
<body>
<div id="game">
<div class="header"></div>
<div class="doors">
<div class="door" id="door1">
<img src="i/result_goat.gif" class="result" id="result1" />
<div class="curtain"><img src="i/door_curtain.png" /></div>
<div class="light light_rotation_0"></div>
</div>
<div class="door" id="door2">
<img src="i/result_goat.gif" class="result" id="result2" />
<div class="curtain"><img src="i/door_curtain.png" /></div>
<div class="light light_rotation_0"></div>
</div>
<div class="door" id="door3">
<img src="i/result_goat.gif" class="result" id="result3" />
<div class="curtain"><img src="i/door_curtain.png" /></div>
<div class="light light_rotation_0"></div>
</div>
</div>

<div class="playinfo">
<div class="playtext">Wähle eine Tür!</div>
</div>
</div>
</body>
</html>




[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2827259 - 16.12.2016, 16:55:56
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
.
Das hier habe ich noch schnell korigiert, hier war noch ein Fehler von den Bilder pfaden, aber es funktioniert trotzdem immer noch nichts.


Ziegenphobie "start.html"

Warnung! Spoiler!

<html>
<head>
<meta charset="utf-8" />

<script src="/apps/api/knuddels-api.js"></script>

<script>
Client.includeCSS('style.css');
Client.includeJS('/apps/api/jquery.min.js');
Client.includeJS('ziegenphobie.js');
</script>
</head>
<body>
<div id="game">
<div class="header"></div>
<div class="doors">
<div class="door" id="door1">
<img src="Bilder/i/result_goat.gif" class="result" id="result1" />
<div class="curtain"><img src="Bilder/i/door_curtain.png" /></div>
<div class="light light_rotation_0"></div>
</div>
<div class="door" id="door2">
<img src="Bilder/i/result_goat.gif" class="result" id="result2" />
<div class="curtain"><img src="Bilder/i/door_curtain.png" /></div>
<div class="light light_rotation_0"></div>
</div>
<div class="door" id="door3">
<img src="Bilder/i/result_goat.gif" class="result" id="result3" />
<div class="curtain"><img src="Bilder/i/door_curtain.png" /></div>
<div class="light light_rotation_0"></div>
</div>
</div>

<div class="playinfo">
<div class="playtext">Wähle eine Tür!</div>
</div>
</div>
</body>
</html>



[/quote]

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2827361 - 17.12.2016, 15:44:42
Dependencies
​Keksimperator

Registriert: 29.10.2007
Beiträge: 384
Ort: Cybernet
Warum machst du es nicht via Css?

HTML
Code:
<div id="BildBeispiel"></div>


CSS
Code:
#BildBeispiel {
	background-image: url('Bilder/i/door_curtain.png');
	background-repeat: no-repeat;
	position:absolute;
	width:185px;
	height:219px;
}


Vorteil: bessere Übersicht :-)
_________________________
Desto mehr Käse desto weniger Löcher.
Desto mehr Löcher desto weniger Käse.
Also mehr Käse desto weiniger Käse ?!?

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Dependencies] - #2827558 - 19.12.2016, 15:29:29
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Irgendwie hilft mir das gerade nicht weiter. Mein Problem ist ja das ich die App anders öffnen möchte als vorgegeben und das ich über einen Knuddelpot heißt das glaube ich arbeiten möchte. Vielleicht hat ja ein AppEntwickler kurz Zeit sich mit mir darüber via Chat auseinander zu setzen, bzw mir zu helfen.

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2827559 - 19.12.2016, 16:02:19
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.681
Ein KnuddelPot funktioniert nur mit den Einsätzen mehrerer Nutzer. Für Einzelspieler Spiele oder wo mehr Knuddel ausgezahlt werden, als der Einsatz ist, ist es vollkommen ungeeignet.

Beispiele wofür ein KnuddelPot geeignet ist.

Tombola - X User zahlen EINMAL ein, alle mit dem gleichen Einsatz
1gg1 Spiele gegen anderer Chatter um Knuddeleinsatz. 4Gewint, DiceSpiele (Darten)


Hingegen sind Spiele gegen ein System/Bot nicht mit dem Knuddelpot realisierbar.
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Vampiric Desire] - #2827566 - 19.12.2016, 16:25:40
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Achso ist das, ich dachte knuddel pot wäre mein konto, bei manchen channels gibt es ja dieses konto, wo z.B. steht ich habe 5.04 Knuddel und ob ich diese auszahlen oder welche einzahlen möchte. wie nennt sich dies dann? Bzw. wie stellt man sowas genau ein? Also das wenn der user gewinnt er seinen gewinn auf sein konto und nicht auf sein profil bekommt? Ach ja und über welchen befehl bekommt der user dies eigendlich in der html ui als zahl angezeigt??? Also ich hätte gern das oben in meiner HTML UI steht : Deine knuddels (anzahl) mit einzahlen und auszahlen


Bearbeitet von Arsania (19.12.2016, 16:27:55)

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2827568 - 19.12.2016, 16:51:23
Vampiric Desire
​ChannelMaster

Registriert: 15.09.2013
Beiträge: 1.681
Oft wird es KBANK genannt, es ist einfach nur eine Zahl in der Datenbank.
Im UI zeigst du es an, in dem du es vom Server zum Client schickst und dann die Daten verarbeitest.
_________________________
/apps install 30559674.ChannelMaster

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Vampiric Desire] - #2827582 - 19.12.2016, 17:47:03
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Ich danke dir, dir und den anderen, wirklich und ich möchte auch wirklich nicht unhöflich rüber kommen,

nur sagt mir das jetzt auch nicht wie ich das dann richtig einstelle... das muss ich ja irgendwie angeben wenn der user knudel gewinnt oder auch ausgezahlt bekommt und das weiß ich auch wiedderum nicht wie ich das mache.

Ich werde nur immer verwirrter und verwirrter... verstehe immer weniger... gibt es denn nicht irgendwo mal richige tutorials? Wo erklährt wird wie man ein spiel via HTML UI erstellt mit Ein und auszahlun und co??? Und was genau wie gemacht werden muss oder was was ist, was für was wichtig ist und und und?? Ich tüftel rumm, ich habe schon so viel versucht aber bis auf die optik bekomme ich irgendwie nichts hin. Auf der http://developer.knuddels.de/docs/ blicke ich auch nicht durch als anfänger... dann habe ich versucht via tuturials javascript befehle zu lernen, die hier aber auch nicht viel bringen da ich ja die befehle von dieser erwähnten seite brauche... Ich habe ein spiel, bei dem habe ich noch nicht mal einsatz oder gewinn eingestellt... weil ich nicht durchblicke wie jetzt genau und wie ich das dann einstelle ohne das mit ziegenphobie ein konflikt ensteht. dann versuche ich schon die ganze zeit wie verzweifelt ziegenphobie überhaupt via meiner HTML UI zu starten und das klappt auch nicht, dann hängt sich immer nur alles auf und es funktioniert gar nichts mehr... was auch immer ich falsch mache... Ich habe wirklich schon etliches versucht, im Entwickler Chat ist auch leider keiner bzw. kommt auch leider keiner rein ausser mir. Wo kann ich denn sonst noch hilfe bekommen oder nach hilfe fragen? langsam gehen mir wirklich die ideen aus und ich verzweifle hier... bräuchte mal ne richtige erklährung via tutorial oder einfach so ne gute hilfestellung, was wohl via chat einfacher ist, und das ist wirklich nicht böse gemeint und soll nicht undankbar oder unhöflich klingen, nur ein wenig verzweifelt...


Bearbeitet von Arsania (19.12.2016, 17:48:52)

[zum Seitenanfang]  
Re: Brauche Hilfe [Re: Arsania] - #2827587 - 19.12.2016, 18:22:09
Arsania
Forumuser

Registriert: 08.11.2016
Beiträge: 34
Ok, wie ich die Ziegenphobie nun starte habe ich endlich geschafft - dachte schon mein kopf ist matsch aber funzt wohl doch noch. Doch 1 frage habe ich dann doch noch, wie stelle ich einen type/key oder so für die Zahlungs bzw gewinne ein? Ich möchte ja nicht das wenn ich zukünftige spiele einstelle sich diese mit ziegenphobie streiten (also konflikte, errors) entstehen.

Das ist nun meine aktuelle funktionierende main.js

Warnung! Spoiler!

Code:
var App = (new function()
{
 
	var usersPlaying = {};
    var isShuttingDown = false;
 
 
 
 
	// Benutzer Begrüßen
    this.onUserJoined = function(user)
    {
		
		var htmlFilestart = new HTMLFile('startmenu.html');
		var overlayContentstart = AppContent.overlayContent(htmlFilestart, 236, 313);
		user.sendAppContent(overlayContentstart);
		
		
		var gender = user.getGender();
		var nick = user.getNick();
	
		var genderGreeting;
	
		if (gender == Gender.Male)
		{		
			genderGreeting = nick;	
		}

		else if (gender == Gender.Female)
		{		
			genderGreeting = nick;		
		}

		else
		{
			genderGreeting = nick;	
		}
		
		var joins = user.getPersistence().addNumber('besuchanzahl',1); //erhöht den Wert in der Datenbank um 1 
		
		if(joins == 1) { user.sendPrivateMessage('Hallo ' + genderGreeting +  ', herzlich willkommen im Channel TestTest. Weiterer Text folgt. '); }
		else { user.sendPrivateMessage('Hallo ' + genderGreeting +  ', schön Dich wieder zu sehen.'); }
		
		var bot = KnuddelsServer.getDefaultBotUser();
		setTimeout(function(){ bot.sendPublicMessage('Hallo ' + genderGreeting +  ', schön das Du hier bist. ')},100);	//Bot spricht öffentlich nach James
		
	};
	
	
	
	
	// Benutzer aussperren
	this.mayJoinChannel = function(user)
	{
		// Wenn Nutzer kein Profilfoto haben
		if(!user.hasProfilePhoto()) {
			return ChannelJoinPermission.denied('In unserem Channel ist die Echtheit der Nutzer sehr wichtig. Besuche uns doch mal wieder sobald Du ein Profilbild hochgeladen hast.');
		}
			// Wenn Nutzer nicht verifiziert sind
			if(!user.isProfilePhotoVerified()) {
				return ChannelJoinPermission.denied('In unserem Channel ist die Echtheit der Nutzer sehr wichtig. Besuche uns doch mal wieder sobald Du ein Profilbild hochgeladen hast.');
			}
		
		return ChannelJoinPermission.accepted();
	};
	

	
	
	this.onEventReceived = function(user, type, data, appContentSession)
	{
		var OpenHTML = new HTMLFile('openmenu.html', {});
		var MenuHTML = new HTMLFile('startmenu.html', {});
		var TestHTML = new HTMLFile('start.html', {});
		
		var MinesweeperHTML = new HTMLFile('minesweeper.html', {});
		
		var OpenMenu = AppContent.overlayContent(OpenHTML, 70, 40);
		var StartMenu = AppContent.overlayContent(MenuHTML, 236, 313);
		var Test = AppContent.overlayContent(TestHTML, 243, 266); //user.setAppContent(Test);
		
		var Minesweeper = AppContent.popupContent(MinesweeperHTML, 316, 354);

			if (type === 'closed')
			{
					user.setAppContent(OpenMenu);
			}		
			
			if (type === 'open')
			{
					user.setAppContent(StartMenu);
			}
			
			if (type === 'AAA')
			{
					var botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
					user.sendPrivateMessage('Lust auf ne Runde Ziegenphobie? Mit nur _°BB>_h1 Knuddel|/appknuddel ' + botNick + '<°°°_ bist du dabei!');
			}
			
			if (type === 'selectedEntry' && usersPlaying[user.getNick()] == 1)
			{
				usersPlaying[user.getNick()] = 2;
    	
				setTimeout(function(){
					var doorNumber = parseInt(data[data.length - 1], 10);
	    		
					var winningDoorNumber = RandomOperations.nextInt(2) + 1;
	    		
					var hasWon = winningDoorNumber == doorNumber;
	    	
					var text = hasWon ? 'Richtig getippt' : 'Knapp daneben';
	    		
					user.sendAppEvent('openDoor', { 'door' : doorNumber, 'winningDoor' : winningDoorNumber, 'text' : text });
	    	
					if (hasWon)
					{
						KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(2), 'Richtig getippt...');
					}
	    		
	    		
					setTimeout(function(){
						var botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
						user.sendPrivateMessage('Na, Lust auf _°BB>_hnoch eine Runde|/appknuddel ' + botNick + '<°°°_?');
		    	
						user.removeAppContent();
						delete usersPlaying[user.getNick()];
					}, 4000);
				}, 1500);
			}

			if (type === 'Minesweeper')
			{
					user.setAppContent(Minesweeper);
			}
				
	};
	
	
	
	
	this.onUserLeft = function(user)
    {
    	if (usersPlaying[user.getNick()] == 1)
    	{
    		KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(1), 'Du hast den Channel verlassen.');
    	
    		delete usersPlaying[user.getNick()];
    	}
    };
	
	
	
	
	this.onPrepareShutdown = function()
    {
    	if (!isShuttingDown)
    	{
    		isShuttingDown = true;
    		
    		for (var key in usersPlaying)
    		{
    			var value = usersPlaying[key];
    			
    			var userId = KnuddelsServer.getUserId(key);
    			var user = KnuddelsServer.getUser(userId);
    			
    			KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(1), 'Die App fährt gleich herunter.');
				user.removeAppContent();
    			
    			delete usersPlaying[key];
    		}
    	}
    }
	
	
	
	
	this.onBeforeKnuddelReceived = function(knuddelTransfer)
    {
    	var sender = knuddelTransfer.getSender();
    	
    	if (!sender.canSendAppContent(Test))
    	{
    		knuddelTransfer.reject('Sorry, mit diesem Gerät kannst du gerade nicht spielen.');
    	}
    	else if (sender.isChannelOwner() && knuddelTransfer.getKnuddelAmount().asNumber() != 1)
    	{
			knuddelTransfer.accept();
    	}
    	else if (isShuttingDown)
    	{
    		knuddelTransfer.reject('Du App nimmt gerade keine neuen Spieler an.');
    	}
    	else if (usersPlaying[sender.getNick()])
    	{
    		knuddelTransfer.reject('Du spielst bereits.');
    	}
    	else if (knuddelTransfer.getKnuddelAmount().asNumber() != 1)
    	{
    		var botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
    		knuddelTransfer.reject('Du musst genau _°BB>_h1 Knuddel senden|/appknuddel ' + botNick + '<°°°_...');
    	}
    	else
    	{
    		knuddelTransfer.accept();
    	}
    };
	
	
	
	
	this.onKnuddelReceived = function(user, receiver, knuddelAmount)
    {
    	if (knuddelAmount.asNumber() == 1)
    	{
		    usersPlaying[user.getNick()] = 1;
		    user.setAppContent(Test);
    	}
    	else
    	{
    		user.sendPrivateMessage('Vielen Dank für die Einzahlung.');
    	}
    };
	
	
	

	
	
}());




Muss ich nun sowas wie dies eingeben?

Code:
var botNickSPIEL2 = KnuddelsServer.getDefaultBotUser(SPIEL2).getNick().escapeKCode();
user.sendPrivateMessage('Na, Lust auf _°BB>_hnoch eine Runde|/appknuddel ' + botNickSPIEL2 + '<°°°_?');


und welcher schritt kommt dann als nächstes? dieser? Also was öffnen sich eigendlich genau wenn ich botnick (also den button) anklicke?

Code:
this.onUserLeft = function(user)
    {
    	if (usersPlaying[user.getNick()] == 1) // muss ich jetzt auch die var für usersPlaying ändern???
    	{
    		KnuddelsServer.getDefaultBotUser(SPIEL2).transferKnuddel(user, new KnuddelAmount(1), 'Du hast den Channel verlassen.');
    	
    		delete usersPlaying[user.getNick()];
    	}
    };


Und immer so weiter für einzahlung und auszahlung... ich weiß nicht was ich eingeben muss so das die proramme sich nicht gegenseitig stressn, aber ich möchte ja schon ein paar mehr spiele mit gewinn und einsatz erstellen ausser nur das voregebene ziegenphobie.


Das ganze muss ich ja jetzt mit jedem spiel machen was ich erstelle:

this.onUserLeft = function(user)
this.onPrepareShutdown = function()
this.onBeforeKnuddelReceived = function(knuddelTransfer)
this.onKnuddelReceived = function(user, receiver, knuddelAmount)







Bearbeitet von Arsania (19.12.2016, 18:25:18)

[zum Seitenanfang]  


Moderator(en):  Plueschzombie