Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

FIX - Otwieranie lochów bez klucza, przechodzenie lochów po pokonaniu bossa


Gość Nerfinekk

Rekomendowane odpowiedzi

Gość Nerfinekk
Opublikowano

=


=


=


=


=


=


=


=


=


=


=


=


=


=


=


=


=


Instalacja:


1. Otwórz plik req.php/request.php.


2. Znajdź ACT_MAINQUEST.


3. Zamień go ten podany poniżej:



case $ACT_MAINQUEST:

$dung = $action_extra;

$db_data = loadDefaultData();

if($db_data['dungeon_' . $dung] >= 12 OR $db_data['dungeon_' . $dung] < 2 OR $dung > 12 OR $dung < 1)
{
break;
}

$slotInfo = findFreeSlot($db_data['user_id']);

if ($slotInfo[0] == false) {



$ret = array(

$ERR_INVENTORY_FULL

);

break;

}


// check time restrictions

$time = new DateTime();

$time = $time->getTimestamp();

if ($time < $db_data['dungeon_time']) {

if ($db_data['mushroom'] <= 0) {

// TODO throw error

break;

}

$db_data['mushroom'] = $db_data['mushroom'] - 1;

$time = $db_data['dungeon_time'];

} else {



$time = $time + 3600;

}



$stage = ( int ) $db_data['dungeon_' . $dung];





$OP = getDungMonster($dung, $stage, $db_data);



$p = new Char($db_data);



// response

$t_ret = array();



// player stats 122

array_push($t_ret, "122" . $p->getHP(), $p->getStr(), $p->getDex(), $p->getInt(), $p->getWit(), $p->getLuck());



// mob stats

array_push($t_ret, $OP->getHP(), $OP->getStr(), $OP->getDex(), $OP->getInt(), $OP->getWit(), $OP->getLuck() . ";"); // . $p->getHp () );



// simulation

$sim = SF_Calc::calculateWin($p, $OP);



$win = $sim[count($sim) - 1][0] <= 0 ? true : false;



$stage2 = 0;



// if win -> update exp, lvl, etc...

if ($win) {

// increment stage lvl

$stage++;



// if the dungeon is 9 or above && the dungeon is complete

// open the next one, set value to 2, update in database

if ($dung >= 9 && $dung <= 12 && $stage == 12)
$stage2 = 2;



// update $ret global var that has already been loaded

$ret[${"SF_DUNGEON_" . $dung}] = $stage;



// add gained exp & gold

$db_data['exp'] = ( int ) $db_data['exp'] + $OP->getExp();

$db_data['silver'] = ( int ) $db_data['silver'] + $OP->getGold();



// add item rewards



$itemRand = rand(1, 3);



if ($itemRand == 1 or $stage == 11) {



$lvl = $db_data['lvl'];

$class = $db_data['class'];

$shop = rand(0, 1);



$item = genItem($lvl, $class, $shop, 'dungeon');





$item['slot'] = $slotInfo[1];



$qry = $db->prepare('INSERT INTO items(item_type, item_id, dmg_min, dmg_max, atr_type_1, atr_type_2, atr_type_3, atr_val_1, atr_val_2, atr_val_3, gold, mush, slot, owner_id)

VALUES(' . $item['item_type'] . ',' . $item['item_id'] . ',' . $item['dmg_min'] . ',' . $item['dmg_max'] . ',

' . $item['atr_type_1'] . ',' . $item['atr_type_2'] . ',' . $item['atr_type_3'] . ',' . $item['atr_val_1'] . ',' . $item['atr_val_2'] . ',

' . $item['atr_val_3'] . ',' . $item['gold'] . ',' . $item['mush'] . ',' . $item['slot'] . ',' . $db_data['user_id'] . ')');

$qry->execute();



$itmSlot = $item['slot'] - 10;



}

else {

$itmSlot = -1;

}





// lvl up

while ($db_data['exp'] > $LEVELS[$db_data['lvl']]) {

$db_data['exp'] -= $LEVELS[$db_data['lvl']];

$db_data['lvl'] = ( int ) $db_data['lvl'] + 1;

}

}

else {

$itmSlot = -1;

}



// update database

$qry_str = "UPDATE user_data SET

exp = :exp,

lvl = :lvl,

silver = :silver,

mushroom = :shroom,

dungeon_time = :time,

" . getDungeonTableName($dung) . " = :dung ";

if ($stage2 == 2)
$qry_str .= ", " . getDungeonTableName($dung + 1) . "= :dung2";

$qry_str .= " WHERE ssid = :ssid";

$qry = $db->prepare($qry_str);

$qry->bindParam(':exp', $db_data['exp']);

$qry->bindParam(':lvl', $db_data['lvl']);

$qry->bindParam(':silver', $db_data['silver']);

$qry->bindParam(':shroom', $db_data['mushroom']);

$qry->bindParam(':time', $time);

$qry->bindParam(':dung', $stage);

if ($stage2 == 2)
$qry->bindParam(':dung2', $stage2);

$qry->bindParam(':ssid', $SSID);

$qry->execute();



$t_ret[count($t_ret) - 1] .= $sim[0][0];



// ---logs----

// first 3, one in previous index, separated by semicolon

array_push($t_ret, $sim[0][1], $sim[0][2]);



for ($i = 1; $i < count($sim); $i++) {

array_push($t_ret, $sim[$i][0], $sim[$i][1], $sim[$i][2]);

// echo $sim [$i][0]."/".$sim [$i][1]."/".$sim [$i][2]."/";

}



// looks

array_push($t_ret, ";" . $db_data['user_name'], $p->getLvl(), $db_data['race'], $db_data['gender'], $db_data['class']);

// faces

for ($i = 1; $i <= 9; $i++) {

$t_ret[] = $db_data['face' . $i];

}



// mob looks, lvl, weapon

array_push($t_ret, "0", "0", $OP->getLvl(), "0", "0", "1", "-" . $OP->getId(), "0", "0", "0", "0", "0", "0", "0", "0", "0;" . $p->hasWeapon());



// weapon info - player

$weap = $p->getWeapon();

array_push($t_ret, $weap['item_id'], $weap['dmg_min'], $weap['dmg_max'], $weap['atr_type_1'], $weap['atr_type_2'], $weap['atr_type_3'], $weap['atr_val_1'], $weap['atr_val_2'], $weap['atr_val_3'], $weap['gold'], $weap['mush']);



// weapon info - mob

$weap = $OP->getWeapon();

array_push($t_ret, $OP->hasWeapon(), $weap['item_id'], $weap['dmg_min'], $weap['dmg_max'], $weap['atr_type_1'], $weap['atr_type_2'], $weap['atr_type_3'], $weap['atr_val_1'], $weap['atr_val_2'], $weap['atr_val_3'], $weap['gold'], $weap['mush'] . ";" . $p->hasShield());



// shields

$sh = $p->getShield();

array_push($t_ret, $sh['item_id'], $sh['dmg_min'], $sh['dmg_max'], $sh['atr_type_1'], $sh['atr_type_2'], $sh['atr_type_3'], $sh['atr_val_1'], $sh['atr_val_2'], $sh['atr_val_3'], $sh['gold'], $sh['mush']);

$sh = $OP->getShield();

array_push($ret, $OP->hasShield(), $sh['item_id'], $sh['dmg_min'], $sh['dmg_max'], $sh['atr_type_1'], $sh['atr_type_2'], $sh['atr_type_3'], $sh['atr_val_1'], $sh['atr_val_2'], $sh['atr_val_3'], $sh['gold']);

// ?;?;?;exp;silver;win?

$t_ret[] = "0;3;0;" . $OP->getExp() . ";" . $OP->getGold() . ";" . $itmSlot . ";";



loadDefaultData();



// rest is default data

$t_ret[count($t_ret) - 1] .= $ret[0];



// set dungeon time left

$ret[$SF_DUNGEON_ENDTIME] = $time;



for ($i = 1; $i < count($ret); $i++) {

$t_ret[] = $ret[$i];

}



exit(join("/", $t_ret));

break; 

Jakby kogoś interesowało co jest fixem, to jest to:



if($db_data['dungeon_' . $dung] >= 12 OR $db_data['dungeon_' . $dung] < 2 OR $dung > 12 OR $dung < 1)
{
break;

  • 3 miesiące temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...