RPG-Tools: 2 mal Hilfe

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
---
Bei Fragen zu einem bestimmten Mod sind Mod-Name und die Downloadquelle des Mods erforderlich. Letztere in Form der URL zum Download. Hiervon kann lediglich bei sehr bekannten und verbreiteten Mods abgesehen werden, soweit eindeutig ist, um welchen Mod es sich handelt. Es liegt allerdings im Ermessen der Moderatoren, das Thema ggf. zu schließen, daher sollte im Zweifel der Link angegeben werden.
Reyko
Mitglied
Beiträge: 43
Registriert: 18.01.2007 12:15
Wohnort: Berlin

RPG-Tools: 2 mal Hilfe

Beitragvon Reyko » 20.04.2011 20:12

Hallo meine Lieben,

ich habe die Suchenfunktion penetriert jedoch nichts gefunden.

1. Aufgrund meines Styles, sieht das Inventar abgeschnitten aus. Die Knöpfe für Ablegen und Benutzen sind ausserhalb des sichtfensters. Ich hab auch bischen schon versucht ne eigene Datei zu erstellen aber ich werde da nich schlau draus :-s Kann jemand helfen?

das ist die ucp_rpg_character.php aus dem RPG-Tools paket die ich versucht habe in eine eigenständige datei zu formen.

Code: Alles auswählen

<?php

/**
*
* @mod package      RPG Tools 2
* @file            ucp_rpg_character.php 15 2011/03/06 OXPUS
* @copyright      (c) 2008 oxpus (Karsten Ude) <webmaster@oxpus.de> http://www.oxpus.de
* @license         http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
   exit;
}

/**
* ucp_rpg_character
* Manage RPG character and its inventory
*
* @package ucp
*/
class ucp_rpg_character
{
   var $u_action;

