Просмотр файла game/2/plugin/i.guildstone.dat

Размер файла: 10.14Kb
<?php
// камень гильдии

	$tc=explode("|",$l_i[$loc][$login]["char"]); 
	if (strpos($tc[0],"*")===false) $clan=""; else $clan=substr($tc[0],strpos($tc[0],"*")+1,strrpos($tc[0],"*")-strpos($tc[0],"*")-1);
	if ($clan && file_exists("../clans/".$clan)) $tmp=unserialize(implode("",file("../clans/".$clan))); else $tmp=array();

if (isset($tmp["g"][$login]) || isset($tmp["s"][$login])) {	// гилдмастер
	if ($to) {
		if (substr($to,0,2)!="u." || !isset($l_i[$loc][$to])) msg("Приглашать в свой клан можно только игроков");
		if ($to==$login) msg("Нельзя приглашать в клан самого себя");
		$tc1=explode("|",$l_i[$loc][$to]["char"]); 
		if (strpos($tc1[0],"*")===false) $clan1=""; else $clan1=substr($tc1[0],strpos($tc1[0],"*")+1,strrpos($tc1[0],"*")-strpos($tc1[0],"*")-1);
		if ($clan1==$clan && !$glava) msg($tc1[0]." и так в вашем клане");
		if ($clan1 && !$glava || $glava && $clan1!=$clan) msg($tc1[0]." состоит в клане ".$clan1.", а приглашать в свой можно только тех, кто не состоит ни в одном клане");
		// приглашаем...
		if ($glava && isset($tmp["g"][$login])) {
			$tmp["wg"][$to]="";
			addjournal($loc,$to,$tc[0]." приглашает вас быть главой его клана"); 
			addjournal($loc,$login,$tc1[0]." приглашен быть главой вашего клана, передайте ему камень гильдии, чтобы он использовал его на вас"); 
			} else {
				$tmp["w"][$to]="";
				addjournal($loc,$to,$tc[0]." приглашает вас в свой клан"); 
				addjournal($loc,$login,$tc1[0]." приглашен в ваш клан, передайте ему камень гильдии, чтобы он использовал его на вас"); 
				}
		$file = fopen ("../clans/".$clan, "w"); 
		if ($file!==false) {fputs($file,serialize($tmp));fclose($file);}
		} else {
			if ($del && isset($tmp["g"][$login])) {		// удаление из гильдии
				$b=0;
				if (isset($tmp["m"][$del])) {$b=1; unset($tmp["m"][$del]); addjournal($loc,$del,"Вы выгнаны из клана ".$clan."! При следующем логине надпись о вашем клане исчезнет");}
				if (isset($tmp["s"][$del])) {$b=1; unset($tmp["s"][$del]); addjournal($loc,$del,"Вы выгнаны из клана ".$clan."! При следующем логине надпись о вашем клане исчезнет");}
				if (isset($tmp["v"][$del])) {$b=1; unset($tmp["v"][$del]); addjournal($loc,$del,"Вы выгнаны из клана ".$clan."! При следующем логине надпись о вашем клане исчезнет");}
				if (isset($tmp["w"][$del])) {$b=1; unset($tmp["w"][$del]);}
				if (isset($tmp["wg"][$del])) {$b=1; unset($tmp["wg"][$del]);}
				if ($b) { 
					$file = fopen ("../clans/".$clan, "w"); 
					if ($file!==false) {fputs($file,serialize($tmp));fclose($file);}
					msg("Вы выгнали из клана/удалили из рекрутов ".substr($del,2));
					} else msg(substr($del,2)." нет в вашем клане");
				}
			if ($status && (isset($tmp["m"][$status]) || isset($tmp["s"][$status]) || isset($tmp["v"][$status])) && isset($tmp["g"][$login])){
							$b=0;
				//ОБЯЗАТЕЛЬНО сначала выдаем в журнал, а затем только меняем статус
				if ($t=='m' && !isset($tmp["m"][$status])) addjournal($loc,$status,"Глава клана ".$clan." изменил ваш ранг на Неофит!");
				if ($t=='s' && !isset($tmp["s"][$status])) addjournal($loc,$status,"Глава клана ".$clan." изменил ваш ранг на Сeнeшaль!");
				if ($t=='v' && !isset($tmp["v"][$status])) addjournal($loc,$status,"Глава клана ".$clan." изменил ваш ранг на Вассал!");
				if (isset($tmp["m"][$status]) && $t!='m') {$b=1; $tmp[$t][$status]=$tmp["m"][$status]; unset($tmp["m"][$status]); }
				if (isset($tmp["s"][$status]) && $t!='s' && count($tmp["s"]<'2')) {$b=1; $tmp[$t][$status]=$tmp["s"][$status]; unset($tmp["s"][$status]); }
				if (isset($tmp["v"][$status]) && $t!='v') {$b=1; $tmp[$t][$status]=$tmp["v"][$status]; unset($tmp["v"][$status]); }
				if ($b) { 
					$file = fopen ("../clans/".$clan, "w"); 
					if ($file!==false) {fputs($file,serialize($tmp));fclose($file);}
					msg("Ранг у игрока ".substr($status,2)." успешно изменен");
					} else msg("Не возможно изменить ранг");
			}
			if ($me && isset($tmp["g"][$login])) {
			msg("
<select name=\"t\" title=\"\">
<option value=\"s\">[Сeнeшaль]</option>
<option value=\"v\">[Вaccaл]</option>
<option value=\"m\">[Нeoфит]</option>
</select><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&status=".$me."&t=$(t)\">сохранить</a><br/>
<a href=\"$PHP_SELF?sid=$sid&use=$use&del=".$me."\">Выгнать</a>");
			}				
			if ($info) {	// инфо о клане
				if ($write) {
					if ($clear) $write=""; else {
					if ($translit) {include "f_translit.dat"; $write=trans($write);} 
					// UTF-8 русские буквы
					$s=$write;
					$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);
					$write=$s;
					}
					$tmp["i"]=$write;
					$file = fopen ("../clans/".$clan, "w"); 
					if ($file!==false) {fputs($file,serialize($tmp));fclose($file);}
					msg("<small><b>Описание клана сохранено</b></small>");
					}
				msg("<small><b>описание клана:<br/><input name=\"write\" value=\"".$tmp["i"]."\"/><br/><select name=\"translit\" multiple=\"true\" value=\"1\"><option value=\"1\">Транслит</option></select><br/><a href=\"$PHP_SELF?sid=$sid&use=$use&info=1&write=$(write)&translit=$(translit)\">Ок</a></b></small>");
				}
			if (!$cadd) {	// меню
				$stmp="<p>[<a href=\"$PHP_SELF?sid=$sid&use=$use&cadd=1\">Пригласить</a>]";
				if (isset($tmp["g"][$login])) $stmp.=" [<a href=\"$PHP_SELF?sid=$sid&use=$use&cadd=1&glava=1\">Сделать главой</a>]";
				$stmp.=" [<a href=\"$PHP_SELF?sid=$sid&use=$use&cadd=1&info=1\">Инфо о клане</a> (<a href=\"$PHP_SELF?sid=$sid&use=$use&info=1&write=1&clear=1\">очистить</a>)]";
				if ($tmp["m"] || $tmp["v"] || $tmp["s"] && isset($tmp["g"][$login])) {
				if ($tmp["m"]) {$stmp.="<br/>Неофиты:";
					if (!$start) $start=0;
					$keys=array_keys($tmp["m"]);
					for($i=$start;$i<count($keys) && $i<$start+$g_list;$i++) $stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&me=".$keys[$i]."\">".substr($keys[$i],2)."</a>";
					$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&use=i.guildstone&start=".($start+$g_list)."\">+</a>"; }
				if ($tmp["s"]) {$stmp.="<br/>Сенешали:";
					if (!$start) $start=0;
					$keys=array_keys($tmp["s"]);
					for($i=$start;$i<count($keys) && $i<$start+$g_list;$i++) $stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&me=".$keys[$i]."\">".substr($keys[$i],2)."</a>";
					$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&use=i.guildstone&start=".($start+$g_list)."\">+</a>"; }
				if ($tmp["v"]) {$stmp.="<br/>Вассалы:";
					if (!$start) $start=0;
					$keys=array_keys($tmp["v"]);
					for($i=$start;$i<count($keys) && $i<$start+$g_list;$i++) $stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&me=".$keys[$i]."\">".substr($keys[$i],2)."</a>";
					$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&use=i.guildstone&start=".($start+$g_list)."\">+</a>"; }
					} elseif (isset($tmp["g"][$login])) $stmp.="<br/>В вашем клане, кроме вас, никого нет.";
				if ($tmp["wg"] && isset($tmp["g"][$login])) {
					$stmp.="<br/><br/>Ожидают, чтобы стать главой вашего клана:";
					if (!$start) $start=0;
					$keys=array_keys($tmp["wg"]);
					for($i=$start;$i<count($keys) && $i<$start+$g_list;$i++) $stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&del=".$keys[$i]."\">".substr($keys[$i],2)."</a>";
					$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&use=i.guildstone&start=".($start+$g_list)."\">+</a>";
					}
				if ($tmp["w"] ) {
					$stmp.="<br/><br/>Рекруты (ожидают вступления):";
					if (!$start) $start=0;
					$keys=array_keys($tmp["w"]);
					for($i=$start;$i<count($keys) && $i<$start+$g_list;$i++) $stmp.="<br/><a href=\"$PHP_SELF?sid=$sid&use=$use&del=".$keys[$i]."\">".substr($keys[$i],2)."</a>";
					$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&use=i.guildstone&start=".($start+$g_list)."\">+</a>";
					} else $stmp.="<br/>Список рекрутов пуст.";
				$stmp.="\n<br/><a href=\"$PHP_SELF?sid=$sid&use=i.guildstone\">^</a>";
				msg($stmp);
				}else $list='all';	// ниже выведем список
			}
	}else {		// if (!$clan) ни в одном клане
		if ($to) {
			if (substr($to,0,2)!="u." || !isset($l_i[$loc][$to])) msg("Вы должны были выбрать игрока");
			if (substr($to,0,2)==$login) msg("Нельзя выбирать самого себя");

			$tc=explode("|",$l_i[$loc][$to]["char"]); 
			if (strpos($tc[0],"*")===false) $clan=""; else $clan=substr($tc[0],strpos($tc[0],"*")+1,strrpos($tc[0],"*")-strpos($tc[0],"*")-1);
			if ($clan && file_exists("../clans/".$clan)) $tmp=unserialize(implode("",file("../clans/".$clan))); else $tmp=array();
			if (!isset($tmp["g"][$to]) && !isset($tmp["s"][$to])) {msg("Выбирать можно только главу клана");}
			if (!isset($tmp["w"][$login]) && !isset($tmp["wg"][$login])) msg("Вы не числитесь в списках рекрутов клана ".$clan.", обратитесь к главе этого клана");

			// вступаем в клан $clan
			if (isset($tmp["wg"][$login])) $b=1; else $b=0;
			if ($b) {
				unset($tmp["wg"][$login]);
				$keys=array_keys($tmp["g"]);
				$tmp["m"][$keys[0]]=$tmp["g"][$keys[0]];// бывший глава рядовым
				unset($tmp["g"]);	// удаляем старого главу клана
				$tmp["g"][$login]=$p;
				}else {
					unset($tmp["w"][$login]);
					$tmp["m"][$login]=$p;
					}
			$file = fopen ("../clans/".$clan, "w"); 
			if ($file!==false) {fputs($file,serialize($tmp));fclose($file);}
			$tc=explode("|",$l_i[$loc][$login]["char"]); 
			if(strpos($tc[0],"*")!==false) $tc[0]=substr($tc[0],0,strpos($tc[0],"*")-1);
			$tc[0].=" *".$clan."*";
			$l_i[$loc][$login]["char"]=implode("|",$tc);
			if ($b) addjournal($loc,$to,$tc[0]." теперь глава вашего клана!"); else addjournal($loc,$to,$tc[0]." вступил в ваш клан!");
			if ($b) msg("<small><b>Поздравляем, вы теперь глава клана ".$clan.", рекомендуем <a href=\"$PHP_SELF?sid=$sid&logout=1\">сохранить персонажа</a></b></small>"); else msg("<small><b>Поздравляем, вы зачислены в клан ".$clan.", рекомендуем <a href=\"$PHP_SELF?sid=$sid&logout=1\">сохранить персонажа</a></b></small>");
			} else $list='all';
		}//else msg("<small><b>Вы состоите в клане ".$clan.", чтобы использовать камень гильдии надо быть либо главой клана, либо не состоять ни в одном клане</b></small>");