« 1 2 3 »
Autor Zpráva
okolojsoucí
Profil
Anonymní:
3D herní engine je trochu moc. Spíše bych začal 2D aby vůbec pochopil jak udělat když vrazí do bedny, aby se zastavil.
Amunak
Profil
Anonymní:
Víš o nějaké kvalitní, aktuální publikaci? Mně přijde pořád nejlepší tutoriál na Linuxsoftu, plus to, co je sepsané z učebnice PHP.
Anonymní
Profil *
Amunak:
Nevím, nedělám v PHP, ale dobré publikace pro některé ostatní jazyky rozhodně jsou a i některé jsou i v českém jazyce :D Doporučuji cpress dost často je tam i ukázková kapitola a prostě na té si můžeš zkusit jestli ti knížka vyhovuje/nevyhovuje.
okolojsoucí
Profil
Amunak, Anonymní:
A proč tu řešíte publikaci která je úplně mimo téma?
Amunak
Profil
okolojsoucí:
Protože je zbytečné, aby si sitole kupoval knihu o PHP, která nejspíš bude špatně napsaná a bude se zabývat nějakou verzí 4.x. Tedy ne, že by se mi ten váš předchozí dialog zdál užitečnější. Navíc jak psal Alphard, doporučovat ImageMagick (navíc začátečníkovi, který v životě neviděl OOP), taky není úplně dobré. Já doteď pořádně nepochopil, o co sitolemu vlastně jde, ale jsem přesvědčený, že by na to knihovna GD bohatě stačila.
Alphard
Profil
Tato diskuse je mimo téma dávno. Snaha okolojsoucí učit tazatele nepřináší viditelné výsledky a zřejmě se nenajde nikdo, kdo by sem dal hotové řešení. Takže si nemyslím, že pár příspěvků mimo téma neubliží a nechávám tomuto vláknu docela volný průběh. Jestli přijdete s nápadem na dobrou literaturu o PHP nebo něčím jiným hodnotným, vyčlením to jinam. Jinak to promaži/nechám usnout, ještě nevím.

okolojsoucí:
Jestli už máte hotový kód částečně řešící problém a nechcete ho sem dávat komplet celý, můžete sem dát kostru s pár vynechanými částmi. To je podle mě dobrá metoda, jak někoho učit programovat.
okolojsoucí
Profil
Vložím tedy kostru
<?php
    // Začátek scriptu
    require 'status.php';
    
    
    $status = new MinecraftServerStatus();
    
    /**
      Zde si načtěte IP adresu pomocí GET, a pokud není za : prázdno, zkontrolujte zda-li se jedná o číslo, a pokud ano, je to port.
      Tak že konstrukce bude vypadat:
      
      pokud (neníPrázdno(port) a jeCislo(port))
        $responde = $status->getStatus(ip, port);
      ne
        $responde = $status->getStatus(ip);
    */
        
    
    $chyba = new ImagickDraw();
    $popis = new ImagickDraw();
    $cerna = new ImagickPixel('black');
    
    /**
      Zde ověřte zda-li server odpovídá a pokud ano, tak na větvi if vytvořte obrázek s pozadím pomocí inicializace $image->new Imagick('pozdadi.png'); a pokud ne tak na větvi else vytvořte obrázek s pevně danými rozměry pomocí $image->new Imagick();
        $image->newImage(x, y, barva);
    */
    
    
    $chyba->setFillColor('green');
    $chyba->setFontSize(25);
    
    $popis->setFillColor('green');
    $popis->setFontSize(20);
    
    /**
      Zde si pomocí podmínky ověřte zda-li server odpovídá, a pokud ne tak na větvi else vypište co chcete, a na větvi if vypište informace o serveru pomocí $image->annotateImage();
    */
    

    
    $image->setImageFormat('png');
    
    header('Content-type: image/png');
    echo $image;

    /**
     * Script není ukončen, aby nevznikaly bílé znaky
     */
sitole
Profil
Takže...

Již mám obrázek..

Jeho script

<?php

header('Content-type: image/png');

$image = new Imagick('signa2.png');

// If 0 is provided as a width or height parameter,
// aspect ratio is maintained
$image->thumbnailImage(500, 135);


echo $image;

$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);

// Write the string at the top left
imagestring($im, 5, 0, 0, 'Hello world!', $textcolor);

?>


Ale nevím jak je možné že se tam nezorazuje ani to "Hello world!"