   function main($id, $mode)
   {
      global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $rpg;

      $submit            = request_var('submit', '');
      $action            = request_var('action', '');
      $accept_code      = request_var('accept_code', '');

      $user_id         = request_var('user_id', 0);
      $group_id         = request_var('group_id', 0);
      $rpg_user_pending   = request_var('rpg_user_pending', 0);
      $start            = request_var('start', 0);

      $rpg_ucp_path      = $phpbb_root_path . "../includes/ucp/";
      $basic_link         = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=rpg_character&amp;mode=$mode");
      $basic_link_smode   = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=rpg_character&amp;mode=");

      $s_hidden_fields   = '';
      $error = '';

      switch ($mode)
      {
         case 'add_char':

            if ($submit)
            {
               if (!check_form_key('ucp_rpg_charedit'))
               {
                  trigger_error($user->lang['FORM_INVALID'], E_USER_WARNING);
               }
               
               $char_name = utf8_normalize_nfc(request_var('name', '', true));
               $char_age = request_var('age', 0);
               $char_gender = utf8_normalize_nfc(request_var('gender', '', true));
               $gender = $char_gender{0};
               $preset_id = request_var('preset', 0);
            
               $sql_value[$gender][0] = 'power_' . $gender;
               $sql_value[$gender][1] = 'defence_' . $gender;
               $sql_value[$gender][2] = 'intelligence_' . $gender;
               $sql_value[$gender][3] = 'vitality_' . $gender;
            
               for ($i = 0; $i < sizeof($sql_value[$gender]); $i++)
               {
                  $sql_gender = $sql_value[$gender][$i];
                  $gender_value[$i] = $config[$sql_gender];
               }
            
               if ($char_name == '')
               {
                  trigger_error('RPG_DESCRIPTION_EMPTY', E_USER_WARNING);
               }
            
               if (!$preset_id)
               {
                  $char_race_id = request_var('race', 0);
                  $char_occupation_id = request_var('occupation', 0);
                  $char_weapon_id = request_var('weapon', 0);
            
                  $char_power = $gender_value[0];
                  $char_defence = $gender_value[1];
                  $char_intelligence = $gender_value[2];
                  $char_vitality = $gender_value[3];     
            
                  srand ((double)microtime()*1000000);   
            
                  $sql = 'SELECT power_min, power_max, defence_min, defence_max, intelligence_min, intelligence_max, vitality_min, vitality_max
                     FROM ' . RPG_RACES_TABLE . "
                     WHERE race_id = $char_race_id";
                  $result = $db->sql_query($sql);
            
                  $row = $db->sql_fetchrow($result);
            
                  $char_power += floor(rand($row['power_min'], $row['power_max']));
                  $char_defence += floor(rand($row['defence_min'], $row['defence_max']));
                  $char_intelligence += floor(rand($row['intelligence_min'], $row['intelligence_max']));
                  $char_vitality += floor(rand($row['vitality_min'], $row['vitality_max']));
            
                  $db->sql_fetchrow($result);
            
                  $sql = 'SELECT power_extra, defence_extra, intelligence_extra, vitality_extra FROM ' . RPG_OCCUPATIONS_TABLE . "
                     WHERE occupation_id = $char_occupation_id";
                  $result = $db->sql_query($sql);
            
                  $row = $db->sql_fetchrow($result);
            
                  $char_power += $row['power_extra'];
                  $char_defence += $row['defence_extra'];
                  $char_intelligence += $row['intelligence_extra'];
                  $char_vitality += $row['vitality_extra'];
            
                  $db->sql_fetchrow($result);
            
                  $sql = 'SELECT power_extra, defence_extra FROM ' . RPG_WEAPONS_TABLE . "
                     WHERE weapon_id = $char_weapon_id";
                  $result = $db->sql_query($sql);
            
                  $row = $db->sql_fetchrow($result);
            
                  $char_power += $row['power_extra'];
                  $char_defence += $row['defence_extra'];
            
                  $db->sql_fetchrow($result);
            
                  $char_power = ($char_power > 100) ? 100 : $char_power;
                  $char_defence = ($char_defence > 100) ? 100 : $char_defence;
                  $char_intelligence = ($char_intelligence > 100) ? 100 : $char_intelligence;
                  $char_vitality = ($char_vitality > 100) ? 100 : $char_vitality;
               }
               else
               {
                  $sql = 'SELECT * FROM ' . RPG_PRESETS_TABLE . "
                     WHERE preset_id = $preset_id";
                  $result = $db->sql_query($sql);
            
                  $row = $db->sql_fetchrow($result);
                  $db->sql_freeresult($result);
            
                  $char_weapon_id = $row['weapon_id'];
                  $char_race_id = $row['race_id'];
                  $char_occupation_id = $row['occupation_id'];
            
                  $char_power = $row['power'];
                  $char_defence = $row['defence'];
                  $char_intelligence = $row['intelligence'];
                  $char_vitality = $row['vitality'];
            
                  $char_power += $gender_value[0];
                  $char_defence += $gender_value[1];
                  $char_intelligence += $gender_value[2];
                  $char_vitality += $gender_value[3];     
               }
            
               $sql = 'INSERT INTO ' . RPG_USER_CHARS_TABLE . ' ' . $db->sql_build_array('INSERT', array(
                  'user_id'         => $user->data['user_id'],
                  'name'            => $char_name,
                  'age'            => $char_age,
                  'gender'         => $char_gender,
                  'weapon_id'         => $char_weapon_id,
                  'race_id'         => $char_race_id,
                  'occupation_id'      => $char_occupation_id,
                  'power_max'         => $char_power,
                  'power_cur'         => $char_power,
                  'defence_max'      => $char_defence,
                  'defence_cur'      => $char_defence,
                  'intelligence_max'   => $char_intelligence,
                  'intelligence_cur'   => $char_intelligence,
                  'vitality_max'      => $char_vitality,
                  'vitality_cur'      => $char_vitality,
                  'last_reg_time'      => time(),
                  'birth_time'      => time(),
                  'death_time'      => 0));
               $db->sql_query($sql);

               redirect(append_sid($basic_link_smode . 'char_info'));
            }

            $sql = 'SELECT user_id FROM ' . RPG_USER_CHARS_TABLE . '
               WHERE death_time = 0
                  AND user_id = ' . $user->data['user_id'];
            $result = $db->sql_query($sql);

            $total_living = $db->sql_affectedrows($result);
            $db->sql_freeresult($result);

            if ($total_living)
            {
               redirect($basic_link_smode . 'char_info');
            }
            else
            {
               $template->assign_vars(array(
                  'L_CINFO'         => $user->lang['RPG_CPROFILE'],
                  'L_CDESC'         => $user->lang['RPG_CPDESC'],
                  'L_CHAR_SELECT'      => $user->lang['RPG_CHAR_SELECT'],
                  'L_CSAVE'         => $user->lang['RPG_SAVEC'],
                  'L_CNAME'         => $user->lang['RPG_CNAME'],
                  'L_CDEATH'        => $user->lang['RPG_DEATH_CHAR'],
                  'L_CALTER'        => $user->lang['RPG_CALTER'],
                  'L_CGENDER'       => $user->lang['RPG_GENDER'],
                  'L_CJOB'          => $user->lang['RPG_CJOB'],
                  'L_CRASSE'        => $user->lang['RPG_CRASSE'],
                  'L_CWEAPON'       => $user->lang['RPG_CWEAPON'],
                  'L_POWER'         => $user->lang['RPG_CHAR_POWER'],
                  'L_DEFENCE'         => $user->lang['RPG_CHAR_DEFENCE'],
                  'L_INTELLIGENCE'   => $user->lang['RPG_CHAR_INTELLIGENCE'],
                  'L_VITALITY'      => $user->lang['RPG_CHAR_VITALITY'],
               ));

               $char_gender = '<select name="gender">';
               $char_gender .= '<option value="male">' . $user->lang['RPG_MALE'] . '</option>';
               $char_gender .= '<option value="female">' . $user->lang['RPG_FEMALE'].'</option>';
               $char_gender .= '<option value="neutral" selected="selected">' . $user->lang['RPG_NEUTRAL'] . '</option>';
               $char_gender .= '</select>';

               $sql = 'SELECT race_id, description FROM ' . RPG_RACES_TABLE . '
                  ORDER BY description';
               $result = $db->sql_query($sql);
            
               $char_race = '<select name="race">';
               while ($row = $db->sql_fetchrow($result))
               {
                  $char_race .= '<option value="' . $row['race_id'] . '">' . $row['description'] . '</option>';
               }
               $char_race .= '</select>';
            
               $db->sql_freeresult($result);
            
               $sql = 'SELECT occupation_id, description FROM ' . RPG_OCCUPATIONS_TABLE . '
                  ORDER BY description';
               $result = $db->sql_query($sql);
            
               $char_occupation = '<select name="occupation">';
               while ($row = $db->sql_fetchrow($result))
               {
                  $char_occupation .= '<option value="' . $row['occupation_id'] . '">' . $row['description'] . '</option>';
               }
               $char_occupation .= '</select>';

               $db->sql_freeresult($result);

               $sql = 'SELECT weapon_id, description FROM ' . RPG_WEAPONS_TABLE . '
                  ORDER BY description';
               $result = $db->sql_query($sql);
            
               $char_weapon = '<select name="weapon">';
               while ($row = $db->sql_fetchrow($result))
               {
                  $char_weapon .= '<option value="' . $row['weapon_id'] . '">' . $row['description'] . '</option>';
               }
               $char_weapon .= '</select>';

               $db->sql_freeresult($result);

               $template->assign_vars(array(
                  'S_CHAR_RACE' => $char_race,
                  'S_CHAR_OCCUPATION' => $char_occupation,
                  'S_CHAR_WEAPON' => $char_weapon,
                  'S_CHAR_GENDER' => $char_gender,
            
                  'S_FORM_ACTION' => $basic_link)
               );

               $sql = 'SELECT preset_id, description FROM ' . RPG_PRESETS_TABLE . '
                  ORDER BY description';
               $result = $db->sql_query($sql);
            
               $preset_nums = $db->sql_affectedrows($result);
               if ($preset_nums)
               {
                  $s_preset_select = '<select name="preset"><option value="0">-----</option>';
                  while($row = $db->sql_fetchrow($result))
                  {
                     $s_preset_select .= '<option value="' . $row['preset_id'] . '">' . $row['description'] . '</option>';
                  }
                  $s_preset_select .= '</select>';
            
                  $template->assign_var('S_PRESET_BLOCK', true);
                  $template->assign_vars(array(
                     'L_PRESET_SELECT' => $user->lang['RPG_CHOOSE_PRESET'],
                     'S_PRESET_SELECT' => $s_preset_select)
                  );
               }
               $db->sql_freeresult($result);
            }

            add_form_key('ucp_rpg_charedit');

         break;

         case 'char_info':

            $action = request_var('action', '');
            $inv_id = request_var('inv_id', 0);
            $confirm = request_var('confirm', '');
            $cancel = request_var('cancel', '');

            if ($inv_id)
            {
               $sql = 'SELECT user_id FROM ' . RPG_INVENTORY_TABLE . '
                  WHERE user_id = ' . $user->data['user_id'] . "
                     AND inv_id = $inv_id";
               $result = $db->sql_query($sql);
            
               $nums_items = $db->sql_affectedrows($result);
               $item_user = $db->sql_fetchfield('user_id');
               $db->sql_freeresult($result);
            }

            if ($action == 'use_item' && $inv_id != 0 && $nums_items == 1 && $user->data['user_id'] == $item_user)
            {
               $sql = 'SELECT  a.usings, i.race_use_id, u.race_id,
                     i.power, i.defence, i.intelligence, i.vitality, i.increase_max,
                     u.power_max, u.defence_max, u.intelligence_max, u.vitality_max,
                     u.power_cur, u.defence_cur, u.intelligence_cur, u.vitality_cur
                  FROM    ' . RPG_INVENTORY_TABLE . ' a,
                     ' . RPG_ITEMS_TABLE . ' i,
                     ' . RPG_ITEMS_CAT_TABLE . ' c,
                     ' . RPG_USER_CHARS_TABLE . ' u
                  WHERE u.user_id = ' . $user->data['user_id'] . "
                     AND u.death_time = 0
                     AND u.user_id = a.user_id
                     AND c.cat_id = i.cat_id
                     AND c.placement = 0
                     AND i.item_id = a.item_id
                     AND a.inv_id = $inv_id";
               $result = $db->sql_query($sql);
            
               $nums_item = $db->sql_affectedrows($result);
               if ($nums_item == 1)
               {
                  $row = $db->sql_fetchrow($result);
            
                  $usings = $row['usings'];
                  $power = $row['power'];
                  $defence = $row['defence'];
                  $intelligence = $row['intelligence'];
                  $vitality = $row['vitality'];
                  $increase_max = $row['increase_max'];
                  $power_max = $row['power_max'];
                  $defence_max = $row['defence_max'];
                  $intelligence_max = $row['intelligence_max'];
                  $vitality_max = $row['vitality_max'];
                  $power_cur = $row['power_cur'];
                  $defence_cur = $row['defence_cur'];
                  $intelligence_cur = $row['intelligence_cur'];
                  $vitality_cur = $row['vitality_cur'];
                  $race_use_id = $row['race_use_id'];
                  $race_id = $row['race_id'];
            
                  if ($race_id == $race_use_id || $race_use_id == 0)
                  {
                     $power_cur += $power;
                     $defence_cur += $defence;
                     $intelligence_cur += $intelligence;
                     $vitality_cur += $vitality;
            
                     $usings--;
            
                     if ($increase_max == 1)
                     {
                        $power_max = ($power_cur > $power_max) ? $power_cur : $power_max;
                        $defence_max = ($defence_cur > $defence_max) ? $defence_cur : $defence_max;
                        $intelligence_max = ($intelligence_cur > $intelligence_max) ? $intelligence_cur : $intelligence_max;
                        $vitality_max = ($vitality_cur > $vitality_max) ? $vitality_cur : $vitality_max;
                     }
                     else
                     {
                        $power_cur = ($power_cur > $power_max) ? $power_max : $power_cur;
                        $defence_cur = ($defence_cur > $defence_max) ? $defence_max : $defence_cur;
                        $intelligence_cur = ($intelligence_cur > $intelligence_max) ? $intelligence_max : $intelligence_cur;
                        $vitality_cur = ($vitality_cur > $vitality_max) ? $vitality_max : $vitality_cur;
                     }
            
                     $sql = 'UPDATE ' . RPG_USER_CHARS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array(
                        'power_max'         => $power_max,
                        'defence_max'      => $defence_max,
                        'intelligence_max'   => $intelligence_max,
                        'vitality_max'      => $vitality_max,
                        'power_cur'         => $power_cur,
                        'defence_cur'      => $defence_cur,
                        'intelligence_cur'   => $intelligence_cur,
                        'vitality_cur'      => $vitality_cur,
                        'last_reg_time'      => time())) . '
                           WHERE user_id = ' . $user->data['user_id'] . '
                           AND death_time = 0';
                     $db->sql_query($sql);
            
                     if ($usings == 0)
                     {
                        $sql = 'DELETE FROM ' . RPG_INVENTORY_TABLE . "
                           WHERE inv_id = $inv_id";
                        $db->sql_query($sql);
                     }
                     else if ($usings > 0)
                     {
                        $sql = 'UPDATE ' . RPG_INVENTORY_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array(
                           'usings' => $usings)) . " WHERE inv_id = $inv_id";
                        $db->sql_query($sql);
                     }
                  }
               }

               $db->sql_freeresult($result);
            }

