Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  

bLuma

Members
  • Content count

    2523
  • Joined

  • Last visited

  • Days Won

    19

Everything posted by bLuma

  1. AMD driver přestal pracovat

    Pokud používáš doporučený ovladač k dané grafice a problém přetrvává i po reinstalaci systému tak je to pravděpodobně jedna z následujících možností: vadná grafická karta přehřívání grafické karty nedostatečné napájení grafické karty Dobré by bylo, kdyby byla možnost otestovat grafiku v jiné sestavě jinak se bez dalších informací (typ GK, crashlog driveru, ...) blbě určí příčina.
  2. Ten sleep je zbytečně velký, bez problémů by fungovalo klidně cca 50-100 ms. Ale jinak můžeš použít novější API v java.nio.*, kde je podporován neblokující režim.
  3. SOAP problém s connectem

    Povolil jsi SOAP v konfiguraci serveru (SOAP.Enabled)? Případně zkontroluj firewall, jestli ti to neblokuje.
  4. [php] o2 sms (online hráči)

    Pokud to chceš realizovat službou poslání emailu tak k jednotlivým operátorům najdeš informace třeba na seznamu - http://napoveda.seznam.cz/cz/jak-nastavit-upozorneni-na-novy-email.html. Alternativně to lze řešit HTTP requesty na webové brány tady je dobrá reference program esmska a jeho zdrojáky - https://github.com/kparal/esmska/tree/master/gateways.
  5. Za optimalizovaný dotaz bych osobně považoval takový, kterému stačí využít index. Což sloupce online a race nesplňují. Osobně jsem měl na mysli, provést SELECT s GROUP BY a počty týmů a celkový součet sečíst v PHP. Ale o kolik by to bylo rychlejší/pomalejší nebudu spekulovat. Ups, tady jsem opravdu prohodil pojem Ale jinak výtku mám - singleton u storage není dobré řešení. Pokud budu mít dva realmy stejného emulátoru tak to nebude fungovat.
  6. Vypadá to zajímavě, ale u většiny lidí to povede ke zbytečnému zvýšení zátěže db. Protože to udělají jako ve tvém příkladu a místo jednoho dotazu na počty hráčů použijí hned tři... Tím, že to degraduješ na předávání SQL dotazů neumožníš žádné mezi výpočty nebo v aktuálním stavu vracení více výsledků (TOP10 aj.). Lazy loading tam opravdu nemáš. To cachování prakticky nemá význam. Takovýhle dotaz použiješ na stránce jednou možná dvakrát a mezi různými HTTP requesty to necachuješ. Dobře napsaný web to nepoužije vůbec. Nápad zajímavý, ale z mého pohledu to není momentálně dobrá koncepce/architektura.
  7. [C++ Návod] Switchujeme stringy

    Process.h také i když není v ANSI C. Pod W32 platformou a některými dalšími je ten soubor dostupný. Pokud to jó chceš ANSI C tak si to přepiš. Ovšem tady nešlo o to v jakém je to hlavičkovém souboru. Ani o to rýpat se v tom, co je lepší pro C/C++. Vzhledem k lineární složitosti toho algoritmu by pro určité aplikace šlo vymyslet rychlejší varianty (binární půlení, hashování, ...). Což by bylo užitečnější než rýpat do těchto detailů.
  8. [C++ Návod] Switchujeme stringy

    Kód jde přeložit i bez toho, ale ne bez varování. Chybí pak deklarace pro funkci system (warning C4013: 'system' undefined; assuming extern returning int).
  9. [C++ Návod] Switchujeme stringy

    Tady jde o použitelnost té funkce, ve stejném znění ji můžeš použít v C. Ale tvé první řešení v první řadě neřeší obecnost problému výběru z řetězců. Omezuješ se na WinAPI a k tomu navíc konzolový interface. V mnoha případech může být nutné vybírat na základě textu v souboru nebo jinak neinteraktivně a tam je podobná omáčka nežádoucí. Ad C#: Java donedávna také nepodporovala switch nad Stringem. V poslední verzi 7 tuto možnost přidali.
  10. [C++ Návod] Switchujeme stringy

    - závislost na konstantě preprocesoru je zbytečná - definice textů ve funkci je zbytečná
  11. Skvělá PvP arena hra na relax

    Přestaň řešit OT! A jinak:
  12. [C++] PDF read cez C++

    číst po řádcích, až to najdeš tak za to to vložit načíst celý soubor do bufferu, vyhledat text (případně za ním vyhledat znaky (\r)\n), vložit, uložit celé
  13. [C++] Vlastní skill pro kouzla

    V první řadě jsou první dvě verze nefunkční. Pokud tu proměnnou chceš uchovat musíš ji dát do třídy Player a ne do metody Player::Update. Vhodné je k ní vytvořit gettry a settry, případně ji můžeš dát jako veřejnou, ale to z principu OOP není vhodné. Poté ta proměnná bude dostupná, když bude hráč online, ale stále je nutné vyřešit zachování skillu po případném odhlášení. Pokud to chceš zachovat musíš rovněž upravit metody, které se starají o ukládání do db a poté vytváření charakteru při načtení z db. Je maximální možná kravina, vytváříš si novou proměnnou skill, kterou chceš plnit z proměnné skill (kterou jsi teď udělal a nemá definovanou hodnotu) + 1. Pokud použiješ gettry a settry musíš přistoupit k tomu hráči a získat obsah proměnné... int skill = chr->GetMySkillValue(); skill++; chr->SetMySkillValue(skill); Případně pokud použiješ public přístup k proměnné... chr->myskill++; if (chr->myskill > 123)
  14. dokud není poslední variace { nastav "pozici" na poslední prvek; dokud { inkrementuj prvky[pozici] (s případným přetečením na první prvek ze seznamu) nastav pozici na předchozí prvek } (prvky[pozice+1] == první prvek ze seznamu) yield(prvky); } Mám prvky 0,1, tučně značím co projde na yield. Začnu s variací 000 (tu je nutné ošetřit samostatně, psal jsem triviální algoritmus). Inkrementuju poslední 001. Inkrementuju poslední (přeteče) 000, uplatní se vnitřní cyklus a inkrementuji druhou pozici 010. Inkrementuji poslední 011. Inkrementuji poslední (přeteče) 010, posunu se, inkrementuji (přeteče) 000, posunu se, 100. Atd... Pokud si to napíšeš dostatečně obecně dá se to použít na znaky (string) i velké rozsahy čehokoliv (pole).
  15. Chyba

    Když na konci souboru máš else a otevřený blok příkazů, tak ho taky musíš ukončit. Uzavření php tagem neplatí a pokud to do konce souboru neuděláš vznikne tato chyba.
  16. C++ problém s příkazy

    Píšeš kraviny bobisu, když neumíš tu chybu ani přeložit tak se nevyjadřuj. Po přidání příkazu, zkompiloval jsi celý projekt pomocí "build all"? A jaký byl výsledek build logu? Nějaké chyby nebo se vše zkompilovalo správně? A poté samozřejmě otázka, jestli jsi si spustil tuto zkompilovanou verzi (která je v debug/release složce u zdrojáků) a ne tu původní?
  17. [PHP] SkyFire class

    while(list($guid, $name, $race, $class, $level, $gender, $online, $money, $map, $zone, $latency) = mysql_fetch_row($query)) { $output[$count]['guid'] = $guid; $output[$count]['name'] = $name; $output[$count]['race'] = $race; $output[$count]['class'] = $class; $output[$count]['level'] = $level; $output[$count]['gender'] = $gender; $output[$count]['online'] = $online; $output[$count]['money'] = $money; $output[$count]['map'] = $map; $output[$count]['zone'] = $zone; $output[$count]['latency'] = $latency; $count++; } porovnej s while($row = mysql_fetch_assoc($query)) { $output[] = $row; }
  18. [PHP] SkyFire class

    Blbost, mysql_result vrací hodnotu sloupečku z výsledku a je to tam vždy použito v dotazu typu SELECT COUNT(), takže to dává smysl a používat mysql_num_rows je neefektivní, pokud nás zajímá jen počet výsledků a ne jejich hodnoty. Jinak taky mám připomínky: Metody GetSide, expansion, ... Nahradit vyhledáním v poli. Zpřehledníš tím kód. session_register, session_is_registerer používáš naprosto nesprávně. Buď použij _SESSION proměnnou nebo tyto funkce, ale nemíchej to. Tyto funkce jsou navíc deprecated. Uchovávání údajů pro přístup do db je bezpečnostní riziko, ty údaje se mají zničit ihned po připojení. Označit ty proměnné navíc za public je další hazard. Mysql::query - dotaz je dotaz a ne připojení do db. Tuhle blbost dělá spousta lidí. Připojení na tomhle místě nemá co dělat. V logoutu rušíš cookies, které jsi nikdy předtím nepoužil a tedy u klienta neexistují. Na některých místech počítáš hash hesla až po escapování uživatelského jména, ale to je špatný postup operací.
  19. [PHP] Jednoduchý systém na novinky

    Možná to už bude zapisovat do db, ale pro útočníka to dá přímý přístup do databáze v podobě SQL injection: mysql_real_escape_string($novinka); Toto je opravdu nesmysl, ta funkce vrací vyčištěný řetězec, což ty zcela ignoruješ a hlavně to musíš udělat na jednotlivé části, které do toho sql dotazu vkládáš. Takhle by ti to vrátilo totálně zkomolené sql celého insertu.
  20. Zapnutí serveru přes Linux

    Proč si vědomě degraduješ výkon serveru použitím nice opravdu nechápu.
  21. Problém s kompilací

    Co používáš za kompilátor (označení, verze), jaký režim kompilace máš nastaven (32/64b, release/debug)? Hlavičky pro winsock by měli být u MSVC 2008 Express a vyšších automaticky. U Express 2005 a starších je třeba instalovat Platform SDK.
  22. problem v DB

    Předtím to byla chyba v syntaxi, teď to ovšem znamená, že cpeš update pack na nesprávnou strukturu db (chybí předchozí updaty, chybná výchozí struktura, ...). To už se ale na dálku vydedukovat nedá, co jsi s tím prováděl.
  23. problem v DB

    Najdi řádek: UPDATE `version` SET `db_version`='ODB 0.0.7 DEV for OregonCore rev.1391' A nakonec přidej středník, tj: UPDATE `version` SET `db_version`='ODB 0.0.7 DEV for OregonCore rev.1391';
  24. C++ prepojenie s DB

    Až na to, že musíš nastavit include directories a library directories. Případně přímo u projektu v linkeru je "Additional library directories", v záložce Input pak "Additional Depencies", kam přijde jméno knihovny.
  25. C++ prepojenie s DB

    A doplnil jsi si odkazy na tyhle složky do nastavení projektu/globálního nastavení pro hledání knihoven/hlavičkových souborů? Případně použij absolutní cestu nebo si to zkopíruj do pracovního adresáře. Osobně bych tedy vůbec #pragma nepoužil a nastavil to přímo do nastavení projektu.
×