• Psst! Ano, Ty! Ještě nejsi zaregistrovaný na našem herním fóru? Přicházíš tak o možnost zapojit se do diskuzí a navíc si tu můžeš zkrátit čekání například při výstavbě nové budovy či jednotek. Zaregistruj se ještě dnes pomocí následujícího odkazu:

    » Vytvořit účet na fóru

barbarske vesnice v externich datech

DeletedUser7531

Guest
Ja to kdyz tak zkusim. Taky mizim pryc, mam jinou praci. Ord() myslim prelozi do ascii vzdy jen 1. znak ze stringu. Ve VB tak tomu aspon je u obdobne funkce asc().

A v php asi take: "...Returns the ASCII value of the first character of string ...."
 

DeletedUser2029

Guest
Ještě poslední poznámka. Prakticky všechny konverzní rutiny zde jmeované použijí jako první krok
"convert_to_string_ex".

Jediná "ord" vrací hned výsledek, bez úprav. "bin2hec" to ještě následně zpracovává. "bindec" také (volá "_php_math_basetozval");

Takže doporučuji "ord". Měl by fungovat. A měl by být nejrychlejší.
 

DeletedUser2029

Guest
... Ord() myslim prelozi do ascii vzdy jen 1. znak ze stringu. ...
Ano, to dělá. Ale já se dívám do zdrojáků, kde vidím, jak to dělá. "Prasácky." (Nejspíše). Nejprve provede převod vstupního stringu jako celku (zde zbytečně jako celku) a pak prostě vrátí jen tu první převedenou hodnotu.

Proto doporučuji jako vstupní string posílat jen jeden znak (ale typu string - tedy řetězec, zde jediného znaku).

EDIT: ještě musím zjistit, co znamená ten "převod stingu" - pokud je to jen někde nahození bitu, tak je to OK, pokud je to ale už i např. kopírování stringu, tak už to není tak růžové. Proto se jistím tím "nejspíše". Ale to už teď fakt nestíhám. Večer.

PHP:
PHP_FUNCTION(ord)
{
	zval **str;
	
	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
		WRONG_PARAM_COUNT;
	}
	convert_to_string_ex(str);

	RETURN_LONG((unsigned char) Z_STRVAL_PP(str)[0]);
}

Uvidíme, jestli convert_to_string_ex není fakt jen kontrola či něco podobného - a jedné co zafunguje je makro Z_STRVAL_PP (které vrací "(zval).value.str.val")


EDIT: Tak to není tak strašné, je to jen kontrola typu - string - a případná konverze.
 
Naposledy upraveno moderátorem:

DeletedUser2029

Guest
Shrnutí jak načítat a zpracovávat soubor pro pozadí pro mapy. V PHP.

Pozadí mapy (louky, lesy) jsou definovány souborem world.dat a jsou shodné pro všechny servery a světy. Doporučuji soubor stáhnou a zkopírovat na lokál.

V PHP se pak soubor načte a zpracuje pomocí:
PHP:
$worlddat=file_get_contents("C:/...cesta.../world.dat");
...
$c=ord($worlddat[$x+1000*$y]);
Kde "$x" a "$y" jsou souřadnice na mapě a "$c" je číslo, které nabývá hodnoty typu pozadí pro souřadnice x,y (hodnoty popsané v zde (klikni) - oddíl Podklad mapy).

Platné pro PHP do verze 5.x. (Odzkoušeno na 5.2.5). Pro PHP verze 6.x možná bude nutné u file_get_contents použít FILE_BINARY : file_get_contents("C:/...cesta.../world.dat",FILE_BINARY) (netestováno);


---------------------------------

Vysvětlení převodu znaku ze stringu na ascii - ord().

Vypadá to, že to je opravdu nejrychlejší a nejnenáročnější cesta, jak získat hodnotu (prvního) znaku.

Oproti mým předchozím předpokladům je jedno, jestli se jako vstup pošle string více znaků či jen jeden - vždy to bude stejně rychlé. Jediné co je důležité je, aby vstup byl typu string (a ne třeba typu object, long, ...), jinak funkce nejprve provádí převod typů
 

DeletedUser

Guest
parada, hned jak budu mit cas tak to predelam. to bude urco lepsi nez to porad tahat z mysql :)
 

DeletedUser7531

Guest
Tak jsem se dnes take zasnazil ....

Poucen z prvniho pokusu, kdy mapka 10x10 trvalo vykresleni vecnost se mi alespon na localhostu povedlo vykreslit cely 1 kontinent za asi 3-4 vteriny. Nevim jak to bude dlouho na netu, nezkousel jsem to - nemam db s vesnicemi ....

Zde, zdrojove kody (okomentovane).

http://dktools.ic.cz/mapa.zip

Je u toho readme ...
 

DeletedUser2029

Guest
První kouknutí. Piš příkazy malými písmeny na začátku. Mají být s malými písmeny. A to, že php není case sensitive (asi) na tom nic nemění.
 

DeletedUser

Guest
tak to nacitani dat ze souboru pro pozadi sem dodelal, stale zustava problem s cestinou. ale s tou si budu muset pohrat sam nekdy pozdejs.
 

DeletedUser7531

Guest
Copak je s mapou? Po dlouhé době jsem se chtěl kouknout, jak je na tom tenhle projekt a stánka mi né a né naběhnout ... jako by tam byl nějaký nekonečný cyklus ...
 
Nahoru