            if (!$cancel && $action == 'drop_item' && $inv_id != 0 && $nums_items == 1 && $user->data['user_id'] == $item_user)
            {
               if (!$confirm)
               {
                  $s_hidden_fields = '<input type="hidden" name="action" value="drop_item" />';
                  $s_hidden_fields .= '<input type="hidden" name="inv_id" value="'.$inv_id.'" />';
            
                  page_header();

                  $template->set_filenames(array(
                     'body' => 'confirm_body.html')
                  );
            
                  $template->assign_vars(array(
                     'MESSAGE_TITLE' => $user->lang['INFORMATION'],
                     'MESSAGE_TEXT' => $user->lang['RPG_CONFIRM_DROP_ITEM'],
            
                     'L_YES' => $user->lang['YES'],
                     'L_NO' => $user->lang['NO'],
            
                     'S_CONFIRM_ACTION' => $basic_link,
                     'S_HIDDEN_FIELDS' => $s_hidden_fields)
                  );
            
                  page_footer();
               }
            
               $sql = 'DELETE FROM ' . RPG_INVENTORY_TABLE . "
                  WHERE inv_id = $inv_id
                     AND user_id = " . $user->data['user_id'];
               $db->sql_query($sql);
            }

            $sql = 'SELECT * FROM ' . RPG_USER_CHARS_TABLE . '
               WHERE user_id = ' . $user->data['user_id'] . '
                  AND death_time = 0';
            $result = $db->sql_query($sql);

