View file game/2/f_additem.dat

File size: 7.31Kb
<?php
global $g_destroy, $l_i;

if ($count!='count') {
	$count=intval($count);
	if (gettype($count)!='integer' || $count==0) {msg('Количество равно '.$count); if ($journal && $to) addjournal($loc,$to,'Количество равно '.$count); $res=0; return 0;}
	}
if ($time_delete==-1) $time_delete=$g_destroy;
if (strpos($item,'_')!==false) $tk=substr($item,0,strpos($item,'_')); else
if (strpos($item,'-')!==false) $tk=substr($item,0,strpos($item,'-')); else $tk=$item;
if (substr($item,0,5)=='i.rr.') $title_v=explode('|','руна|50'); else if (!file_exists('items/'.$tk)) {$res=0; return 0;} else {$title_v=explode('|',implode('',file('items/'.$tk)));}
$title_v=$title_v[0];
if ($from && $from!='loc' && !isset($l_i[$loc][$from])) {if ($journal && $to) addjournal($loc,$to,'Не от кого забрать '.$title_v); $res=0; return 0;}
if ($to && $to!='loc' && !isset($l_i[$loc][$to])) {if ($journal && $from) addjournal($loc,$from,'Некому передать '.$title_v); $res=0; return 0;}

// получение кол-ва
if ($count=='count') {
	if ($from=='loc') {
		if (!isset($l_i[$loc][$item])) {$res=0; return 0;} else {$tmp=explode('|',$l_i[$loc][$item]); $res=$tmp[1]; return $tmp[1];}
		} else {$res=intval(preg_replace('/.*'.$item.':(\d+).*/','\\1',$l_i[$loc][$from][$ft])); return $res;}
	}

if ($item=='i.q.pjpt' || $item=='i.q.pdeath') if (substr($to,0,2)=='u.' && (strpos($l_i[$loc][$to][$tt],$item)!==false || $count>1)) msg('У вас уже есть '.$title_v.', нельзя хранить более одного');
if ($item=='i.q.ssword' && substr($to,0,2)=='u.') {$tcs=intval(preg_replace('/.*'.$item.':(\d+).*/','\\1',$l_i[$loc][$to][$tt])); if ($tcs>1 || $count>2 || $tcs==1 && $count==2) msg('Можно держать одновременно не более 2 стеклянных мечей');}
if ($to==$from && ($ft=='bank' || $tt=='bank') && substr($to,0,2)=='u.' && strlen($l_i[$loc][$to][$tt])>800 && strpos($l_i[$loc][$to][$tt],$item.':')===false) msg('Нет места для '.$title_v);
if (substr($item,0,4)=='i.s.' && (substr($to,0,2)=='u.' || substr($from,0,2)=='u.')) msg('Нельзя передать');

if ($from) {
	if ($from=='loc') {
		if (!isset($l_i[$loc][$item])) {
			if ($journal && $to) addjournal($loc,$to,$title_v.' отсутствует');
			$res=0;
			return 0;
			} else {
				$tmp=explode('|',$l_i[$loc][$item]);
				if ($tmp[1]<$count) {if ($journal && $to) addjournal($loc,$to,'Количество '.$title_v.' меньше, чем '.$count); $res=0; return 0;}
				$tmp[1]-=$count;
				if ($tmp[1]==0) unset($l_i[$loc][$item]); else $l_i[$loc][$item]=implode('|',$tmp);
				}
		}

	if ($from!='loc') {
		if (substr($from,0,6)=='i.s.d.') $d=1; else $d=0;
		if (!$d) {
			$ftitle_v=explode('|',$l_i[$loc][$from]['char']);
			$ftitle_v=$ftitle_v[0];
			$items=$l_i[$loc][$from][$ft];
			} else {$tdied=explode('|',$l_i[$loc][$from]); $items=str_replace(',','|',$tdied[3]);}
$items=preg_replace ('/\|{2,}/','|',$items);
if(substr($items,0,1)=='|') $items=substr($items,1);
if(substr($items,strlen($items)-1,1)=='|') $items=substr($items,0,strlen($items)-1);

		$tcount=intval(preg_replace('/.*'.$item.':(\d+).*/','\\1',$items));
		if ($tcount==0) {
			if ($msg) msg('У вас нет '.$title_v);
			if ($journal && $to) addjournal($loc,$to,'Количество '.$title_v.' равно нулю');
			if ($journal && !$d) addjournal($loc,$from,'У вас нет '.$title_v);
			$res=0;
			return 0;
			} else {
				if ($tcount<$count) {
					if ($msg) msg('У вас недостаточно '.$title_v.' (надо '.$count.')');
					if ($journal && $to) addjournal($loc,$to,'Количество '.$title_v.' меньше, чем '.$count);
					if ($journal && !$d) addjournal($loc,$from,'У вас количество '.$title_v.' меньше, чем '.$count);
					$res=0;
					return 0;
					}
				if ($tcount==$count && strpos($items,'='.$item.':'.$tcount)===false) {	// удаляем предмет (кроме торговцев, у кот. ver|min|max=id:count), проверяем equip
					$items=preg_replace('/\|?'.$item.':(\d+)/','',$items);
					$equip=$l_i[$loc][$from]['equip'];
					$tbp=strpos($l_i[$loc][$from]['equip'],$item);
					if ($tbp===false) $tb='a'; else $tb=$l_i[$loc][$from]['equip']{$tbp+strlen($item)};
					if (!$d && $equip && ($tb=='|' || $tb=='')) {
						$equip=preg_replace('/'.$item.'\|?/','',$equip);
$equip=preg_replace ('/\|{2,}/','|',$equip);
if(substr($equip,0,1)=='|') $equip=substr($equip,1);
if(substr($equip,strlen($equip)-1,1)=='|') $equip=substr($equip,0,strlen($equip)-1);
						$l_i[$loc][$from]['equip']=$equip;
						$l_i[$loc][$from][$ft]=$items;
						calcparam($loc,$from);
						}
					}else{
						$tcount-=$count;
						$items=preg_replace('/'.$item.':(\d+)/',$item.':'.$tcount,$items);
						}
				if (!$d) $l_i[$loc][$from][$ft]=$items; else {if (strpos($tdied[0],'*')===false) $clan=''; else $clan=substr($tdied[0],strpos($tdied[0],'*')+1,strrpos($tdied[0],'*')-strpos($tdied[0],'*')-1); if ($to) $tc=explode('|',$l_i[$loc][$to]['char']); else $tc[0]=''; if (strpos($tc[0],'*')===false) $clan1=''; else $clan1=substr($tc[0],strpos($tc[0],'*')+1,strrpos($tc[0],'*')-strpos($tc[0],'*')-1); if($tc[13]) $wife=substr($from,6,strrpos($from,'.')-6)==substr($tc[13],0,strlen(substr($from,6,strrpos($from,'.')-6))); else $wife=0; if (!$tdied[1] && $to && substr($from,0,strlen('i.s.d.'.$to))!='i.s.d.'.$to && (!$clan1 || ($clan1 && $clan1!=$clan)) && !$wife && substr($from,0,11)!='i.s.d.u.qv.') docrim($loc,$to,'мародер'); $tdied[3]=str_replace('|',',',$items); $l_i[$loc][$from]=implode('|',$tdied);}
				if ($journal && $to=='loc') {if ($journal && !$d) addjournal($loc,$from,'Вы бросили '.$count.' '.$title_v); if ($journal && !$d) addjournal($loc,'all',$ftitle_v. ' бросил '.$count.' '.$title_v,$from);}
				if ($journal && $to!='loc') if ($journal && !$d) addjournal($loc,$from,'Вы потеряли '.$count.' '.$title_v);
				}
		}
	}


if ($to) {

	if ($to!='loc') {
		if (substr($to,0,6)=='i.s.d.') $d=1; else $d=0;
		if (!$d) {
			$ftitle_v=explode('|',$l_i[$loc][$to]['char']);
			$ftitle_v=$ftitle_v[0];
			$items=$l_i[$loc][$to][$tt];
			} else {$tdied=explode('|',$l_i[$loc][$to]); $items=str_replace(',','|',$tdied[3]);}

$items=preg_replace ('/\|{2,}/','|',$items);
if(substr($items,0,1)=='|') $items=substr($items,1);
if(substr($items,strlen($items)-1,1)=='|') $items=substr($items,0,strlen($items)-1);

		if (substr($to,0,2)=='u.') {
			if (strlen($items)>800 && strpos($items,$item.':')===false) {
				addjournal($loc,$to,'Не хватает места, '.$title_v.' упал вам под ноги');
				$to='loc';
				}
			}

		if ($to!='loc') {
			$tcount=intval(preg_replace('/.*'.$item.':(\d+).*/','\\1',$items));

			if ($tcount==0) {	// торговцам новый предмет в банк не добавляем
				if (strpos($items,'='.$item.':'.$tcount)===false) if($items=='') $items=$item.':'.$count; else $items.='|'.$item.':'.$count;
				} else {
					$tcount+=$count;
					$items=preg_replace('/'.$item.':(\d+)/',$item.':'.$tcount,$items);
					}
			if (!$d) $l_i[$loc][$to][$tt]=$items; else {$tdied[3]=str_replace('|',',',$items); $l_i[$loc][$to]=implode('|',$tdied);}
			if ($journal && $from=='loc') {if ($journal && !$d) addjournal($loc,$to,'Вы подняли '.$count.' '.$title_v); if ($journal && !$d) addjournal($loc,'all',$ftitle_v. ' поднял '.$count.' '.$title_v,$to);}
			if ($journal && $from!='loc') if ($journal && !$d) addjournal($loc,$to,'Вы получили '.$count.' '.$title_v);
			}
		}

	if ($to=='loc') {
		if (!isset($l_i[$loc][$item])) {
			$l_i[$loc][$item]=$title_v.'|'.$count.'|'.(time()+$time_delete);
			} else {
				$tmp=explode('|',$l_i[$loc][$item]);
				$tmp[1]+=$count;
				$tmp[2]=time()+$time_delete;
				$l_i[$loc][$item]=implode('|',$tmp);
				}
		}
	}
$res=1;
return 1;	// ок