Seite 1 von 1

RPG-Tools: 2 mal Hilfe

Verfasst: 20.04.2011 20:12
von Reyko
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&mode=$mode");
		$basic_link_smode	= append_sid("{$phpbb_root_path}ucp.$phpEx", "i=rpg_character&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 . '&action=drop_item&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 . '&action=use_item&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.