Economy/de

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Land kaufen und verkaufen)
(Land und Geld kaufen)
 
(10 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Quicklinks}}
+
{{Quicklinks|Economy}}
<br />
+
 
 
=Einführung=
 
=Einführung=
 +
 
'''Hinweis: Diese Seite ist in Entwicklung. Ergänzungen willkommen.'''
 
'''Hinweis: Diese Seite ist in Entwicklung. Ergänzungen willkommen.'''
  
Line 24: Line 25:
 
Es gibt eine sehr minimale Version davon (mit Installationsanweisungen) unter https://github.com/justincc/opensimulator-helper. Dies ermöglicht $ 0 Übertragungen.
 
Es gibt eine sehr minimale Version davon (mit Installationsanweisungen) unter https://github.com/justincc/opensimulator-helper. Dies ermöglicht $ 0 Übertragungen.
  
Ein etwas ausgefeilteres Beispiel finden Sie unter http://download.osgrid.org/helper_tools_opensim.zip.
+
Für neuere php Versionen 7.x und neuere Viewers wird eine andere Version der landtool.php benötigt: https://gist.github.com/Tampa/af55bb150f423e78bfa3d144bf98bc85
 +
 
 +
Ein etwas ausgefeilteres Beispiel finden Sie unter https://download.osgrid.org/helper_tools_opensim_2024.zip.
  
 
Beide Dateien funktionieren nicht mehr und stammen letztlich aus einer ursprünglichen Implementierung bei:  
 
Beide Dateien funktionieren nicht mehr und stammen letztlich aus einer ursprünglichen Implementierung bei:  
Line 32: Line 35:
 
https://sourceforge.net/projects/opensimwiredux/
 
https://sourceforge.net/projects/opensimwiredux/
  
 +
= Land und Geld kaufen =
 +
Geld und Land kaufen ohne PHP ist jetzt möglich mit OpenSim Currency Server for OpenSim 0.9.3.
  
 +
original DTL/NSL Money Server von Fumi.Iseki and NSL http://www.nsl.tuis.ac.jp.
  
Land kaufen und verkaufen PHP 7 Beispiel "landtool.php":
+
Hier ist eine Version für DotNet6 & DotNet8.
 
+
<source lang="php">
+
 
+
<?php
+
error_reporting(E_ALL  & ~E_NOTICE);
+
 
+
# Copyright (c)Melanie Thielker and Teravus Ovares (http://opensimulator.org/)
+
#
+
#  Redistribution and use in source and binary forms, with or without
+
#  modification, are permitted provided that the following conditions are met:
+
#      * Redistributions of source code must retain the above copyright
+
#        notice, this list of conditions and the following disclaimer.
+
#      * Redistributions in binary form must reproduce the above copyright
+
#        notice, this list of conditions and the following disclaimer in the
+
#        documentation and/or other materials provided with the distribution.
+
#      * Neither the name of the OpenSim Project nor the
+
#        names of its contributors may be used to endorse or promote products
+
#        derived from this software without specific prior written permission.
+
#
+
#  THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+
#  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+
#  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+
#  DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+
#  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+
#  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+
#  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+
#  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+
#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
#
+
# updated for Robust installations: BlueWall 2011
+
# further minor changes by justincc (http://justincc.org)
+
 
+
  function xlog($text) {
+
    global $IP;
+
    $datum  = date("Y-m-d H:i:s");
+
    $fh = fopen('landtool.log', 'a'); // bitte anpassen
+
    fwrite($fh, $datum."# ".$IP."|".$text."\n");
+
    fclose($fh);
+
}
+
    xlog(".. ");   
+
    $request_xml = file_get_contents("php://input");
+
    //xlog("Call... request_xml -  ".$request_xml);
+
 
+
 
+
  # Please insert youre database Settings
+
  $dbhost = "localhost"; // do not enter this
+
  $dbname = "grid_database"; // youre database name
+
  $dbuser = "user_name"; // youre mysql name
+
  $dbpass = "user_paswd"; // youre mysql password
