Jump to content

návod Přechod z dini/dcmd/jiné na YSI4 [**] #4


Scydo

Recommended Posts

  • Hlavní moderátor

1) Musíme až 3x zakládat proměnnou string na nick a na cestu souboru.

Nó, ono by to šlo i lépe, což o to...

 

2) Musíme formátovat jedinou zprávu.

Jak tohle souvisí s dcmd?

 

Ale, když přidáme proměnnou pomocí y_bite:

new BitArray:Promenna<MAX_PLAYERS>;
Tak využití paměti je už pouhých 29 bajtů.

 

To mne zaujalo, jak to funguje?

 

dokonce i rychlejši než pomocí emitu

Toto je celkem haluz. Nepochopitelná. :d

 

Kde sice už nemusíme zjišťovat, jestli je připojený (IsPlayerConnected)...

Počky, počky, to je kravina. GetPlayerPoolSize akorát vrací nejvyšší připojené ID, to ale neznamená, že všechna ID mezi nejnižším a nejvyšším jsou připojena.

 

Ty kontroly u timerů nejsou zrovna ideální ukázka, u obojího se totiž můžeš vyprdnout na timery a použít gettime. :d

 

Hele jo, dal sis s tím práci a jsou tam zajímavé věci (místy teda trochu zmatek, ale co už). Akorát teda jedna velká výtka – je to strašně dlouhé. Po souborech a příkazech jsem už jen tak zběžně prolétával, co jsi tam psal, ale doopravdy to nečetl. Snad nebudu jediný, co si to vůbec četl.

 

Tak dobrá práce a zapracuj na tom, co jsem napsal výše. A taky mi odpověz na tu otázku, pokud možno. ;)

Link to comment
Share on other sites

Nó, ono by to šlo i lépe, což o to...

~> Kódy, které nejsou zpracované prostřednictvím YSI jsou většinou inspirované, jako by je psal začáteční uživatel a nebo rovnou napsané stejně, jen krapek vylepšené. Samozřejmě, že by to šlo napsat lépe(což je dokonce i účelem tohohle topicu -> všechno to jde udělat lépe).

 

Jak tohle souvisí s dcmd?

~> Je to v patřičné kapitole. Navíc je to jedna z problematik, která zrovna jde zpracovat lépe přes YSI(y_va).

 

To mne zaujalo, jak to funguje?

~> Není k nalezení dokumentace, která to dopodrobna výborně vysvětlila, takže se spíše teoretizuje. Ale většina je té možnosti, že na podobném způsobu jako "packed" string.

 

Toto je celkem haluz. Nepochopitelná. :d

~> Ne, jenom trošku jinak vysvětlená:

 

Alebo použijete stock (by Lorenc_ tuším) s emit a argumentami

 

 

 

stock SendClientMessageFormatted(playerid, color, fstring[], {Float, _}:...)
{
    #define BYTES_PER_CELL              4
    const STATIC_ARGS = 3;
    new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
    if(n)
    {
        new message[144],arg_start,arg_end;
        #emit CONST.alt        fstring
        #emit LCTRL          5
        #emit ADD
        #emit STOR.S.pri        arg_start

        #emit LOAD.S.alt        n
        #emit ADD
        #emit STOR.S.pri        arg_end
        do
        {
            #emit LOAD.I
            #emit PUSH.pri
            arg_end -= BYTES_PER_CELL;
            #emit LOAD.S.pri      arg_end
        }
        while(arg_end > arg_start);

        #emit PUSH.S          fstring
        #emit PUSH.C          144
        #emit PUSH.ADR         message

        n += BYTES_PER_CELL * 3;
        #emit PUSH.S          n
        #emit SYSREQ.C         format

        n += BYTES_PER_CELL;
        #emit LCTRL          4
        #emit LOAD.S.alt        n
        #emit ADD
        #emit SCTRL          4

        if(playerid == INVALID_PLAYER_ID)
        {
            #pragma unused playerid
            return SendClientMessageToAll(color, message);
        } else {
            return SendClientMessage(playerid, color, message);
        }
    } else {
        if(playerid == INVALID_PLAYER_ID)
        {
            #pragma unused playerid
            return SendClientMessageToAll(color, fstring);
        } else {
            return SendClientMessage(playerid, color, fstring);
        }
    }
}

 

Počky, počky, to je kravina. GetPlayerPoolSize akorát...(více)

~> Přepíšu.

 

