View file game/2/f_speako.dat

File size: 10.71Kb
<?php
// диалог с стражником замка

if(substr($loc,0,2)!="c." || substr($loc,3)==".in") {
	// в дороге...
	$owner=explode("|",$l_i[$loc][$speak]["owner"]);
	msg("Я нанят для защиты ворот замка от непрошенных гостей. Если в течении ".round(($owner[3]-time())/60)." минут я не попаду в замок, который должен защищать, то контракт будет расторгнут.");
	}

// в замке...
// инфа о замке
$gate=substr($loc,0,4)."gate";
$d=explode("|",$l_tt[$gate]["d"]);
if (strpos($d[0],"*")===false) msg("Этот замок никому не принадлежит, я не буду защищать его, пока не определится хозяин этой земли!");
$clanc=substr($d[0],strpos($d[0],"*")+1,strrpos($d[0],"*")-strpos($d[0],"*")-1);

// слушается только клановцев, владеющих замком, гостей нет
if (strpos($char[0],"*")===false) $clan=""; else $clan=substr($char[0],strpos($char[0],"*")+1,strrpos($char[0],"*")-strpos($char[0],"*")-1);
if ($clan && file_exists("../clans/".$clan)) {
$tmp=unserialize(implode("",file("../clans/".$clan))); }
if ($clanc!=$clan) msg("Вы не состоите в клане, которому принадлежит этот замок, поэтому мне нечего вам сказать. Найдите в замке барона Дитриха моего командира, стражника Лансета, он знает все о крепостях, о том как их захватывать и защищать.");

			if (!$id) {			// основной диалог
				$stmp="<p>Что прикажете, сир?";
				$stmp.="<br/><a href=\"#move\">Иди...</a>";
				$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=close\">Запереть ворота</a>";
				$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=new\">Пропустить гостя...</a>";
				$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=list\">Список гостей</a>";
				$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=status\">Статус?</a>";
				$stmp.="\n</p>\n</card>\n<card id=\"move\" title=\"Иди...\">\n<p>Куда?";
				if (substr($loc,3)==".gate") $stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=move&to=tron\">В тронный зал</a>\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=move&to=sklad\">В кладовую</a>\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=move&to=main\">Общий зал</a>";
					else $stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=move&to=gate\">К воротам</a>\n<br/>";
if(substr($loc,3)==".sklad") $stmp.="<a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=move&to=hran\">В хранилище</a>";
				elseif(substr($loc,3)==".hran") $stmp.="<a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=move&to=sklad\">В кладовую</a>\n";
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			if ($id=='new') {	// список кого пропустить
			if (!isset($tmp["m"][$login])) {
				$stmp="";
				$in=substr($loc,0,4)."in";
				loadloc($in);
				if ($l_i[$in]) foreach (array_keys($l_i[$in]) as $i) if (substr($i,0,2)=='u.') {
					$tto=explode("|",$l_i[$in][$i]["char"]);
					$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=add&who=".$i."\">".$tto[0]."</a>";
					}
				if($stmp) $stmp="<p>Кого из ожидающих у ворот замка отныне считать гостем?".$stmp; else $stmp="<p>У ворот замка никого нет";
				} else $stmp.="Неофиты не могут приглошать гостей";
				}
			if ($id=='add' && $who && !isset($tmp["m"][$login])) { // добавить гостя $who
				if (strpos($l_tt[$gate]["d"],":".$who.":")!==false) msg(substr($who,2)." и так является гостем этого замка, сир.");
				$d[0].=":".$who.":";
				$l_tt[$gate]["d"]=implode("|",$d);
				$l_tt[$gate]["save"]=1;
				$stmp.=substr($who,2)." с этого момента является гостем этого замка и может беспрепятственно входить и выходить из него.";
				}
			if ($id=='list') {	// список гостей
				$stmp="<p>Кого больше не считать гостем замка?";
				$xF = preg_match_all("':([^:]+):'",$d[0],$regF);
				for ($i=0;$i<$xF;$i++) {
					$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=del&who=".$regF[1][$i]."\">".substr($regF[1][$i],2)."</a>";
					}
				if ($xF==0) $stmp="<p>Сожалею, сир, но список гостей замка пуст.";
				}

			if ($id=='del' && $who && !isset($tmp["m"][$login])) { // удалить гостя $who
				if (strpos($l_tt[$gate]["d"],":".$who.":")===false) msg(substr($who,2)." не является гостем этого замка, сир.");
				$d[0]=str_replace(":".$who.":","",$d[0]);
				$l_tt[$gate]["d"]=implode("|",$d);
				$l_tt[$gate]["save"]=1;
				$stmp.=$tchar[0]." с этого момента больше не является гостем замка, если попытается проникнуть внутрь, будет немедленно атакован стражниками.";
				}

			if ($id=='status') {	// инфо когда покинет
				$owner=explode("|",$l_i[$loc][$speak]["owner"]);
				$stmp.="Я буду на службе до ".date("d/m Y H:i",$owner[3]).", вы хотите продлить контракт?";
				if (substr($speak,0,11)=="n.o.castle1") $tc=50;
				if (substr($speak,0,11)=="n.o.castle2") $tc=60;
				if (substr($speak,0,11)=="n.o.castle3") $tc=70;
				if (substr($speak,0,11)=="n.o.castle4") $tc=100;
				$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=cont&val=1\">1 день - ".$tc." монет</a>";
				$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=cont&val=3\">3 дня - ".(3*$tc)." монет</a>";
				$stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=cont&val=5\">5 дней - ".(5*$tc)." монет</a>";
				}

			if ($id=='cont' && $val) { // продление контракта, в зав. от типа наемника
				if ($val!=1 && $val!=3 && $val!=5) msg("Не понял, на какой срок вы хотите продлить контракт?");
				$owner=explode("|",$l_i[$loc][$speak]["owner"]);
				if (substr($speak,0,11)=="n.o.castle1") $tc=50;
				if (substr($speak,0,11)=="n.o.castle2") $tc=60;
				if (substr($speak,0,11)=="n.o.castle3") $tc=70;
				if (substr($speak,0,11)=="n.o.castle4") $tc=100;
				additem($loc,$login,"","i.money",$tc*$val,"items","items",1,0,1);
				$owner[3]+=$val*60*60*24;
				$l_i[$loc][$speak]["owner"]=implode("|",$owner);
				$stmp.="Контракт продлен на ".$val." дней. Клянусь защищать этот замок от любого, кто посмеет оспаривать ваши права на него, будь то человек или зверь.";
				}

			if ($id=='move' && $to) {	// идти
				if(!isset($l_tt[substr($loc,0,4).$to])) msg("Сожалею, сир, но в вашем замке нет такого места");
				$count=0;
				if($l_i[substr($loc,0,4).$to]) foreach(array_keys($l_i[substr($loc,0,4).$to]) as $i) if (substr($i,0,4)=="n.o.") $count++;
				if ($count>=5) msg("Сожалею, сир, но там уже полно стражников, во время боя мы будем только мешать друг другу.");
				addjournal($loc,"all",$tchar[0]." говорит: слушаюсь, сир");
				addnpc($speak,$loc,substr($loc,0,4).$to);
				$stmp="";
				}

			if ($id=='close') {	// запереть ворота
				if (strpos($d[0],"#")===false) $timez=0; else $timez=substr($d[0],strpos($d[0],"#")+1,strrpos($d[0],"#")-strpos($d[0],"#")-1);
				if (strpos($d[0],"{")===false) $t1=0; else $t1=substr($d[0],strpos($d[0],"{")+1,strrpos($d[0],"}")-strpos($d[0],"{")-1);
				if ($rclose) {
					if (time()<$t1) msg("Ворота и так закрыты!");
					if (time()<$timez) msg("Сожалею, мы не можем закрыть ворота до ".date("d/m H:i",$timez).", так как их открыли совсем недавно и рычаги еще не возвращены в исходное состояние");
					// проверим, нет ли врагов
					$arr=array("main","gate","tron","sklad");
					$tc=substr($loc,0,4);
					if (strpos($d[0],"*")===false) $clanc=""; else $clanc=substr($d[0],strpos($d[0],"*")+1,strrpos($d[0],"*")-strpos($d[0],"*")-1);
					$b=0;
					foreach($arr as $i) {
						loadloc($tc.$i);
						if ($l_i[$tc.$i]) foreach(array_keys($l_i[$tc.$i]) as $k) if($k!=$login && substr($k,0,2)=="u.") {
							$tchar=explode("|",$l_i[$tc.$i][$k]["char"]);
							if (strpos($tchar[0],"*")===false) $tclan=""; else $tclan=substr($tchar[0],strpos($tchar[0],"*")+1,strrpos($tchar[0],"*")-strpos($tchar[0],"*")-1);
							if (!$tchar[8] && $tclan!=$clanc && strpos($d[0],":".$k.":")===false) $b=1;
							}
						}
					if ($b) msg("В замке враги, мы не можем отвлекаться на ворота, вначале надо завершить бой");
					// ок, запираем на 10 часов
					if (strpos($d[0],"{")!==false) $d[0]=substr($d[0],0,strpos($d[0],"{")).substr($d[0],strpos($d[0],"}")+1);
					if (strpos($d[0],"#")!==false) $d[0]=substr($d[0],0,strpos($d[0],"#")).substr($d[0],strrpos($d[0],"#")+1);
					$d[0].="{".(time()+60*60*10)."}";
					$l_tt[$gate]["d"]=implode("|",$d);
					$l_tt[$gate]["save"]=1;
					addjournal($loc,$login,"Вы заперли ворота замка на ближайшие 10 часов");
					} else $stmp="Вы действительно хотите закрыть ворота замка на ближайшие 10 часов?<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=close&rclose=1\">Да, опускайте решетку прямо сейчас!</a><br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak\">Нет, я передумал</a><br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=iclose\">Расскажи подробнее об этом</a>";
				}

			if ($id=='iclose') $stmp="Мы можем сейчас закрыть ворота на ближайшие 10 часов и никто из посторонних не попадет внутрь замка, но если придет кто-то из хозяев замка и откроет ворота, либо истекут эти 10 часов, то ворота нельзя будет закрыть в течении следующих 8 часов.<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=iclose2\">Т.е. замок невозможно будет захватить?</a><br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=iclose3\">А если закрыть ворота во время боя?</a><br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=close\">Ясно</a>";
			if ($id=='iclose2') $stmp="Верно. Правда, есть небольшой нюанс - враги могут осаждать замок, пытаясь попасть внутрь даже при запертых воротах! Решетка их, конечно, остановит, но стража во внутреннем дворе будет вынуждена участвовать в бою, т.к. в нее могут стрелять сквозь решетку и навесом через стены замка. Поэтому если ты не хочешь напрасно терять людей, лучше прежде чем запереть ворота отведи их в дальние части замка, например, в тронный или общий зал.<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=iclose\">Я учту это, спасибо за совет</a>";
			if ($id=='iclose3') $stmp="Хе-хе, интересная мысль. К сожалению, если враги уже внутри самого замка, то наш первейший долг разобраться с ними, поэтому закрыть ворота окажется просто некому - все стражники будут заняты боем (или поиском затаившихся лазутчиков). Мы же не можем возиться с засовом, когда в нескольких шагах рядом убивают наших, верно?<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=close\">Верно</a><br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=iclose4\">А если мы отобьем первую атаку, но за воротами будут еще враги, то можем закрыть ворота, чтобы они не попали внутрь, а мы могли отсидеться в замке?</a>";
			if ($id=='iclose4') $stmp="Разумеется, для того ворота и существуют, чтобы по тревоге их можно было закрыть! Если ваши враги настолько глупы, что не могут организовать массовый штурм, а будут посылать по одному человеку, оповещая этим всю стражу, то это их проблемы. Учти только, что если решишь переждать в замке, то должен стоять на месте (не подходи к воротам, чтобы в суматохе осады не оказаться случайно за ними ;-))<br/><a href=\"$PHP_SELF?sid=$sid&speak=$speak&id=iclose\">Ок, все понял</a>";

		if ($stmp) msg($stmp,$tchar[0]);