+
  # Tables
+
  $presence = "Presence";
+
 
+
  # Splt Post raw Content as an effect because somethin does not more run under php 7.x
+
  $search  = array('<', '>', 'methodCall', '?xml version="1.0"?', '/', 'xxx', 'methodName', 'membername' , 'params' , 'param' , 'value' , 'struct', 'member', 'name', 'string', 'int');
+
  $xml = str_replace($search, ">" ,$request_xml);
+
  $search  = array( '>>');
+
  $xml = str_replace($search, ">" ,$xml);
+
  $xml = str_replace($search, ">" ,$xml);
+
  $xml = str_replace($search, ">" ,$xml);
+
  $xml = str_replace($search, ">" ,$xml);
+
  $xml = str_replace($search, ">" ,$xml);
+
  $xml = str_replace($search, ">" ,$xml);
+
  $xml_split = preg_split("[>]", $xml);
+
      //xlog("Call... xml 0 ".$xml);
+
    //  0 n/a
+
    //  1 preflightBuyLandPrep
+
    $method_name = $xml_split[1];
+
    //xlog("Call... method_name : ".$method_name );
+
    //  2 agentId
+
    //  3 d8384ae7-ae6a-4a36-a254-9d62f59f695f
+
    $agentId = $xml_split[3];
+
    //xlog("Call... agentId : ".$agentId );
+
    //  4 secureSessionId
+
    //  5 0f5eddde-13ef-4aaa-85f6-03134566ef3f
+
    $secureSessionId = $xml_split[5];
+
    //xlog("Call... secureSessionId : ".$secureSessionId );
+
    //  6 language
+
    //  7 de
+
    //  8 billableArea
+
    //  9 0
+
    $billableArea = $xml_split[9];
+
    //xlog("Call... billableArea : ".$billableArea );
+
    //  10 currencyBuy
+
    //  11 0 
+
    $amount = $xml_split[11];
+
    //xlog("Call... amount : ".$amount );
+
    //  12 n/a
+
    //xlog("Call... xml_split 0 ".$xml_split[0]);
+
    //xlog("Call... xml_split 1 ".$xml_split[1]);
+
    //xlog("Call... xml_split 2 ".$xml_split[2]);
+
    //xlog("Call... xml_split 3 ".$xml_split[3]);
+
    //xlog("Call... xml_split 4 ".$xml_split[4]);
+
    //xlog("Call... xml_split 5 ".$xml_split[5]);
+
    //xlog("Call... xml_split 6 ".$xml_split[6]);
+
    //xlog("Call... xml_split 7 ".$xml_split[7]);
+
    //xlog("Call... xml_split 8 ".$xml_split[8]);
+
    //xlog("Call... xml_split 9 ".$xml_split[9]);
+
    //xlog("Call... xml_split 10 ".$xml_split[10]);
+
    //xlog("Call... xml_split 11 ".$xml_split[11]);
+
    //xlog("Call... xml_split 12 ".$xml_split[12]);
+
 
+
 
+
  # XMLRPC
+
  $xmlrpc_server = xmlrpc_server_create();
+
  xmlrpc_server_register_method($xmlrpc_server, "preflightBuyLandPrep", "buy_land_prep");
+
////////////////////////////////////////////
+
 
+
function validate_user($agent_id, $s_session_id)
+
  {
+
    global $dbhost, $dbuser, $dbpass, $dbname;
+
    //$agentid = mysql_escape_string($agentId);
+
    //$sessionid = mysql_escape_string($secureSessionId);
+
     
+
    # New MySqli Connect
+
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
+
    if ($mysqli->connect_found) {
+
    die("Connection failed: " . $mysqli->connect_found);
+
    }
+
    # New MySqli Connect end
+
   
+
    $query = "select UserID from Presence where UserID='".$agent_id."' and SecureSessionID = '".$s_session_id."'";
+
//    $result = mysql_query($query)
+
//      or die('ERROR: '.mysql_error());
+
//    $row = mysql_fetch_assoc($result);
+
//    return $row['UserID'];
+
//  }
+
    # New MySqli Event
+
    $result = $mysqli->query($query);
+
    if ($result->num_rows > 0) {
+
    while($row = $result->fetch_assoc()) {
+
    #
+
    $UserID = $row['UserID'];
+
        //xlog("validate_user Succsess! [".$query."]");
+
    }} else {
+
     
+
    // xlog("validate_user Fail! [".$query."]");
+
    return ;
+
    }
+
    # New MySqli Event end
+
    return $UserID;
+
}
+
//xlog("Call... Function Test validate_user  a ".validate_user($agentId, $secureSessionId)) ;
+
 
