[addons] Add and remove stats
CEPE6AH Дата: Понедельник, 11.04.2011, 10:33 | Сообщение # 1
Подполковник
Группа: Проверенные
Сообщений: 144
Статус: Оффлайн
1-ое) Заменить функцию add_stats в includes\character.class.php на вот
Code
function add_stats($name) { if(isset($_SESSION['pass']) && isset($_SESSION['user'])) { require("config.php"); require("includes/validate.class.php"); $login = stripslashes($_SESSION['user']); $strength = stripslashes($_POST['str']); $dexterity = stripslashes($_POST['agi']); $vitality = stripslashes($_POST['vit']); $energy = stripslashes($_POST['ene']); $command = stripslashes($_POST['com']); $online_check = mssql_query("SELECT ConnectStat FROM MEMB_STAT WHERE memb___id='$login'"); $online_check_row = mssql_fetch_row($online_check); $result = mssql_query("select vitality,strength,energy,dexterity,levelupPoint,leadership,class from Character WHERE Name='$name'"); $row = mssql_fetch_row($result); $points = $row[4]; if (substr(`$strength`,1,1)=='-'){$new_str = $row[1] - $strength;$points += $strength;} else {$new_str = $row[1] + $strength; $points -=$strength;} if (substr(`$dexterity`,1,1)=='-'){$new_agi = $row[3] - $dexterity;$points += $dexterity;} else {$new_agi = $row[3] + $dexterity; $points -=$dexterity;} if (substr(`$vitality`,1,1)=='-'){$new_vit = $row[0] - $vitality;$points += $vitality;} else {$new_vit = $row[0] + $vitality; $points -=$vitality;} if (substr(`$energy`,1,1)=='-'){$new_eng = $row[2] - $energy;$points += $energy;} else {$new_eng = $row[2] + $energy; $points -=$energy;} if (substr(`$command`,1,1)=='-'){$new_com = $row[5] - $command;$points += $command;} else {$new_com = $row[5] + $command; $points -=$command;} if($info[1] >= 64 && $info[1] <= 79){$new_com = $new_comm;} else {$new_comm = $mmw[min_stats];} if ($online_check_row[0] != 0) {$error = 1; echo $die_start . mmw_lang_account_is_online_must_be_logged_off . $die_end; } if ($points < 0) {$error = 1; echo $die_start . mmw_lang_dont_have_point ." $row[4]! $die_end"; } if($new_str>$mmw[max_stats] || $new_agi>$mmw[max_stats] || $new_vit>$mmw[max_stats] || $new_eng>$mmw[max_stats] || $new_com>$mmw[max_stats]) {$error=1; echo "$die_start $mmw[max_stats] " . mmw_lang_max_point . $die_end; } if($new_str<$mmw[min_stats] || $new_agi<$mmw[min_stats] || $new_vit<$mmw[min_stats] || $new_eng<$mmw[min_stats] || $new_comm<$mmw[min_stats]) {$error=1; echo "$die_start $mmw[min_stats] " . mmw_lang_min_point . $die_end; } if($error != 1) { mssql_query("UPDATE Character SET [Vitality]='$new_vit',[Strength]='$new_str',[Energy]='$new_eng',[Dexterity]='$new_agi',[leadership]='$new_com',[LevelUpPoint]='$points' WHERE Name='$name'"); echo $okey_start . mmw_lang_character_stats_added . " $points $okey_end"; writelog("stats","Character <b>$name</b> Has Been <font color=#FF0000>Updated</font> Stats with the next -> Strength: $new_str|Agiltiy: $new_agi|Vitality: $new_vit|Energy: $new_eng|Command: $new_com, Levelup Points Left: $points"); } } }
2-ое) Добавить в config.php
Code
$mmw[min_stats] = '10';
3-ье) Заменить в modules\user\char.php
Code
$add_stats = 'Strength <input name="str" type="text" size="5" maxlength="5"><br>'; $add_stats = $add_stats.'Agility <input name="agi" type="text" size="5" maxlength="5"><br>'; $add_stats = $add_stats.'Vitality <input name="vit" type="text" size="5" maxlength="5"><br>'; $add_stats = $add_stats.'Energy <input name="ene" type="text" size="5" maxlength="5"><br>'; if($info[1] >= 64 && $info[1] <= 79){$add_stats = $add_stats.'Command <input name="com" type="text" size="5" maxlength="5"><br>';}
на
Code
$add_stats = 'Strength <input name="str" type="text" size="5" maxlength="6"><br>'; $add_stats = $add_stats.'Agility <input name="agi" type="text" size="5" maxlength="6"><br>'; $add_stats = $add_stats.'Vitality <input name="vit" type="text" size="5" maxlength="6"><br>'; $add_stats = $add_stats.'Energy <input name="ene" type="text" size="5" maxlength="6"><br>'; if($info[1] >= 64 && $info[1] <= 79){$add_stats = $add_stats.'Command <input name="com" type="text" size="5" maxlength="6"><br>';}
4-ое) Заменить в modules\user\char.php
Code
if($info[11] <= 0) {$addpoint = mmw_lang_no_up_point_found;} elseif($info[11] >= 1) {$addpoint = "<form action='' method='post' name='stats'>".mmw_lang_you_have.": $info[11]<br><input name='stats_char' type='hidden' value='$char_set'> $add_stats <input type='submit' name='Submit' value='".mmw_lang_add_point."'></form>";}
на
Code
$addpoint = "<form action='' method='post' name='stats'>".mmw_lang_you_have.": $info[11]<br><input name='stats_char' type='hidden' value='$char_set'> $add_stats <input type='submit' name='Submit' value='".mmw_lang_add_point."'></form>";
Всем спасибо все свободны ... =))
Реклама
ХЗ
CEPE6AH Дата: Понедельник, 11.04.2011, 10:39 | Сообщение # 2
Подполковник
Группа: Проверенные
Сообщений: 144
Статус: Оффлайн
ну в остальном сами разберётесь... ну там в lang подобавляете чего нету или переименуете что есть... оно переделывает классический "Добавить пойнты"....
ХЗ
kRiak Дата: Понедельник, 11.04.2011, 11:14 | Сообщение # 3
Генерал-лейтенант
Группа: Проверенные
Сообщений: 615
Статус: Оффлайн
Сделал работает И как раз то что хотел
Бес.
Сообщение отредактировал kRiak - Понедельник, 11.04.2011, 11:15
diablo21 Дата: Понедельник, 11.04.2011, 12:48 | Сообщение # 4
Лейтенант
Группа: Проверенные
Сообщений: 35
Статус: Оффлайн
by default the web has add stats, what is better this one or the original ?
speka07 Дата: Понедельник, 11.04.2011, 16:32 | Сообщение # 5
Генерал-майор
Группа: Проверенные
Сообщений: 447
Статус: Оффлайн
А что это такой ?:) бо ставить пока что влом )
Quote
Add and remove stats
- Это типа сбрасывать статы.. ?
kRiak Дата: Понедельник, 11.04.2011, 16:44 | Сообщение # 6
Генерал-лейтенант
Группа: Проверенные
Сообщений: 615
Статус: Оффлайн
Это то что я просил) ЧТобы можно было перекинуть статы. Тоесть... У тебя 32000 в силе. ты хочешь их в агилу. Пишешь -2000 И у тебя в свободные уходят 2000 ну и кидаешь их в аги
Бес.
Yura Дата: Понедельник, 11.04.2011, 18:46 | Сообщение # 7
Генерал-майор
Группа: Проверенные
Сообщений: 176
Статус: Оффлайн
Code
f (substr(`$vitality`,1,1)=='-') { $new_vit = $row[0] - $vitality;$points += $vitality; } else { $new_vit = $row[0] + $vitality; $points -=$vitality; }
Не совсем понятен смысл такого кода. Если пользователь введет "-200"(допустим в vitality), то ему ПРИБАВИТСЯ 200 поинтов(в vitality), а из свободных вычтется 200. Идея же была другая. Вообще все эти условия можно убрать. Code
$vitality = (isset($_POST["vitality"]) : (integer)$_POST["vitality"] ? 0; $new_vit = $old_vitality + $vitality; $free_points -= $vitality;
А дальше уже проверки на можно ли столько поинтов вкачать и т. д. И переменную error объяви до условий проверки на ошибки.
////
Сообщение отредактировал Yura - Понедельник, 11.04.2011, 18:49
kRiak Дата: Понедельник, 11.04.2011, 20:36 | Сообщение # 8
Генерал-лейтенант
Группа: Проверенные
Сообщений: 615
Статус: Оффлайн
Главное что работает.
Бес.
Yura Дата: Понедельник, 11.04.2011, 21:05 | Сообщение # 9
Генерал-майор
Группа: Проверенные
Сообщений: 176
Статус: Оффлайн
А на то что быстрее и правильнее нам посрать?
////
kRiak Дата: Понедельник, 11.04.2011, 21:13 | Сообщение # 10
Генерал-лейтенант
Группа: Проверенные
Сообщений: 615
Статус: Оффлайн
Культурней было бы покакать.
Бес.
CEPE6AH Дата: Понедельник, 11.04.2011, 22:52 | Сообщение # 11
Подполковник
Группа: Проверенные
Сообщений: 144
Статус: Оффлайн
Quote (Yura )
Code
f (substr(`$vitality`,1,1)=='-') {
$new_vit = $row[0] - $vitality;$points += $vitality;
} else {
$new_vit = $row[0] + $vitality;
$points -=$vitality;
}
Не совсем понятен смысл такого кода. Если пользователь введет "-200"(допустим в vitality), то ему ПРИБАВИТСЯ 200 поинтов(в vitality), а из свободных вычтется 200. Идея же была другая. Вообще все эти условия можно убрать. Code $vitality = (isset($_POST["vitality"]) : (integer)$_POST["vitality"] ? 0; $new_vit = $old_vitality + $vitality; $free_points -= $vitality;
А дальше уже проверки на можно ли столько поинтов вкачать и т. д. И переменную error обНъяви до условий проверки на ошибки.
Yura , Я галимый ламер в этом деле.... толком нечего почти не знаю так чисто случайно всё работает =)) я даже понятия не имею как я додумался это осуществить... =))
Реклама
ХЗ
CEPE6AH Дата: Понедельник, 11.04.2011, 23:17 | Сообщение # 12
Подполковник
Группа: Проверенные
Сообщений: 144
Статус: Оффлайн
Quote (Yura )
А на то что быстрее и правильнее нам посрать?
А если честно, я не могу понять как будет работать предложенный тобой вариант....
Quote (Yura )
Не совсем понятен смысл такого кода. Если пользователь введет "-200"(допустим в vitality), то ему ПРИБАВИТСЯ 200 поинтов(в vitality), а из свободных вычтется 200. Идея же была другая. Вообще все эти условия можно убрать.
Нет если он введёт -200 в виталу, то у него 200 с виталы снимет, а в свободные добавит 200. А код (substr(`$vitality`,1,1)=='-') определяет какой знак стоит первым если там минус то оно отнимает а если там нечего нет или + то плюсует...
ХЗ
Yura Дата: Вторник, 12.04.2011, 09:44 | Сообщение # 13
Генерал-майор
Группа: Проверенные
Сообщений: 176
Статус: Оффлайн
Именно! Если vitality ОТРИЦАТЕЛЬНЫЙ, то мы из old_vitality ВЫЧИТАЕМ vitality. 500 - ( -200) = 700. А знак числа легко узнать сравниванием с нулем. if( vitality < 0) echo "vitality < 0"; if( vitality > 0) echo "vitality > 0";
////
CEPE6AH Дата: Вторник, 12.04.2011, 09:52 | Сообщение # 14
Подполковник
Группа: Проверенные
Сообщений: 144
Статус: Оффлайн
Quote (Yura )
Именно! Если vitality ОТРИЦАТЕЛЬНЫЙ, то мы из old_vitality ВЫЧИТАЕМ vitality. 500 - ( -200) = 700. А знак числа легко узнать сравниванием с нулем. if( vitality < 0) echo "vitality < 0"; if( vitality > 0) echo "vitality > 0";
Всёравно мне мой нравится он более понятный для меня =)) и работает нормально кроме одного момента когда пишешь -1 тогда он выписывает СКУЛ инекция...
ХЗ
kRiak Дата: Среда, 13.04.2011, 01:35 | Сообщение # 15
Генерал-лейтенант
Группа: Проверенные
Сообщений: 615
Статус: Оффлайн
Те статы которые перекачаны.. Почему то не убирает..
Бес.
CEPE6AH Дата: Среда, 13.04.2011, 19:40 | Сообщение # 16
Подполковник
Группа: Проверенные
Сообщений: 144
Статус: Оффлайн
В смысле перекиданы?
ХЗ
kRiak Дата: Среда, 13.04.2011, 23:36 | Сообщение # 17
Генерал-лейтенант
Группа: Проверенные
Сообщений: 615
Статус: Оффлайн
Перекачаны. Тоесть в игре один перекачал статы. должно быть 32767 а он сделал 33000. И понятно что они в минус пошли. (перекачал) А скинуть их уже модуль это не может (
Бес.
CEPE6AH Дата: Пятница, 12.08.2011, 16:04 | Сообщение # 18
Подполковник
Группа: Проверенные
Сообщений: 144
Статус: Оффлайн
Первый пункт испорчен там одна буква лишняя вот верный код:
Code
function add_stats($name) { if(isset($_SESSION['pass']) && isset($_SESSION['user'])) { require("config.php"); require("includes/validate.class.php"); $login = stripslashes($_SESSION['user']); $strength = stripslashes($_POST['str']); $dexterity = stripslashes($_POST['agi']); $vitality = stripslashes($_POST['vit']); $energy = stripslashes($_POST['ene']); $command = stripslashes($_POST['com']); $online_check = mssql_query("SELECT ConnectStat FROM MEMB_STAT WHERE memb___id='$login'"); $online_check_row = mssql_fetch_row($online_check); $result = mssql_query("select vitality,strength,energy,dexterity,levelupPoint,leadership,class from Character WHERE Name='$name'"); $row = mssql_fetch_row($result); $points = $row[4]; if (substr(`$strength`,1,1)=='-'){$new_str = $row[1] - $strength;$points += $strength;} else {$new_str = $row[1] + $strength; $points -=$strength;} if (substr(`$dexterity`,1,1)=='-'){$new_agi = $row[3] - $dexterity;$points += $dexterity;} else {$new_agi = $row[3] + $dexterity; $points -=$dexterity;} if (substr(`$vitality`,1,1)=='-'){$new_vit = $row[0] - $vitality;$points += $vitality;} else {$new_vit = $row[0] + $vitality; $points -=$vitality;} if (substr(`$energy`,1,1)=='-'){$new_eng = $row[2] - $energy;$points += $energy;} else {$new_eng = $row[2] + $energy; $points -=$energy;} if (substr(`$command`,1,1)=='-'){$new_com = $row[5] - $command;$points += $command;} else {$new_com = $row[5] + $command; $points -=$command;} if($info[1] >= 64 && $info[1] <= 79){$new_com = $new_comm;} else {$new_comm = $mmw[min_stats];} if ($online_check_row[0] != 0) {$error = 1; echo $die_start . mmw_lang_account_is_online_must_be_logged_off . $die_end; } if ($points < 0) {$error = 1; echo $die_start . mmw_lang_dont_have_point ." $row[4]! $die_end"; } if($new_str>$mmw[max_stats] || $new_agi>$mmw[max_stats] || $new_vit>$mmw[max_stats] || $new_eng>$mmw[max_stats] || $new_com>$mmw[max_stats]) {$error=1; echo "$die_start $mmw[max_stats] " . mmw_lang_max_point . $die_end; } if($new_str<$mmw[min_stats] || $new_agi<$mmw[min_stats] || $new_vit<$mmw[min_stats] || $new_eng<$mmw[min_stats] || $new_com<$mmw[min_stats]) {$error=1; echo "$die_start $mmw[min_stats] " . mmw_lang_min_point . $die_end; } if($error != 1) { mssql_query("UPDATE Character SET [Vitality]='$new_vit',[Strength]='$new_str',[Energy]='$new_eng',[Dexterity]='$new_agi',[leadership]='$new_com',[LevelUpPoint]='$points' WHERE Name='$name'"); echo $okey_start . mmw_lang_character_stats_added . " $points $okey_end"; writelog("stats","Character <b>$name</b> Has Been <font color=#FF0000>Updated</font> Stats with the next -> Strength: $new_str|Agiltiy: $new_agi|Vitality: $new_vit|Energy: $new_eng|Command: $new_com, Levelup Points Left: $points"); } } }
ХЗ
Сообщение отредактировал CEPE6AH - Пятница, 12.08.2011, 16:05
Пользователь
Меню сайта
Реклама
Поиск
Наш опрос
Мини-чат
Статистика