Bonuspunkte und Strafpunkte vergeben

Begonnen von MaxG, 15 Dezember 2003, 22:28:34

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

MaxG

Hallo,

wenn ich in der DB in der Tabelle mx_userpoints die Punkte eines Bentzers ändere, werden diese sobald sie von irgendwo aus dem vkpmx heraus abgefragt werden wieder auf den vorherigen stand zurückgesetzt (mein Bonus-Eintrag wird ignoriert, einfach überschrieben )
Nur zur Info:
----------
uid | points
-----------
Vorher:
19 | 41
Nach manueller Änderung:
19 | 61
Nach aufruf von Your_Account wieder:
19 | 41

Gibt es eine Möglichkeit für Bonus- und Strafpunkte?

Gruß

Max

DarkBoy

Das ist so ja auch richtig. Die Points werden nach den Vorgaben im Adminbereich errechnet.
Um Bonus oder Strafpunkte zu vergeben musst du ein Fremdmodul nutzen.

MaxG

Schade  :(  

Könnt ihr das nich mit der nächsten Version einbauen?
Wäre super!

Mfg

Max

 

Windows ist 100% kompatibel! Man weiß nur nicht mit was?!?!?

soxin

bau es dir doch schnell selber..

habe das für nuke 5.5 gemacht...
in 10 minuten war ich fertig..

.. mußt nur noch eine tabelle in die sql einfügen wo drinsteht
uname und Punkte ...

.. jetzt mußt du an der stelle wo die userpunkte berechnet werden (vermute in der index.php vom Your Account) .. einfach noch die tabelle mit auslesen ..

Aber das sollte ja kein Problem sein  :D

nils

Nicht schlecht,

so etwas interessiert mich auch, bin aber leider kein Großer "Datenbankrumbauer" -> könnte man nen kleinen Hinweis bekommen wo und wie man das macht?

gruß nils

soxin

habe gerade mal geschaut .. beim neuen MX wird das im Modul Your _account/userpoints.php errechnet..

Also als erstes mußt du eine Tabelle anlegen in der Mysql
z.b.: das hier:

  CREATE TABLE mx_extrapu (
  informant varchar(20) NOT NULL default '0',
  punkte int(5) NOT NULL default '0'
) TYPE=MyISAM;


dann öfnest du die datei modules/Your _account/userpoints.php  und fügst das in zeile 124 dazu:
 
    $result= sql_query("select punkte from ${prefix}_extrapu where informant='".mxAddSlashesForSQL($uname)."'");
    list($extrapoints)=sql_fetch_row($result);
    $userpoints = $userpoints +$etrapoints;      
 



Dann gehst z.B. mit phpmyadmin in die Datenbank ..
schaust unter mx_extrapu

und schreibst z.B. bei informant admin rein und bei punkte 300 (oder -300) .. und dann schaust mal ob sich da was tut nach 1 minute ..

ob der admin dann 300 userpunkte mehr hat..

Ich weiß nicht ob das so funktioniert..
ist mehr oder weniger aus dem Kopf raus..
Da ich eigentlih nur mit nuke 5.5 arbeite,
kenne icch mich net so gut aus mit  dem neuen mx ..

 :redhead:  :redhead:

[Editiert am 17/12/2003 von soxin]

soxin


MaxG

alle Angaben beziehen sich auf VkpMx 2.1
Ich habs mir in der Zwischenzeit schon selber gemacht:
Zuerst mal in der Datenbank:

Tabelle mx_bonuspoints:
uname | punkte
im SQL also:
 
#
# Tabellenstruktur für Tabelle `mx_bonuspoints`
#

CREATE TABLE `mx_bonuspoints` (
  `uname` varchar(25) NOT NULL default '0',
  `punkte` int(11) NOT NULL default '0',
  PRIMARY KEY  (`uname`)
) TYPE=MyISAM;
 


Beispielinhalt:
max | 20
-> Benutzername "max" kriegt 20 Nutzerpnukte dazu.
 
#
# Daten für Tabelle `mx_bonuspoints`
#

INSERT INTO `mx_bonuspoints` VALUES ('max', 20);
 


Abänderung in der Datei modules/your_account/userpoints.php:
Zusätzlich wird die Nutzerpunktespalte immer angezeigt, nicht nur wenn die Punktezahl größer als 1 ist (auch Punktezahlen im Minusbereich werden somit angezeigt)


<?php // $Id: userpoints.php,v 1.5 2003/11/08 14:07:48 EllselAn Exp $
/**********************************************************************/
/* vkpMx 2.0  Content Management System Platform                      */
/* ================================================================== */
/* Copyright (C) 2003 by the vkpMx & pragmaMx Developer Team          */
/* email:         team@pragmamx.org                                   */
/* homepage:      http://www.maax-design.de                           */
/* further sites: http://www.pragmamx.org, http;//guggemahier.de, */
/*            http://www.marx-city.de, http://www.genutec-studios.de, */
/*            http://www.shiba-design.de, http://www.power-maax.de    */
/* ================================================================== */
/*   The vkpMx is distributed free of charge by maax-design.de.       */
/*   The use of this system is allowed until copyright information    */
/*   is shown perspicuous visible and correcty on all system pages.   */
/*   Sales, rent out and the use of single code parts from this       */
/*   system must be allowed by maax-design.de.                        */
/**********************************************************************/

/*
Including BonusPoints Edit by maxG
*/
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

# Link zur Anzeige der Info ueber die Userpoints
# Leerstring, um den Link nicht anzuzeigen
   $userpointsfaq = "<a href=\"modules.php?name=FAQ&file=index&myfaq=yes&id_cat=5&categories=UserPunkte\">"._USERPUNKTE."</a>";


include("modules/Your_Account/config.php");
if ($useuserpoints && $uname) {
   $hasuserpoints = "";
   # uid ermitteln
   if (empty($uid)) {
      $resultx=sql_query("select uid from ${user_prefix}_users where uname='$uname'");
      list($uid) = sql_fetch_row($resultx);
      }
   $uid = intval($uid);
   $exusers   = explode (",", $excludedusers);
   $exusers[] = $GLOBALS['anonymous'];
   $exusers[] = "Anonymous";
   foreach ($exusers as $key => $val) {
      if (strtolower($uname) == strtolower(trim($val))){
         $userishided = 1;
         sql_query("delete from ${prefix}_userpoints where uid = '$uid' ");
         break;
         }
      }
   
   if (empty($userishided)){
      $result=sql_query("SHOW TABLES;");
      while(list($tablename)=sql_fetch_row($result)){
         $tables[] = $tablename;
         }
      $userpoints=0;
      if (!empty($points_downloads1) && in_array("${prefix}_downloads_downloads", $tables)) {# DownloadS
         $result = sql_query("select count(lid) from ${prefix}_downloads_downloads where submitter='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_downloads1);
        }
      if (!empty($points_downloads2) && in_array("${prefix}_downloads_votedata", $tables)) {# Download Bewertungen
         $result = sql_query("select count(ratingdbid) from ${prefix}_downloads_votedata where ratinguser='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_downloads2);
         }
      if (!empty($points_links1) && in_array("${prefix}_links_links", $tables)) {# Links
         $result = sql_query("select count(lid) from ${prefix}_links_links where  submitter='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_links1);
         }
      if (!empty($points_links2) && in_array("${prefix}_links_votedata", $tables)) {# Link Bewertungen
         $result = sql_query("select count(ratingdbid) from ${prefix}_links_votedata where ratinguser='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_links2);
        }
      if (!empty($points_umfragen) && in_array("${prefix}_pollcomments", $tables)) {# Umfragekommentare
         $result = sql_query("select count(tid) from ${prefix}_pollcomments where name='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_umfragen);
        }
      if (!empty($points_artikel) && in_array("${prefix}_stories", $tables)) {# Artikel
         $result = sql_query("select count(sid) from ${prefix}_stories where informant='".mxAddSlashesForSQL($uname)."' AND `time` <= now()");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_artikel);
        }
      if (!empty($points_kommentare) && in_array("${prefix}_comments", $tables)) {# Artikel Kommentare
         $result = sql_query("select count(tid) from ${prefix}_comments where name='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_kommentare);
        }
      if (!empty($points_gb1) && in_array("${prefix}_userguest", $tables)) {# User Gaestebuch eigene Eintraege
         $result=sql_query("select count(gid) from ${prefix}_userguest where touser='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_gb1);
        }
      if (!empty($points_gb2) && in_array("${prefix}_userguest", $tables)) {# User Gaestebuch eintragen
         $result=sql_query("select count(gid) from ${prefix}_userguest where wer='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_gb2);
        }
      if (@file_exists('modules/eBoard/settings.php')) {
         include('modules/eBoard/settings.php');
         if (!empty($points_fthreads) && in_array($table_threads, $tables)) {# Forumsbeitraege  !!!! eBoard !!!!
            $result= sql_query("select count(tid) from ".$table_threads." where author='".mxAddSlashesForSQL($uname)."'");
            list($points) = sql_fetch_row($result);
            $userpoints = $userpoints + ($points * $points_fthreads);
            }
         if (!empty($points_fposts) && in_array($table_posts, $tables)) {# Forumsbeitraege  !!!! eBoard !!!!
            $result= sql_query("select count(pid) from ".$table_posts." where author='".mxAddSlashesForSQL($uname)."'");
            list($points) = sql_fetch_row($result);
            $userpoints = $userpoints + ($points * $points_fposts);
            }
         }
      if (!empty($points_kalender) && in_array("${prefix}_events", $tables)) {# Kalenderbeitraege
         $result = sql_query("select count(eid) from ${prefix}_events where informant='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_kalender);
         }
      if (!empty($points_bilder1) && in_array("${prefix}_gallery_pictures", $tables)) {# Bilder eintragen
         $result= sql_query("select count(pid) from ${prefix}_gallery_pictures where submitter='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_bilder1);
         }
      if (!empty($points_bilder2) && in_array("${prefix}_gallery_comments", $tables)) {# Bilder Kommentar
         $result= sql_query("select count(pid) from ${prefix}_gallery_comments where name='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $userpoints = $userpoints + ($points * $points_bilder2);
         }

        if (in_array("${prefix}_bonuspoints", $tables)) {# Bonuspunkte
         $result= sql_query("select punkte from ${prefix}_bonuspoints where uname='".mxAddSlashesForSQL($uname)."'");
         list($points) = sql_fetch_row($result);
         $bonuspoints = $points;
         $userpoints = $userpoints + ($points * 1);
         }

      if($uid>1){
         $result= sql_query("select uid, punkte from ${prefix}_userpoints where uid='$uid'");
         list($checkit, $punkte) = sql_fetch_row($result);
        if(empty($checkit)) {
            sql_query("insert into ${prefix}_userpoints (uid, punkte) VALUES($uid, $userpoints) ");
            }
        else {
            if ($punkte != $userpoints) { // nur aendern, wenn alt und neu unterschiedlich
               sql_query("update ${prefix}_userpoints set punkte = '$userpoints' where uid = '$uid' ");
               }
            }
            
        /* Minuspunkte und Punktestand 0 werden jetzt auch angezeigt
          Edited by maxG
         */
        if($userpoints>1 and $userpoints<(-1)) $userpoints=0;
        $hasuserpoints = "<b>".$userpoints."</b> ". _YA_HASPOINTS;
        
         }
      else{
         if (date("H") == 11) { // nicht immer ausfuehren
            sql_query("DELETE FROM ${prefix}_userpoints WHERE uid <= 1");
            }
         }
      }
   }
?>


Nun muss man nur bei gewünschten Bonuspunkten neue Einträge in der Bonuspoints-Tabelle machen. Viel Spaß und vielen Dank  an soxin :thumbup:  :thumbup:  
 
Zitat  Darkboy schrieb:
Um Bonus oder Strafpunkte zu vergeben musst du ein Fremdmodul nutzen.
 
@darkboy:  
1. es gibt für sowas keine gescheit brauchbaren Fremdmodule
2. antworte doch einfach besser gar nicht oder frag jemanden, der nicht so blöööde Antworten gibt!

Mfg

Max


[Editiert am 17/12/2003 von MaxG]

Future

 
Zitatquote:
--------------------------------------------------------------------------------
 Darkboy schrieb:
Um Bonus oder Strafpunkte zu vergeben musst du ein Fremdmodul nutzen.

--------------------------------------------------------------------------------


1. es gibt für sowas keine gescheit brauchbaren Fremdmodule
2. antworte doch einfach besser gar nicht oder frag jemanden, der nicht so blöööde Antworten gibt!

Sorry aber was soll das denn ?
Das war doch keine blöde antwort.
Er hat lediglich damit gesagt das es die funktion im mX nicht gibt.
Das ist doch keine blöde antwort.
Was kann Darkboy dafür wenn es kein gescheites Fremdmodul dafür gibt ?
Naja und wenn es kein gescheites gibt dann ist doch wohl logisch das man es selber machen muss. Oder hast du erwartet das er es dir coded ?
Sorry aber dafür hab ich 0 verstädnis

jubilee

Hallo !
 
Zitat2. antworte doch einfach besser gar nicht oder frag jemanden, der nicht so blöööde Antworten gibt!
Eine Community lebt nun mal davon, dass gefragt und geantwortet wird.
Niemand kann Dir garantieren, dass die gegebenen Antworten Dir auch gefallen. Falls Du verhindern willst, das Du unpassende Antworten bekommst, gibt es nur einen Weg---->   keine Fragen stellen

jubilee

nils

Hi Leute,

also vorerst find ich bei mir keine angezeigten Userpunkte, jedenfalls keinen User bei dem dahinter Punkte stehen...
Block ist aktiv -> http://www.deutscher-handball.de/html/modules.php?name=Top#POINT

Warum? Wenn ich die Sachen dann ale geändert habe benötige ich dann für die Vergabe auch noch ein Fremdmodul? Oh mann so viel sind mir die Punkte dann doch nicht wert ...

MaxG

@ future, darkboy, jubilee
SORRY, ich hatte es etwas falsch verstanden.
Ich kann meinen Beitrag gerne editieren, wenn ihr wollt.

 


zurück zum eigentlichen Thema:

@nils

.../modules.php?name=Top#POINT
Bringt
"Sorry, Modul nicht aktiv"
Bei dir bringt es keinen Fehler, weil Admins auch inaktive Module sehen können, aber bei mir als normalem Nutzer (test3) bringt es eine Fehlöermeldung.
Wenn du willst dass ich es mir anschauen kann:
vkpMx Admin -> Module
weiter unten müsste dann
Top
zu finden sein.
Dann auf das leere grüne Blatt klicken (mittleres Symbol der 3 Symbole am rechten Rand), das Modul ist jetzt aktiv.

Lösungsmöglichkeiten des Problems

Zitatkeine angezeigten Userpunkte

1) Hast du in den Einstellungen (vkpmx Admin -> Benutzer Konfiguration)
"Userpoints verwenden" auf JA gestellt?
Wenn NEIN, bitte auf JA stellen

2) hast du die Tabelle in der Datenbank erstellt?
wenn nein:

Zuerst musst du in PhpMyAdmin (NICHT VkpMx Admin-Oberfläche)
den SQL-Befehl
(hier im Beispiel ist der Tabellenprefix auf mx [Standarteinstellung] gestellt)
 
CREATE TABLE `mx_bonuspoints` (

  `uname` varchar(25) NOT NULL default '0',

  `punkte` int(11) NOT NULL default '0',

  PRIMARY KEY  (`uname`)

) TYPE=MyISAM;
 


ausführen

3)
dann kannst du es in der DB manuell durch hinzufügen von Username und Punkteabweichung in die Tabelle Bonuspunkte verteilen

[zur Info: endgültige Nutzerpunktzahl=Automatisch berechnete Nutzerpunkte(durch Forumbeiträge,...) + Punkteabweichung(Wert in Tabelle mx_bonuspoints)]

Wenn das Script bei einem Nutzer keinen Wert in der Tabelle mx_bonuspoints findet, wird nur der automatisch berechnete Wert genommen.

Ich werde irgendwann noch ein Script für den vkpMx Admin-Bereich schreiben, welches die Vergabe einfacher ermöglicht.

Mfg

Max

soxin