PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tresor Addon Problem



papahp
28.02.2009, 14:39
Soer...

nun hab ich nen kleines Problem. Also
wenn User in den Tresor einzahln zieht er auch Bonuslose ab. Und wenn die user lose wieder rausholn bucht der Tresor es auf das Normale Klammlosekonto....

wie was muss ich ändern das er KEINE Bonuslose einzieht sondern nur die Klammlose.

MFG

jpwfour
28.02.2009, 15:27
Forumssuche nutzen!

ersetze bei "einziehen":

kontobuchung(....);durch:


db_query('UPDATE vms_kontodaten SET kontostand = kontostand-'.$WERT.' WHERE uid='.$_SESSION['uid']);

Ganz grob gesagt.

Genaueres, wenn du damit nicht klarkommst, und uns verräts, welches Tresor addon :wink:

papahp
28.02.2009, 17:54
hab das tresor add on von hier ...
mom ich versuch das mal ..

papahp
28.02.2009, 18:00
Ich hab das beim einzahln:


kontobuchung_tresor('+',$_POST['betrag'],$_SESSION['uid']);
buchungsliste_tresor($buchungsid,'+'.$_POST['betrag'],'Tresor Einzahlung',$_SESSION['uid']);
kontobuchung('-',$_POST['betrag'],$_SESSION['uid']);
buchungsliste($buchungsid,'-'.$_POST['betrag'],'Tresor Einzahlung',$_SESSION['uid']);['uid']);und beim auszahln das:



kontobuchung_tresor('-',$_POST['betrag'],$_SESSION['uid']);
buchungsliste_tresor($buchungsid,'-'.$_POST['betrag'],'Tresor Auszahlung',$_SESSION['uid']);
kontobuchung('+',$_POST['betrag'],$_SESSION['uid']);
buchungsliste($buchungsid,'+'.$_POST['betrag'],'Tresor Auszahlung',$_SESSION['uid'])Ich frag deswegen weil ich zweimal Kontobuchung drin hab...

Kannst mir da vielleicht den Code als Lösung schreiben?
MFG

jpwfour
28.02.2009, 18:02
kontobuchung('-',$_POST['betrag'],$_SESSION['uid']);
db_query('UPDATE vms_kontodaten SET kontostand=kontostand-'.$_POST['betrag'].' WHERE uid='.$_SESSION['uid'].' LIMIT 1');Dabei gehe ich mal davon aus, dass vorher geprüft wird, ob genug Guthaben vorhanden ist?

papahp
28.02.2009, 18:09
Super...Ich danke dir...*mal wieder* hat geklappt und nun zieh er nur noch lsoe ein :)

MFG

Schmuse_Kater40
08.03.2009, 08:17
Dabei gehe ich mal davon aus, dass vorher geprüft wird, ob genug Guthaben vorhanden ist?

Wenn nicht wird er sich wundern das die Guthaben der User mit einem mal ins Minus gehen.

140236
23.11.2011, 11:30
Hab mal ne Frage zu dem Tresor Addon aus dem Downloadbereich...

Wollte nur mal Wissen ob dieses auch Bugfrei ist?
Den wie ich gehört habe haben sich da reichlich Leute bedient bei den "Tresor Addons" und ich wollte einfach nur mal sicher gehen ob diese Möglichkeit hier beim "TresorAddon" aus dem Downloadbereich ausgeschlossen wurde/ist?

Gruß und Danke schonmal für die Antworten

Real_unknown
01.08.2013, 19:24
Also ich habe das Problem auch nur bin ich wohl zu doof um es an der richtigen Stelle einzufügen kann mir da bitte mal jemand helfen ?

Danke und Gruß

NeoGriever
01.08.2013, 21:28
Okay. Scheinbar gibts da im VMS noch eine kleine Lücke. Werde dann wohl im VMSR die kontobuchungs-funktion um 1 optionalen parameter erweitern, welcher bonuslose-buchungen bei "true" auslässt und die normalen lose bucht. bei "false" wird nur das bonuslose-konto betroffen sein. gibt man den wert nicht an, sind beide (bonus und normal) betroffen. (Also die funktion funktioniert wie üblich, kann aber halt mit bonuslosen und normalen losen separatisiert werden)

Was haltet ihr davon?

Real_unknown
02.08.2013, 16:28
Ja das wäre doch was sagst bitte bescheid wenn du es hin bekommen hast ?

auron2008
08.08.2013, 13:03
Was haltet ihr davon?

Dann ist die kompatibilität zu vielen Scripten und allen Spielen verloren. So muss jedes Game "umgebaut" werden. Besser fänd ich eine extra Funktion vmsr_kontobuchung() oder so. Weiß ja nich ob das VMS mit OOP umsetzt, dann könntest du auch Methoden einfach überladen.

