Jump to content

Search the Community

Showing results for tags 'navod'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

  1. Guest

    návod Gen

    Viem že to tu je ale som to nikde nenašiel je to trošku vylepšené je to generátor statusu na sa:mp s výberom štýlu Takže : 1) Použitie BBCode [gen={TEXT}]{TEXT2}[/gen] 2) HTML náhrada 3) Informačný text [gen=Sa]Číslo štýlu 1-4[/gen] Je to 100% funkčné
  2. Koukal jsem se na fórum, a nikde jsem tu nenašel Race Checkpoint. Pokusím se vám ho popsat, kdyby jste něčemu nerozuměli řekněte. Snad to bude dobře Hlavní: Typy Závodního Checkpointu 0 - Klasický (Takové to jak je v něm šipka), 1 - Klasický Finální (Také znáte je v něm finále takovej ten praporek když je konec), 2 - Žádkný (Jen prázdno), 3 - Letecký (Takoví ten kruh jak je pří závodech v letadlech), 4 - Letecký finální (Ani nwm jak vipadá). Nastavení: SetPlayerRaceCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size) playerid = ID Pro které se zobrazí. type = Typ CP, nahoru jsem to dával. Float:x, Float:y, Float:z = Kde bude. Float:nextx, Float:nexty, Float:nextz = Kam bude ukazovat. Float:size = Velikost. Použití: Nahoru pro přepínání: new Zkouska[MAX_PLAYERS]; Někam do příkazu nebo kde chcete aby se nějáký zobrazil: Zkouska[playerid] = 1; //Nastaví CP na 1. DisablePlayerRaceCheckpoint(playerid); //Zničí všechny závodní CP. SetPlayerRaceCheckpoint(playerid, 0, 2641.9673,921.9190,6.4502, 2355.1331,833.7064,6.4543, 20); //Dá hráči závodní CP (Změnte si). Do OnPlayerEnterRaceCheckpoint(playerid): switch(Zkouska[playerid]) //Dáme switch na přepínání CP. { case 1: //První CP. { Zkouska[playerid] = 2; //Nastaví na 2. DisablePlayerRaceCheckpoint(playerid); //Odstraní ostatní. SetPlayerRaceCheckpoint(playerid, 0, 2641.9673,921.9190,6.4502, 2355.1331,833.7064,6.4543, 20); // Dá hráčovi závodní CP. } case 2: { Zkouska[playerid] = 3; //Nastaví na 3. DisablePlayerRaceCheckpoint(playerid); //Odstraní ostatní. SetPlayerRaceCheckpoint(playerid, 0, 2355.1331,833.7064,6.4543, 1984.5858,833.6744,6.4541, 20); // Dá hráčovi závodní CP. } } P.S.: V OnPlayerEnterRaceCheckpoint není return ! (alespon já ho tam nedávam). A doufam že to tu neni
  3. Jak odlehčit mód a optimalizovat streamery Obtížnost: cau takze jak sem slibil ukazu vam par triku jak odlehcit mod jak RAM tak CPU vim ze ty co s pawnem zacinaji tak zatez neresi staraji se o to aby to fungovalo jak chteji i kdyz v jejich pripade je to jedno jejich mody sou maly takze se ta zatez ani neprojevi Obsah [*:r9bjqh7a] Odlehčujeme RAM [*:r9bjqh7a] Odlehčujeme CPU Odlehčujeme RAM takze nejdrive jak odlehcit RAM asi jak uz znate stary zmany trik se MAX_PLAYERS_EX samozdreejmne si pojmenujete jak chcete v includu s_samp je MAX_PLAYERS 500 pro 500 slotovy server tak pochybuju ze budete mit 500 lidi na serveru zbytecne zrani RAM v promenych #define MAX_PLAYERS_EX 100//pozor sem si zapocitejte jak pocet slotu nebo hratelnost + pocet botu na serverua nini pouziti new promena[MAX_PLAYERS]; new promena[MAX_PLAYERS_EX];coz je vlastne new promena[500]; new promena[100];i kdyz si rikaze usetrili jsme jenom 400 ale kdyz to pouzijete u vsech promenych tak se toho usetri hodne ale pozor na toto new romena[100][50];tady se pocet promenych nasobi takze vlastne mate 5000 coz je hodne takovymto promenych se skuse vyhybat nebo nelpeje omezit na co nejmenci cisla to bylo jak odlehcit RAM teď vam ukazu jak odlehcit CPU Odlehčujeme CPU takze na CPU ma nejvetsi zatez cyklus for a timery spise SetTimerEx normalni SetTimer ani moc nezatezuje odesila pouze public zadne paramtery ale SetTimerEx ano takze kdyz mate treba SetTimer("Vezeni",1000,1); public Vezeni() { for(new i;i { if(IsPlayerConnected(i)) { if(!IsPayerNPC(i))//kdyz neni hrac NPC je dobre toto pouzivat vsude kde vyte ze neni npc spise nejlepe na cely public nez u jednotlivych akci { if(Cas[i] > 0) Cas[i] -- ; } } } return 1; }je lepsi pouzit SetTimerEx("Vezeni",1000,1,"i",playerid); public Vezeni(playerid) { Cas[playerid] -- ; return 1; }a zase kdyz mate jeden public a tam hodne akci je dobre ho zase rozlozit do dvou publicu a dvou timeru ale poroz na timery aby se vam nepotkavaly SetTimer("neco",5000,1); SetTimer("neco2",5000,1);chyba! takto je to spravne SetTimer("neco",5000,1); SetTimer("neco2",5010,1);takto se vam mozna potkaji ale az za hodne dlouho coz nebude mit takovou zatez protoze se akce rozlozi a nebudou se muset vykonavat najednou dale jedno z nejhorsich veci co muzete udelat je mit cyklus for ve for treba takto for(new i;i toto je jedno z nejhorsich veci co muzete udelat casto se toto pouziva u streameru dva cykly for v sobe ukazu vam jak se tomu ve streamerech vyvarovat takze treba icon streamer mate treba ikonky: AddMapIcon a mate jich treba 100 po cele mape takze si muzete rozdelit mapu na 4 dily takto: stock JihoVychod(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls > 0) { if(yls < 0) return 1; }//tady si vsimnete nez abych pouzil if(xls < 0 && yls < 0) e lepsi takto rozepsat slozene podminky take pridelavaji zatez.. return 0; } stock SeveroZapad(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls < 0) { if(yls > 0) return 1; } return 0; } stock JihoZapad(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls < 0) { if(yls < 0) return 1; } return 0; } stock ServeroVychod(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls > 0) { if(yls > 0) return 1; } return 0; } dale si rozselite ikonky do 4 stocku ci publicu podle souradnic IkonkySeveroZapad x zaporne y kladne IkonkyJihoZapad x zaporne y zaporne IkonkySeveroVychod x kaldne y kladne IkonkyJihVychod x kladne y zaporne SetPlayerMapicon... a potom pouzijete v timeru public MultiTimer() { for(new i=0;i ale pozor maximalne muze mit pouze 32 ikonek v oblasti na jake sme si rozdelily pokud tam budete mit vice musite si zase rozdelit pokud se vam upraveni icon streameru nedari napiste mi PM nejak podobne jde udelat i object streamer pomoci stock IsPlayerInArea(playerid, Float:minx1, Float:maxx1, Float:miny1, Float:maxy1) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > minx1 && x < maxx1 && y > miny1 && y < maxy1) return 1; return 0; }potom si vyhranicite oblast je je ten zhluk objetku (nejaky ostrov nebo co mate) + este radius do okoli aby se to nezobrazilo na posleni chvili a zase ho timetu jestli je v oblati zobrazit objekty a nastavime promenou aby sme vedely ze uz tam je a nastavime promenou kolik objektu ma hrac zobrazeno aby sme vedeli kolik jich mu mame schvoat az zonu opusti dale treba u CZproperty for(new i=0;i takto nejak v OnPlayerPickUpPickup tady zjistujeme pokud je v nemovistosti ale my vime ze muze byt pouze v jedne nemuze byt ve dvouch zaroven tak az zjistime ze stoji v nejake z nich pouzijeme return 1; jako zmaneni ze hledanou nemovitost sme nasli a neni potreba dale hledat takto: for(new i=0;i dale priklad treba: public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger) { if(ispassenger == 0) { if(GetVehicleModel(vehicleid) == 553 ||//nedava GetVehicleModel(vehicleid) == 519 ||//shamal GetVehicleModel(vehicleid) == 520 ||//hydra GetVehicleModel(vehicleid) == 592 ||//andromada GetVehicleModel(vehicleid) == 487 ||//maverick GetVehicleModel(vehicleid) == 447 ||//seasperow GetVehicleModel(vehicleid) == 497 ||//policemavetrick GetVehicleModel(vehicleid) == 425)//hunter { //akce } } return 1; }sice na ukor RAM ale zase to nebude zrat tolik je lepsi pouzit public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger) { if(ispassenger == 0) { new a = GetVehicleModel(vehicleid); if(a == 553 ||//nedava a == 519 ||//shamal a == 520 ||//hydra a == 592 ||//andromada a == 487 ||//maverick a == 447 ||//seasperow a == 497 ||//policemavetrick a == 425)//hunter //zde uz jezjistujeme do nekonecna v jakej je aute my proste vime v jakej je a akroat porovnavame { //akce } } return 1; }sou to ve smes malicosty ale kdyz se podle toho zaridite muzete usetrit cpu a ram o hodne mozna sem na neco zapomel kdyz tam casem pridam..;p++) ;i++) ;p++) ;i++) ;i++) ;i++)>;i++) ;i++)> Návod upraven tak, aby odpovídal šabloně pro "Nové návody" Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  4. Takze jelikoz ma samp 0.3 public OnPlayerClickPlayer tak proc toho nevyuzit treba na pekny PM system. V nejake starsi RC verzi to bylo tak ze kdyz ste klikli na hrace v tabulce (klavesa TAB) tak vam to otevrelo textove okno jakoby jste chteli napsat do chatu a samo se tam napsalo "/pm ID " a uz ste jenom psali a pak enter...jenomze tahle psaci funkce uz je co ja vim zrusena....tak sem na samp foru hledal neco podobnyho a nasel sem celkem hezkej PM system...jenze mel problem, kdyz ste poslali zpravu nekomu jinymu nez sobe tak vam spadnul server....tak sem se rozkodl to opravit a dat vam to sem....ale ted uz dost kecu a pustime se do prace: Zacneme rovnou od zacatku: nahoru dejte toto: #define DIALOGID_PM 123tohle urcuje ID dialogu...jelikoz predpokladam ze to nebude jedine dialogove okno co pouzijete tak sem nechal ID 123 aby jste na to uz v podstate nemuseli myslet. a toto: new PlayerPMTarget[MAX_PLAYERS];je to promena ktera vam urcuje na koho jste kliknuli v tabulce hracu potom: public OnPlayerClickPlayer(playerid, clickedplayerid, source) { if (source == CLICK_SOURCE_SCOREBOARD) { PlayerPMTarget[playerid] = clickedplayerid; ShowPlayerDialog(playerid, DIALOGID_PM, DIALOG_STYLE_INPUT,"Poslat PM","Zde napis zpravu:\n","Odeslat","Storno"); } return 1; }tadyto nastavi tu promenou na hrace na ktereho jste kliknuli a otevce dialogove okno s inputem na text(polem kam napisete text) a dale do modu dejte toto: public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if (response && dialogid == DIALOGID_PM) { if (!IsPlayerConnected(PlayerPMTarget[playerid])) return SendClientMessage(playerid, 0xE10000AA, "Hrac neni pripojen."); new msg[128]; new msg2[128]; format(msg, 128, "[PM] Od %s : %s", Jmeno(playerid), inputtext); SendClientMessage(PlayerPMTarget[playerid], 0xFFFF00AA, msg); format(msg2, 128, "[PM] Odeslana hraci %s : %s", Jmeno(PlayerPMTarget[playerid]), inputtext); SendClientMessage(playerid, 0xFFFF00AA, msg2); for(new a=0;a toto odesle vasi zpravu kterou ste napsali do toho okenka hraci na ktereho jste kliknuli. a jeste pokud vam to hodi error ohledne "Jmeno" tak dejte dolu do modu tohle: stock Jmeno(playerid) { new j[255]; GetPlayerName(playerid,j,255); return j; } Aby jste si to mohli vyzkouset sami na sobe tak to neni omezene ze nemuzete poslat PM sami sobe...takze kdyz kliknete na sebe tak si muzete poslat PM aby jste vedeli jak to vypada. Pokud s tim nekdo bude mit problemy tak piste. EDIT: na prani uzivatele "tippl" byl pridan do TuTu i PM Reader pro RCON adminy...;a++) Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  5. Om3n

    návod AntiDeamx

    Tak vas vsechny zdravim. Nikde sem tu nenasel navod jak pouzit AntiDeamx tak vam ho sem dam. Nejdrive ale vysvetleni co to vubec je: Urcite uz ste slyseli o deamxu. Je to Lua script ktery zmeni format AMX do PWN. Neni to tak dokonale ze se z toho na hned zase udelat amx ale daji se z toho vycist napriklad zabezpeceni modu, potrebne scripty, skryte prikazy na zjisteni RCONu atd... Tudiz je dobre si do modu vlozit AntiDeamx. Script(Vlozite kamkoliv do modu): AntiDeAMX() { new a[][] = { "Unarmed (Fist)", "Brass K" }; #pragma unused a } Potom uz staci pouze vlozit Radek " AntiDeAMX(); " do nejakeho z hlavnich publicu. Napriklad: public OnGamemodeInit() { AntiDeAMX(); return 1; } pokud nekdo ziska vas mod (s antideamxem) a pokusi se z ne udelat zase pwn tak mu vyjede pouze toto: #include #include #include nic jineho. Pokud s tim budete mit nejake problemy tak staci napsat. ZDROJ: http://forum.sa-mp.com/" onclick="window.open(this.href);return false; Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  6. Guest

    návod PHP a MySQL Práce s tabulky

    Dnes jsem se rozhodl že jsem něco napíšu. A rozhodl jsem se že vám ukážu jak se pracuje s tabulky. Tak se nato vrhnem. 1. Připojeník DB Pozor tento článek předpokládá ,že znáte alespoň základy PHP Existuje mnoho databází jako třeba PostgreSQL, MSSQL LiteSQL. A co že to SQL je? Je to anglická zkratka Structured Query Language, což v překladu je Uspořádaný dotazovací jazyk. V tomto članku, ale bude řeč o MySQL, protože se jedná asi o nejrozšířenější databázi na světě. Je velmi rychlá a celkem rychle se vyvíjí. Jenže toto není članek o MySQL, ale o PHP a MySQL, tak se pustím do toho slíbeného PHP. Připojení se provádí přes funkci mysql_connect() , kde se přihlašuje k databázovému serveru a následně se zadává mysql_select_db() , kde se připojuje přímo ke konkrétní databázi. Dost řečí a rovnou si ukážeme zdrojový kód. <?php $host="server"; $user="uzivatel"; $pw="heslo"; $db="databaze"; mysql_connect($host, $user, $pw); mysql_select_db($db); ?> Kde $host je hostující server, kde je nainstalovaná databáze může být např. mysql.server.cz nebo localhost, $user je uživatelské jméno, pod kterým se připojujete, $pw je uživatelské heslo (pokud žádné není nastaveno napíše se jen "") a $db je zvolení určité databáze. K databázi se můžete připojit také přes příkaz mysql_pconnect() , kde syntaxe je stejná. Jediný rozdíl je v tom ,že spojení s databází se po ukončení skriptu neuzavře a musí se uzavřít přes příkaz mysql_close(). 2. Čteme data Bude to o tom jak se dají přes PHP získat uložená data v MySQL, ale nejdřív zjistíme co se do databáze dá uložit. Databáze má více typů. Nejčastěji se používá varchar, int, longtext, float, date a pro data např. obrázky se používá blob popř. longblob. Každý typ má své omezení např. varchar může mít pouze 255 znaků ,zatím co longtext může být neomezený. A teď co do toho můžeme vložit. do varchar a longtext můžeme napsat vše text i čísla. Do int se mohou zadávat pouze celá čísla od -2147483648 do +2147483647 a bez znaménka 0 až 4294967295. Float je také typ pro čísla ,ale i s desetinou čárkou. A do BLOB můžeme vložit například obrázek, ovšem při pokusu o zobrazení vám to vyhodí pouze něco jako "rozsypaný čaj" ,ale velmi to zpomaluje databázi. Pozn. Jak do databáze vložit tabulku a data najdete skript na konci tohoto článku. <? $host="server"; $user="uzivatel"; $pw="heslo"; $db="databaze"; mysql_connect($host, $user, $pw); mysql_select_db($db); $vyber=mysql_query("SELECT * FROM `tabulka`"); while ($array=mysql_fetch_array($vyber)) { echo "Jméno: ".$array['jmeno']; echo " "; echo "Príjmení: ".$array['prijmeni']; echo " "; echo "E-Mail: ".$array['email']; echo ""; } ?> A co to znamená? Začátek je připojení k databázi, to už jsme si vysvětlovali minule. A pak následuje funkce mysql_query() což vlastně vykoná příkaz, podle MySQL syntaxe. SELECT znamená vybrat a ta * je namísto toho abychom museli vypisovat jmeno, prijmeni, email pak následuje FROM což znamená z jaké tabulky se budou data načítat. Jenže mi to potřebujeme roztřídit ale jak? Co třeba to dát do polí jedné proměné. To se udělá mysql_fetch_array(). Já za tu proměnou zvolil $array funkce mysql_fetch_array() mi do polí ,které se jmenují stejně jako sloupce v databázové tabulce načte jejich hodnoty. Jenže jsme musel použít while ,abych načetl všechna data ,kdybych to nepoužil vypíše se mi jen první řádek v tabulce. Takže po vypsání by to mohlo vypadat nějak takhle: Problém bývá pouze se znaky s háčkama a čárkama což znamená ,že ve stejném kódování (např. UTF-8) musíte jak ukládat data tak i načítat. Skript na vlkádání dat jak sem slíbil. <? $host="server"; $user="uzivatel"; $pw="heslo"; $db="databaze"; mysql_connect($host, $user, $pw); mysql_select_db($db); mysql_connect($host, $user, $pw); mysql_select_db($db); mysql_query("CREATE TABLE `tabulka` (`jmeno` VARCHAR(255) NOT NULL, `prijmeni` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL) ENGINE = myisam;"); mysql_query("INSERT INTO `tabulka` (`jmeno`, `prijmeni`, `email`) VALUES ('Petr', 'Novák', '[email protected]')"); mysql_query("INSERT INTO `tabulka` (`jmeno`, `prijmeni`, `email`) VALUES ('Pavel', 'Cmoud', '[email protected]')"); mysql_query("INSERT INTO `tabulka` (`jmeno`, `prijmeni`, `email`) VALUES ('Eva', 'Koudová', '[email protected]')"); echo "Dokonceno!"; ?> Takže začátek jsme už probírali i funkci mysql_query(), ale teď nás čeká další MySQL příkaz. CREATE TABLE `tabulka` (`jmeno` VARCHAR(255) NOT NULL, `prijmeni` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL) ENGINE = myisam; CREATE TABLE `tabulka` znamená to, že se má vytvořit tabulka se jménem tabulka v závorce následují sloupce v tomto případě první sloupec je jmeno. Poté následuje VARCHAR(255), což znamená typ sloupce (o typech jsme se bavili v minulém díle) číslo v závorce znamená maximální počet znaků a NOT NULL znamená, že sloupec nenabývá hodnoty null což je pro databázi taková neznámá není to ani řetězec, ani číslo. Čárka značí další sloupec v tomto případě prijmeni, a tak to jde dál a dál až do konce, kde je uzavřena závorka a následuje ENGINE = myisam -> MyISAM je typ celé tabulky, je asi nejběžnější v dnešní době, protože např. umožňuje fulltextové vyhledávání. A celé se to zakončí středníkem. Tak to bychom měli k tvorbě tabulky jako takové. A teď ke vkládání záznamů do databáze je to velmi jednoduché. Použije se syntaxe typu: INSERT INTO `do_jake_tabulky` (`vyber_sloupce_1`, `vyber_sloupce_2`, ...) VALUES ('co_se_vklada_do_vybraneho_sloupce_1', 'co_se_vklada_do_vybraneho_sloupce_2', ...) Takže v našem případě je sloupec 1 jmeno sloupec 2 prijmeni a sloupec 3 email. Asi vás zajímá co by se stalo kdyby naše tabulka měla ještě jeden sloupec a my bychom ho neuvedli a prostě bychom nechali databázi ať si sním poradí jak chce. Databáze by udělala jedno, prostě by ho vyplnila defaultní hodnotou. V našem příkladu u vytváření tabulky není žádná defaultní hodnota nastavena v tom případě by se vyplnila prázdným řetězcem. Takže se ještě chvíli vrátíme k tvorbě tabulky, kde ji upravím tak, aby defaultní hodno u jmena 1 u prijmeni 2 a u emailu 3. CREATE TABLE `tabulka` (`jmeno` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '1', `prijmeni` VARCHAR(255) NOT NULL DEFAULT '2', `email` VARCHAR(255) NOT NULL DEFAULT ''3) ENGINE = myisam; Touto změnou jsme dosáhli dvou věcí. Tou první je znaková sada UTF-8 u prvního sloupce. Tou druhou změnou jsme nastavili defaultní výstup tak jak jsme chtěli. Tak a teď vám názorně ukážu to hodnotu default. Dejme tomu že do databáze vložím další řádek příkazem: INSERT INTO `tabulka` (`jmeno`, `email`) VALUES ('Milan', '[email protected]') A teď co se to vlastně do databáze vloží. Vloží se tam přesně toto jako jmeno bude Milan jako prijmeni bude 2 a email [email protected]. 3. Změna dat Dejme tomu, že potřebujeme upravit email u Petra Nováka na [email protected]. Celý trik spočívá jen v tom, že použijeme MySQL příkaz UPDATE. Jeho syntaxe je následující: UPDATE `tabulka` SET `sloupec1`='nova_hodnota_sloupce_1', `sloupec2`='nova_hodnota_sloupce_2' WHERE `jmeno_sloupce_1`='hodnota_sloupce_1' Teď to trochu popíšu. UPDATE je příkaz pro databázy, aby věděla, že nechceme vkládat, ale upravovat řádek. Následuje tabulka, to je jako obvykle jméno tabulky, ve které chceme měnit data. SET je v překladu nastavit. Za SET následuje jméno sloupce v tabulce, ve kterém budeme data měnit. Rovná se bychom mohli brát jako "nastav na hodnotu" a nova_hodnota_sloupce je na jakou hodnotu to chceme změnit. Ale nesmíte zapomenout, v jakém typu je zadaný sloupec. Jestli je sloupec typu např. varchar, pak můžete použít normálně slova i s mezerami. Jestliže chcete upravit v jednom řádku více hodnot, vložíte čárku a upravujete další sloupec. Dnes se nám zde objevil ještě jeden nový příkaz WHERE, v překladu je to KDYŽ, což mluví samo za sebe. Protože kdybychom where neuvedli, měnil by se nám první řádek v databázi, ale někdy se prostě musí měnit jiný, doporučuji where uvádět vždy, ikdyž zrovna chcete upravovat první řádek. Nyní si upravování řádku ukážeme v PHP skriptu. <? $host="server"; $user="uzivatel"; $pw="heslo"; $db="databaze"; mysql_connect($host, $user, $pw); mysql_select_db($db); mysql_query("UPDATE `tabulka` SET `email`='[email protected]' WHERE `jmeno`='Petr'"); echo "Dokočeno!"; ?> Tímto jsme dosáhli našeho hlavního cíle, který jsme si na začátku zadali. Toto by pro dnešek stačilo. Příště si ukážeme, jak vymazat řádek z tabulky, nebo jak vymazat data z celé tabulky, či jak smazat celou tabulku.
  7. Jak vytvořit NPC - překlad ze SA-MP fóra Obtížnost: Překlad a úprava: StarsCream Původní autor: kc Link na původni topic: http://forum.sa-mp.com/index.php?topic=119947.0 Na tuto věc se bude ptát hodně lidí, takže kc udělal TUT, jak pracovat s NPC, tedy neehratelnými postavami, nebo-li také "boti". Obsah 1) Nahrávka pohybu NPC 2) Trovba scriptu 3) Import do módu 1) Nahrávka pohybu NPC Nejdříve potřebujeme zapsat pohyb a všechno okolo toho pro NPC. K tomu slouží nahrávka, která se pak přehrává v postavě NPC. Spusťte SA-MP 0.3 server s jakýmkoli módem. Přihlašte se pod rcon. (Napište "/rcon login " ) a nahrajte filterscript npc_record (Napište "/rcon loadfs npc_record" ) Po úspěšném nahrání npc_record nás zajímají 3 základní příkazy. /vrecord - Začíná nahrávat vaše pohyby a akce vozidla, ve kterém sedíte do souboru jmeno_souboru. /ofrecord - Začíná nahrávat vaše pohyby postavy pěšky do souboru jmeno_souboru. /stoprecord - Ukončuje jakékoli nahrávání V tomto tutorialu programujeme bota, který řídí auto, takže jděte do vozidla a napište /vrecord mujbot (Pzn: musíte být pod RCONem) pro začátek nahrávání. Ujedte trasu, kterou má bot vykonávat a pak napiště /stoprecord. Ukončete hru a jděte do složky ScriptFiles ve vašem SA-MP 0.3 serveru, tam by měl být soubor mujbot.rec. Přesuňte jej do /npcmodes/recordings/še> Hotovo? Super, máte nahrané pohyby NPC a umístěné je v požadované složce. 2) Tvorba scriptu Pokračujeme ve scriptu: Ve složce npcmodes máte spoustu příkladů jak na boty, tyto "mini" scripty určují chování NPC. takže pojďme si vytvořit další. Zapněte pawno, dejte nový soubor a přepiště všechen obsah tímto #define RECORDING "mujbot" //Název souboru, který jsme nahrávali bez přípony .rec #define RECORDING_TYPE 1 //1 pokud je v autě, pěšky je to 2 #include main(){} public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #if RECORDING_TYPE == 1 public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING); public OnNPCExitVehicle() StopRecordingPlayback(); #else public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #endif Toto může vaypadat nesrozumitelně, proto to vezmu po řádcích: #define RECORDING "mujbot" //Název souboru, který jsme nahrávali bez přípony .rec Komentář již napovídá, že se jedná o jméno souboru, který má přehrávat, akorát bez přípony .rec. takže pokud se váš soubor mujbot jmenuje alfonz, musíte mít v /npcmodes/recordings/ soubor alfonz.rec Pak by to vypadalo takto: #define RECORDING "alfonz" //Název souboru, který jsme nahrávali bez přípony .rec #define RECORDING_TYPE 1 //1 pokud je v autě, pěšky je to 2 Jak opět naznačuje komentář, jde o typ přehrávání. Pokud je tvůj NPC ve vozidle, je tam 1, pokud je pěšky 2. #include Základní include pro boty. public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING); OnRecordingPlaybackEnd je callback forwardovaný v NPC includu. Tento řádek říká, že jakmile nahrávka končí, začíná opět odznova, takže jee to nekonečná smyčka. public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING); Toto je zase callback, také z includu NPC. Způsobuje, že se začne přehrávat, když bot sedne do auta. public OnNPCExitVehicle() StopRecordingPlayback(); A zase další callback opět z includu NPC. Tento zastavuje přehrávání, kdyykoli je jakkoli bot vyndán z auta. public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING); A zase další callback opět z includu NPC. Tento spustí nahrávku NPC pokud se spawne a NPC má byt pěšího typu a ne v autě. Jak vidíte, jee to velmi jednoduché. Nyní uložte vás NPC "mini" script jako "mujbot.pwn" do /npcmodes/še> a zkompilujte jej. Pokud máte hotovo, přesuneme se k dalšímu, poslednímu kroku tohoto tutorialu, pokud vám to vyhodilo errror, ujistěte se, že máte aktualizované includy u pawna na ty u SA-MP 0.3 3) Import do módu Poslední krok... Takže, vytvořili jsme "mini" script pro kontrolu NPC postavy, ale teď potřebujeme bota nahrát na server. Použijeme k mód/filterscipt. zavřete "mini" script, a a otevřete váš mód, nebo filterscript v pawnu. Je čas, zasvětit vás do funkce ConnectNPC. Jak už název napovídá, jde o připojení NPC na server. Podívejme se na parametry funkce a co znamenají... ConnectNPC("Michal","mujbot"); "Michal" - První parametr je jméno bota. Takto rozeznáte různé boty navzájem od sebe. "mujbot" - Toto je jméno souboru (bez přípony) našeho dříve vytvořeného "mini" scriptu. Nyní známe parametry funkce ConnectNPC. Připojme vašeho prvního bota! S vaší novou znalostí funkce ConnectNPC, zkusíme vytvořit NPC připojení při loadu módu/filterscriptu. Vyzkoušeli? OK, dal jsem to do OnGameModeInit... public OnGameModeInit() { print("my gamemode"); ConnectNPC("Michal","mujbot"); return 1; } Nyní, pokud sme vytvářeli bota, co řídí vozidlo, tak mu ho taky musíme dát. Takže script upravíme takto: new AutoBota; //Global variable! public OnGameModeInit() { print("my gamemode"); ConnectNPC("Michal","mujbot"); AutoBota = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000); return 1; } Pzn: je jedno, kde auto vytvoříte, při začátku přehrávání bota se auto přesune na požadovanou pozici. ještě poslední věc, než začnete testovat svého bota. Musíme ho nějak dát do auta. Já používám OnPlayerSpawn... public OnPlayerSpawn(playerid) { if(IsPlayerNPC(playerid)) //Kontrola, pokud je spawnutý NPC. { new npcname[MAX_PLAYER_NAME]; GetPlayerName(playerid, npcname, sizeof(npcname)); //Zjišťuje jméno NPC. if(!strcmp(npcname, "Michal", true)) //Zjišťuje, jestli je jméno bota Michal { PutPlayerInVehicle(playerid, AutoBota, 0); //Strčí NPC do auta, které sme vytvořili } } return 1; } Nyní zkompilujte mód/filterscript a hurá na server. S trochou štěstí uvidíte bota jezdit v autě přesně tak, jak jste nastavili. Gratuluju! Vytvořili jste svého 1. robota Nefunguje něco? Napište sem, a společně to opravíme Návod upraven tak, aby odpovídal šabloně pro "Nové návody" Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
  8. Jak vytvořit NPC - překlad ze SA-MP fóra Obtížnost: Překlad a úprava: StarsCream Původní autor: kc Link na původni topic: http://forum.sa-mp.c...?topic=119947.0 Na tuto věc se bude ptát hodně lidí, takže kc udělal TUT, jak pracovat s NPC, tedy neehratelnými postavami, nebo-li také "boti". Obsah Nahrávka pohybu NPC Trovba scriptu Import do módu Nahrávka pohybu NPC Nejdříve potřebujeme zapsat pohyb a všechno okolo toho pro NPC. K tomu slouží nahrávka, která se pak přehrává v postavě NPC. Spusťte SA-MP 0.3 server s jakýmkoli módem. Přihlašte se pod rcon. (Napište "/rcon login " ) a nahrajte filterscript npc_record (Napište "/rcon loadfs npc_record" ) Po úspěšném nahrání npc_record nás zajímají 3 základní příkazy. /vrecord - Začíná nahrávat vaše pohyby a akce vozidla, ve kterém sedíte do souboru jmeno_souboru. /ofrecord - Začíná nahrávat vaše pohyby postavy pěšky do souboru jmeno_souboru. /stoprecord - Ukončuje jakékoli nahrávání V tomto tutorialu programujeme bota, který řídí auto, takže jděte do vozidla a napište /vrecord mujbot (Pzn: musíte být pod RCONem) pro začátek nahrávání. Ujedte trasu, kterou má bot vykonávat a pak napiště /stoprecord. Ukončete hru a jděte do složky ScriptFiles ve vašem SA-MP 0.3 serveru, tam by měl být soubor mujbot.rec. Přesuňte jej do /npcmodes/recordings/ Hotovo? Super, máte nahrané pohyby NPC a umístěné je v požadované složce. Tvorba scriptu Pokračujeme ve scriptu Ve složce npcmodes máte spoustu příkladů jak na boty, tyto "mini" scripty určují chování NPC. takže pojďme si vytvořit další. Zapněte pawno, dejte nový soubor a přepiště všechen obsah tímto #define RECORDING "mujbot" //Název souboru, který jsme nahrávali bez přípony .rec #define RECORDING_TYPE 1 //1 pokud je v autě, pěšky je to 2 #include main(){} public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #if RECORDING_TYPE == 1 public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING); public OnNPCExitVehicle() StopRecordingPlayback(); #else public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING); #endifToto může vaypadat nesrozumitelně, proto to vezmu po řádcích: #define RECORDING "mujbot" //Název souboru, který jsme nahrávali bez přípony .recKomentář již napovídá, že se jedná o jméno souboru, který má přehrávat, akorát bez přípony .rec. takže pokud se váš soubor mujbot jmenuje alfonz, musíte mít v /npcmodes/recordings/ soubor alfonz.rec Pak by to vypadalo takto: #define RECORDING "alfonz" //Název souboru, který jsme nahrávali bez přípony .rec #define RECORDING_TYPE 1 //1 pokud je v autě, pěšky je to 2Jak opět naznačuje komentář, jde o typ přehrávání. Pokud je tvůj NPC ve vozidle, je tam 1, pokud je pěšky 2. #include <a_npc>Základní include pro boty. public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);OnRecordingPlaybackEnd je callback forwardovaný v NPC includu. Tento řádek říká, že jakmile nahrávka končí, začíná opět odznova, takže jee to nekonečná smyčka. public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);Toto je zase callback, také z includu NPC. Způsobuje, že se začne přehrávat, když bot sedne do auta. public OnNPCExitVehicle() StopRecordingPlayback();A zase další callback opět z includu NPC. Tento zastavuje přehrávání, kdyykoli je jakkoli bot vyndán z auta. public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);A zase další callback opět z includu NPC. Tento spustí nahrávku NPC pokud se spawne a NPC má byt pěšího typu a ne v autě. Jak vidíte, jee to velmi jednoduché. Nyní uložte vás NPC "mini" script jako "mujbot.pwn" do /npcmodes/ a zkompilujte jej. Pokud máte hotovo, přesuneme se k dalšímu, poslednímu kroku tohoto tutorialu, pokud vám to vyhodilo errror, ujistěte se, že máte aktualizované includy u pawna na ty u SA-MP 0.3 Import do módu Poslední krok... Takže, vytvořili jsme "mini" script pro kontrolu NPC postavy, ale teď potřebujeme bota nahrát na server. Použijeme k mód/filterscipt. zavřete "mini" script, a a otevřete váš mód, nebo filterscript v pawnu. Je čas, zasvětit vás do funkce ConnectNPC. Jak už název napovídá, jde o připojení NPC na server. Podívejme se na parametry funkce a co znamenají... ConnectNPC("Michal","mujbot"); "Michal" - První parametr je jméno bota. Takto rozeznáte různé boty navzájem od sebe. "mujbot" - Toto je jméno souboru (bez přípony) našeho dříve vytvořeného "mini" scriptu. Nyní známe parametry funkce ConnectNPC. Připojme vašeho prvního bota! S vaší novou znalostí funkce ConnectNPC, zkusíme vytvořit NPC připojení při loadu módu/filterscriptu. Vyzkoušeli? OK, dal jsem to do OnGameModeInit... public OnGameModeInit() { print("my gamemode"); ConnectNPC("Michal","mujbot"); return 1; }Nyní, pokud sme vytvářeli bota, co řídí vozidlo, tak mu ho taky musíme dát. Takže script upravíme takto: new AutoBota; //Global variable! public OnGameModeInit() { print("my gamemode"); ConnectNPC("Michal","mujbot"); AutoBota = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000); return 1; }Pzn: je jedno, kde auto vytvoříte, při začátku přehrávání bota se auto přesune na požadovanou pozici. ještě poslední věc, než začnete testovat svého bota. Musíme ho nějak dát do auta. Já používám OnPlayerSpawn... public OnPlayerSpawn(playerid) { if(IsPlayerNPC(playerid)) //Kontrola, pokud je spawnutý NPC. { new npcname[MAX_PLAYER_NAME]; GetPlayerName(playerid, npcname, sizeof(npcname)); //Zjišťuje jméno NPC. if(!strcmp(npcname, "Michal", true)) //Zjišťuje, jestli je jméno bota Michal { PutPlayerInVehicle(playerid, AutoBota, 0); //Strčí NPC do auta, které sme vytvořili } } return 1; }Nyní zkompilujte mód/filterscript a hurá na server. S trochou štěstí uvidíte bota jezdit v autě přesně tak, jak jste nastavili. Gratuluju! Vytvořili jste svého 1. robota Nefunguje něco? Napište sem, a společně to opravíme Návod upraven tak, aby odpovídal šabloně pro "Nové návody"
  9. Potřebujete při uploadu kontrolovat koncovku nahrávaných souborů? Nebo jen potřebujete z cesty k nějakému souboru zjistit o jaký soubor se jedná? Tahle funkce vám zjistí koncovku. Zbytek je na vás... function pripona($soubor) { return array_pop(explode(".", $soubor)); //vytahneme si text co je za posledni teckou } $cesta = "http://pawno.cz/posting.php"; $pripona= pripona($cesta); if( $pripona=="php" ) echo "hmm, borec má php"; else if( $pripona=="html" ) echo "haha lamka má v dnešní době html xD"; else if( $pripona=="asp" ) echo "hmm zasranej widlák... php je lepší než nějaké asp )";
  10. Máte nějaký velký script a chtěli byste ho zmenšit, a zrychlit? Tenhle scriptík ze zdrojáku vašeho scriptu smaže komentáře a všechny funkce vloží na první řádek za sebe tak, aby byl soubor co nejmenší. Tím se i jeho provádění pak trošku zrychlí, takže skvělé pro obrovské scripty, nebo freehostingy. Svůj script uložte do souboru script.php Archivovaná verze se uloží do souboru archiv.php Zdroják archivátoru: <?php if (!defined('T_DOC_COMMENT')) define ('T_DOC_COMMENT', -1); if (!defined('T_ML_COMMENT')) define ('T_ML_COMMENT', -1); $input = file_get_contents('script.php'); $space = $output = ''; $set = '!"#$&\'()*+,-./:;<=>?@[\]^`{|}'; $set = array_flip(preg_split('//',$set)); foreach (token_get_all($input) as $token) { if (!is_array($token)) $token = array(0, $token); switch ($token[0]) { case T_COMMENT: case T_ML_COMMENT: case T_DOC_COMMENT: case T_WHITESPACE: $space = ' '; break; default: if (isset($set[substr($output, -1)]) || isset($set[$token[1]{0}])) $space = ''; $output .= $space . $token[1]; $space = ''; } } fwrite( fopen('archiv.php', 'w'), $output); ?>
  11. Ahoj, tak jsem postavil novou funkci. Umí číslo vypsat jako 142 232 368, místo klasického 153452562. Zdroják: <?php /* rozdeli cislo po 3 znacich jako to byva u cen 12.07.2009 00:41:56 */ function cena($cislo) { $znaku = strlen($cislo); if( $znaku>3 ) for( $i=1; $i<=$znaku; $i++ ) $new = substr($cislo, ($znaku-$i), 1 ).(((($i % 3)==1)and($i!=1))?" ":"").$new; else return $cislo; return $new; } $cislo = 234567890; echo cena($cislo); ?>
  12. 7.Host

    návod soubor.php?id=1

    Tak spousta z vás si jistě říkala jak to ostatní dělaji že maji soubor např.: index.php?id=1 můžete samozřejmě udělat i soubor index.php?id=2 atd. většinou se tato funkce používá když chcete třeba 5 stránek v jednom souboru. No takže pustíme se do toho: <?php //otevřeme PHP if($_GET['id'] == '1') //id a 1 si můžete změnit na co chcete { echo "Sem si zadejte obsah stránky";} ?> //zavřeme PHP Pro lamky připomínám že to musíte dávat do souboru s příponou .php
  13. Tak dnes sem pro vas pripravil takovej mini tut aby mi se mi lidi neptali jak udelat login s heslem atd... Zde je kod: Tvuj Login: Tvoje Heslo: <?php $login = $_POST["login"]; $heslo = $_POST["heslo"]; //Login pro psycha if($login == psycho and $heslo == ho*no) //podminka a vnem nadefinovani loginu a hesla { echo "Spravne heslo ty psychousi xD"; //zprava co se vypise kdyz zadal spravny login a heslo } elseif($login === psycho) //jestli se login nerovna psycho tak to vypise spatny heslo xD { echo "Zadal si spatne heslo vole!"; } elseif($heslo === ho*no) //jestli se heslo nerovna ho*no tak to vypise spatny login xD { echo "Zadal si spatny login vole!"; } elseif($login != psycho and $heslo != ho*no) //esi se nerovna login psycho a heslo ho*no tak to vypise toto { echo "Zadany login neexistuje a ani zadane heslo neexistuje!"; } ?> Zkracene radky: Tvuj Login: Tvoje Heslo: <?php $login = $_POST["login"]; $heslo = $_POST["heslo"]; //Login pro psycha if($login == psycho and $heslo == ho*no) { echo "Spravne heslo ty psychousi xD"; } elseif($login === psycho) { echo "Zadal si spatne heslo vole!"; } elseif($heslo === ho*no) { echo "Zadal si spatny login vole!"; } elseif($login != psycho and $heslo != ho*no) { echo "Zadany login neexistuje a ani zadane heslo neexistuje!"; } ?> Ukazka: http://f-host.cz/indexs.php" onclick="window.open(this.href);return false;
  14. /*===================================================================================================*\ || Created by =>Sandra<= v roku 2009 Prelozil a upravil Big_Daddy || || Pre TeamParanoia || || http://www.teamparanoia.com || \*===================================================================================================*/ FilterScript: Nehnutelnosti Tvorca: by =>Sandra<= SK jazyk Big_Daddy Prikazy: /nehhelp ==>> info o nehnutelnostiach /kupitnehnutelnost alebo /kupneh ==>> Za ucelom kupi nehnutelnosti /predatnehnutelnost alebo /predajneh ==>> Za ucelom predaja nehnutelnosti /mojenehnutelnosti alebo /mojeneh ==>> Zoznam tvojich nehnutelnosti Obrazky: http://img407.imageshack.us/my.php?imag ... 009qx2.jpg" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false; http://img407.imageshack.us/my.php?imag ... 009qx2.jpg" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false;" onclick="window.open(this.href);return false; Navod na instalaciu 1.Stiahni si Nehnutelnosti.rar 2.Extrahuj vsetky subory do zlozky Nehnutelnosti. 3.Do Server.cfg pridaj Nehnutelnosti 4.Do zlozky Filterscript pridaj Nehnutelnosti.amx 5.Do Scriptfiles preidaj zlozku Nehnutelnosti a subory vnej nevimaz 6.Teraz mozes pustit Server!!! Info: Nehnutelnosti sa nachadzaju po celom GTA San Andreas LS,LV,SF Download Link: http://www.pawno.cz/download/file.php?id=57 [TUT] Ako pridat novu nehnutelnost: 0.Otvorime si zlozku Scriptfiles a otvorime si subor "PropertyInfo.txt" 1.A upravujeme nasledovny riadok! 2.MenoNehnutelnosti, Xcoord, Ycoord, Zcoord, Cena, Vynos, Majitel, Kupit, UnbuyableTime 3.MenoNehnutelnosti: myslim si ze na toto nepotrebujete vysvetlenie 4.Xcoord, Ycoord, Zcoord: toto je umiestnenie nehnutelnosti (Po odkupeni sa tam mozes spawnut) 5.Cena: hrac bude musiet zaplatit toto mnozstvo penazy ak ho chce kupit 6.Vynos: majitel tejto nehnutelnosti dostane kazdu minutu urcene mnozstvo penazy 7.Majitel: toto je meno hraca ktory vlastni tuto nuhnutelnost, ak nie je kupena nehnutelnost tak tam dajte "Nobody" 8.Kupit: ked je tam cislo "1" tak je majetok kupeny, ak je tam cislo 0 tak nieje kupeny radim dat "0" 9.UnbuyableTime: dajte "0" 10.Priklad: San Fiero Airport,-1418.64,-292.79,14.14,84718,1000,Nobody,0,0
  15. Dnes se dostaneme k řešení problému, který mnoho z vás (když se zadaří) nikdy řešit nebude muset. Stále více lidí mi píše, že jim phpfusion, phpbb, nebo jiný przniscript píše u návštěvníků IP adresu 127.0.0.1. Tento problém nastává u podřadných scriptů, u nichž autoři nepředpovídali, že může ležet za proxy serverem. Tento problém je i na CRY.cz, jak si můžete všimnout na http://phpinfo.cry.cz Když dadáte do prohlížeče adresu http://cry.cz:80 , což je normální port webu, ale web skutečně jede na portu jiném. Například http://mysql.cry.cz:60002/ Je to hlavně kvůli bezpečnosti. Ale jak vyřešit onen problém s tím, že $_SERVER['REMOTE_ADDR'] neobsahuje naši IP adresu a script to neví? Otevřete si hlavní konfigurační soubor (většinou config.php, nastaveni.php atp.) a vložte do něj následující řádek: include "/my/ip"; s tím, že /my/ip je obyčejný script s tímhle kódem (na cry.cz soubor existuje v každém účtu, nejde smazat takže stačí jen onen include): <?php function ip() { if($_SERVER['REMOTE_ADDR']!="127.0.0.1") { return $_SERVER['REMOTE_ADDR']; } else { return $_SERVER['HTTP_X_REAL_IP']; } } $_SERVER['REMOTE_ADDR'] = ip(); $_REMOTE_ADDR = ip(); ?> Jak vidíte, script zkontroluje, jestli $_SERVER['REMOTE_ADDR'] neobsahuje IP adresu 127.0.0.1 a pokud ano, naplní ho skutečnou IP adresou návštěvníka ( $_SERVER['HTTP_X_REAL_IP'] ). Přehled všech proměnných $_SERVER si můžete prohlédnout na http://phpmyadmin.cry.cz , nebo si vytvořit script, který vám to samé vypíše: <?php phpinfo(); ?> Není to nic těžkého a tímto malým includem naučíte script tomu, čemu ho jeho vlastní autor naučit zapoměl.
  16. Potřebujete zjistit v php velikost nějakého souboru? PHP sice má funkci filesize( [cesta k souboru] ), ta ale vrací velikost v bajtech. Ukážeme si tedy, jak zjistit velikost v největší možné jednotce. Vytvoříme si k tomuto účelu jednoduchou funkci, která obsahuje jen pár podmínek a pojmenujeme si ji jednotka: function jednotka($size) { if( $size < 1024) return $size .' bajtů'; $size=$size/1024; if( $size < 1024) return round($size, 2).' kB'; $size=$size/1024; if( $size < 1024) return round($size, 2).' MB'; $size=$size/1024; if( $size < 1024) return round($size, 2).' GB'; } a teď ukázka použití: $cesta = "C:\samp022\server_log.txt"; //cesta k našemu souboru $bajtu = filesize($cesta); //zjistime velikost v bajtech $velikost = jednotka($bajtu); //skutecna velikost echo "Velikost našeho LOGu je: " . $velikost;
  17. Potřebujete scriptem zpracovávat konfig serveru? Ukážu vám, jak to děláme na hostíku. Předkládám funkci, které jen zadáte jmeno souboru (například "C:\samp022\server.cfg") a její výsledek bude krásné pole ( array() ). Nerozumíte? Předvedu. server.conf vypadá například takhle: rcon_password rconheslo maxplayers 50 port 7788 gamemode0 area51 hostname Hostik UnNamed Server filterscripts weburl www.samp.hostik.cz mapname anticheat 0 announce 1 Takže naše slavná funkce: function nacti_config($cesta_ke_konfigu) { $fcontents = file($cesta_ke_konfigu); while (@list ($line_num, $line) = @each ($fcontents)){ $line = explode(" ", $line,2); $line[0] = strtr($line[0], array("\n" => "")); $line[1] = strtr($line[1], array("\n" => "")); $co = $line[0]; $value = $line[1]; $return[$co] = rtrim($value); } @fclose($fp); return $return; } Příklad použití: $cesta_ke_konfigu = "C:\samp022\server.cfg"; $nastaveni = nacti_config($cesta_ke_konfigu); echo "Jméno serveru: " . $nastaveni['hostname']; //obsahuje text: Hostik UnNamed Server echo "Pocet slotu: " . $nastaveni['maxplayers']; echo "Port: " . $nastaveni['port']; echo "rcon: " . $nastaveni['rcon_password']; echo "Herní mód 0: " . $nastaveni['gamemode0']; echo "Web serveru: " . $nastaveni['weburl']; Když si ty informace vytáhnete takhle krásně do proměnné tak se s tím hned lépe pracuje.
  18. Asi před půlrokem jsem si tohle našel na forum.sa-mp.com ale stále ještě to sem nikdo nenapsal tak budu první. Potřebujete v PHP scriptu poslat RCON příkaz, který například vypne server nebo pozdraví hráče, případně přesně opůlnoci načte nějaký silvestrovský filterscript a nevíte jak na to? Pomůžu vám s tím odesláním RCON příkazu. Zbytek je na vás. RCON příkaz můžete posílat na jakýkoli samp server, od kterého znáte IP adresu a RCON heslo. Pro odeslání RCON dotazu je krásná funkce, které zadáte jen IP, PORT, RCON heslo a příkaz. //samotná funkce: function rcon_operace($cmd,$ip,$port,$pass) { $passlen = strlen($pass); $cmdlen = strlen($cmd); $packet = 'SAMP'; $packet .= chr(strtok($ip, '.')).chr(strtok('.')).chr(strtok('.')).chr(strtok('.')); $packet .= chr($port & 0xFF).chr($port >> 8 & 0xFF); $packet .= "x"; $packet .= chr($passlen & 0xFF).chr($passlen >> 8 & 0xFF).$pass; $packet .= chr($cmdlen & 0xFF).chr($cmdlen >> 8 & 0xFF).$cmd; $fp =fsockopen('udp://' . $ip, $port, $errno, $errstr); fwrite($fp, $packet); fclose($fp); } Příklady volání: načtení filtercriptu $cmd = "loadfs mujscript"; //nacteme nas filterscript $ip = "93.190.49.104"; $port = 7770; $pass = "muj_supertezky_RCON"; rcon_operace($cmd,$ip,$port,$pass); poslání zprávy na server $cmd = "say caute lidicky. Je novy rok!!!"; //pozdravime hrace $ip = "93.190.49.104"; $port = 7770; $pass = "muj_supertezky_RCON"; rcon_operace($cmd,$ip,$port,$pass); vypnutí serveru PHP scriptem $cmd = "exit"; //vypneme server $ip = "93.190.49.104"; $port = 7770; $pass = "muj_supertezky_RCON"; rcon_operace($cmd,$ip,$port,$pass); Deprecated: Tento script na vetsine free webhostingu nefunguje. IC.cz a jemu podobni radi zakazuji php funkci fsockopen() na ktere je zalozeny tento kod.
  19. Guest

    návod CZ property 100% funkcnost.

    Zdravím,videl jsem tu TUT na CZ property,ale je :thumbdown: ani nefunguje,a to ze vam to jen vyplati penize pri spawnu je kravina takze zde je tu 100% funkcnost Prve stahneme Includ zde: include/CZproperty.inc" onclick="window.open(this.href);return false; a pokracujeme podle navodu ..... Pod includy #include OnGameModeInit() PropertyMenuLoad(); OnPlayerPickUpPickup PropertyPickup(); OnPlayerSelectedMenuRow OnPlayerSelectedPropertyMenu(playerid, row); OnPlayerExitedMenu TogglePlayerControllable(playerid, true); PropertyMenu[playerid] = false; A jak pridat nemovitost Do OnGameModeInit. AddProperty(Pozice X,Pozice Y,Pozice Z, Cena, Vydelky, "Jmeno","Puvodni vlastnik"); A ted ma prace OnGameModeInit SetTimer("nemovitosti", 400000,1);//dej podle sveho casu A nekam do modu treba nakonec public nemovitosti(){ PropertyPaymentsUpdate("Probehly vyplaty nemovitosti."); } A je to :rap: Pujde vse jak ma jit :thumbup:
  20. Guest

    návod YSI

    Autorem je Y_Less Čaute,připravil jsem pro vás Y_Objects To je že můžete mít víc objektů než 150.Tento TUT vám pomůže mit objektů až 1 000 000 A bez padání serveru!.Takže prvni si stahněte INCLUDE Y_Objects,pak to vložte do složky v pawnu INCLUDE. !VKLÁDEJTE! Nahoru do módu Kód: #include public OnGameModeInit() Kód: Object_Object(); public OnPlayerDisconnect(playerid, reason) Kód: Object_OnPlayerDisconnect( playerid, reason); A nyní přejmenujeme Objecty: Z Kód: CreateObject na Kód: CreateDynamicObject Takže např to bude takto z: Kód: CreateObject(3461,-1966.837,296.396,36.102,0.0,0.0,0.0); CreateObject(3461,-1966.916,291.694,35.993,0.0,0.0,0.0); CreateObject(1284,-1991.331,290.408,36.379,0.0,0.0,90.000); Na Kód: CreateDynamicObject(3461,-1966.837,296.396,36.102,0.0,0.0,0.0); CreateDynamicObject(3461,-1966.916,291.694,35.993,0.0,0.0,0.0); CreateDynamicObject(1284,-1991.331,290.408,36.379,0.0,0.0,90.000); Tu máte INLUDE Y_Objects . http://uloz.to/727244/y-objects.inc" onclick="window.open(this.href);return false; S pozdravem od AcrossCZ!
×
×
  • Create New...