+
 
+
    //xlog("Call... method_name :> ".$method_name );
+
    //xlog("Call... agentId :> ".$agentId );
+
    //xlog("Call... secureSessionId :> ".$secureSessionId );
+
 
+
function buy_land_prep($method_name)
+
  {
+
    global $dbhost, $dbuser, $dbpass, $dbname , $agentId, $secureSessionId, $amount, $billableArea;
+
    $confirmvalue = "";
+
   
+
    //xlog("Call.buy_land_prep. method_name :>> ".$method_name );
+
    //xlog("Call.buy_land_prep. agentId :>> ".$agentId );
+
    //xlog("Call.buy_land_prep. secureSessionId :>> ".$secureSessionId );
+
    //xlog("Call.buy_land_prep. amount :>> ".$amount );
+
    //xlog("Call.buy_land_prep. billableArea :>> ".$billableArea );   
+
 
+
    $ID = validate_user($agentId, $secureSessionId);
+
    //xlog("Call.buy_land_prep. ID :>>> ".$ID );
+
 
+
   
+
if ( $amount != 0) {
+
      header("Content-type: text/xml");
+
      $response_xml = xmlrpc_encode(array(
+
        'success' => False,
+
        'errorMessage' => "\n\nLand/Parcels can only sell for 0!\nCall the Landowner ....",
+
        'errorURI' => "http://www.google.de"));
+
      print $response_xml;
+
      return;
+
  }
+
 
+
  if($ID)
+
    {
+
      $membership_levels = array(
+
        'levels' => array(
+
        'id' => "00000000-0000-0000-0000-000000000000",
+
        'description' => "some level"));
+
      $landUse = array(
+
        'upgrade' => False,
+
        'action'  => "http://www.google.de");
+
      $currency = array(
+
        'estimatedCost' =>  "200.00");    // convert_to_real($amount));
+
      $membership = array(
+
        'upgrade' => False,
+
        'action'  => "http://www.google.de",
+
        'levels'  => $membership_levels);
+
      $response_xml = xmlrpc_encode(array(
+
        'success'    => True,
+
        'currency'  => $currency,
+
        'membership' => $membership,
+
        'landUse'    => $landUse,
+
        'currency'  => $currency,
+
        'confirm'    => $confirmvalue));
+
      header("Content-type: text/xml");
+
      print $response_xml;
+
    }
+
    else
+
    {   
+
      header("Content-type: text/xml");
+
      $response_xml = xmlrpc_encode(array(
+
        'success' => False,
+
        'errorMessage' => "\n\nUnable to Authenticate\n\nClick URL for more info.",
+
        'errorURI' => "http://www.google.de"));
+
      print $response_xml;
+
    }
+
   
+
    return "";
+
  }
+
 
+
////////////////////////////////////////////
+
  
  #$request_xml = $HTTP_RAW_POST_DATA;
+
https://github.com/ManfredAabye/opensimcurrencyserver-dotnet
  $request_xml = file_get_contents("php://input");
+
  xmlrpc_server_call_method($xmlrpc_server, $request_xml, '');
+
  xmlrpc_server_destroy($xmlrpc_server);
+
?>
+
  
</source>
+
Dieser MoneyServer ist so erarbeitet, dass es nur für Spiele gedacht ist als Punktesystem, bitte verwechseln Sie es nicht mit echter Währung.
  
 
=Verweise=
 