            $total_living = $db->sql_affectedrows($result);
            if (!$total_living)
            {
               $db->sql_freeresult($result);
               redirect(append_sid($basic_link_smode . 'add_char'));
            }

            $rpgrow = $db->sql_fetchrow($result);
         
            $char_name            = $rpgrow['name'];
            $char_age            = $rpgrow['age'];
            $char_weapon_id         = $rpgrow['weapon_id'];
            $char_gender         = $rpgrow['gender'];
            $char_race_id         = $rpgrow['race_id'];
            $char_occupation_id      = $rpgrow['occupation_id'];
            $char_power_max         = $rpgrow['power_max'];
            $char_power_cur         = $rpgrow['power_cur'];
            $char_defence_max      = $rpgrow['defence_max'];
            $char_defence_cur      = $rpgrow['defence_cur'];
            $char_intelligence_max   = $rpgrow['intelligence_max'];
            $char_intelligence_cur   = $rpgrow['intelligence_cur'];
            $char_vitality_max      = $rpgrow['vitality_max'];
            $char_vitality_cur      = $rpgrow['vitality_cur'];
            $char_last_reg_time      = sprintf($user->lang['RPG_LAST_REG_TIME'], $user->format_date($rpgrow['last_reg_time']));

            $sql = 'SELECT description FROM ' . RPG_RACES_TABLE . "
               WHERE race_id = $char_race_id";
            $result = $db->sql_query($sql);
            $char_race = $db->sql_fetchfield('description');
            $db->sql_freeresult($result);
         
            $sql = 'SELECT description FROM ' . RPG_OCCUPATIONS_TABLE . "
               WHERE occupation_id = $char_occupation_id";
            $result = $db->sql_query($sql);
            $char_occupation = $db->sql_fetchfield('description');
            $db->sql_freeresult($result);
         
            $sql = 'SELECT description FROM ' . RPG_WEAPONS_TABLE . "
               WHERE weapon_id = $char_weapon_id";
            $result = $db->sql_query($sql);
            $char_weapon = $db->sql_fetchfield('description');
            $db->sql_freeresult($result);
         
            $last_period   = $rpgrow['rpg_last_live_period'];
            $last_year      = $rpgrow['rpg_last_live_year'];
   
            if ($last_period)
            {
               $last_period_text = $user->lang['RPG_LAST_PERIOD_TEXT'][$last_year];
            }
            else
            {
               $last_period_text = '';
            }

            $template->assign_vars(array(
               'L_CINFO'            => $user->lang['RPG_CPROFILE'],
               'L_CDESC'            => $user->lang['RPG_CPDESC'],
               'L_CSAVE'            => $user->lang['RPG_SAVEC'],
               'L_CNAME'            => $user->lang['RPG_CNAME'],
               'L_CDEATH'            => $user->lang['RPG_DEATH_CHAR'],
               'L_CALTER'            => $user->lang['RPG_CALTER'],
               'L_CGENDER'            => $user->lang['RPG_GENDER'],
               'L_CJOB'            => $user->lang['RPG_CJOB'],
               'L_CRASSE'            => $user->lang['RPG_CRASSE'],
               'L_CWEAPON'            => $user->lang['RPG_CWEAPON'],
               'L_POWER'            => $user->lang['RPG_CHAR_POWER'] . ' ' . $user->lang['RPG_CHAR_CUR'] . ' / ' . $user->lang['RPG_CHAR_MAX'],
               'L_DEFENCE'            => $user->lang['RPG_CHAR_DEFENCE'] . ' ' . $user->lang['RPG_CHAR_CUR'] . ' / ' . $user->lang['RPG_CHAR_MAX'],
               'L_INTELLIGENCE'      => $user->lang['RPG_CHAR_INTELLIGENCE'] . ' ' . $user->lang['RPG_CHAR_CUR'] . ' / ' . $user->lang['RPG_CHAR_MAX'],
               'L_VITALITY'         => $user->lang['RPG_CHAR_VITALITY'] . ' ' . $user->lang['RPG_CHAR_CUR'] . ' / ' . $user->lang['RPG_CHAR_MAX'],
               'L_RPG_INVENTORY'      => $user->lang['RPG_INVENTORY'],
               'L_ITEM'            => $user->lang['RPG_ITEM_NAME'],
               'L_ITEM_POWER'         => $user->lang['RPG_ITEM_POWER'],
               'L_ITEM_DEFENCE'      => $user->lang['RPG_ITEM_DEFENCE'],
               'L_ITEM_INTELLIGENCE'   => $user->lang['RPG_ITEM_INTELLIGENCE'],
               'L_ITEM_VITALITY'      => $user->lang['RPG_ITEM_VITALITY'],
               'L_ITEM_USE_COUNT'      => $user->lang['RPG_ITEM_USE_COUNT'],
               'L_ITEM_RACE_USE'      => $user->lang['RPG_ITEM_USABLE'],
               'L_ITEM_WEIGHT'         => $user->lang['RPG_ITEM_WEIGHT'],
               'L_ITEM_USABLE'         => $user->lang['RPG_USABLE'],
               'L_DROP_ITEM'         => $user->lang['RPG_DROP_ITEM'],
         
               'CHAR_NAME'            => $char_name,
               'CHAR_AGE'            => $char_age,
               'CHAR_WEAPON'         => $char_weapon,
               'CHAR_GENDER'         => $user->lang['RPG_' . strtoupper($char_gender)],
               'CHAR_RACE'            => $char_race,
               'CHAR_OCCUPATION'      => $char_occupation,
               'CHAR_POWER_MAX'      => $char_power_max,
               'CHAR_POWER_CUR'      => $char_power_cur,
               'CHAR_DEFENCE_MAX'      => $char_defence_max,
               'CHAR_DEFENCE_CUR'      => $char_defence_cur,
               'CHAR_INTELLIGENCE_MAX'   => $char_intelligence_max,
               'CHAR_INTELLIGENCE_CUR'   => $char_intelligence_cur,
               'CHAR_VITALITY_MAX'      => $char_vitality_max,
               'CHAR_VITALITY_CUR'      => $char_vitality_cur,
               'CHAR_LAST_REG_TIME'   => $char_last_reg_time,

               'S_RPG_LAST_PERIOD'      => $last_period_text,
            ));