NeoGriever
08.08.2013, 16:20
Dann hast du scheinbar nicht ganz aufgepasst.

Die Funktion bleibt genau so, wie sie ist. Man KANN aber als WEITEREN parameter true oder false angeben. Gibt mal den letzten parameter nicht an und verwendet die Funktion wie üblich, werden BEIDE Kontostände angesteuert. bei TRUE nur der Nicht-Bonuslose-Kontostand. Bei False nur der Bonuslose-Kontostand.

Es ist also ein 3-Way-Boolean-Wert, welcher seinen 3ten (standard)-Wert erhält, wenn er weggelassen wird.

True = Keine Bonuslose
False = Nur Bonuslose
UNDEFINED = Beide.

Ganz einfach ... Jetzt verstanden? Alte Spiele/Addons und co wären davon NICHT beeinflusst, da bei diesen dieser letzte Wert als UNDEFINED eingestuft werden würde. Was die Funktion nicht verändert gegenüber des VMS 1 ...

Jetzt verstanden?

auron2008
09.08.2013, 10:35
Also wir haben die funtkion kontobuchung, die hat folgende Parameter. art,menge,uid . Und du möchtest einen weiteren einfügen. also dann art,menge,uid,loseart . Wusste nicht das in PHP das so einfach möglich ist einen Parameter einfach wegzulassen weil ich sowas noch nie gemacht hab. Halt das auch für ziemlich unsauber. Dafür gibt's Klassen wo Methoden überladen werden können.

NeoGriever
09.08.2013, 11:11
Ähm.


function kontobuchung($art, $menge, $uid, $loseart = null) {
if($loseart === true) {
// nur normal-lose
}elseif($loseart === false) {
// nur bonus-lose
}else{
// beide (standard)
}
}

Und was heißt hier "unsauber"? Das ist grundlegendes php-standard. O_o

Mit $loseart = null leg ich erstmal fest, dass der standard-wert, wenn der letzte parameter nicht angegeben wird, "Null" ist. Es handelt sich hierbei um KEIN boolean-wert.

Mit $loseart === true (dem 3fach-istgleich) verhinder ich, dass $loseart als boolean angesehen wird, wenn man 1 z. b. angibt.
Ebenso bei === false, wenn 0 angegeben wird. Es wird nur True oder False erlaubt.

Wird keines der beiden erkannt, standard.

Somit können alte addons die übliche Funktionsweise verwenen und neue addons den parameter hinzufügen. Darüber hinaus lassen sich so alte addons schnell und einfach damit erweitern.

Von wegen unsauber ...

Alpha10
18.01.2017, 19:06
Hallo!
Ich stelle gerade fest das man beim Tresor Addon auch ohne Passwort auszahlen kann.
Gibt man das PW falsch ein steht richtig da das Passwort ist falsch.
Wenn man aber gar kein Passwort eingibt und auf auszahlen geht dann zahlt der Tresor aus und das it ein BUG!!

Hat da jemand einen Ansatz ich kann nix finden!

Alpha10
18.01.2017, 19:20
Problem gefunden es erfolgt KEINE 0 Eingabe Prüfung!!!
Datei ab Zeile 68 anpassen:

} else {
if ( empty ($_POST['tpw']) == TRUE ){
$msg .= "Keine Eingabe.";
} else {
if($userdaten['tresor_pw'] != $_POST['tpw']) {
$msg .= "Tresor Passwort Falsch.";
} else {
if (ereg("[^0-9]", $_POST['betrag'])) {
$msg .= "Bei Betrag nur Zahlen.";
} else {
if($userdaten['tresor'] >= $_POST['betrag']) {
$buchungsid = create_code(14);
kontobuchung_tresor('-',$_POST['betrag'],$_SESSION['uid']);
buchungsliste_tresor($buchungsid,'-'.$_POST['betrag'],'Tresor Auszahlung',$_SESSION['uid']);
kontobuchung('+',$_POST['betrag'],$_SESSION['uid']);
buchungsliste($buchungsid,'+'.$_POST['betrag'],'Tresor Auszahlung',$_SESSION['uid']);
$msg .= "Betrag Ausgezahlt.";
} else {
$msg .= "Tresorguthaben reicht nicht aus.";
}
}
}
}
}
}

bei keiner Eingabe erfolgt jetzt die Ausgabe "Keine Eingabe"! Hat diesen kritischen Bug den 10 Jahre niemand endeckt??? :D

Alpha10
21.01.2017, 15:48
Peinlich Peinlich: Ohne den Eintrag Tresor_PW in den _kontodaten, ja da kann mann dann auch ohne PW auszahlen... Leider!



Schaden kann die Ergänzung des Codes OBEN aber trotzdem nicht.