=Verweise=
* http://opensim-users.2152040.n2.nabble.com/Buying-and-Selling-Land-What-module-is-needed-td7578626.html - A mailing list thread on getting landtool.php working.
+
* http://opensim-users.2152040.n2.nabble.com/Buying-and-Selling-Land-What-module-is-needed-td7578626.html - Ein Alter Mailinglisten-Thread über landtool.php.
  
 
[[Category:German Translations]]
 
[[Category:German Translations]]

Latest revision as of 11:27, 30 November 2024

Contents

[edit] Einführung

Hinweis: Diese Seite ist in Entwicklung. Ergänzungen willkommen.

Zwei wichtige Aspekte in Bezug auf die Währung sind Kauf und Verkauf von Geldeinheiten (dh durch Klicken auf die Währungsanzeige in der oberen rechten Ecke der meisten Viewer) und Kauf und Verkauf von Land.

Diese beinhalten Aufrufe an ein Paar externer PHP-Skripte. Die Namen dieser Skripte (currency.php und landtool.php) sind in der Viewer-Quelle tatsächlich fest codiert (!). Drittanbieter-Viewer erlauben jedoch, dass der Pfad geändert wird, wenn wir ihn im Economy-Parameter des Abschnitts [GridInfo] von Robust.ini (oder Robust.HG.ini, config-include/StandaloneCommon.ini) angeben.

[edit] Geld kaufen und verkaufen

OpenSimulator verfügt nicht über eine funktionierende Währungsimplementierung, obwohl es ein sehr eingeschränktes Beispielgeldmodul gibt, das nur im eigenständigen Modus funktioniert.

Sie können Währungsimplementierungen von Drittanbietern auf der Seite Related Software finden. Das OpenSimulator-Projekt kann keine Unterstützung für diese Module bereitstellen.

Wenn Sie auf die Währungsanzeige in einem Viewer klicken, wird eine Anfrage an die Datei "currency.php" erstellt, die dem Pfad folgt, der im Abschnitt "GridInfo" von Robust.ini eingerichtet wurde.

[edit] Land kaufen und verkaufen

Das Kaufen und Verkaufen von Land erfordert auch, dass das Raster eine Seite landtool.php hat, die einen preflightBuyLandPrep XMLRPC-Aufruf bedient.

Bei einer OpenSimulator-Standalone-Installation liefert das SampleMoneyModule die erforderliche Mindestfunktionalität ( TODO: dies ordnungsgemäß dokumentieren ).

Leider ist dies momentan in ROBUST nicht verfügbar. Eine Grid-Installation muss eine externe Implementierung der preflightBuyLandPrep XMLRPC-Funktion bereitstellen.

Es gibt eine sehr minimale Version davon (mit Installationsanweisungen) unter https://github.com/justincc/opensimulator-helper. Dies ermöglicht $ 0 Übertragungen.

Für neuere php Versionen 7.x und neuere Viewers wird eine andere Version der landtool.php benötigt: https://gist.github.com/Tampa/af55bb150f423e78bfa3d144bf98bc85

Ein etwas ausgefeilteres Beispiel finden Sie unter https://download.osgrid.org/helper_tools_opensim_2024.zip.

Beide Dateien funktionieren nicht mehr und stammen letztlich aus einer ursprünglichen Implementierung bei:

https://sourceforge.net/projects/opensimwi/

https://sourceforge.net/projects/opensimwiredux/

[edit] Land und Geld kaufen

Geld und Land kaufen ohne PHP ist jetzt möglich mit OpenSim Currency Server for OpenSim 0.9.3.

original DTL/NSL Money Server von Fumi.Iseki and NSL http://www.nsl.tuis.ac.jp.

Hier ist eine Version für DotNet6 & DotNet8.

https://github.com/ManfredAabye/opensimcurrencyserver-dotnet

Dieser MoneyServer ist so erarbeitet, dass es nur für Spiele gedacht ist als Punktesystem, bitte verwechseln Sie es nicht mit echter Währung.

[edit] Verweise

Personal tools
General
About This Wiki