            // Create and display the inventory
            $sql = 'SELECT i.*, d.*, c.description AS cat_name, c.placement
               FROM ' . RPG_INVENTORY_TABLE . ' i, ' . RPG_ITEMS_TABLE . ' d, ' . RPG_ITEMS_CAT_TABLE . ' c
               WHERE i.user_id = ' . $user->data['user_id'] . '
                  AND i.item_id = d.item_id
                  AND d.cat_id = c.cat_id
               ORDER BY c.description, d.description';
            $result = $db->sql_query($sql);
            
            $num_items = $db->sql_affectedrows($result);
            
            if ($user->data['user_points'])
            {
               $template->assign_var('S_RPG_MONEY', true);
               $template->assign_vars(array(
                  'L_RPG_MONEY'   => $user->lang['RPG_MONEY'],
                  'RPG_MONEY'      => number_format($user->data['user_points'], 0 ,',', '.'),
               ));
            }
            
            if ($num_items)
            {
               $prev_cat_id = 0;
               $inv_weight = $config['rpg_max_inv_weight'];
            
               while ($row = $db->sql_fetchrow($result))
               {
                  $cat_id = $row['cat_id'];
                  if ($cat_id != $prev_cat_id)
                  {
                     $i = 0;
                     $template->assign_block_vars('category_row', array(
                        'RPG_CATEGORY'      => $row['cat_name'],
                        'RPG_CAT_PLACEMENT'   => ($row['placement'] == 0) ? $user->lang['RPG_PLACEMENT_PROFILE'] : $user->lang['RPG_PLACEMENT_BATTLE'])
                     );
                     $prev_cat_id = $cat_id;
                  }
            
                  $template->assign_block_vars('category_row.item_row', array(
                     'ITEM' => $row['description'],
                     'POWER' => $row['power'],
                     'DEFENCE' => $row['defence'],
                     'INTELLIGENCE' => $row['intelligence'],
                     'VITALITY' => $row['vitality'],
                     'USE_COUNT' => ($row['race_use_id'] == $char_race || $row['race_use_id'] == 0) ? (($row['usings'] == 0) ? $user->lang['RPG_INFINITE'] : $row['usings']) : $user->lang['NO'],
                     'RACE_USE' => ($row['race_use_id'] == $char_race || $row['race_use_id'] == 0) ? $user->lang['YES'] : $user->lang['NO'],
                     'WEIGHT' => $row['weight'],
            
                     'U_DROP_ITEM' => $basic_link . '&amp;action=drop_item&amp;inv_id=' . $row['inv_id'],
                  ));
            
                  if (($row['race_use_id'] == $char_race || $row['race_use_id'] == 0) && $row['placement'] == 0)
                  {
                     $template->assign_block_vars('category_row.item_row.use_item', array(
                        'L_USE_ITEM' => $user->lang['RPG_USE_ITEM'],
                        'U_USE_ITEM' => $basic_link . '&amp;action=use_item&amp;inv_id=' . $row['inv_id'],
                     ));
                  }
            
                  $i++;
                  $inv_weight -= $row['weight'];
               }
            
               $template->assign_vars(array(
                  'REMAIN_WEIGHT' => sprintf($user->lang['RPG_REMAIN_WEIGHT'], $inv_weight))
               );
            }
            else
            {
               $template->assign_vars(array(
                  'REMAIN_WEIGHT' => $user->lang['RPG_NO_INVENTORY'])
               );
            }
            
            $db->sql_freeresult($result);
      
         break;

         case 'death_chars':

            // Death characters
            $sql = 'SELECT * FROM ' . RPG_USER_CHARS_TABLE . '
               WHERE user_id = ' . $user->data['user_id'] . '
                  AND death_time > 0
               ORDER BY death_time DESC';
            $result = $db->sql_query($sql);
            
            $death_chars = $db->sql_affectedrows($result);
            
            if ($death_chars)
            {
               $template->assign_vars(array(
                  'L_CALTER'      => $user->lang['RPG_CALTER'],
                  'L_DEATH_TIME'   => $user->lang['RPG_DEATH_TIME'],
               ));

               while($row = $db->sql_fetchrow($result))
               {
                  $template->assign_block_vars('view_death_char', array(
                     'CHAR_NAME' => $row['name'],
                     'CHAR_AGE' => $row['age'],
                     'CHAR_DEATH_TIME' => $user->format_date($row['death_time']),
                  ));
               }
            }
            else
            {
               $template->assign_var('S_NO_DEATH_CHAR', true);
               $template->assign_vars(array(
                  'L_NO_DEATH_CHAR'   => $user->lang['RPG_NO_DEATH'],
               ));
            }

         break;

         case 'groups':

            $group_data = $membership_data = array();
            $member_group = $group_membership = 0;

