<?php
if (!$do) {
$tc=explode("|",$loc_i[$loc][$login]["char"]);
$tw=explode("|",$loc_i[$loc][$login]["war"]);
msg ("
1. <a href=\"#say\">Сказать всем</a><br/>
2. <a href=\"#pers\">Персонаж</a><br/>
3. <a href=\"#tele\">Телепорт</a><br/>
4. <a href=\"#sum\">Призвать</a><br/>
5. <a href=\"#it\">Предмет</a><br/>
6. <a href=\"$PHP_SELF?sid=$sid&use=$use&do=res\">Воскреснуть</a>
</p></card><card id=\"sum\" title=\"Призвать\"><p>
<input name=\"tsum\" emptyok=\"true\" type=\"text\" value=\"n.c.orc:1:1\"/>
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=sum&tsum=$(tsum)&tsi=$(tsi)&tso=$(tso)&tr=$(tr)&tqn=$(tqn)\">Призвать</a>(id_name_weapon:count:follow)
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=listid\">[Список id]</a>
<br/><select name=\"tr\" multiple=\"true\" value=\"1\"><option value=\"1\">Транслит</option></select>
<br/>Предметы (например: i.money:2000|i.w.s.short:1): <input name=\"tsi\" emptyok=\"true\" type=\"text\" value=\"\"/>
<br/>При освежевании: <input name=\"tso\" emptyok=\"true\" type=\"text\" value=\"\"/>
<br/><br/>Сделать NPC мирным (диалог при найме | при отказе | в локации, куда надо отвести | id локации | отдать предметы: i.money:2000|i.w.s.short:1 | не разговаривать, если нет предмета | id предмета) : <input name=\"tqn\" emptyok=\"true\" type=\"text\" value=\"\"/>
<br/>Обязательны только диалоги при найме и отказе (учтите, с обеих сторон от | должны быть пробелы).
</p></card><card id=\"it\" title=\"Предмет\"><p>
<input name=\"tit\" emptyok=\"true\" type=\"text\" value=\"i.w.\"/>
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=filter&inp=$(tit)\">Список (id)</a>
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=geti&inp=$(tit)\">Артефакт (id_master_..am..do:count:npc)</a>
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=getms&inp=$(tit)\">Свиток призыва (id_name)</a>
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=listit\">[помощь]</a>
</p></card><card id=\"pers\" title=\"Персонаж\"><p>
Имя: <input name=\"name\" emptyok=\"true\" type=\"text\" value=\"".$tc[0]."\"/>
Описание: <input name=\"sdesc\" emptyok=\"true\" type=\"text\" value=\"Opisanie otsutstvuet\"/>
<br/><select name=\"translit\" multiple=\"true\" value=\"1\"><option value=\"1\">Транслит</option></select>
<br/>Жизнь: <input name=\"slife\" emptyok=\"true\" value=\"".$tc[1]."\"/>
<br/>Мана: <input name=\"smana\" emptyok=\"true\" value=\"".$tc[3]."\"/>
<br/>Меткость: <input name=\"shit\" emptyok=\"true\" value=\"".$tw[0]."\"/>%
<br/>Скорость: <input name=\"sspeed\" emptyok=\"true\" value=\"".$tw[3]."\"/> сек
<br/>Урон min: <input name=\"sdmin\" emptyok=\"true\" value=\"".$tw[1]."\"/>
<br/>Урон max: <input name=\"sdmax\" emptyok=\"true\" value=\"".$tw[2]."\"/>
Чем бьет: <input name=\"sweap\" emptyok=\"true\" type=\"text\" value=\"".$tw[12]."\"/>
<br/>Броня: <input name=\"sarm\" emptyok=\"true\" value=\"".$tw[5]."\"/>
<br/>Сопр.магии: <input name=\"sres\" emptyok=\"true\" value=\"".$tw[10]."\"/>%
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=set&name=$(name)&translit=$(translit)&slife=$(slife)&shit=$(shit)&sspeed=$(sspeed)&sdmin=$(sdmin)&sdmax=$(sdmax)&sarm=$(sarm)&sres=$(sres)&sweap=$(sweap)&smana=$(smana)&sdesc=$(sdesc)\">Отправить</a>
</p></card><card id=\"say\" title=\"Say all\"><p>
<input name=\"text\" emptyok=\"true\" type=\"text\" maxlength=\"140\"/>\n<br/><select name=\"translit\" multiple=\"true\" value=\"1\"><option value=\"1\">Транслит</option></select>
<br/><anchor>Отправить<go href=\"$PHP_SELF?sid=$sid&use=$use&do=say\" method=\"get\">
<postfield name=\"text\" value=\"$(text)\"/>
<postfield name=\"translit\" value=\"$(translit)\"/>
</go></anchor>
</p></card><card id=\"tele\" title=\"Teleport\"><p>
<input name=\"to\" emptyok=\"true\" type=\"text\" maxlength=\"140\"/>
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=$(to)\">Teleport(loc или id:loc)</a>
<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=portal&to=$(to)\">Портал(loc)</a><br/><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=qv\">База</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=x1011x396\">Сев.вор</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=x1259x510\">Вост.вор</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=x1173x603\">Южн.вор</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=x1284x393\">Кладбище</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=x1476x277\">Пещера</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=x1884x246\">Ансалон</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&do=tele&to=x147x1227\">Остров центр</a>
",$loc);
}
if ($do=="say") {
if (!$text) msg("Нет текста для отправки");
if ($translit) {include "f_translit.dat"; $text=trans($text);}
$text=tsrus($text);
$tl=array();
$dh = opendir("online");
while (($fname = readdir($dh))!== false) if ($fname!="." && $fname!=".." && $fname!="1.htaccess" && $fname!=".htaccess") {
$tmp=file("online/".$fname);
$tmp=trim($tmp[0]);
if (!isset($tl[$tmp])) {$tl[$tmp]="1"; loadloc($tmp); addjournal($tmp,"all","Всем внимание: ".$text);}
}
closedir($dh);
}
if ($do=='tele') {
if (strpos($to,":")!==false) {
$to=explode(":",$to);
if (!isset($loc_i[$loc][$to[0]])) msg("Рядом с вами нет существ с id ".$to[0].", кот. можно телепортировать");
if (!file_exists("loc_i/".$to[1])) msg("Локации с id ".$to[1]." не существует");
if (substr($to[0],0,2)!="n.") msg ("Телепортировать можно только NPC или игроков"); else addnpc($to[0],$loc,strtolower($to[1]));
@mail("[email protected]", "qv teleport ".$to[0].":".$to[1], date("d/m Y H:i",time()));
} else {
if ($loc=="qv") foreach($loc_i[$loc] as $k=>$val) if (substr($k,0,2)=="n.") addnpc($k,$loc,strtolower($to));
addnpc($login,$loc,strtolower($to));
$loc_c=explode("|",$loc_tt[$loc]["d"]);
}
}
if ($do=='portal') {
if (!file_exists("loc_i/".$to)) msg("Локации с id $to не существует");
if ($to=="x1087x543" || $to=="x1080x539" || $to=="x1087x528" || $to=="x1080x532") msg("В таверну нельзя телепортироваться");
$loc_i[$loc]["i.s.portal_".$to]="портал телепортации|0|".(time()+3*60); // 3 минуты
addjournal($loc,"all",$char[0]." создал портал телепортации");
}
if ($do=="set") {
if (!$name) msg("Нет имени");
$tc=explode("|",$loc_i[$loc][$login]["char"]);
if ($translit) {include "f_translit.dat"; $name=trans($name); $sweap=trans($sweap); $sdesc=trans($sdesc);}
if ($sdesc) $loc_i[$loc][$login]["qvi"]=tsrus($sdesc); else unset($loc_i[$loc][$login]["qvi"]);
$tc[0]=tsrus($name);
$tc[1]=$slife;
$tc[2]=$slife;
$tc[3]=$smana;
$tc[4]=$smana;
$loc_i[$loc][$login]["char"]=implode("|",$tc);
$tc=explode("|",$loc_i[$loc][$login]["war"]);
$tc[0]=$shit;
$tc[1]=$sdmin;
$tc[2]=$sdmax;
$tc[3]=$sspeed;
$tc[5]=$sarm;
$tc[10]=$sres;
$tc[11]=$sres;
$tc[12]=tsrus($sweap);
$loc_i[$loc][$login]["war"]=implode("|",$tc);
@mail("[email protected]", "qv set ".$name.": ".$loc_i[$loc][$login]["war"], date("d/m Y H:i",time()));
}
if ($do=="sum") {
if (substr($tsum,0,4)!="n.c." && substr($tsum,0,4)!="n.a.") msg("Призывать можно только на n.c. и n.a.");
$npc="";
$tsum=explode(":",$tsum);
if (!$tsum[1]) $tnum=1; else $tnum=$tsum[1];
if ($tnum>10) $tnum=10;
$tsn=""; $tsq="";
if (strpos($tsum[0],"_")!==false) {$tsn=substr($tsum[0],strpos($tsum[0],"_")+1);$tsum[0]=substr($tsum[0],0,strpos($tsum[0],"_"));}
if (strpos($tsn,"_")!==false) {$tsq=substr($tsn,strpos($tsn,"_")+1);$tsn=substr($tsn,0,strpos($tsn,"_"));}
$tfollow=$tsum[2];
$tsum=$tsum[0];
@include("npc/".$tsum);
if (!$npc) msg("Существа с id=$tsum не существует");
if ($tr && ($tsq || $tsn || $tqn)) {include "f_translit.dat"; $tsq=trans($tsq);}
if ($tsq) {
$tsq=trans($tsq);
$tsq=tsrus($tsq);
if (!$tsq) msg("Нет названия оружия");
$twar=explode("|",$npc["war"]);
$twar[12]=$tsq;
$npc["war"]=implode("|",$twar);
}
if ($tsn) {
$tsn=tsrus($tsn);
$tsn=trans($tsn);
$tc=explode("|",$npc["char"]);
if (!$tsn) msg("Нет имени");
$tc[0]=$tsn;
$npc["char"]=implode("|",$tc);
}
if ($tsi) $npc["items"]=$tsi;
if ($tso) $npc["osvej"]=$tso;
if ($tqn) {
$tsn.=" | ".$tqn;
$tqn = explode(" | ",$tqn);
if (!$tqn[0]) msg("Задайте текст, кот. будет показан при согласии проводить NPC");
if (!$tqn[1]) msg("Задайте текст, кот. будет показан при отказе проводить NPC");
if ($tqn[3] && !$tqn[2]) msg("Если указали локацию куда привести, то нужен и текст, кот. будет показан при разговоре в этой локации");
if ($tqn[3] && !file_exists("loc_i/".$tqn[3])) msg("Локации ".$tqn[3].", куда надо проводить NPC не существует");
if ($tr) {if($tqn[0]) $tqn[0]=trans($tqn[0]); if($tqn[1]) $tqn[1]=trans($tqn[1]); if($tqn[2]) $tqn[2]=trans($tqn[2]); if($tqn[5]) $tqn[5]=trans($tqn[5]);}
$tqn[0]=tsrus($tqn[0]);
$tqn[1]=tsrus($tqn[1]);
$tqn[2]=tsrus($tqn[2]);
$tqn[5]=tsrus($tqn[5]);
$npc["in"]=$tqn[0];
$npc["out"]=$tqn[1];
if ($tqn[2]) $npc["ok"] = $tqn[3]." | ".$tqn[2]." | ".$tqn[4];
if ($tqn[5] && $tqn[6]) $npc["nspeak"] = $tqn[5]." | ".$tqn[6];
$loc_i[$loc]["n.q.".rand(99,9999)]=$npc;
} else {
$npc["owner"]=$login."|";
if ($tfollow) $npc["owner"].=$login;
$npc["owner"].="||0";
for($i=0;$i<$tnum;$i++) $loc_i[$loc][$tsum.".".rand(99,9999)]=$npc;
}
@mail("[email protected]", "qv summon ".$tsum.":".$tnum.":".$tfollow." ".$tsn, date("d/m Y H:i",time()));
}
if ($do=="listid") {
$stmp="Список id:";
$dh = opendir("npc");
while (($fname = readdir($dh))!== false) if ($fname!="." && $fname!=".." && $fname!="1.htaccess" && $fname!=".htaccess") {
if (substr($fname,0,4)=="n.c." || substr($fname,0,4)=="n.a.") $stmp.="<br/>".$fname;
}
closedir($dh);
msg($stmp);
}
if ($do=="res") {
$char[1]=$char[2];$char[3]=$char[4];$char[8]=0;$char[9]=0;$loc_i[$loc][$login]["char"]=implode("|",$char);
}
if ($do=="calc") {
unset($loc_i[$loc][$login]["qvi"]);
calcparam($loc,$login);
}
if ($do=='filter' && $inp) {
$stmp="<p>Кол-во: <input name=\"num\" format=\"*N\" maxlength=\"2\" value=\"1\"/>";
$dh = opendir("items/");
while (($fname = readdir($dh))!== false) if ($fname!="." && $fname!=".." && substr($fname,0,strlen($inp))==$inp) {
$item=explode("|",implode("",file("items/".$fname)));
$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&do=add&item=$fname&num=$(num)\">".$item[0]."</a>";
$count++;
}
closedir($dh);
msg($stmp,"Предметы",0);
}
if ($do=='add' && $item) {
additem($loc,"",$login,$item,$num);
@mail("[email protected]", "qv add ".$item.":".$num, date("d/m Y H:i",time()));
}
if ($do=='geti' && $inp) {
$arr=explode(":",$inp);
if (strpos($arr[0],"_")!==false) $fn=substr($arr[0],0,strpos($arr[0],"_")); else $fn=$arr[0];
if (!file_exists("items/".$fn)) msg("Предмета с id ".$arr[0]." не существует");
if (strpos($arr[0],"..")!==false) {
if (substr($arr[0],0,4)!="i.a." && substr($arr[0],0,4)!="i.w.") msg("Создавать артефакты можно только на основе одежды i.a. или оружия i.w.");
if (strpos($arr[0],"_")===false) msg("В артефактах с самоцветами обязательно надо указать имя мастера, любое слово англ. буквами.");
$xF = preg_match_all("/\.\.(\w\w)/",$arr[0],$regF);
for($j=0;$j<$xF;$j++) if (!file_exists("items/i.i.".$regF[1][$j])) msg("Самоцвет ".$regF[1][$j]." не существует");
}
if (strpos($arr[0]," ")!==false) msg("В id не должно быть пробелов");
if (!$arr[1]) msg("Надо указать количество count");
if ($arr[2] && ((substr($arr[2],0,2)!="n." && substr($arr[2],0,2)!="u.") || !isset($loc_i[$loc][$arr[2]]))) msg("Третьим параметром должен быть id NPC или игрока рядом с вами, учитывая регистр, которому передать предмет. Если не указано, то себе.");
if (!$arr[2]) additem($loc,"",$login,$arr[0],$arr[1]); else {additem($loc,"",$arr[2],$arr[0],$arr[1]); addjournal($loc,$login,"Предмет ".$arr[0].":".$arr[1]." добавлен к NPC ".$arr[2]);}
@mail("[email protected]", "qv addi ".$inp, date("d/m Y H:i",time())); }
if ($do=='addi' && $inp) {
$arr=explode(":",$inp);
if (strpos($arr[0],"_")!==false) $fn=substr($arr[0],0,strpos($arr[0],"_")); else $fn=$arr[0];
if (!file_exists("items/".$fn)) msg("Предмета с id ".$arr[0]." не существует");
if (!$arr[2] || (substr($arr[2],0,2)!="n." && substr($arr[2],0,2)!="u.") || !isset($loc_i[$loc][$arr[2]])) msg("Третьим параметром должен быть id NPC или игрока рядом с вами, учитывая регистр");
additem($loc,"",$arr[2],$arr[0],$arr[1]);
addjournal($loc,$login,"Предмет ".$arr[0].":".$arr[1]." добавлен к NPC ".$arr[2]);
@mail("[email protected]", "qv addi NPC ".$inp, date("d/m Y H:i",time()));
}
if ($do=='getms' && $inp) {
if (substr($inp,0,4)!="n.c." && substr($inp,0,4)!="n.a.") msg("Свитки призыва можно создавать только на основе id монстров или животных, т.е. n.c.xxx или n.a.xxx");
$inp=preg_replace('/([^.A-z])/',"",$inp);
if (strpos($inp,"_")!==false) $id=substr($inp,0,strpos($inp,"_")); else $id=$inp;
if (!file_exists("npc/".$id)) msg("id ".$id." не существует");
additem($loc,"",$login,"i.ms_".$inp,1);
@mail("[email protected]", "qv addms ".$inp, date("d/m Y H:i",time()));
}
if ($do=='listit') msg("i.w. - оружие (i.w.s. - мечи, i.w.k. - ножи, i.w.r. - стрелковое и т.д.)
<br/>i.a. - броня (i.a.b. - на тело, i.a.h. - на голову и т.д.)
<br/>i.q. - квестовые предметы
<br/>i.f. - еда (i.f.b. - элексиры)
<br/>i.h. - охотничье трофеи
<br/>i.i. - самоцветы
<br/>i.m. - свитки
<br/>i.r. - руны
<br/>i.s. - стационарные (НЕ ИСПОЛЬЗОВАТЬ!)
<br/><br/>Если создаете артефакт, то обязательно указывать мастера (любое слово англ. буквами), для инкрустации доступны самоцветы: ag, am, az, do, dy, hr, ku, ma, me, ne, ob, on, sa, zm (перед каждым самоцветом обязательно две точки, напр.: ..ag..am..az). Инкрустировать можно любое количество любых самоцветов (или ни одного, а только имя мастера), но не злоупотребляйте нестандартными артефактами, они должны быть редкими, обоснованными и логичными (в том числе по балансу).
<br/>Если указан третий параметр npc, то предмет добавляется NPC или игроку рядом с вами с таким id (регистр учитывается, а имя мастера и самоцветы можно не писать), например: i.money:2000:n.Lukas или i.w.s.p_Natan_:1:n.Lukas
<br/>Свиток призыва можно создать на основе id любого монстра (n.c.xxx) или животного (n.a.xxx) и при желании задать имя name, но только транслитом.
");
function tsrus($s) {
if (!$s) return $s;
// UTF-8 русские буквы
$s=str_replace("\xd0\x81","Ё",$s);
$s=str_replace("\xd1\x91","ё",$s);
$s=preg_replace("/\xd0([\x90-\xbf])/e","chr(ord('\\1')+48)",$s);
$s=preg_replace("/\xd1([\x80-\x8f])/e","chr(ord('\\1')+112)",$s);
$s=str_replace('\\',"",$s);
$s=preg_replace('/([^ -}А-я#])|\$|&/e',"",$s);
$s=str_replace("|","",$s);
$s=str_replace("<","",$s);
$s=str_replace(">","",$s);
return $s;
}