function mag_summon($spell, $login)
{
    //$spell = preg_replace ('/[^a-z0-9_]/i', '', $spell);
    //$login = preg_replace ('/[^a-z0-9_]/i', '', $login);
    $id = is_player($login);
    $q = do_mysql("SELECT cname FROM magic WHERE fullname = '" . $spell . "';");
    if (!mysql_num_rows($q)) {
        return 0;
    }
    $fullname = mysql_result($q, 0);
    if (!$fullname) {
        return 0;
    }
    // zapros na lokaciju igroka i kolichestvo priruchennyh zhivotnyh
    $q = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';");
    if (!mysql_num_rows($q)) {
        return 0;
    }
    $loc = mysql_result($q, 0);
    $q = do_mysql("SELECT COUNT(*) FROM npc WHERE belongs = '" . $login . "';");
    $c = mysql_result($q, 0);
    if ($c > 0) {
        put_g_error('у вас уже есть нпц, принадлежащие вам');
    }
    // sozdaem npc:
    include_once 'modules/f_create_npc.php';
    $npc = create_npc($fullname, substr($loc, 0, 4), $loc);
    $nid = is_npc($npc);
    // izmenim imja:
    $q = do_mysql("SELECT name FROM npc WHERE id_npc = '" . $nid . "';");
    $name = mysql_result($q, 0);
    $nname = 'призванный ' . $name;
    $fullname = $npc . '.' . $login;
    // ataka:
    $q = do_mysql("SELECT in_battle FROM players WHERE id_player = '" . $id . "';");
    $inb = mysql_result($q, 0);
    do_mysql("UPDATE npc SET fullname = '" . $fullname . "', name = '" . $nname . "', belongs = '" . $login . "', move = '30', in_battle = '" . $inb . "', type = 'a' WHERE id_npc = '" . $nid . "';");
    $q = do_mysql("SELECT name FROM players WHERE id_player = '" . $id . "';");
    $pn = mysql_result($q, 0);
    add_journal($pn . ': призвал ' . $name . '!', 'l.' . $loc);
    return 1;
}
Пример #2
0
<?php 
// fail soderzhit zagruzochnuju infu karty
// VESHI
$items = array('i.f.tra.podorozhnik' => 'i.f.tra.podorozhnik:rbfo|4x5~rbfo|6x5:1', 'i.m.rea.pautina' => 'i.m.rea.pautina:rbfo|8x4~rbfo|7x1:1', 'i.o.sta.rosarock' => 'i.o.sta.rosarock:rbfo|4x3:1', 'i.o.sta.lake' => 'i.o.sta.lake:rbfo|3x3:1', 'i.o.sta.runestone_vk2' => 'i.o.sta.runestone_vk2:rbfo|5x5:1', 'i.o.sta.runestone_vk10' => 'i.o.sta.runestone_vk10:rbfo|7x1:1');
$npc = array('n.a.mouse.1.m2' => 'n.a.mouse.1.m2::5', 'n.a.rabbit.1.0' => 'n.a.rabbit.1.0:rbfo|4x5~rbfo|2x3~rbfo|1x6:3', 'n.x.rabbit.1.2' => 'n.x.rabbit.1.2:rbfo|4x3~rbfo|5x3:2', 'n.a.sinica.1.m2' => 'n.a.sinica.1.m2:rbfo|1x3~rbfo|3x6:1', 'n.a.vorobej.1.m2' => 'n.a.vorobej.1.m2:rbfo|2x1~rbfo|2x3:1', 'n.a.young_rabbit.1.m1' => 'n.a.young_rabbit.1.m1:rbfo|6x2~rbfo|5x5:1', 'n.a.big_rabbit.1.1' => 'n.a.big_rabbit.1.1:rbfo|8x5:1', 'n.a.old_rabbit.1.m1' => 'n.a.old_rabbit.1.m1:rbfo|8x2:1', 'n.s.tuslik' => 'n.s.tuslik:rbfo|4x6:1', 'n.a.utka.1.m1' => 'n.a.utka.1.m1:rbfo|3x3:1', 'n.a.red_bird.3.1' => 'n.a.red_bird.3.1:rbfo|8x3:1', 'n.x.witch.5.0' => 'n.x.witch.5.0:rbfo|5x1:1', 'n.x.black_cat.4.1' => 'n.x.black_cat.4.1:rbfo|5x1:1');
// tekagi q: ninzja nochqju s 00 do 1h.
$hour = get_hour();
$q = do_mysql("SELECT COUNT(*) FROM npc WHERE realname = 'n.s.hiroki';");
$cnin = mysql_result($q, 0);
if ($hour < 1 && !$cnin) {
    // sozdaem hiroki
    include_once 'modules/f_create_npc.php';
    create_npc('n.s.hiroki', 'rbfo', 'rbfo|1x6');
}
if ($hour > 0 && $cnin) {
    // udaljaem hiroki
    do_mysql("DELETE FROM npc WHERE realname = 'n.s.hiroki';");
}
            // npc
            include_once 'modules/f_create_npc.php';
            include_once 'modules/f_add_to_loc.php';
            include_once 'modules/f_gen_rnd_loc.php';
            // sozdaem npc
            if (!is_array($npc[$a[1]])) {
                $npc[$a[1]] = explode(':', $npc[$a[1]]);
            }
            // esli vtoraja chastq pusta, generiruem sluchajno iz vsej karty
            // esli net to iz ukazanyh
            if (!$npc[$a[1]][1]) {
                $nloc = gen_rnd_loc($pl_map);
            } else {
                $nloc = gen_rnd_loc($pl_map, $npc[$a[1]][1]);
            }
            $nnpc = create_npc($npc[$a[1]][0], $pl_map, $nloc);
            // dobavljaem npc v lokaciju i vse
            unset($act[$i]);
        }
    }
    $nact = implode('~', $act);
    do_mysql("UPDATE maps SET actions = '" . $nact . "' WHERE map = '" . $pl_map . "';");
}
// ochistim ot staryh trupov
$qdd = do_mysql("SELECT fullname FROM dead WHERE puttime < NOW() - INTERVAL '15' MINUTE");
while ($de = mysql_fetch_assoc($qdd)) {
    do_mysql("DELETE FROM items WHERE belongs = '" . $de['fullname'] . "';");
    do_mysql("DELETE FROM dead WHERE fullname = '" . $de['fullname'] . "';");
}
// teperq ochistim nenuzhnye karty
include_once 'modules/f_erease_map.php';