            $sql = 'SELECT g.*, COUNT(u.user_id) AS total_members FROM ' . RPG_GROUP_TABLE . ' g
               LEFT JOIN ' . RPG_GROUP_USER_TABLE . ' u ON u.group_id = g.group_id
               GROUP BY g.group_desc, g.group_id
               ORDER BY g.group_desc, g.group_id';
            $result = $db->sql_query($sql);
            $total_groups = $db->sql_affectedrows($result);

            if ($total_groups)
            {
               while ($row = $db->sql_fetchrow($result))
               {
                  $group_data['desc'][$row['group_id']] = $row['group_desc'];
                  $group_data['members'][$row['group_id']] = intval($row['total_members']);
               }
            }

            $db->sql_freeresult($result);

            if ($total_groups)
            {
               $sql = 'SELECT * FROM ' . RPG_GROUP_PENDING_TABLE . '
                  WHERE user_id = ' . $user->data['user_id'];
               $result = $db->sql_query($sql);
               $group_pending = $db->sql_affectedrows($result);
               $db->sql_freeresult($result);

               if ($group_pending)
               {
                  $error = $user->lang['RPG_YOU_ARE_PENDING'];
                  $user_is_pending = true;
               }
               else
               {
                  $user_is_pending = false;
               }
   
               $member_group = $rpg->rpg_group($user->data['user_id']);
               $group_membership = $group_pending + (($member_group) ? 1 : 0);
   
               if ($group_membership)
               {
                  if ($submit && $action == 'leave_group')
                  {
                     $sql = 'DELETE FROM ' . RPG_GROUP_USER_TABLE . '
                        WHERE user_id = ' . $user->data['user_id'];
                     $db->sql_query($sql);

                     add_log('user', $user->data['user_id'], 'RPG_LOG_JOF_GROUP', $group_data['desc'][$member_group], $user->data['username']);

                     $group_members = $group_data['members'][$member_group] - 1;

                     if (!$group_members)
                     {
                        $sql = 'DELETE FROM ' . RPG_GROUP_TABLE . '
                           WHERE group_id = ' . $member_group;
                        $db->sql_query($sql);

                        $sql = 'DELETE FROM ' . RPG_GROUP_PENDING_TABLE . '
                           WHERE group_id = ' . $member_group;
                        $db->sql_query($sql);

                        add_log('user', $user->data['user_id'], 'RPG_LOG_DEL_GROUP', $group_data['desc'][$member_group], $user->data['username']);
                     }

                     redirect($basic_link);
                  }
               }
   
               $db->sql_freeresult($result);
            }
            else
            {
               $template->assign_var('S_NO_GROUP', true);
            }

            if (!$group_membership)
            {
               $s_hidden_fields = array(
                  'action'   => 'add_group',
               );

               $template->assign_vars(array(
                  'S_ADD_GROUP'         => true,
                  'S_FORM_ACTION'         => $basic_link,
                  'S_HIDDEN_FIELDS_ADD'   => build_hidden_fields($s_hidden_fields),
               ));

               if ($submit && $action == 'add_group')
               {
                  $group_desc = utf8_normalize_nfc(request_var('group_desc', '', true));

                  $group_names = $group_data['desc'];
                  reset($group_names);

                  foreach ($group_names as $key => $value)
                  {
                     if (strtolower(utf8_clean_string($value)) == strtolower(utf8_clean_string($group_desc)))
                     {
                        $error = $user->lang['RPG_GROUP_EXIST'];
                        break;
                     }
                     }

                  if (!$error)
                  {
                     $sql = 'INSERT INTO ' . RPG_GROUP_TABLE . ' ' . $db->sql_build_array('INSERT', array(
                        'group_desc'   => $group_desc));
                     $db->sql_query($sql);

                     $next_group_id = $db->sql_nextid();
   
                     $sql = 'INSERT INTO ' . RPG_GROUP_USER_TABLE . ' ' . $db->sql_build_array('INSERT', array(
                        'group_id'      => $next_group_id,
                        'user_id'      => $user->data['user_id'],
                     ));
                     $db->sql_query($sql);
   
                     add_log('user', $user->data['user_id'], 'RPG_LOG_ADD_GROUP', $group_desc, $user->data['username']);

                     redirect($basic_link);
                  }
               }
            }

            if ($member_group)
            {
               $sql = 'SELECT u.username, u.user_colour, u.user_id FROM ' . USERS_TABLE . ' u, ' . RPG_GROUP_USER_TABLE . ' g
                  WHERE g.user_id = u.user_id
                     AND g.group_id = ' . $member_group . '
                  ORDER BY u.username, u.user_id';
               $result = $db->sql_query($sql);
               $total_members = $db->sql_affectedrows($result);

               if ($total_members)
               {
                  $template->assign_var('S_MEMBER_LIST', true);

                  while ($row = $db->sql_fetchrow($result))
                  {
                     $template->assign_block_vars('rpg_user_row', array(
                        'GROUP_USER'      => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
                     ));
                  }
   
                  $s_hidden_fields = array(
                     'action'    => 'leave_group',
                  );
   
                  $template->assign_vars(array(
                     'GROUP_TITLE'         => $group_data['desc'][$member_group],
                     'GROUP_USER'         => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
                     'S_HIDDEN_FIELDS_LEAVE'   => build_hidden_fields($s_hidden_fields),
                     'S_FORM_ACTION'         => $basic_link,
                  ));
               }

               $db->sql_freeresult($result);
            }