Ty kontroly u timerů nejsou zrovna ideální ukázka, u obojího se totiž můžeš vyprdnout na timery a použít gettime. :d

~> Ano, ale já se snažil nějaký příklad, který zná snad každý. Tipy se mi zdály jako nejlepší volba, která lze rychle vytvořit a u čeho jde vidět dobře rozdíl. Navíc, jak jsem už říkal, první je jen ukázka, jako by na tom dělal někdo jiný. Určitě by to nebyl můj výsledný script bez použití YSI.

 

Akorát teda jedna velká výtka – je to strašně dlouhé.

~> Njn. U něčeho bylo hold potřeba jít do podrobností. Taky ten topic byl záměrně rozdělen na kapitoly. Například aby uživatel, co je zatvrdlí na dini tak se podívá jen na ukládání+načítání a pročte si ho a pochopí, v čem je y_ini lepší oproti dini, že tam není tak extra rozdíl atd. To samé uživatelé, co používají dcmd. Taky rovnou skočí na kapitolu příkazy, aby viděli rozdíl mezi dcmd a ycmd. A nemusí to číst celé..
Link to comment
Share on other sites

  • Globální moderátor

Y_Less se vždycky snažil přebrat C/C++ věci, takže bych si dovolil možná i tvrdit, že se jedná o nějakou napodobeninu vector boolů. V sa-mpu zabírá bool jako všechny proměnné 4bajty, to znamená, že se to všechno smrskne do jednotlivých bitů. 

 

Takže když to zkrátíme,

 

New: 1 cell = 32 bits = 32 bools = 32 využití

Old: 1 cell = 32 bits = 1 bool = 1 využití

Old s char: 1 cell = 32 bits = 4 bools = 4 využití

Link to comment
Share on other sites

Já sem původně šel normálně  z DCMD že jo, wikina ti to vyhledá jako "Fast Commands" ale y_commands je prostě boží, nic jinému se tomu nevyrovná, hned jedu svý a nemusím psát to pitomý public OnPlayerCommandText

Link to comment
Share on other sites

  • Globální moderátor

fuuu tak dlouhé teda.

Kdo se bude chtít učit, tak si to přečte celé :)

Jinak moc pěkné, hodně mě zaujaly dialogy.

 

Malinká chybka -> "vespání!" (CTRL/CMD + F)

Link to comment
Share on other sites

Predpokladam ze YSI je jako dini cele postavene na fopen fwrite fread fclose ze ? Tak proc bych mel sakra pouzivat YSI nebo dini kdyz muzu pouzivat zakladni funkce, ktere jsou nejrychlejsi :d

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

Hodně pěkné ;) . Já jsem si to pročetl celé, protože mě to zajímalo, co na tom lidi furt vidí. A vidím, že na tom něco bude :d Zatím uvažuji jen o y_va, protože to formátování je dost přestává bavit. GJ. (Repík neuškodí).

Link to comment
Share on other sites

kdyz muzu pouzivat zakladni funkce, ktere jsou nejrychlejsi :d

~> Protože všichni to neumí tak dobře s nimi, jako pracovat s dini. A pokud myslíš, že jsou základní files nejlepší, tak ať. Nikde o nich v topicu nepíši, že je lepší si na to raději stáhnout include. Především je to pro ty zatvrdlé dinisáky, co tvrdí, že je desítky let starý include nejlepší, a že jiný by si neuměli představit, plus: pro remcaly co tvrdí, že YSI je satanistické dílo, co nejde pochopit..

Link to comment
Share on other sites

ATomas.... Pro někoho je to lepší, ale třeba pro mě, je lepší prostě jen napsat

#include a_samp
#include y_commands

YCMD:prikaz(playerid, params[], help) {
         SendClientMessage(playerid, -1, "Napsal si příkaz /prikaz");
         return 1;
}
Link to comment
Share on other sites

  • Hlavní moderátor

 

ATomas.... Pro někoho je to lepší, ale třeba pro mě, je lepší prostě jen napsat

#include a_samp
#include y_commands

YCMD:prikaz(playerid, params[], help) {
         SendClientMessage(playerid, -1, "Napsal si příkaz /prikaz");
         return 1;
}

Ale on mluvil o souborech, ne o příkazech, v tom je rozdíl.

Link to comment
Share on other sites

