Problema senza senso!

TheTrigger

Utente Attivo
3 Giu 2011
38
0
0
Salve a tutti, apro questa discussione in modo abbastanza disperato

Nel mio codice php, ho una funzione che mi salva dei dati di testo (degli array 'parsati') su un altro file php (questo file ha estensione php ma non viene 'eseguito', solo letto come testo), praticamente il codice che lo genera è strutturato così:


Codice:
# FILE 1
varie elaborazioni
Ciclo di 2
{
 elabora dati
 Salva dati.
} // alla fine di questo sono state salvate 2 righe di array(multidimensionali) parsati.. es: $array[$X]['datox']['datoy]['datoz'], su $X cè 1 e 2, e vengono salvati correttamente
__
(questo file viene incluso poco dopo)
#FILE 2
carica & visualizza dati (e si stampano 'giustamente' 2 righe)

La funzione che salva i dati, quando lo fa scrive su schermo una frase gigante (proprio x accertarmi che i salvataggi siano avvenuti e nel numero corretto), e mi vengono stampati appunto questi 2 avvisi.
Invece la funzione viene richiamata ben 4 volte! (o meglio, il salvataggio è eseguito 4 volte e l'avviso avviene 2 volte). All'interno di questa funzione NON ci sono cicli!

Sarà 1 mese che cerco il pezzo di codice marcio, ma non ce ne è traccia... stò cominciando a pensare che sia qualche altro problema (qualcosa overflow???oO), utilizzo vettori con anche 5 profondità (farà mica impazzire php?._.) ed anche le funzione ob_start, ma ho provato a rimuoverle ma non cambia niente.....

Un altra cosa senza senso apparente è che se metto un die() nel file che carica i dati prima della metà il codice di salvataggio si comporta nella maniera giusta, se invece lo metto dopo circa la metà il codice sballa come ho descritto...

Chissà cosa penserete dopo aver letto una 'boiata' del genere, ma proprio non ne vengo a capo..!!

// Non ho postato il codice perché lo ritengo troppo intrippato.. ma se non avete idea di cosa possa essere (al di fuori di errori di codice) lo incollo..

Grazie
 

TheTrigger

Utente Attivo
3 Giu 2011
38
0
0
Ok capo... Il mio progetto è un browsergame (giusto x farti capire il senso del codice), e questa è la parte relativa agli scontri a turni.


ELABORAZIONE DEI DATI:
PHP:
<?php
require_once('battle/lib.battle.php');

// questa pagina viene inclusa nella index.php
if ($battle_status == 1)
{	
	### INIT ###
	$data['action_type'] = 0;
	$spellid = 0;
	$EndBattle = FALSE;
	############
	
	### leggi azione del player
	
	if 	(substr($act,0,8) == 'spellid:')
	{
		$spellid = (int)substr($act,8);
		$data['action_type'] = 2; # try to cast a spell
	}
	elseif (!empty($act))
		switch ($act)
		{
			case 'attack':
				$data['action_type'] = 1;
				$spellid = 0;
				debug("Azione: Attacco");
			break;
			
			case 'fuga':
				TryEscapeBattle();
				$data['action_type'] = 1;
				$spellid = 0;
				debug("Azione: FUGA");
			break;
			
			default:
				$data['action_type'] = 0;
				$spellid = 0;
				debug("AZIONE: NO",1);
			break;
			
		}
		
	
	if ($data['action_type'] != 0)
	{
		// leggo l'ID del match
		$matchid =& $PLAYER['matchid'];
		$array = read_Match($matchid);
		
		$Players = 1; // Dopotutto, io ci son perforza,no?
		foreach($array[0][0] as $key => $value)
		{
			if (is_numeric($array[0][0][$key]['id'])) 
			{
				++$Players; 
				$CreepID = $key;
				//debug("\$CreepID settato su '$CreepID'");	
			}
		}
				
		$guys[$name]['nome'] =& $PLAYER['nome'];
		$guys[$name]['hp'] =& $PLAYER['hp'];
		$guys[$name]['hp_max'] =& $PLAYER['hp_max'];
		$guys[$name]['mana'] =& $PLAYER['mana'];
		$guys[$name]['mana_max'] =& $PLAYER['mana_max'];
		$guys[$name]['level'] =& $PLAYER['level'];
		$guys[$name]['forza'] =& $PLAYER['forza'];
		$guys[$name]['destrezza'] =& $PLAYER['destrezza'];
		$guys[$name]['intelligenza'] =& $PLAYER['intelligenza'];
		$guys[$name]['fatica'] =& $PLAYER['fatica'];
		$guys[$name]['fame'] =& $PLAYER['fame'];
		$guys[$name]['basedamage'] =& $PLAYER['basedamage'];
		$guys[$name]['attack'] =& $PLAYER['attack'];
		$guys[$name]['armor'] =& $PLAYER['armor'];
		$guys[$name]['buffs'] = $PLAYER['buffs'];
		$guys[$name]['weaponid'] =& $PLAYER['weaponid'];
		$guys[$name]['armorid'] =& $PLAYER['armorid'];
		$guys[$name]['id'] =& $PLAYER['nome'];
		$guys[$name]['buffs'] = $PLAYER['buffs'];
		$guys[$name]['avatar'] =& $PLAYER['avatar'];
		$guys[$name]['azione'] = 0;
		
		$MaxRound = (count($array)-1); // Rounds 
		$MaxSubRound = (count($array[$MaxRound])-1); // SubRounds
		
		$SaveNRound = $MaxRound+1;	
			
		## Ora leggo le stats
		$guys[$CreepID] = $array[$MaxRound][$MaxSubRound][$CreepID];
			
		if(isset($array[$MaxRound][$MaxSubRound][$name]))
			$guys[$name]['buffs'] = $array[$MaxRound][$MaxSubRound][$name]['buffs'];
			
		if(!isset($guys[$CreepID]['avatar'])) $guys[$CreepID]['avatar'] = FALSE;
			
		##########	
		for ($SubRound = 1; $SubRound <= $Players; $SubRound++)
		{
			# caso di chi attacca.
			# leggi ultimo attaccante per percentuali(da fare)
			switch($SubRound)
			{
				case 1:
					$guy = $name;
					$target = $CreepID;
					break;
				
				case 2:
					$guy = $CreepID;
					$target = $name;
					break;
			}
			$guys[$target]['azione'] = 0;
			$guys[$guy]['azione'] = 1;
			
			if (($guys[$guy]['hp'] > 0) && ($guys[$target]['hp'] > 0))
			{
				
				#								#
				#		INIZIALIZZAZIONE		#
				#			BATTAGLIA			#
				#								#
				#								#
				
				$data['criticalchance'] = 3; // %di critico (modifica in base allo spirito e altre cazz4te)
				$data['extradamage'] = 0; // x + y
				$data['moltiplicator'] = 1; // x * y
				$data['total_damage'] = 0;
				$guys[$guy]['dannoinflitto'] = 0;
				
				
				if(!is_array($guys[$guy]['buffs'])) $guys[$guy]['buffs'] = array();
				
				if (is_numeric($guy)) // scriptare la ia
				{
					debug('Azione creep (1)');
					$data['action_type'] = 1;
					$spellid = 0;
				}
	
				if ($data['action_type'] == 2) // Cast
				{
					debug("Rilevato tentativo di cast: ($spellid)");
					$guys[$guy]['buffs'][$spellid] = SPELL_LOAD($spellid);
					
					if ($guys[$guy]['mana'] >= (int)$_SESSION['SPELL_CACHE'][$spellid]['manacost'])
					{
						$guys[$guy]['mana'] -= $_SESSION['SPELL_CACHE'][$spellid]['manacost'];
						debug("MANA PRESENTE.");
					}
					else
					{
						debug("NIENTE MANA! Spellid >> 4");
						$guys[$guy]['buffs'][$spellid = 4] = SPELL_LOAD($spellid,'rounds');
					}
				}	
			
			
				if(mt_rand(1,100) <= $data['criticalchance'] && $spellid == 0)
				{
					debug("Eseguito critico!");
					$spellid = 3;
					$guys[$guy]['buffs'] = SPELL_LOAD(3,'rounds');
				}
				
				//var_dump($guys[$guy]['buffs']);
				
				BattleBuffs($guy);

				if ($data['action_type'] == 1)
				{
					$logaritmodifesa = ArmorMath($guys[$target]['armor']);
					
					$data['total_damage'] += 
						round((
							($guys[$guy]['basedamage']+mt_rand(-$guys[$guy]['basedamage']*0.13,$guys[$guy]['basedamage']*0.13)) 
							* $data['moltiplicator'])+$data['extradamage']);
							
					$data['total_damage'] = round($data['total_damage'] - $data['total_damage'] * $logaritmodifesa);
					
					$guys[$guy]['dannoinflitto'] = $data['total_damage'];
					# ...
					#		...
					$guys[$target]['hp'] -= $data['total_damage'];
				}
				
				if ($PLAYER['records']['maxdamage'] < $data['total_damage'])
					$PLAYER['records']['maxdamage'] = $data['total_damage'];
					
				$PLAYER['records']['totdamage'] += $data['total_damage'];
				
			}
			
			###########################################################################################################
			$EndBattle = CheckEndBattle($CreepID);
					
			mysql_("UPDATE ".TABLE_PLAYER." SET records = '".serialize($PLAYER['records'])."' WHERE id = {$PLAYER['id']}");
														
			mysql_("UPDATE ".TABLE_ATTR." SET hp = '{$PLAYER['hp']}', mana = '{$PLAYER['mana']}'																
												WHERE id_p = {$PLAYER['id']}");						
			
			
			//if ($ != 0)
			{
				if(update_battle($matchid,$guys,$SaveNRound,$SubRound) == TRUE)
					debug("Salvato! >> update_battle($matchid,$guys,$SaveNRound,$SubRound)");
				else
					debug('Salvataggio Bnet3 Fallito',3);	
			}
			
			if ($EndBattle == TRUE)
			{
				RemoveEndBattleBuffs($guy);
				mysql_('UPDATE '.TABLE_PLAYER." SET	buff = '".serialize($guys[$guy]['buffs'])."' WHERE id = {$PLAYER['id']}");
				break;
			}
			
		} // end FOR
	}

}
unset($array,$guys);
?>



FUNZIONE CHE SALVA I DATI:
PHP:
function update_battle($matchid,$guys,$round,$sub_round)
{
	if (!is_numeric($matchid)) debug("Errore: \$matchid: $matchid non è un numero (update_battle function)",3);
	if (!is_array($guys)) debug("Errore: \$guys non è un array! (update_battle function)",3);
	if (!is_numeric($round) && $round<0) debug("Errore: \$round:$round non valido $matchid (update_battle function)",3);
	if (!is_numeric($sub_round) && $sub_round<0) debug("Errore: \$sub_round:$sub_round non valido (update_battle function)",3);
	
	foreach($guys as $name => $a)
	{
		if(!isset($a['buffs']))
			$array[$round][$sub_round][$name]['buffs'] = '';
	}
	
	$array[$round][$sub_round] = $guys; // => $array[$round][$sub_round][creep/player][stats];
	
	echo "<h2>DATI SALVATI!</h2><br>";
	if(!$file = fopen($_SERVER['DOCUMENT_ROOT']."/battle/match/$matchid.php",'a'))
	{
		debug('Errore: Impossibile leggere/scrivere/trovare il file $matchid.php',3);
		return FALSE;
	}
	else
	{
		fwrite($file, serialize($array).'<END>');
		fclose($file);
		return TRUE;
	}
			
}



VISUALIZZAZZIONE DEI DATI:
PHP:
<?php
require_once('battle/lib.battle.php');

$array = read_Match($PLAYER['matchid']);

//print_r($array);
foreach($array[0][0] as $key => $value)
	if(is_numeric($key) && isset($value) && $value['id'] == $key)
		$CreepID = $key;

foreach($array as $Round => $SBA)
{
	echo "Round: $Round";
	foreach($SBA as $SubRound => $display)
	{	
		if (!$Round && !$SubRound)
		{
			echo "<div class='battle_init'>Incontri <strong>{$display[$CreepID]['nome']}</strong> che ti attacca con <strong>{$display[$CreepID]['weaponname']}</strong></div>";
		}
		else
		{
			switch($display[$name]['azione'])
			{
				case 0: // stò sukando
					$guy = $CreepID;
					$target = $name;
					break;
				
				case 1: // stò attaccando
					$guy = $name;
					$target = $CreepID;
					break;
			}
			
			
			echo '<actioncontainer>
				<div id=azione>',
				($display[$guy]['dannoinflitto'] == 0)?
				"<font color='#CC6600'>{$display[$guy]['nome']} tenta di colpire {$display[$target]['nome']} ma lo manca!</font><br />":
				"{$display[$guy]['nome']} attacca {$display[$target]['nome']} infliggendo {$display[$guy]['dannoinflitto']} danni!",
				
				"</div><div id=left>
					<img src='",$display[$guy]['avatar'],"' width='54' height='54' border='0' align='left'>
					{$display[$guy]['nome']} HP: {$display[$guy]['hp']}<br />
					{$display[$guy]['nome']} MP: {$display[$guy]['mana']}"
					,display_buffs($display[$guy]['buffs']),'</div>',
				
				(($display[$target]['hp'] <= 0) ? '<span style="' . ruotaimmagine(-15,-25) . ' margin-left:50px; padding-top:30px; text-shadow:0px 0px 12px red;  font-size:60px; position:absolute">OWNED</span>': NULL),
				'<div id=right>
					<img src="'.@$display[$target]['avatar'],'" width="54" height="54" border="0" align="right">
					',$display[$target]['nome'],' HP: ',$display[$target]['hp'],"<br />\r\n" ,
					$display[$target]['nome']," MP: ",$display[$target]['mana']
					
					
					
				/*,display_buffs($display[$target]['buffs'])*/,'</div></actioncontainer>';
	 	}
	}
} 
?>


grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Perché aggiungi <END> alla fine del file? È inutile. PHP capisce che la stringa è serializzata e tramite la funzione unserialize ti dovrebbe restituire l'array. A parte questo, puoi postare il contenuto di un file di esempio? Così vediamo se il problema è lì oppure nell'elaborazione. Non mi sembra che ci siano errori evidenti nello script.
 

TheTrigger

Utente Attivo
3 Giu 2011
38
0
0
<END> lo uso perché ci sono più valori serializzati, dato che li inserisco in momenti anche diversi ho deciso di aggiungerli a cascata invece di caricare tutto il file e risalvarlo.

Questa è la funzione di lettura
PHP:
function read_Match ($matchid)
{
	$url = $_SERVER['DOCUMENT_ROOT']."/battle/match/$matchid.php";		
	if (file_exists($url) && is_readable($url))
	{
		$file_cont = file_get_contents($url);
		$righe = explode('<END>',$file_cont);
		foreach ($righe as $serial)
		{
			$x = unserialize($serial);
			if (is_array($x))
				foreach ($x as $Round => $SB_)
					foreach ($SB_ as $SubRound => $Guys)
						if (isset($array[$Round][$SubRound]))
							debug(">>read_Match ($matchid) già settato [$Round][$SubRound]",2); // Questo non si verifica mai
						else
							$array[$Round][$SubRound] = $Guys;
		}
		return $array;
			
	} else debug('Impossibile leggere il file',3);
}


Il file salvato è tipo questo: (Generato da 2 turni, invece ce ne sono 4) (ogni turno include 2subturni)
Codice:
a:1:{i:0;a:1:{i:0;a:1:{i:4;a:15:{s:2:"hp";s:3:"500";s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:0;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";i:0;}}}}<END>a:1:{i:1;a:1:{i:1;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";s:3:"450";s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";a:0:{}s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:1;s:13:"dannoinflitto";d:7;}i:4;a:16:{s:2:"hp";d:493;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:0;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";i:0;s:6:"avatar";b:0;}}}}<END>a:1:{i:1;a:1:{i:2;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";d:442;s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";a:0:{}s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:0;s:13:"dannoinflitto";d:7;}i:4;a:17:{s:2:"hp";d:493;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:1;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";a:0:{}s:6:"avatar";b:0;s:13:"dannoinflitto";d:8;}}}}<END>a:1:{i:2;a:1:{i:1;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";s:3:"442";s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";i:1;s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:1;s:13:"dannoinflitto";d:8;}i:4;a:16:{s:2:"hp";d:485;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:0;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";i:0;s:6:"avatar";b:0;}}}}<END>a:1:{i:2;a:1:{i:2;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";d:434;s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";i:1;s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:0;s:13:"dannoinflitto";d:8;}i:4;a:17:{s:2:"hp";d:485;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:1;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";a:0:{}s:6:"avatar";b:0;s:13:"dannoinflitto";d:8;}}}}<END>a:1:{i:3;a:1:{i:1;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";s:3:"434";s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";a:0:{}s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:1;s:13:"dannoinflitto";d:7;}i:4;a:16:{s:2:"hp";d:478;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:0;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";i:0;s:6:"avatar";b:0;}}}}<END>a:1:{i:3;a:1:{i:2;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";d:427;s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";a:0:{}s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:0;s:13:"dannoinflitto";d:7;}i:4;a:17:{s:2:"hp";d:478;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:1;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";a:0:{}s:6:"avatar";b:0;s:13:"dannoinflitto";d:7;}}}}<END>a:1:{i:4;a:1:{i:1;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";s:3:"427";s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";a:0:{}s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:1;s:13:"dannoinflitto";d:8;}i:4;a:16:{s:2:"hp";d:470;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:0;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";i:0;s:6:"avatar";b:0;}}}}<END>a:1:{i:4;a:1:{i:2;a:2:{s:10:"TheTrigger";a:21:{s:4:"nome";s:10:"TheTrigger";s:2:"hp";d:419;s:6:"hp_max";s:3:"450";s:4:"mana";s:3:"150";s:8:"mana_max";s:3:"150";s:5:"level";s:1:"3";s:5:"forza";s:1:"1";s:9:"destrezza";s:1:"1";s:12:"intelligenza";s:2:"22";s:6:"fatica";s:1:"5";s:4:"fame";s:3:"465";s:10:"basedamage";i:11;s:6:"attack";i:56;s:5:"armor";i:7;s:5:"buffs";a:0:{}s:8:"weaponid";N;s:7:"armorid";N;s:2:"id";R:5;s:6:"avatar";s:10:"avatar.png";s:6:"azione";i:0;s:13:"dannoinflitto";d:8;}i:4;a:17:{s:2:"hp";d:470;s:4:"mana";s:3:"200";s:5:"level";s:2:"75";s:10:"weaponname";s:21:"You are not prepared!";s:8:"weaponid";s:1:"8";s:10:"basedamage";s:2:"10";s:9:"basearmor";s:2:"20";s:5:"armor";i:20;s:4:"nome";s:7:"Illidan";s:2:"id";s:1:"4";s:6:"azione";i:1;s:5:"danno";i:0;s:8:"dropgold";N;s:7:"dropexp";N;s:5:"buffs";a:0:{}s:6:"avatar";b:0;s:13:"dannoinflitto";d:8;}}}}<END>