            if ($group_membership)
            {
               $sql = 'SELECT u.username, u.user_colour, u.user_id, g.*, p.accept_code
                  FROM ' . RPG_GROUP_PENDING_TABLE . ' p, ' . USERS_TABLE . ' u, ' . RPG_GROUP_TABLE . ' g
                  WHERE p.user_id = u.user_id
                     AND p.group_id = g.group_id
                     AND p.accept_user = ' . $user->data['user_id'];
               $result = $db->sql_query($sql);
               $group_pending = $db->sql_affectedrows($result);

               if ($group_pending)
               {
                  while ($row = $db->sql_fetchrow($result))
                  {
                     $s_hidden_fields = array(
                        'accept_code'    => $row['accept_code'],
                        'group_id'      => $row['group_id'],
                        'user_id'      => $row['user_id'],
                        'action'      => 'pending_user',
                     );
   
                     $template->assign_block_vars('pending_row', array(
                        'PENDING_USER'            => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
                        'GROUP_TITLE'            => $row['group_desc'],
   
                        'S_FORM_ACTION'            => $basic_link,
                        'S_HIDDEN_FIELDS_PENDING'   => build_hidden_fields($s_hidden_fields),
                     ));
                  }

                  $db->sql_freeresult($result);

                  if ($submit && $action == 'pending_user' && $group_id && $user_id && $accept_code)
                  {
                     $sql = 'SELECT * FROM ' . RPG_GROUP_PENDING_TABLE . '
                        WHERE group_id = ' . $group_id . '
                           AND user_id = ' . $user_id . '
                           AND accept_user = ' . $user->data['user_id'] . "
                           AND accept_code = '" . $accept_code . "'";
                     $result = $db->sql_query($sql);
                     $accept_user = $db->sql_affectedrows($result);
                     $db->sql_freeresult($result);

                     if ($accept_user)
                     {
                        if ($rpg_user_pending)
                        {
                           $sql = 'DELETE FROM ' . RPG_GROUP_PENDING_TABLE . '
                              WHERE group_id = ' . $group_id . '
                                 AND user_id = ' . $user_id . '
                                 AND accept_user = ' . $user->data['user_id'] . "
                                 AND accept_code = '" . $accept_code . "'";
                           $db->sql_query($sql);

                           $sql = 'SELECT * FROM ' . RPG_GROUP_PENDING_TABLE . '
                              WHERE group_id = ' . $group_id . '
                                 AND user_id = ' . $user_id;
                           $result = $db->sql_query($sql);
                           $accept_user = $db->sql_affectedrows($result);
                           $db->sql_freeresult($result);

                           if (!$accept_user)
                           {
                              $pm_action = 'post';
                              $pm_to_users = array();
         
                              $pm_subject   = $user->lang['RPG_PM_SUBJECT_ACCEPT'];
                              $pm_message   = sprintf($user->lang['RPG_PM_MESSAGE_ACCEPT'], $group_data['desc'][$group_id], '<a href="' . append_sid($basic_link) . '">', '</a>');
         
                              $address_list['u'][$user_id] = 'to';
                                    
                              $pm_data = array(
                                 'msg_id'            => 0,
                                 'from_user_id'         => $user->data['user_id'],
                                 'from_user_ip'         => $user->ip,
                                 'from_username'         => $user->data['username'],
                                 'reply_from_root_level'   => 0,
                                 'reply_from_msg_id'      => 0,
                                 'icon_id'            => 0,
                                 'enable_sig'         => 0,
                                 'enable_bbcode'         => 0,
                                 'enable_smilies'      => 0,
                                 'enable_urls'         => 0,
                                 'bbcode_bitfield'      => '',
                                 'bbcode_uid'         => '',
                                 'message'            => $pm_message,
                                 'address_list'         => $address_list,
                              );
         
                              if (!function_exists('submit_pm'))
                              {
                                 include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
                              }
         
                              $msg_id = submit_pm($pm_action, $pm_subject, $pm_data);

                              $sql = 'INSERT INTO ' . RPG_GROUP_USER_TABLE . ' ' . $db->sql_build_array('INSERT', array(
                                 'group_id'      => $group_id,
                                 'user_id'      => $user_id,
                              ));
                              $db->sql_query($sql);

                              $sql = 'SELECT username FROM ' . USERS_TABLE . '
                                 WHERE user_id = ' . $user_id;
                              $result = $db->sql_query($result);
                              $username = $db->sql_fetchfield('username');
                              $db->sql_freeresult($result);

                              add_log('user', $user->data['user_id'], 'RPG_LOG_JIN_GROUP', $group_data['desc'][$group_id], $username);

                           }
                        }
                        else
                        {
                           $sql = 'DELETE FROM ' . RPG_GROUP_PENDING_TABLE . '
                              WHERE group_id = ' . $group_id . '
                                 AND user_id = ' . $user_id;
                           $db->sql_query($sql);

                           $pm_action = 'post';
                           $pm_to_users = array();
      
                           $pm_subject   = $user->lang['RPG_PM_SUBJECT_DENY'];
                           $pm_message   = sprintf($user->lang['RPG_PM_MESSAGE_DENY'], $group_data['desc'][$group_id]);
      
                           $address_list['u'][$user_id] = 'to';
                                 
                           $pm_data = array(
                              'msg_id'            => 0,
                              'from_user_id'         => $user->data['user_id'],
                              'from_user_ip'         => $user->ip,
                              'from_username'         => $user->data['username'],
                              'reply_from_root_level'   => 0,
                              'reply_from_msg_id'      => 0,
                              'icon_id'            => 0,
                              'enable_sig'         => 0,
                              'enable_bbcode'         => 0,
                              'enable_smilies'      => 0,
                              'enable_urls'         => 0,
                              'bbcode_bitfield'      => '',
                              'bbcode_uid'         => '',
                              'message'            => $pm_message,
                              'address_list'         => $address_list,
                           );
      
                           if (!function_exists('submit_pm'))
                           {
                              include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
                           }
      
                           $msg_id = submit_pm($pm_action, $pm_subject, $pm_data);
                        }
                     }                        

                     redirect($basic_link);
                  }
               }
               else
               {   
                  $db->sql_freeresult($result);
               }

               $s_hidden_fields = array(
                  'action'   => 'leave_group',
               );

               $template->assign_vars(array(
                  'S_FORM_ACTION'      => $basic_link,
               ));
            }
            else
            {
               if ($submit && $action == 'join_group' && $group_id)
               {
                  if ($group_data['members'][$group_id])
                  {
                     $sql = 'SELECT user_id FROM ' . RPG_GROUP_USER_TABLE . '
                        WHERE group_id = ' . $group_id;
                     $result = $db->sql_query($sql);

                     $pm_action = 'post';
                     $pm_to_users = array();

                     $pm_subject   = $user->lang['RPG_PM_SUBJECT_JOIN'];
                     $pm_message   = sprintf($user->lang['RPG_PM_MESSAGE_JOIN'], $user->data['username'], '<a href="' . append_sid($basic_link) . '">', '</a>');

                     while ($row = $db->sql_fetchrow($result))
                     {
                        $address_list['u'][$row['user_id']] = 'to';
                        $pm_to_users[] = $row['user_id'];
                        $accept_code[$row['user_id']] = md5($row['user_id'] . time() . $user->data['user_id']);
                     }

                     $db->sql_freeresult($result);
                           
                     $pm_data = array(
                        'msg_id'            => 0,
                        'from_user_id'         => $user->data['user_id'],
                        'from_user_ip'         => $user->ip,
                        'from_username'         => $user->data['username'],
                        'reply_from_root_level'   => 0,
                        'reply_from_msg_id'      => 0,
                        'icon_id'            => 0,
                        'enable_sig'         => 0,
                        'enable_bbcode'         => 0,
                        'enable_smilies'      => 0,
                        'enable_urls'         => 0,
                        'bbcode_bitfield'      => '',
                        'bbcode_uid'         => '',
                        'message'            => $pm_message,
                        'address_list'         => $address_list,
                     );

                     if (!function_exists('submit_pm'))
                     {
                        include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
                     }

                     $msg_id = submit_pm($pm_action, $pm_subject, $pm_data);

                     if ($msg_id)
                     {   
                        for ($i = 0; $i < sizeof($pm_to_users); $i++)
                        {
                           $user_id = $pm_to_users[$i];

                           $sql = 'INSERT INTO ' . RPG_GROUP_PENDING_TABLE . ' ' . $db->sql_build_array('INSERT', array(
                              'group_id'      => $group_id,
                              'user_id'      => $user->data['user_id'],
                              'accept_user'   => $user_id,
                              'accept_code'   => $accept_code[$user_id],
                           ));
                           $db->sql_query($sql);
                        }

                        redirect($basic_link);
                     }
                  }
                  else
                  {                     
                     $sql = 'INSERT INTO ' . RPG_GROUP_USER_TABLE . ' ' . $db->sql_build_array('INSERT', array(
                        'group_id'      => $group_id,
                        'user_id'      => $user->data['user_id'],
                     ));
                     $db->sql_query($sql);
                  }

                  add_log('user', $user->data['user_id'], 'RPG_LOG_JIN_GROUP', $group_data['desc'][$group_id], $user->data['username']);

                  redirect($basic_link);
               }

               $group_names = (isset($group_data['desc'])) ? $group_data['desc'] : array();
               reset($group_names);

               if (sizeof($group_names) && !$user_is_pending)
               {
                  if (sizeof($group_names) > $config['posts_per_page'])
                  {
                     $pagination = generate_pagination($basic_link_smode . $mode, sizeof($group_names), $config['posts_per_page'], $start, true);
                  }
                  else
                  {
                     $pagination = '';
                  }

                  $s_hidden_fields = array(
                     'action'   => 'join_group',
                  );

                  $template->assign_vars(array(
                     'PAGINATION'         => $pagination,
                     'PAGE_NUMBER'          => on_page(sizeof($group_names), $config['posts_per_page'], $start),
                     'TOTAL_POSTS'         => (sizeof($group_names) == 1) ? $user->lang['RPG_VIEW_GROUP_PAGE'] : sprintf($user->lang['RPG_VIEW_GROUP_PAGES'], sizeof($group_names)),

                     'S_GROUP_LIST'         => true,
                     'S_FORM_ACTION'         => $basic_link,
                     'S_HIDDEN_FIELDS_JOIN'   => build_hidden_fields($s_hidden_fields),
                  ));
   
                  $group_key_tmp = $group_value_tmp = array();

                  reset($group_names);

                  foreach ($group_names as $key => $value)
                  {
                     $group_key_tmp[]   = $key;
                     $group_value_tmp[]   = $value;
                  }

                  $max_values = (sizeof($group_names) - $start);
                  if ($max_values > $config['posts_per_page'])
                  {
                     $max_values = $config['posts_per_page'];
                  }
                  $max_values += $start;

                  for ($i = $start; $i < $max_values; $i++)
                  {
                     $key      = $group_key_tmp[$i];
                     $value      = $group_value_tmp[$i];

                     if (!isset($group_data['members'][$key]) || $group_data['members'][$key] == 0)
                     {
                        $group_members = $user->lang['RPG_NO_GROUP_MEMBERS'];
                     }
                     else if ($group_data['members'][$key] == 1)
                     {
                        $group_members = $user->lang['RPG_GROUP_MEMBER'];
                     }
                     else
                     {
                        $group_members = sprintf($user->lang['RPG_GROUP_MEMBERS'], $group_data['members'][$key]);
                     }

                     $template->assign_block_vars('group_row', array(
                        'GROUP_ID'      => $key,
                        'GROUP_TITLE'   => $value,
                        'GROUP_MEMBERS'   => $group_members,
                     ));
                  }
               }
            }

         break;
      }

      $template->assign_vars(array(
         'L_TITLE'      => $user->lang['UCP_RPG_' . strtoupper($mode)],

         'ERROR'         => $error,
         'GROUP_DESC'   => (isset($group_desc)) ? $group_desc : '',

         'S_HIDDEN_FIELDS'   => (is_array($s_hidden_fields)) ? build_hidden_fields($s_hidden_fields) : $s_hidden_fields,
         'S_UCP_ACTION'      => $this->u_action)
      );

      // Set desired template
      $this->tpl_name = 'ucp_rpg_' . $mode;
      $this->page_title = 'UCP_RPG_' . strtoupper($mode);
   }
}

?>


2. In dem Paket sollte BBcodes mitinstalliert werden die ich aber nicht finde. Hat die zufällig jemand?

Vielen dank im Voraus.

Zurück zu „[3.0.x] Mod Support“