function add_resource($id_resource) { global $user_id, $char, $_SESSION; if ($id_resource > 0) { $res = mysql_fetch_array(myquery("SELECT * FROM craft_resource WHERE id={$id_resource}")); $Res = new Res($res); $check = $Res->add_user(0, $user_id); if ($check == 1) { setCraftTimes($user_id, 6, 1, 1); echo 'Ты добыл: ' . $res['name']; myquery("insert into craft_stat (build_id, gp, res_id, dob, vip, dat, user, type) values (0, 0, {$id_resource}, 0, 1, " . time() . ", {$user_id}, 'z')"); if (isset($_SESSION['cur_get_mining'])) { $dob = explode('###', $_SESSION['cur_get_mining']); $find = 0; for ($i = 0; $i < sizeof($dob); $i++) { $cur_dob = explode("&&&", $dob[$i]); if ($cur_dob[0] == $res['name']) { $find = 1; $col = (int) $cur_dob[1] + 1; $dob[$i] = $res['name'] . '&&&' . $col; } } if ($find == 0) { $dob[] = $res['name'] . '&&&1'; } $_SESSION['cur_get_mining'] = implode("###", $dob); } else { $str = $res['name'] . '&&&1'; $_SESSION['cur_get_mining'] = $str; } } else { echo 'У Вас недостаточно свободного места в инвентаре!'; } } }
public function drop_loot($user_id) { if ($this->error == 1) { return; } if ($this->npc['dropable'] == 1) { $seldrop = myquery("SELECT * FROM game_npc_drop WHERE npc_id=" . $this->templ['npc_id'] . ";"); if ($seldrop != false and mysql_num_rows($seldrop)) { $sum_chance = 0; $massiv = array(0); $m_last = 1; $mes = ""; $lcm = array(); $str = ""; $r = 0; $no_loot = 0; //Обработаем профессию "Охотник" if ($this->templ['npc_id'] == npc_id_olen) { if (checkCraftTrain($user_id, 8)) { $r = $r + 2 * getCraftLevel($user_id, 8); } else { $no_loot = 1; } } while ($chance = mysql_fetch_array($seldrop)) { $lcm[] = $chance['random_max']; } mysql_data_seek($seldrop, 0); $lcm = lcm_arr($lcm); while ($chance = mysql_fetch_array($seldrop)) { $this_chance = ($chance['random'] + $r) * $lcm / gcd($lcm, $chance['random_max']); $massiv = array_merge($massiv, array_fill($m_last, $this_chance, $chance)); $m_last += $this_chance; } if ($m_last < $lcm + 1) { $massiv = array_merge($massiv, array_fill($m_last, $lcm + 1 - $m_last, array('items_id' => 0))); } $drop = $massiv[mt_rand(1, $lcm)]; if ($drop['items_id'] != 0 and $no_loot == 0) { $it_user_id = 0; $priznak = 2; $kol_predmetov = mt_rand($drop['mincount'], $drop['maxcount']); $map_name = 0; $map_xpos = 0; $map_ypos = 0; for ($cikl = 1; $cikl <= $kol_predmetov; $cikl++) { $add_result = array(0); if ($drop['kuda'] == 1) { $it_user_id = $user_id; $priznak = 0; //проверим вес if ($drop['drop_type'] == 1) { $item = mysql_fetch_array(myquery("SELECT * FROM game_items_factsheet WHERE id=" . $drop['items_id'] . "")); } elseif ($drop['drop_type'] == 2) { $item = mysql_fetch_array(myquery("SELECT * FROM craft_resource WHERE id=" . $drop['items_id'] . "")); } list($CW, $CC) = mysql_fetch_array(myquery("SELECT CW,CC FROM view_active_users WHERE user_id={$it_user_id}")); $prov = mysqlresult(myquery("SELECT COUNT(*) FROM game_wm WHERE user_id={$it_user_id} AND type=1"), 0, 0); if ($CC - $CW < $item['weight'] and $prov == 0) { //инвентарь заполнен. На землю его! $it_user_id = 0; $priznak = 2; list($map_name, $map_xpos, $map_ypos) = mysql_fetch_array(myquery("SELECT map_name,map_xpos,map_ypos FROM game_users_map WHERE user_id={$it_user_id}")); $drop['kuda'] = 0; } } //если предмет if ($drop['drop_type'] == 1) { if ($priznak == 0) { $Item = new Item(); $add_result = $Item->add_user($drop['items_id'], $it_user_id, 0, 0, 1); // не получилось добавить один - не выйдет и остальные. if ($add_result[0] == 0) { break; } } else { if (!isset($item)) { $item = mysql_fetch_array(myquery("SELECT * FROM game_items_factsheet WHERE id=" . $drop['items_id'] . "")); } myquery("INSERT INTO game_items (user_id,item_id,priznak,ref_id,item_uselife,item_uselife_max,item_cost,map_name,map_xpos,map_ypos) VALUES ('{$it_user_id}','" . $drop['items_id'] . "','{$priznak}',0,'" . $item['item_uselife'] . "','" . $item['item_uselife_max'] . "','" . $item['item_cost'] . "','{$map_name}','{$map_xpos}','{$map_ypos}')"); } } elseif ($drop['drop_type'] == 2) { if ($drop['kuda'] == 1) { $Res = new Res($item, 0); $Res->add_user(0, $it_user_id, 1); if ($this->templ['npc_id'] == npc_id_olen) { myquery("INSERT INTO craft_stat (build_id, gp, res_id, dob, vip, dat, user, type) values (0, 0, " . $drop['items_id'] . ", 0, 1, " . time() . ", {$it_user_id}, 'z')"); setCraftTimes($it_user_id, 8, 1, 1); add_exp_for_craft($it_user_id, 8); } } elseif ($drop['kuda'] == 0) { $Res = new Res(0, $drop['items_id']); $Res->add_map(0, 0, 1, 0, $map_name, $map_xpos, $map_ypos); myquery("INSERT INTO craft_resource_market (user_id,town,col,price,res_id,opis,map_name,map_xpos,map_ypos) VALUES (0,0,1,0," . $drop['items_id'] . ",'','" . $map_name . "','" . $map_xpos . "','" . $map_ypos . "')"); } } if ($it_user_id > 0) { if ($drop['drop_type'] == 1) { $mes = '<font color=\\"#eeeeee\\">После убийства монстра ты ' . echo_sex('увидел', 'увидела') . ' оставшийся от него предмет: <b>' . $item['name'] . '</b>.Ты быстро ' . echo_sex('подобрал', 'подобрала') . ' выпавший предмет и ' . echo_sex('положил', 'положила') . ' его в свой инвентарь!</font>'; } elseif ($drop['drop_type'] == 2) { $mes = '<font color=\\"#eeeeee\\">После убийства монстра ты ' . echo_sex('заметил', 'заметила') . ', как он выронил из рук: <b>' . $item['name'] . '<b/>. Не мешкая ты быстро ' . echo_sex('подобрал', 'подобрала') . ' выпавший ресурс и ' . echo_sex('положил', 'положила') . ' его в свой инвентарь!</font>'; } $result = myquery("INSERT game_battles SET attacker_id=" . $user_id . ", target_id=0, map_name=" . $map_name . ", map_xpos=" . $map_xpos . ", map_ypos=" . $map_ypos . ", contents='" . $mes . "', post_time=" . time() . ""); } } } } } }
case $id_resource_gold_nugget: $res_id_bullion = $id_resource_gold_bullion; break; } $res_in = mysql_fetch_array(myquery("SELECT * FROM craft_resource WHERE id='" . $res_id_bullion . "' ")); $Res = new Res($res_in); $check = $Res->add_user(0, $user_id); if ($check == 1) { myquery("UPDATE game_items SET item_uselife=item_uselife-" . mt_rand(400, 600) / 100 . " WHERE user_id={$user_id} AND used=21 AND priznak=0"); list($id_item, $cur_uselife) = mysql_fetch_array(myquery("SELECT id,item_uselife FROM game_items WHERE priznak=0 AND user_id={$user_id} AND used=21")); if ($cur_uselife <= 0) { $Item = new Item($id_item); $Item->down(); } $mes = 'Получен ресурс: <i>' . $res_in['name'] . '</i> в количестве 1 ед.'; setCraftTimes($user_id, 10, 3, 1); myquery("insert into craft_stat (build_id, gp, res_id, dob, vip, dat, user, type) values (0, 0, {$res_id_bullion}, 0, 1, " . time() . ", {$user_id}, 'z')"); } else { $mes = 'Неудачная попытка работы на плавильне. Проверь, хватает ли у тебя места для новых ресурсов в инвентаре!'; } myquery("DELETE FROM craft_build_founder WHERE user_id={$user_id}"); } else { mt_srand(make_seed()); $new_nas = mt_rand(1, $founder['nas'] - 10); mt_srand(make_seed()); $new_teplo = mt_rand(1, 100); $new_state = $founder['state'] + 1; $mes = 'Выполнена ' . $new_state . ' из 3 стадий плавления.'; myquery("UPDATE craft_build_founder SET nas={$new_nas},teplo={$new_teplo},state=state+1 WHERE user_id={$user_id}"); } //Обновим страницу
} if ($lumber['state'] == 140) { $action1 = 'Ты ' . echo_sex('закончил', 'закончила') . ' обработку расколотого валуна на каменные блоки на 60%'; myquery("UPDATE craft_build_stonemason SET state=160,end_time=0,user_id=0,reserve_user_id={$user_id},reserve_time=" . (time() + 60) . " WHERE id=" . $lumber['id'] . ""); break_axe($action1); } if ($lumber['state'] == 160) { $action1 = 'Ты ' . echo_sex('закончил', 'закончила') . ' обработку расколотого валуна на каменные блоки на 80%'; myquery("UPDATE craft_build_stonemason SET state=180,end_time=0,user_id=0,reserve_user_id={$user_id},reserve_time=" . (time() + 60) . " WHERE id=" . $lumber['id'] . ""); break_axe($action1); } if ($lumber['state'] == 180) { $action1 = 'Ты ' . echo_sex('закончил', 'закончила') . ' обработку расколотого валуна на каменные блоки на 100%'; myquery("UPDATE craft_build_stonemason SET state=200,user_id=0,end_time=0,brevn1=0,brevn2=0,brevn3=0,brevn4=0,brevn5=0,brevn6=0,klin=0,reserve_user_id={$user_id} WHERE id=" . $lumber['id'] . ""); for ($i = 1; $i <= $lumber['nomer'] + 1; $i++) { myquery("UPDATE craft_build_stonemason SET brevn" . $i . "=1 WHERE id=" . $lumber['id'] . ""); } setCraftTimes($user_id, 5, 1, 1); break_axe($action1); } echo $action1; echo '<meta http-equiv="refresh" content="3;url=craft.php">'; } } } if ($broken_instrument == 1) { echo '<br /><br /><br /><br />У тебя нет в руках кайло каменотеса, или оно полностью сломалось. Ты не сможешь работать в каменоломне!'; } elseif ($est_items == 0) { echo '<br /><br /><br /><br />У тебя нет в руках кайло каменотеса. Ты не сможешь работать в каменоломне!'; } }
if ($molot_uselife <= $break) { $molot = new Item($molot_id); $molot->down(); myquery("UPDATE game_items SET item_uselife=0 WHERE id={$molot_id}"); } else { myquery("UPDATE game_items SET item_uselife=item_uselife-{$break} WHERE id={$molot_id}"); } QuoteTable('open'); echo '<br>'; if ($item['uselife_max_now'] > 1 or $breakdown == 0) { myquery("UPDATE game_items SET item_uselife=" . $item['uselife_template'] . ",item_uselife_max=item_uselife_max-{$breakdown} WHERE id={$nak}"); echo 'Предмет <span style="font-weight:800;color:red;">' . $item['name'] . '</span> отремонтирован до состояния: ' . $item['uselife_template'] . '%.'; if ($breakdown > 0) { //Выдадим опыт за подход add_exp_for_craft($user_id, 12); setCraftTimes($user_id, 12, 2, 2); echo ' <br />У предмета уменьшена долговечность на ' . $breakdown . ''; } } else { $Item = new Item($item['id']); $Item->admindelete(); echo 'При попытке ремонта предмет был полностью разрушен, т.к. его долговечность снизилась до 0'; } echo ' <br> '; QuoteTable('close'); echo '<br><br><br>'; } } echo '<span style="font-weight:900;color:red;font-size:13px;">Выбери предмет для починки:</span><br><br>(твой навык кузнеца позволяет ремонтировать тебе предметы с текущей прочностью не менее ' . $min_itemuselife . '%)<br /><br>'; $result_items = myquery("SELECT game_items.item_uselife,game_items.id,game_items_factsheet.type,game_items_factsheet.img,game_items_factsheet.name FROM game_items,game_items_factsheet WHERE game_items.user_id={$user_id} AND (game_items.used=0 OR (game_items.item_uselife>=10 AND game_items_factsheet.type<>24)) and game_items.ref_id='0' and game_items.priznak=0 and game_items_factsheet.type<90 and game_items_factsheet.type NOT IN (12,13,19,20,21) AND game_items.item_uselife<100 AND game_items.item_id=game_items_factsheet.id AND game_items.item_uselife>={$min_itemuselife} ORDER BY game_items.item_uselife"); if (mysql_num_rows($result_items) > 0) {
if ($molot_uselife <= $break) { $molot = new Item($molot_id); $molot->down(); myquery("UPDATE game_items SET item_uselife=0 WHERE id={$molot_id}"); } else { myquery("UPDATE game_items SET item_uselife=item_uselife-{$break} WHERE used=21 AND user_id={$user_id} AND priznak=0 AND item_id=" . molot_kuzn . ""); } } QuoteTable('open'); echo '<br>'; if ($item['uselife_max_now'] > 1 or $breakdown == 0) { myquery("UPDATE game_items SET item_uselife={$repair},item_uselife_max=item_uselife_max-{$breakdown} WHERE id={$nak}"); echo 'Предмет <span style="font-weight:800;color:red;">' . $item['name'] . '</span> отремонтирован до состояния: ' . $item['uselife_max'] . '%.'; if ($breakdown > 0) { add_exp_for_craft($user_id, 12); setCraftTimes($user_id, 12, 1, 1); echo '<br />У предмета уменьшена долговечность на ' . $breakdown . ''; } } else { $Item = new Item($item['id']); $Item->admindelete(); echo 'При попытке ремонта предмет был полностью разрушен, т.к. его долговечность снизилась до 0'; } echo ' <br> '; QuoteTable('close'); echo '<br><br><br>'; } } echo '<span style="font-weight:900;color:red;font-size:13px;">Выбери предмет для починки:</span><br><br>(твой навык кузнеца позволяет ремонтировать тебе предметы с текущей прочностью не менее ' . $min_itemuselife . '%)<br /><br>'; $result_items = myquery("SELECT game_items.item_uselife as uselife_now,game_items.id,game_items_factsheet.name,game_items_factsheet.item_uselife AS uselife_max,game_items_factsheet.breakdown,game_items.item_uselife_max AS uselife_max_now,game_items_factsheet.type,game_items_factsheet.img,game_items.kleymo FROM game_items,game_items_factsheet WHERE game_items.user_id={$user_id} AND (game_items.used=0 OR (game_items.item_uselife>=10 AND game_items_factsheet.type<>24)) and game_items.ref_id='0' and game_items.priznak=0 and game_items_factsheet.type<90 and game_items_factsheet.type NOT IN (12,13,19,20,21) AND game_items.item_uselife<100 AND game_items.item_id=game_items_factsheet.id AND game_items.item_uselife>={$min_itemuselife} ORDER BY game_items.item_uselife"); if (mysql_num_rows($result_items) > 0) {