Stránka zde http://sitole.707.cz/c/w.php
Alphard
Profil
sitole [#8]:
Oba přístupy smíchané dohromady, bez naděje na dobrý výsledek. Anonymní měl pravdu, je to zatím příliš složité. Vyberte si jeden, na druhý zapomeňte; zatím pro vás bude asi lepší GD, většina rad, které najdete, bude o něm.

okolojsoucí [#7]:
Děkuji, věřím, že to někomu někdy pomůže.
sitole
Profil
Já tochápu že to není pro mě. Dříve jsem také nedokázal napsat ani . z toho Minecraft online statusu ted ho napíšu i se zavřenejma očima..


Není tedy možné mě to ukázat..?
Každý se to musí někdy naučit a neříkejte že ste se na kole naučili jen když víte co je křeslo..
To je stejné semnou..

Když uvidím script dokážu ho příště jednoduše napsat jak říkám i zpaměti..
DarkMeni
Profil
Co všechno se může na tom obrázků měnit? (jen počet hráčů nebo ještě něco?)
Jakej je limit hráčů na ten server? (je proměnlivej nebo ne?)
sitole
Profil
No, server potřebuju že se bude měnit online offline také hráči těch je na serveru je 20 slotů a pozadí se jmenuj signa2.png

Má velikost: 500x135

Pokud to opravdu chcete udělat děkuji!
Anonymní
Profil *
sitole:
Každý se to musí někdy naučit a neříkejte že ste se na kole naučili jen když víte co je křeslo..
Ale takhle se to nenaučíš. Naučíš se to tak, že si to prostě vyzkoušíš a jak jsi psal s tím kolem, tak si na kole parkrát rozbiješ držku než se to naučíš. To je stejné i u tohodle. Nic víc. Kdybys místo řečnění a zkoušení jestli to někdo nenapíše za tebe ses radši koukl na nějaký tutoriál PHP tak si to napíšeš sám a máš z toho dobrý pocit.

A pokud teda potřebuješ aby ti to někdo celé napsal popř. naučil/vysvětlil tak si napiš práce a zakázky a řekni částku co za to nabízíš(ano nebude to zadarmo, ale v dnešním světě nedostaneš zadarmo nic), tahle diskuze slouží k tomu, aby ti někdo poradil či popostrčil ne aby ti tady zadarmo někdo udělal práci :)
DarkMeni
Profil
Spíš to nechám udělat tebe, jen tě zkusim navést jak na to
Myslim si že nejlepší asi bude, když to zatim uděláš přes těch 21 předgenerovaných obrázků (zas až tak přehnaně moc to neni), protože programovat vykreslování obrázku v php je docela složitý a chce to už mít nějaký zkušenosti z jednodušších věcí (nebo aspoň znát syntaxi jazyka a vědět co která funkce dělá - to de zjistit v manuálu, ale je to tam anglicky)
U těch předgenerovaných obrázků je to docela jednoduchý, stačí pár podmínek a funkce na přečtení a vypsání souboru, něco jako:
<?php
  include "status.class.php";
  $status = new MinecraftServerStatus();
  $response = $status->getStatus("mc27.crew.sk", 25580);
  $folder = "status_images/";
  if($response){
    $image = "online".$response["players"].".jpg";
  }else{
    $image = "offline.jpg";
  }
  if(!file_exists($folder.$image)){
    $image = "out-of-range.jpg";
  }
  header("Content-Type: image/jpeg");
  readfile($folder.$image);
?>

S tim že si to ještě nějak uprav podle sebe (ty hodnoty sem tam dal z jednoho z předchozích témat co si řešil, takže nemusí být aktuální) a do složky třeba status_images - nebo je na tobě jak si ji pojmenuješ - pak dej obrázky online0.jpgonline20.jpg a offline.jpg (takže vlastně 22 obrázků a ne 21, sorry)
Teoreticky ty obrázky můžeš vytvořit i v jiným formátu, ale pak budeš muset upravit koncovky a HTTP header
Jo a vlastně se ještě může stát, že by někdo rozšířil počet hráčů a pak by tam bylo třeba 21 hráčů a obrázek online21.jpg by neexistoval, pak by ten skript vypsal chybu a prohlížeč by z toho udělal něco jako rozbitej obrázek
Takže by bylo dobrý to nějak ošetřit, třeba udělat ještě obrázek out-of-range.jpg nebo něco takovýho a ten vykreslit v případě že by požadovanej obrázek neexistoval (de o to přidat ještě jednu podmínku, zkusim to upravit v tom kódě)
sitole
Profil
Takže.. hápu to dobře pro každý slot udělám obrázek tedy..

Na serveru bude 1 online tak to bude třeba 1online.png - to už si změním že?
Amunak
Profil
DarkMeni:
Nebylo by lepší použít text, než 20 různých obrázků? Nemyslím, že to chce mít tak "fancy", aby nemohl použít vykreslování textu, které má GD. Co kdyby bylo těch slotů/hráčů 200?
okolojsoucí
Profil
sitole:
Dal jsem ti kostru [#7]. Co je problém nahradit poznámky kódem, který ještě k tomu je popsán v poznámce?
Fisir
Profil
Jde to i za pomocí GD knihovny napsat asi na patnáct řádků:

• vytvoříme obrázek (imagecreatetruecolor())
• nastavíme si barvy pro pozadí a text (imagecolorallocate())
• vyplníme obrázek nějakou barvou (imagefill())
• vypíšeme požadované údaje (imagestring())
• odešleme příslušnou hlavičku (header())
• vykreslíme obrázek (imagepng(), imagejpeg())
DarkMeni
Profil
sitole:
Jj, akorát jak je ten kód teď napsanej, tak spíš online1.png než 1online.png

Amunak:
Co kdyby bylo těch slotů/hráčů 200?
Pak by bylo lepší použít GD knihovnu a ten obrázek vykreslit přes ní
(Právě proto sem se ptal jakej je limit hráčů)
Neříkal sem, že by neměl používat GD knihovnu, jen že na použití takový knihovny to už chce mít nějaký zkušenosti s programováním v php
Ale jestli by tam měl být i ping a ták, tak pak už by to chtělo udělat přes GD
sitole
Profil
Já to nechápu!




Ale!

Script

<?php
  include "status.class.php";
  $status = new MinecraftServerStatus();
  $response = $status->getStatus("mc27.crew.sk", 25580);
  $folder = "status/";
  if($response){
    $image = "online".$response["players"].".jpg";
  }else{
    $image = "offline.jpg";
  }
  if(!file_exists($folder.$image)){
    $image = "out-of-range.jpg";
  }
  header("Content-Type: image/jpeg");
  readfile($folder.$image);
?>


A nic to neukazuje..
http://sitole.707.cz/c/status.php?d

A pro kontrolu!
http://sitole.707.cz/banner/status.php?d


Kde je problém?
Amunak
Profil
DarkMeni:
Ale on už s GD zkušenosti má. Navíc jsme ho tu teď ke GD celou dobu vedli, asi nemá smysl, aby se veškeré snažení zahodilo a dělalo se to znova (horší) cestou. Fisir v [#18] snad dostatečně popsal, jak to jde udělat. Já doteď nechápu rozdíl, mezi tím, co sitole požeduje teď, a mezi tím, co vzniklo ve zmiňovaném vlákně. Skoro mám pocit, že hledá jen nějaké <img src="banner.php">, a jen neví, jak se na to zeptat.
Fisir
Profil
Reaguji na sitole:
Kde je problém?
Pravděpodobně v tom, že server je skutečně offline:

Funguje ti server 81.201.56.15, port 25565?


Jinak tu máš popsané řešení od DarkMeniho, ode mně, okolojsoucího a od tebe. Kde je problém? A prosím konkrétně. Chybové hlášky? Kde jsi se zasekl?
DarkMeni
Profil
sitole:
A nic to neukazuje..
Diď ti to vykreslí obrázek že je server offline
Kde je problém?
Ale jestli ve skutečnosti offline neni tak buď ve třídě MinecraftServerStatus nebo v hodnotách zadaných pro získání statusu (IP a port) a nebo myslim že kdysi ti to nefungovalo kvůli tomu že na serveru kde si to měl neměli povolenou funkci na navázání spojení s tou IP (nějak fsockopen nebo tak něco)

Amunak:
V tom vlákně to bylo nakonec taky vyřešený tak, že se GD knihovna vynechala a výstup byl udělanej jednoduše přes HTML
sitole
Profil
Ja tu jsem.. :)

To je jedno Amunak Hned vysvětlím..

No, v tom starém vláknu jsem potřeboval banner prostě online status..
Ale ted jsem byl požádán majitelem serveru GaMmA o obrázek..
Protože to chce vkládat na forum..

Takže co?

1 vlákno.. Normální status v HTML, CSS, PHP..
2 vlákno (toto) stejné.. akoráde je to obrázek..


Ještě potřebuju tu [#20]
Fisir
Profil
Reaguji na sitole:
Skript v [#20] pravděpodobně funguje. Rozhodně ti správně vypsal, že server je offline.
okolojsoucí
Profil
Obrázek se normálně vykresluje, tak v čem je problém.?
sitole
Profil
Ano obrázek offline ale ne kolik je na serveru lidí chápu to dobře?

$image = "online".$response["players"].".jpg";

Když bude na serveru třeba 10 lidí zobrazí se 10.jpg ?
DarkMeni
Profil
sitole:
Ale ted jsem byl požádán majitelem serveru GaMmA o obrázek..
Aha, to si neřek, tak jestli to děláš pro někoho, tak si rači dej tu práci, podívej se na GD knihovnu nebo Imagick a udělej to přes to (kdyby sis to dělal pro sebe, tak v případě, že si tam přidáš pár slotů, tak jen dokreslíš pár obrázků - ale když to děláš pro někoho, a on by pak přidal pár slotů, tak by se divil proč mu to nefunguje)
Fisir
Profil
Reaguji na sitole:
Počet lidí se bude zobrazovat pouze tehdy, když bude server online.

Když bude na serveru třeba 10 lidí zobrazí se 10.jpg ?
Ne, online10.jpg.

Ale radši to udělej přes tu GD knihovnu, sice je to těžší, ale univerzální a nebudeš mít bůhvíkolik souborů pro všechny možné počty hráčů. Takhle můžeš zobrazovat další proměnlivé údaje.
sitole
Profil
No, tak vše asi funguje..

Prosím nezavírejte ještě toto vlákno.. Pokud budou problémky nechci zakládat nové..
« 1 2 3 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: