anpera.net
https://anpera.dyndns.org/phpbb3/

Kopfgeld wegkaufen
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=4513
Seite 1 von 1

Autor:  Wolfus [ Do 08 Mai, 2008 20:42 ]
Betreff des Beitrags:  Kopfgeld wegkaufen

Kann mir jemand sagen, wie ein Script aussehen würde, in dem man das Kopfgeld wegkaufen kann?

Autor:  The_Muh [ Do 08 Mai, 2008 21:03 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

wie genau wegkaufen?
Man zahlt das Kopfgeld und dann isses weg? Oder das man das Kopfgeld reduzieren kann?

pseudocode (A):
if geld von user >= kopfgeld von user then
geld von user - kopfgeld von user
kopfgeld von user = 0
else
Meldung: user hat zu wenig geld

Autor:  Taratan [ Do 08 Mai, 2008 21:06 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

das sieht so aus wie da ^^

http://anpera.homeip.net/phpbb3/viewtop ... it=sheriff

Autor:  Wolfus [ Do 08 Mai, 2008 21:13 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

The_Muh hat geschrieben:
wie genau wegkaufen?
Man zahlt das Kopfgeld und dann isses weg? Oder das man das Kopfgeld reduzieren kann?

pseudocode (A):
if geld von user >= kopfgeld von user then
geld von user - kopfgeld von user
kopfgeld von user = 0
else
Meldung: user hat zu wenig geld


wo muss das rein?

Autor:  Wolfus [ Do 08 Mai, 2008 21:15 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

also ich meine das so, das mann einen betrag eingeben kann, den bezahlt man dann und dann wird das kopfgeld um diesen betrag gesenkt

Autor:  Taratan [ Fr 09 Mai, 2008 10:55 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

achsu, dann so wie im pseudoskript ^^
und wo ist egal ;)
bau einfach auch eine art sheriff haus oder wie auch immer und da kannst du das dann rein machen ;)
einfach nen neues skript schreiben ^^

Autor:  Wolfus [ Mo 12 Mai, 2008 12:03 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

das problem dabei ist, das ich absolut keine ahnung von sowas hab...

Autor:  The_Muh [ Di 13 Mai, 2008 12:34 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

ich hab mal ein einfaches script geschrieben... (ich hatte langeweile)
sind nur wenige zeilen, aber du musst die Texte nocht reineditieren, dazu hatte ich nämlich keine lust.

hier der code:
$this->bbcode_second_pass_code('', '<?php
require_once "common.php";
page_header("Scherrif");
checkday();

if ($_GET[op] ==""){
Output(/*'text einfügen*/);
addnav("Optionen");
addnav("Kopfgeld verringern","scherrif.php?op=min");
addnav("Zurück zum Dorf","village.php");
}else if ($_GET[op]=="min"){
Output(/*'text einfügen*/);
output($session[user][bounty]);
output("`n`n<form action='scherrif.php?op=con1' method='POST'>Dein Kopfgeld: ".$session[user][bounty]."!",true);
output("Um wie viel möchtest du es Reduzieren? <input id='input' name='amount' width=5><input type='submit' class='button' value='min'></form>",true);
output("<script language='javascript'>document.getElementById('input').focus();</script>",true);
addnav("","scherrif.php?op=con1");
}else if ($_GET[op]=="con1"){
$geld = $_POST[amount];
if ($geld > $session[user][gold]){
Output("So viel geld hast du nicht");
}else{
$session[user][gold] -= $geld
$session[user][bounty] -= $geld
Output("Dein Kopfgeld beträgt nur noch ".§session[user][bounty]."Gold");
}
}
?>')
PS: ist ungetestet, sollte aber funktionieren.

Autor:  Drazaar [ Do 15 Mai, 2008 00:28 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

$this->bbcode_second_pass_code('', '<?php
require_once 'common.php';
page_header('Sherrif');
checkday();

switch($_GET['op']) {
case '':
$str_out = 'TEXT HIER EINFÜGEN';

addnav('Optionen');
addnav('Kopfgeld verringern', 'sherrif.php?op=min');
addnav('Umkehren');
addnav('Zurück zum Dorf', 'village.php');
break;

case 'min':
$str_out = 'TEXT HIER EINFÜGEN';

$str_out .= '`n`n<form action="sherrif.php?op=con1" method="POST">
Dein Kopfgeld: '.$session['user']['bounty'].'! `n
Um wie viel möchtest du es reduzieren? <input id="input" name="amount" width="5"> <input type="submit" class="button" value="min"></form>';
$str_out .= "<script language='javascript'>document.getElementById('input').focus();</script>";

addnav('', 'scherif.php?op=con1');

addnav('Umkehren');
addnav('Doch nichts ändern', 'village.php');
break;

case 'con1':
$geld = $_POST['amount'];

if($geld > $session['user']['gold']) {
$str_out = 'So viel Geld hast du nicht!';
}
elseif($geld > $session['user']['bounty']) {
$return_money = $geld - $session['user']['bounty'];
$str_out = 'Das ist mehr Geld, als überhaupt auf deinen Kopf ausgesetzt ist! `n Du bekommst '.$return_money.' Gold zurück.';

$session['user']['gold'] -= $session['user']['bounty'];
$session['user']['bounty'] = 0;
}
elseif($geld == $session['user']['bounty']) {
$str_out = 'Damit hast du all dein Kopfgeld abgezahlt!';

$session['user']['bounty'] = 0;
$session['user']['gold'] -= $geld;
}
else{
$str_out = 'Dein Kopfgeld beträgt nur noch '.$session['user']['bounty'].' Gold.';

$session['user']['gold'] -= $geld;
$session['user']['bounty'] -= $geld;
}

addnav('Umkehren');
addnav('Zurück zum Dorf', 'village.php');
break;
}

output($str_out, true);

page_footer();
?>')

Hab mal kurz n bissel drübergearbeitet. Was mir aufgefallen ist:

- kein page_footer()
- kein Zurücklink ins Dorf bei $_GET['op'] == 'con1'
- keine ; bei $session['user']['gold'] -= $geld; und $session['user']['bounty'] -= $geld;
- Konstanten statt Strings
- unnötige Aufrufe von output
- switch statt if- und elseifverschachtelungen
- n paar Rechtschreibfehler
- paar Abfragen ergänzt, ist aber nur Schönheitsbedingt


Allerdings habe ich es nicht getestet. *Sollte* aber funktionieren, kann aber sein, dass Vertippsler drin sind oder eventuelle Fehler, die ich net beachtet habe^^

Viel Spaß damit.

Autor:  Harthas [ Do 15 Mai, 2008 17:36 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

$this->bbcode_second_pass_code('', ' elseif($geld > $session['user']['bounty']) {
$return_money = $gold - $session['user']['bounty'];
$str_out = 'Das ist mehr Geld, als überhaupt auf deinen Kopf ausgesetzt ist! `n Du bekommst '.$return_money.' Gold zurück.';

$session['user']['bounty'] -= $session['user']['bounty'];
$session['user']['bounty'] = 0;')

*hust*hust*
Da stimmt etwas noch nicht ganz :-)
$session['user']['gold'] -= $session['user']['bounty']; sollte es wohl heissen - Zudem heisst die Variable $geld, und nicht $gold.

Autor:  Drazaar [ So 18 Mai, 2008 14:03 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

Sorry, Harthas hat natürlich extrem recht! Ich verbessere es. Das war unachtsamkeit *fg*

Autor:  Kevz [ So 18 Mai, 2008 15:12 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

Mhh....

habe mir mal eine "kleine" Funktion dazu gebastelt. Ich würde mich freuen, wenn sie mal jemand testen könnte und sagen, ob es so einwandfrei Funktioniert, wie der Sinn des Codestückes ist.

Das ganze ist mit der Anti-Cheat Funktion aus der LotGD ext 3 verbunden.

Code:
$this->bbcode_second_pass_code('', '/**
* Zum Ändern des jeweiligen Spielbetrages.
*
* @param integer $value zu setzender Betrag
* @param integer $user Spieleraccount-Id
*
* @return result
*/
function setBounty ( $value, $user = false )
{
global $session;

if ( empty($user) )
$session['user']['bounty'] = abs($value);
else {
$sql = 'SELECT `acctid` FROM `accounts` WHERE = `acctid` = '.(int)$user;
$res = db_query($sql) or die (db_error($sql));

if ( db_num_rows($res) ) {
$row = db_fetch_assoc($res);

if ( (!ac_check(array('acctid'=>$user))) ) {
if ( $row['acctid'] == $session['user']['acctid'] )
setBounty($value);
else {
$sql = 'UPDATE `accounts` SET `bounty` = "%s" WHERE `acctid` = "%s"';
db_query($sql, (int)$value, (int)$user) or die (db_error($sql));

return db_affected_rows();
}
}
db_free_result($res);
}
}

return false;
}')

Autor:  Drazaar [ Mi 21 Mai, 2008 15:55 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

Ohne es zu testen:
$this->bbcode_second_pass_code('', '$sql = 'SELECT `acctid` FROM `accounts` WHERE = `acctid` = '.(int)$user;')
Sicher, dass das so mit dem = nach WHERE stimmt?

$this->bbcode_second_pass_code('', '$sql = 'UPDATE `accounts` SET `bounty` = "%s" WHERE `acctid` = "%s"';
db_query($sql, (int)$value, (int)$user) or die (db_error($sql));')
Ich glaub sowas würde meine db_query nicht verpacken^^

Autor:  Kevz [ Do 22 Mai, 2008 14:08 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

Entschuldige.

War ein kleiner Rechtschreibfehler. *lach* Was das zweite betrifft, mit dem "db_query", das ist mit Eliwoods Funktion kompatibel. ;) - Ansonsten die %s durch die unten gegebenen Variablen ersetzen.

Autor:  Eliwood [ Do 22 Mai, 2008 16:16 ]
Betreff des Beitrags:  Re: Kopfgeld wegkaufen

Die Funktion nennt sich "db_squeryf" und lässt sich hier irgendwo finden. Alternativ kann man auch selbst rundherum bauen (Man benötigt eigentlich nur sprintf()):

$this->bbcode_second_pass_code('', '$sql = 'UPDATE `accounts` SET `bounty` = "%s" WHERE `acctid` = "%s"';
db_query(sprintf($sql, (int)$value, (int)$user) or die (db_error($sql)));')

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/