View file game/1/f_speakowner.dat

File size: 9.47Kb
<?php
// диалог со своим животным или наемником

			$stmp = "<p>";
			if (!$id) {			// основной диалог
				if (substr($speak,0,9)=="n.a.losh.") $stmp.="<a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=sedlo\">Сесть в седло</a><br/>";
				$stmp.="<small><b><a href=\"#battle\">Насчет боя...</a></b></small>";
				$stmp.="<br/><small><b><a href=\"#move\">Насчет движения...</a></b></small>";
				$stmp.="<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=lask\">Приласкать</a></b></small>";
				$stmp.="<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=info\">Состояние</a></b></small>";
				if (substr($speak,0,4)=="n.a." || substr($speak,0,4)=="n.z." || substr($speak,0,4)=="n.s.") $stmp.="<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=name\">Изменить имя</a></b></small>";
				$stmp.="<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=free\">Нам пора расстаться</a></b></small>";
				$stmp.="\n</p>\n</card>\n<card id=\"battle\" title=\"Насчет боя...\">\n<p>\n<small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=guardme\">Защищай меня</a></b></small>\n<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=nelez\">Не лезь в драку</a></b></small>\n<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=attacklist\">Атакуй...</a></b></small>\n<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=guardlist\">Защищай...</a></b></small>";
				$stmp.="\n</p>\n</card>\n<card id=\"move\" title=\"Насчет движения...\">\n<p>\n<small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=followme\">Следуй за мной</a></b></small>\n<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=stay\">Стой здесь</a></b></small>\n<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=followlist\">Следуй за...</a></b></small>";
				}
			if ($id=='sedlo') {	// в седло
				if($char[8]) msg("Вы призрак, лошадь вас боится и не подпускает близко");
				if (!isset($l_i[$loc][$speak])) msg("<p>Рядом нет этого коня");
				if($char[12]) msg("Вы и так на коне");
				$tc=explode("|",$l_i[$loc][$speak]["char"]);
				if ($char[6]>=time()) msg("Вы должны отдохнуть");
				$char[12]="1:".$tc[1];
				$char[6]=time()+3;
				$l_i[$loc][$login]["char"]=implode("|",$char);
				calcparam($loc,$login);
				addjournal($loc,"all",$char[0]." сел на лошадь",$login);
				if (isset($l_i[$loc][$speak]["name"])) $l_i[$loc][$login]["name"]=$l_i[$loc][$speak]["name"];
				unset($l_i[$loc][$speak]);
				return;
				//msg("Вы сели на лошадь и теперь вы всадник");
				}
			if ($id=='guardme') {	// охранять меня
				$owner[2]=$login;
				$stmp.="<small><b><font color=\"red\">$tchar[0]</font> теперь будет защищать вас</b></small>";
				}
			if ($id=='nelez') {	// не вмешиваться в бой
				$owner[2]="";
				$stmp.="<small><b><font color=\"red\">$tchar[0]</font> не будет вмешиваться в бой</b></small>";
				}
			if ($id=='guardlist') {	// список кого защищать
				$stmp="<p>Выберите кого защищать:";
				foreach (array_keys($l_i[$loc]) as $i) if ($i!=$login && $i!=$speak) if (substr($i,0,2)=='n.' || substr($i,0,2)=='u.' && $l_i[$loc][$i]["god"]!="1") {
					$tto=explode("|",$l_i[$loc][$i]["char"]);
					$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=guard&who=".$i."\">".$tto[0]."</a>";
					}
				}
			if ($id=='guard' && $who) { // защищать $who

				// проверка не более 3-х наемников
				$tt=$who; $tn=0;
				if ($l_i[$loc][$who]["owner"]) $tt=substr($l_i[$loc][$who]["owner"],0,strpos($l_i[$loc][$who]["owner"],"|"));
				foreach($l_i[$loc] as $i=>$v) if ($l_i[$loc][$i]["owner"]) {
					$tow=explode("|",$l_i[$loc][$i]["owner"]); 
					if ($tow[0]==$tt || $tow[1]==$tt || $tow[2]==$tt) $tn++;
					}
				if ($tn>2) msg("Наемникам слишком тесно (можно не более 3 в одном месте)");

				$owner[2]=$who;
				$stmp.=$tchar[0]." с этого момента будет защищать кого вы указали.";
				}
			if ($id=='attacklist') {	// список кого атаковать
			if ($loc=='x30x30') msg("Нет цели");
				$stmp="<p><small><b>Выберите кого атаковать:</b></small>";
				foreach (array_keys($l_i[$loc]) as $i) if ($i!=$login && $i!=$speak) if (substr($i,0,2)=='n.' || substr($i,0,2)=='u.' && $l_i[$loc][$i]["god"]!="1") {
					$tto=explode("|",$l_i[$loc][$i]["char"]);
					$stmp.="<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=attack&who=".$i."\">".$tto[0]."</a></b></small>";
					}
				}
			if ($id=='attack' && $who) { // атаковать $who
				if ($loc=='x30x30') msg("Нет цели");
				if (!isset($l_i[$loc][$who])) msg("Нет цели");
				if ($who==$login) msg("Нельзя натравливать на себя");
				$tchar[7]=$who;
				$stmp.="<small><b><font color=\"red\">$tchar[0]</font> атакует кого вы указали.</b></small>";
				// крим если атакует не крима или животное в городе
				$tc=explode("|",$l_i[$loc][$who]["char"]);
				$fchar=explode("|",$l_i[$loc][$login]["char"]);
				$fcrim = $fchar[9];
				$tcrim = $tc[9] || substr($who,0,4)=="n.c.";
				if (!$fcrim && $tc[7]!=$login && ((!$tcrim && substr($who,0,4)!="n.a.") || ($loc_c[1]==1 && substr($who,0,4)=="n.a."))) {docrim($loc,$login); if ($loc_c[1]==1) {$tchar[9]="преступник"; $tchar[10]=time()+$g_crim;}}
				$l_i[$loc][$speak]["char"]=implode("|",$tchar);
				}
			if ($id=='followme') {	// следуй за мной
				$owner[1]=$login;
				$stmp.="<small><b><font color=\"red\">$tchar[0]</font> теперь будет следовать за вами</b></small>";
				}
			if ($id=='stay') {	// стой здесь
				$owner[1]="";
				$stmp.="<small><b><font color=\"red\">$tchar[0]</font> будет ждать здесь, пока не позовете</b></small>";
				}
			if ($id=='followlist') {	// список за кем следовать
				$stmp="<p><small><b>Выберите за кем следовать:</b></small>";
				foreach (array_keys($l_i[$loc]) as $i) if ($i!=$login && $i!=$speak) if (substr($i,0,2)=='u.' && $l_i[$loc][$i]["god"]!="1") {
					$tto=explode("|",$l_i[$loc][$i]["char"]);
					$stmp.="<br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=follow&who=".$i."\">".$tto[0]."</a></b></small>";
					}
				}
			if ($id=='follow' && $who) { // следовать за $who

				// проверка не более 3-х наемников
				$tt=$who; $tn=0;
				if ($l_i[$loc][$who]["owner"]) $tt=substr($l_i[$loc][$who]["owner"],0,strpos($l_i[$loc][$who]["owner"],"|"));
				foreach($l_i[$loc] as $i=>$v) if ($l_i[$loc][$i]["owner"]) {
					$tow=explode("|",$l_i[$loc][$i]["owner"]); 
					if ($tow[0]==$tt || $tow[1]==$tt || $tow[2]==$tt) $tn++;
					}
				if ($tn>2) msg("Наемникам слишком тесно (можно не более 3 в одном месте)");

				$owner[1]=$who;
                        $owner[2]=$who;
				$stmp.=$tchar[0]." с этого момента будет следовать за кем вы указали.";
				}
			if ($id=='name') {	// расстаться
				if (substr($speak,0,4)!="n.a." && substr($speak,0,4)!="n.z." &&  substr($speak,0,4)!="n.s.") msg("Давать имена можно только животным или зомби, у людей уже есть имена ;-)");
				if ($new!="") {
					if(strlen($new)>10) msg("Имя должно быть не длиннее 10 символов");
					if ($tr) {include "f_translit.dat"; $new=trans($new);}
					$s = $new;
	// 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=preg_replace('/[^A-zА-я0-9]/',"",$s);

					$new=$s;
					if (!$s) msg("Не указано имя");
				
					if (isset($l_i[$loc][$speak]["name"])) $tchar[0]=substr($tchar[0],0,-strlen($l_i[$loc][$speak]["name"])-1);
					$tchar[0].=" ".$new;
					$l_i[$loc][$speak]["name"]=$new;
					$l_i[$loc][$speak]["char"]=implode("|",$tchar);
					$stmp.="<small><b>Имя изменено на <font color=\"red\">".$tchar[0]."</font></b></small>";
					} else $stmp.="<input name=\"new\" emptyok=\"true\" type=\"text\" value=\"".$l_i[$loc][$speak]["name"]."\"/><br/><select name=\"tr\" multiple=\"true\" value=\"1\"><option value=\"1\">Транслит</option></select><br/><small><b><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=name&new=$(new)&tr=$(tr)\">Изменить имя</a></b></small>";
				}

			if ($id=='lask') {	// приласкать
				$skills=explode("|",$l_i[$loc][$login]["skills"]);
				if ($owner[3]>time()+240) msg("<small><b><font color=\"red\">$tchar[0]</font> не собирается покидать вас в ближайшие несколько минут, нет смысла уговаривать его остаться еще (попробуйте повторить когда срок службы будет на исходе).</b></small>"); 
				$char[6]=time()+10;
				$l_i[$loc][$login]["char"]=implode("|",$char);
				if (rand(0,100)<$skills[7]*10) {
					if ($owner[3]) {
						$owner[3]+=rand(60,60+$skills[20]*60);
						$stmp.="<small><b>Кажется, вы стали ".$tchar[0]." нравиться немного больше</b></small>";
						}else $stmp.=$tchar[0]." будет вам предан всегда, нет нужды в поощрении";
					}else $stmp.="<small><b>Ваша попытка не произвела на ".$tchar[0]." впечатления</b></small>";
				}

			if ($id=='info') {	// инфо когда покинет
				if (!$owner[3]) $stmp.="<small><b><font color=\"red\">$tchar[0]</font> никогда вас не покинет</b></small>";
				else {
					$skills=explode("|",$l_i[$loc][$login]["skills"]);
					$timeleft = ($owner[3]-time())/60;
					if ($timeleft<60*6) {
						$pogr = rand(0,10*(10-$skills[20]*2));
						$pogr = $pogr*$timeleft/100;
						$tc=round($timeleft+$pogr)." минут[ы]";
						} else $tc="примерно ".round($timeleft/60)." часа";
					$stmp.="<small><b>".$tchar[0]." покинет вас через ".$tc."</b></small>";
					}
				}
			if ($id=='free') {	// расстаться
				if ($owner[6]) {unset($l_i[$loc][$speak]["owner"]); addnpc($speak,$loc,$owner[6]);}
				else if ($owner[4]) {addnpc($speak,$loc);}
				else unset($l_i[$loc][$speak]["owner"]);
				msg("<small><b><font color=\"red\">$tchar[0]</font> покинул вас</b></small>");
				}

		if ($owner) $l_i[$loc][$speak]["owner"]=implode("|",$owner);
		msg($stmp,$tchar[0]);