~> Protože všichni to neumí tak dobře s nimi, jako pracovat s dini. A pokud myslíš, že jsou základní files nejlepší, tak ať. Nikde o nich v topicu nepíši, že je lepší si na to raději stáhnout include. Především je to pro ty zatvrdlé dinisáky, co tvrdí, že je desítky let starý include nejlepší, a že jiný by si neuměli představit, plus: pro remcaly co tvrdí, že YSI je satanistické dílo, co nejde pochopit..

Ja jsem zase zatrvrdly file-sista :d (pawno/include/file.inc). Tak jako tak respekt za ten tutorial. Takhle krasne spracovany tutorial tu vidim asi poprve. Zarovnavat to do tabulek a formatovat se s nadpisama. S tim bych se treba ja nezdrzoval :d

Edited by ATomas
  • Líbí se mi to! (+1) 3
Link to comment
Share on other sites

Já sem původně šel normálně  z DCMD že jo, wikina ti to vyhledá jako "Fast Commands" ale y_commands je prostě boží, nic jinému se tomu nevyrovná, hned jedu svý a nemusím psát to pitomý public OnPlayerCommandText

~> Tak, ono je to pochopitelné, jelikož podle wiki jsou oba (dcmd a zcmd) rychlejší, než strtok. Ale podle mě je to i v rychlosti práce s ním. Nemluvě o tom, že samotný článek, je docela starý, takže v té době se na rychlost ještě tak nebral ohled, spíše už lidi byly nadšení jen z toho, že něco takového existuje.

 

fuuu tak dlouhé teda.

 

Kdo se bude chtít učit, tak si to přečte celé :)

Jinak moc pěkné, hodně mě zaujaly dialogy.

 

Malinká chybka -> "vespání!" (CTRL/CMD + F)

 

~> Každého zaujme hold něco jiného. Ale rozhodně souhlasím. I mě po prvé překvapilo, když jsem po letech zjistil, že jdou přidávat dialogy bez nutnosti dialogid. Ale stejně u mě vítězí iterátory, protože využití je fakt enormně početné.

~> Chyba byla opravená, ale stejně jich tam je ještě dost. 

 

Hodně pěkné ;) . Já jsem si to pročetl celé, protože mě to zajímalo, co na tom lidi furt vidí. A vidím, že na tom něco bude :d Zatím uvažuji jen o y_va, protože to formátování je dost přestává bavit. GJ. (Repík neuškodí).

 

~> Tak, to jsou zatím jenom ty základní includy z knihovny, o kterých by se hodilo vědět pro někoho, kdo má zájem pracovat na GM s YSI. Samozřejmě, je tam mnohem více zajímavějších includů, například y_testing se hodí na testování scriptů(obsahuje i měření času), y_debug zase, kdyby nám ten script nefungoval, y_races na práci se závody, y_files na práci se složkami(ne, se soubory), y_vehicledata, který zase obsahuje kategorie vozidel (něco jako má wiki), y_properties, se kterým lze dělat nemovitosti, y_users, který obsahuje fce na práci s registrací, loginem... je toho tam prostě hromada.

 

ATomas.... Pro někoho je to lepší, ale třeba pro mě, je lepší prostě jen napsat

#include a_samp
#include y_commands

 

 

~> Pokud načítáš z alternativní cesty (YSI\y_commands), tak by ses měl začít zaměřovat na načítání ze hlavní cesty (YSI_Visual\y_commands). Ne jenom, že je to načítání ze staré verze 3.1, ale když otevřeš ty soubory, tak stejně jediné, co tam uvidíš je právě načítání té hlavní cesty, takže je to i rychlejší.[/font]

 

Ja jsem zase zatrvrdly file-sista :d (pawno/include/file.inc). Tak jako tak respekt za ten tutorial. Takhle krasne spracovany tutorial tu vidim asi poprve. Zarovnavat to do tabulek a formatovat se s nadpisama. S tim bych se treba ja nezdrzoval :d

~> Nom děkuju. Dalo to práci. Snad to konečně k něčemu bude. A i pro mě to byla zajímavá zkušenost, protože s tabulkami na fórech jsem pracoval po prvé v životě. Takže to byl na nějakou dobu i boj :d...

Link to comment
Share on other sites

  • 3 months later...

Otázka ktorá neviem či sa hodí sem: ako efektívne pracovať s ysi a mysql?

Pokud máš nějaké údaje, které chceš ukládat jen do scriptfiles ne nějak je rvát na web, tak můžeš.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...