RPG-Tools: 2 mal Hilfe
Verfasst: 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.
2. In dem Paket sollte BBcodes mitinstalliert werden die ich aber nicht finde. Hat die zufällig jemand?
Vielen dank im Voraus.
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);
}
}
?>
Vielen dank im Voraus.