Si, sò che è senza dubbio da migliorare, troppo ridondante...
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Dunque, per prima cosa, invece di usare <END> inserisci semplicemente un carattere di fine linea (\n o PHP_EOL). In questo modo puoi leggere il file usando la funzione file, che crea un array in cui ogni elemento corrisponde ad una riga.

Poi, la deserializzazione del contenuto porta a questo array:
Codice:
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [4] => Array
                        (
                            [hp] => 500
                            [mana] => 200
                            [level] => 75
                            [weaponname] => You are not prepared!
                            [weaponid] => 8
                            [basedamage] => 10
                            [basearmor] => 20
                            [armor] => 20
                            [nome] => Illidan
                            [id] => 4
                            [azione] => 0
                            [danno] => 0
                            [dropgold] => 
                            [dropexp] => 
                            [buffs] => 0
                        )

                )

        )

)
Sbaglio, o non è esattamente quello che volevi tu? Se ad un round corrisponde un array, allora qui il round è uno...
 

TheTrigger

Utente Attivo
3 Giu 2011
38
0
0
L'array prodotto e letto vanno benissimo (poi userò file() come mi hai consigliato), il primo indice definisce il turno, il secondo il subturno, nel terzo c'è l'identificatore player/creep e gli altri sono i relativi dati, il problema è che se ne generano + di quanti ne voglio... la battaglia sembra proprio che si ripeta, di output debug() o echo non viene visualizzato niente e non ci sono altri cicli.. sembra un Daemon staccato dal codice ._.
In più, quando gli faccio eseguire una 'magia' non c'è solo 1 turno in eccesso, ma ben 4o5. (ad esempio: le magie durano es: 5 turni, se eseguo turni normali funziona(e il conto alla rovescia si abbassa), mentre nei turni 'doppi'(quelli indesiderati) rimane sempre a 5, mentre però tutti gli altri valori vengono calcolati come se fossero azioni normali...

..non capisco è xche la funzione update_battle() non dica quando e xche queste 'azioni fantasma' avvengono......


L'array che hai recuperato è il primo array serializzato, ce ne sono 5 (il primo di inizializzazione e 4 di turni)

ti ringrazio per l'aiuto che mi stai dando
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Problema scorrimento DIV senza scrollbar HTML e CSS 4
otto9due Problema ridimensionamento immagini senza salvarle.. PHP 5
L problema option select senza database PHP 2
P problema form senza pagina di risposta PHP 15
F Problema pulsante cerca record su access Database 0
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 1
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0

Discussioni simili