Jump to content

The hidden face

Uživatel
  • Příspěvků

    810
  • Registrován

  • Aktivní

  • Vítězných dnů

    22

Příspěvky posted by The hidden face

  1. před 26 minutami, Gatsby^ said:

    To riešenie nespustím, kedže v pc nemam žiaden OS.

    A Myslím, že verzia BIOSu je najnovšia.

    Promiň, nějak mi uniklo, že sis ho koupil bez OS :o Já myslel, že jen reinstaluješ, ale OK ;) Tak pak teda zkus to, co radí Tanga ;) 

  2. Zkus toto řešení: ZDE.

    Pokud nepomůže, tak updatni BIOS:

    Na stránkách výrobce desky si stáhni nejaktuálnější BIOS tvé konkrétní MB a updatni ho. - Též v nastavení BIOSU přes nástroj M-Flash. ;) Na YT určitě bude nějaký návod!! Důležité je počítač nevypínat a ani nevytahovat při upgradu flash disk. Pokud víš, že máš s nějakou flash problémy, nebo snad s někým USB portem (že by třeba trpěl samovolným odpojováním flash), tak využij jen ten, který víš, že najisto funguje.. Je to dost důležité, protože jinak by sis mohl dost zavařit.... Pokud snad i často vypadává proud, tak se vyplatí si někde půjčit záložní zdroj ;) Hodně štěstí přeji! ;) 

  3. Néééé, to rozhodně nemusíš. Stačí nějakým odhadem vydedukovat.. Někdy samozřejmě nemůžeš vědět a prostě si tipneš - radši více než méně, ale zrovna u názvů aut si to zjistit dokážeš.  Určitě máš nějaké pole s názvy aut, stačí se porozhlédnout po nejdelším názvu, mě třeba až na druhý pohled přišel největší tento: "Luggage Trailer A", což má 17 znaků. Dejme tomu, že jsem nenašel ten největší tak si dám rezervu třeba 25 nebo 30. Tady vidíš, že jsi zrovna ušetřil zbytečných 100 znaků. U spousty věcí máš třeba už velikost pevně danou (zde). Například jméno hráče může nabýt maximálně 24 znaků, ale dává se jich 25 pro nulový znak (konečný znak - EOS). Takže třeba zde by bylo úplně zbytečně dělat pole znaků na jméno o velikosti 128 znaků... a divil by ses kolik lidí to dělá.

     

    Samozřejmě s dnešní technikou už je to celkem zanedbatelný, když tvůj server nepoběží na bramboře.... ale není špatný se snažit pamětí šetřit.. pokud jednou budeš programovat, taky po tobě bude požadováno, aby tvůj program byl co nejúčinnější, ale zároveň nesebral spoustu výkonu (=optimalizovaný). Takže rozhodně není na škodu se naučit šetřit :d 

  4.  
    new result[128];
    strcat(result, slot1, sizeof(result));
    strcat(result, "\n", sizeof(result));
    strcat(result, slot2, sizeof(result));
    //v proměnné result teď budeš mít výsledný string

    Nebo můžeš využít zkrácenější zápis a to přes fci format()

    format(result, sizeof(result), "%s\n%s", slot1, slot2);

    Více specikátorů máš zde:

    http://wiki.sa-mp.com/wiki/Format

    Dej si pozor na velikosti stringů... Máš dva o velikost 128 znaků a snažíš se je spojit též do stringu o 128 znacích. Chápu asi, že této velikost nenabývají, ale je zbytečné rezervovat tolik znaků, když je nepotřebuješ.. :/

  5. Tak patice ti sedí, ale kupuješ paměti s větší frekvencí, než podporuje deska. Není to zase tak velký problém, ale popřemýšlel bych o tom jestli nekoupit jinou desku, abys využil plného potenciálu těch RAMek... V praxi ten rozdíl, nejspíš vůbec nepoznáš... :d Takže opravdu záleží na tobě, ale věřím, že najdeš levnější nebo v podobné cenové relaci desku s vyšší frekvencí pro RAM. ;) 

  6.  

    taky bych potřeboval pomoct mám stejný error : error 017: undefined symbol "playerid" //==============================================================================

     

     

     

    #include <a_samp>
    #pragma tabsize 0
     
    //==============================================================================
    public OnPlayerConnect(playerid)
    {
       SendClientMessage(playerid, 0xFF0000AA, "{00fd00}[stunty] {0000ed}Server Puživá Stunty By{00fd00}by [R.H.C]_moKe[R]_ {0000ed}/Draglv /nevada /dragls{00fd00}");
    return 1;
    }
     
     
    public OnFilterScriptInit()
    {
    RemoveBuildingForPlayer(playerid, 3368, 161.7891, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3368, 323.0078, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3369, 349.8750, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3369, 269.2656, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3369, 242.3984, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3369, 188.6563, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3369, 108.0469, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3367, 296.1406, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3367, 215.5313, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3367, 134.9141, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3269, 108.0469, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3270, 161.7891, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3269, 188.6563, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3271, 134.9141, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3271, 215.5313, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3269, 242.3984, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3269, 269.2656, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3271, 296.1406, 2438.2500, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3270, 323.0078, 2411.3828, 15.4766, 0.25);
    RemoveBuildingForPlayer(playerid, 3269, 349.8750, 2438.2500, 15.4766, 0.25);
    CreateObject(19128, 429.19849, 2521.65576, 15.45247,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 429.24396, 2517.71362, 15.48676,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 429.58051, 2509.79492, 15.53635,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 429.20392, 2513.69995, 15.58274,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 429.41528, 2497.85425, 15.58274,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 429.44653, 2501.77490, 15.58274,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 429.48038, 2505.81470, 15.58274,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 429.23944, 2493.85864, 15.62960,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.22922, 2521.87305, 15.67626,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.28284, 2517.83545, 15.72204,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.25214, 2514.04858, 15.76801,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.64233, 2510.31445, 15.81511,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.58179, 2506.35547, 15.86375,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.53030, 2502.34033, 15.91167,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.45523, 2498.37231, 15.95966,   0.00000, 0.00000, 0.00000);
    CreateObject(19128, 425.33356, 2494.37671, 16.00933,   0.00000, 0.00000, 0.00000);
    CreateObject(18778, 401.18777, 2509.95703, 16.89960,   2.00000, 0.00000, 91.00000);
    CreateObject(3515, 388.60907, 2509.68286, 16.55530,   0.00000, 0.00000, 0.00000);
    CreateObject(3515, 377.67673, 2512.20020, 17.42510,   0.00000, 0.00000, 0.00000);
    CreateObject(3515, 392.28070, 2508.65479, 16.15870,   0.00000, 0.00000, 0.00000);
    CreateObject(3515, 380.76968, 2511.89136, 15.61260,   0.00000, 0.00000, 0.00000);
    CreateObject(3515, 384.67426, 2511.05005, 17.05240,   0.00000, 0.00000, 0.00000);
    CreateObject(18778, 369.75333, 2511.93042, 17.62730,   16.00000, 0.00000, -93.00000);
    CreateObject(18787, 342.32529, 2512.30103, 18.68700,   11.00000, 0.00000, 91.00000);
    CreateObject(11470, 332.15604, 2513.63623, 20.51590,   0.00000, 0.00000, 0.00000);
    CreateObject(11470, 326.76074, 2513.34937, 20.65710,   0.00000, 0.00000, 0.00000);
    CreateObject(11470, 321.31342, 2513.12427, 21.40910,   0.00000, 0.00000, 0.00000);
    CreateObject(11470, 315.24158, 2513.11084, 21.11230,   0.00000, 0.00000, 0.00000);
    CreateObject(11470, 308.37329, 2512.12012, 21.26690,   0.00000, 0.00000, 0.00000);
    CreateObject(18787, 296.00421, 2515.18726, 18.69790,   14.00000, 4.00000, -93.00000);
    CreateObject(8355, 436.37158, 2507.83105, 15.61270,   0.00000, 0.00000, 91.00000);
    CreateObject(8355, 298.59970, 2505.35840, 15.88390,   0.00000, 0.00000, 91.00000);
    CreateObject(8355, 160.92125, 2503.05908, 16.04340,   0.00000, 0.00000, 91.00000);
    CreateObject(19001, 271.66428, 2506.89111, 26.40590,   0.00000, 4.00000, 2.00000);
    CreateObject(18787, 234.01260, 2497.99487, 17.02390,   0.00000, 0.00000, 91.00000);
    CreateObject(18842, 198.70590, 2497.98389, 21.80350,   84.00000, 91.00000, 0.00000);
    CreateObject(18842, 150.48630, 2496.70996, 21.74830,   91.00000, 91.00000, 0.00000);
    CreateObject(18842, 103.72380, 2495.70752, 21.04780,   98.00000, 91.00000, 0.00000);
    CreateObject(18842, 53.64977, 2496.88818, 20.66830,   98.00000, 91.00000, -4.00000);
    CreateObject(18842, 7.19520, 2499.73560, 20.47690,   76.00000, 86.50000, 0.00000);
    CreateObject(18842, -40.70756, 2503.73901, 20.28180,   -265.00000, 84.00000, 0.00000);
    CreateObject(18838, -71.50226, 2499.18042, 23.16500,   69.00000, 0.00000, 0.00000);
    CreateObject(18823, -47.18576, 2477.21387, 30.07540,   78.00000, 198.00000, 18.00000);
    CreateObject(18823, -49.15654, 2437.84253, 41.49670,   69.00000, -221.00000, 0.00000);
    CreateObject(18823, -88.26250, 2429.78418, 45.12750,   -98.00000, -84.00000, -18.00000);
    CreateObject(18823, -106.25045, 2466.32275, 43.34190,   -91.00000, 14.00000, 0.00000);
    CreateObject(18823, -72.84076, 2485.70923, 45.43410,   -84.00000, 0.00000, -105.00000);
    CreateObject(18823, -34.19994, 2462.28467, 49.67200,   -84.00000, 135.00000, -156.00000);
    CreateObject(18769, -0.82996, 2459.24780, 44.67740,   0.00000, 0.00000, 18.00000);
    CreateObject(18828, -24.73217, 2332.22974, 139.54070,   -18.00000, 8.00000, 88.00000);
    CreateObject(18800, -28.74023, 2361.72510, 200.12849,   11.00000, 0.00000, 0.00000);
    CreateObject(18842, -76.62479, 2336.54102, 210.96600,   105.00000, 91.00000, 0.00000);
    CreateObject(18840, -119.18820, 2351.33716, 213.25960,   -258.00000, 25.00000, 4.00000);
    CreateObject(11470, 1478.63306, 1682.25269, 15.94380,   -4.00000, -4.00000, 91.00000);
    CreateObject(16776, 1479.81396, 1670.62732, 10.94120,   4.00000, 4.00000, 273.00000);
    CreateObject(16776, 1479.60889, 1655.47791, 11.53380,   0.00000, 0.00000, 273.00000);
    CreateObject(16776, 1480.62268, 1641.17993, 11.43410,   0.00000, 0.00000, 273.00000);
    CreateObject(18844, 1640.66284, 1621.77869, 76.01960,   91.00000, 14.00000, -105.00000);
    CreateObject(7996, 1637.39063, 1616.14844, 6.86610,   0.00000, 0.00000, 0.00000);
    CreateObject(18855, 1559.30347, 1622.66321, 42.97540,   0.00000, 0.00000, 0.00000);
    CreateObject(19005, 1479.43359, 1696.56750, 15.07370,   11.00000, 0.00000, 178.00000);
    CreateObject(19005, 1479.67151, 1620.20288, 13.63780,   4.00000, -2.00000, -4.00000);
    CreateObject(8355, 1484.10303, 1210.27942, 9.77966,   0.00000, 0.00000, 0.00000);
    CreateObject(8357, 1477.33960, 1186.24890, 9.76742,   0.00000, 0.00000, 0.00000);
    CreateObject(18800, 1544.15405, 1545.18726, 21.84100,   0.00000, 0.00000, 0.00000);
    CreateObject(18778, 1520.74805, 1521.94995, 37.23700,   18.00000, 0.00000, 91.00000);
    CreateObject(18842, 1486.75171, 1519.90564, 43.44890,   91.00000, 91.00000, 0.00000);
    CreateObject(3515, 1412.01672, 1555.54407, 14.58030,   0.00000, 0.00000, 0.00000);
    CreateObject(18840, 1441.87537, 1509.40027, 42.00690,   93.00000, 4.00000, -47.00000);
    CreateObject(18840, 1437.15649, 1467.03369, 49.42890,   -156.00000, -222.00000, -69.00000);
    CreateObject(18840, 1431.26050, 1449.17236, 90.28580,   18.00000, 25.00000, -18.00000);
    CreateObject(18809, 1467.59705, 1438.54175, 112.89030,   185.00000, -69.00000, 0.00000);
    CreateObject(18829, 1430.02893, 1682.20288, 16.02010,   82.00000, 120.00000, 55.00000);
    CreateObject(18829, 1428.23755, 1637.11572, 16.04850,   91.00000, 0.00000, 0.00000);
    CreateObject(18829, 1427.93518, 1589.27808, 15.08820,   91.00000, 0.00000, 0.00000);
    CreateObject(18781, 1388.40247, 1625.99670, 20.87050,   0.00000, 0.00000, 178.00000);
    CreateObject(18781, 1386.73999, 1563.03491, 20.32080,   0.00000, 0.00000, 0.00000);
    CreateObject(1632, 1389.52661, 1513.18591, 11.70400,   5.00000, 1.00000, -180.00000);
    CreateObject(1632, 1389.34009, 1491.65271, 11.23430,   0.00000, 0.00000, 0.00000);
    CreateObject(18823, 1382.30896, 1394.07214, 14.59590,   91.00000, 11.00000, 0.00000);
    CreateObject(18823, 1408.56714, 1361.90601, 15.56830,   -95.00000, -51.00000, 16.00000);
    CreateObject(19005, 1415.94678, 1463.99048, 12.68870,   0.00000, 0.00000, -91.00000);
    CreateObject(19005, 1449.50085, 1463.77502, 12.20540,   2.00000, 0.00000, 91.00000);
    CreateObject(18778, 1445.32300, 1363.31458, 12.21940,   12.00000, 2.00000, -72.00000);
    CreateObject(18778, 1467.92395, 1369.99377, 11.24650,   4.00000, 0.00000, 105.00000);
    CreateObject(19001, 1512.15381, 1421.78296, 20.43480,   0.00000, 4.00000, 98.00000);
    CreateObject(18750, 1753.73242, 1507.44507, 42.85270,   -273.00000, 273.00000, 18.00000);
    CreateObject(8355, 1733.12744, 1459.92261, 10.24900,   0.00000, 0.00000, -91.00000);
    CreateObject(18778, 1528.15393, 1387.31274, 11.30630,   2.00000, 0.00000, 178.00000);
    CreateObject(18778, 1528.04285, 1361.63586, 11.29220,   0.00000, 0.00000, 0.00000);
    CreateObject(18769, 1607.57275, 1863.51013, 20.83920,   91.00000, 0.00000, 0.00000);
    CreateObject(18769, 1576.12708, 1852.51941, 19.27710,   4.00000, 88.00000, -6.00000);
    CreateObject(18769, 1587.44751, 1862.43555, 20.39610,   0.00000, 84.00000, 91.00000);
    CreateObject(18769, 1627.50745, 1862.81812, 20.47790,   91.00000, 91.00000, 88.00000);
    CreateObject(18769, 1612.01587, 1941.93628, 24.61181,   0.00000, 0.00000, 0.00000);
    CreateObject(18769, 1638.30542, 1853.72205, 19.90790,   0.00000, -84.00000, 0.00000);
    CreateObject(18769, 1635.58545, 1818.09790, 19.90140,   0.00000, 76.00000, 0.00000);
    CreateObject(18750, 1616.75452, 1863.49011, 34.03410,   105.00000, 0.00000, 0.00000);
    CreateObject(18769, 1578.74121, 1822.27649, 19.91110,   -4.00000, 105.00000, 4.00000);
    CreateObject(7916, 1688.91614, 1442.09473, 10.24802,   0.00000, 0.00000, 0.00000);
    CreateObject(7916, 1684.37402, 1460.09607, 10.25526,   0.00000, 0.00000, 0.00000);
     
     
    return 1;
    }

     

     

     

    Nechápu proč otevíráš starý help topic. Při zakládání HELP topiců máš jasně napsaný pravidla - nezakládat další topic, ale počkat na schválení, což určitě neznamená, že by si mohl napsat svůj problém do topicu někoho jiného... ještě takhle starého... btw. jedná se o stejný problém a první příspěvek již říká jak to vyřešit, tak proč se ptáš na stejnou otázku dvakrát? failfish.png

     

    Další věc je to, že neumíš vyplnit jednoduchej formulář, takže by si se schválení ani nedočkal... Je opravdu těžké napsat svůj problém do části "Popisu problému", vložit chyby, co ti to hází do "Chyby a varování kompilátoru..." a kód do části "Kód" ?

    • Líbí se mi to! (+1) 2
  7. Mám na tebe jeden dotaz, co má vlastně dělat tahle funkce... Je strašně neoptimalizované.. pro každého hráče kontroluješ pozic, zbraně a nastavuješ x proměnných. Určitě by šla vylepšit, jen popiš k čemu všemu slouží:

     

     

    public duelTimerUpdate()
    {
    for(new i=0; i< MAX_PLAYERS_EX; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInDuel[i] != 0)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(i,X,Y,Z);
    if(X >= 2445.0791 && X = 2350.9741 && Y  47 || zbranid < 0 || zbranid == 44 || zbranid == 45 || zbranid == 19 || zbranid == 20 || zbranid == 21 || zbranid == 38 || zbranid == 43) return SendClientMessage(playerid,BARVA_BILA,"[!] Spatne zvolena zbran! Mrknete se na /duelweaponlist");
    else
    {
    Duel[Pocethracu] ++ ;
    DuelZbran[playerid] = zbranid;
    IsPlayerInDuel[playerid] = 1;
    ResetPlayerWeapons(playerid);
    KillTimer(Duel[TimerUpdate]);
    Duel[TimerUpdate] = SetTimer("duelTimerUpdate",1000,1);
    Duel[Counter] = 3;
    SetPlayerHealth(playerid,100);
    SetPlayerArmour(playerid,0);
    SetPlayerInterior(playerid,0);
    format(string,sizeof(string),"Hrac %s byl pripojen do duelu se zbrani %s (%d)",Jmeno(playerid),WeaponName(zbranid),zbranid);
    SendClientMessageToAll(BARVA_MODRA,string);
    
    if(Duel[Pocethracu] == 1)
    {
    SetPlayerPos(playerid,2449.7778,2378.5486,71.0496);
    }
    else if(Duel[Pocethracu] == 2)
    {
    SetPlayerPos(playerid,2489.5415,2378.6658,71.0496);
    Duel[Started] = 1;
    SendClientMessageToAll(BARVA_MODRA,"Duel zahajen,pripravit...");
    Duel[TimerStart] = SetTimer("duelTimerStart",1000,0);
    }
    }
    }
    return 1;
    }
     

     

     

     

    A co se té zóny týče, tak

            MinY
                 v
          MinX > *-------------
                 |            |
                 |  gangzone  |
                 |   center   |
                 |            |
                 -------------* < MaxX
                              ^
                              MaxY    
    

    zde máš obrázek z wiki jak to vlastně vypadá. Takže co ty potřebuješ je: stoupnout si do jednoho rohu, kde chceš vytvořit tu zónu a /save. Poté do protějšího rohu a zase /save. A tyhle pozice (jenom X a Y, pokud ti nezáleží na Z) dosadit do té podmínky. ;) Musíš si dávat pozor na operátory --> tzn. správně umístit ty pozice v podmínce, aby jsi je neprohodil, to by ti pak správně nefungovalo. ;) 

  8. Máš vytvořenou vlastní funkci (sendmail):

        function sendmail($to,$subject,$message,$from = "[email protected]"){
            $predmet = mime_header_encode($subject);
            $autor = mime_header_encode("SA-MP Reálný Život");
            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
            $headers .= 'Content-Transfer-Encoding: 8bit'. "\r\n";
            $headers .= 'From: '.$autor.' <'.$from.'>' . "\r\n";
            mail($to,$predmet,$message,$headers);
        }
    

    ALE tvůj obsah, který máš v jinačím souboru odesíláš funkcí mail, kde do hlavičky uvádíš pouze "From: [email protected]". Žádné informace o tom co odesíláš.. to vše řeší ta tvá předvytvořená funkce, kterou nevědomky nepoužíváš...

                $content .= "<html>
                              <body>
                                <h2>Registrace</h2>
                                Děkujeme za vaší registraci.<br />
                                Pro potvrzení a aktivaci vašeho účtu klikněte na následující odkaz:<br /><br />
                                <a href='".DEF_WEBURL."account_verify/$random_key' target='_blank'>".DEF_WEBURL."account_verify/$random_key</a><br /><br />
                                <h3>".DEF_SITENAME."</h3>
                                <h4>".DEF_WEB."</h4>
                              </body>
                             </html>";
                sendmail($_POST['v1'],"Registrace Reálný Život",$content,"From: [email protected]"); //tady stačí změnit funkci mail na tvojí sendmail, samozřejmě ta funkce sendmail musí být includnutá v tom souboru 

    Druhý kód ti funguje kvůli tomu, že máš správně zapsanou hlavičku, jelikož ji zapisuješ rovnou a ne přes svojí funkci (která by ji měla také správně, ale zapomněl jsi na ni :d ), takže se HTML zobrazuje korektně. 

    • Líbí se mi to! (+1) 1
  9. Tak kvoli pohodliu hračov by som si naukladal (/save) pozície všetkych možnych štartovnych pozicii aut.

    enum BridgeCarsEnum {
      Float:POSX,
      Float:POSY,
      Float:POSZ,
      bool:OCCUPIED 
    };
    
    new BridgeCars[20][BridgeCarsEnum]; // tu si nasledne niekde napln tento enum.. Radsej v inom subore, bude to prehladnejsie
    
    /joinbridge
    for (new i; i < sizeof BridgeCars; i++) {
      if (!BridgeCars[i][OCCUPIED]) { // zaradom prirad hracov do dalsieho volneho auta
        BridgeCars[i][OCCUPIED] = true;
        bridgeauto = CreateVehicle(402, BridgeCars[i][POSX], BridgeCars[i][POSY], BridgeCars[i][POSZ], 1, 1, 1, 0); 
        ...
      } else return SendClientMessage(playerid, -1, "Zavod uz je plny");
    }
    
    /konieczavodu
    for (new i; i < sizeof BridgeCars; i++)
      BridgeCars[i][OCCUPIED] = false;
    

    Nasledne by som hračov posadil na trať na volne pozicie.

     

    Pěkný a přehledný kód, ale připojování bych nedělal přes cyklus, už jen kvůli tomu, že ti nebude korektně pracovat. (Připojí se první hráč, splní se if a na 0. index nastaví, že je auto obsazeno. Ovšem, jakmile se zavolá příkaz znovu, cyklus pojede zase od nuly, tentokrát se if nesplní a přejde do else sekvence a vrátí SCM, což je nevyhovující, protože více jak jeden člověk se ti nepřipojí...)

     

    Ale jde to vyřešit pomocí nějaké proměnné s počtem připojených hráčů. Kdy se po každém připojení navýší hodnota o jednu, takže se bude moci využívat jako index.

    new pHracu; //globální proměnná
    //joinbridge
      if(pHracu != 20) //pokud není závod maximálně obsazen
      {
          if (!BridgeCars[pHracu][OCCUPIED]) { // nemuselo by to tu být, pokud budeš správně pracovat s proměnnou pHracu, tak by vše mělo fungovat i bez této podmínky
            BridgeCars[pHracu][OCCUPIED] = true;
            bridgeauto = CreateVehicle(402, BridgeCars[pHracu][POSX], BridgeCars[pHracu][POSY], BridgeCars[pHracu][POSZ], 1, 1, 1, 0);
            pHracu++; 
        ...
      }
      else return SendClientMessage(playerid, -1, "Zavod uz je plny");
    
    //konieczavodu
    for (new i; i < sizeof BridgeCars; i++)
    BridgeCars[i][OCCUPIED] = false;
    pHracu = 0;
    
    • Líbí se mi to! (+1) 1
  10. Když zapíná SAMP nikoliv gta_sa.exe tak to bude k ničemu, ne?

     

    SA-MP využívá GTA SA, je to pouze jakési rozšíření, aby jsi mohl hrát multiplayer. Není to samostatně vytvořená hra pouze s multiplayerem do detailu stejná jako GTA SA. Proto se taky klient instaluje do složky s hrou, jelikož potřebuje přístup ke stejným souborům respektive k celé hře. ;) 

  11. Vždy když dostaneš tuhle výjimku tak:

     

    Ctrl+ Alt + Delete

    Procesy

    V nich najdi proces: gta_sa.exe

    Klikni pravým a pak na Ukončit proces (nebo v dolním pravém rohu na Ukončit proces).

    A zkus pusti sa-mp znovu. icon_e_wink.gif

     

    Takhle výjimka prý znamená, že je GTA_SA.exe otevřeno již v jinačím tasku. icon_e_wink.gif

  12. Označ řádky, jak ti píše Hip. Takhle pořádně nevíme na jakou část kódu se soustředit.. icon_e_wink.gif

     

    Jinak tenhle error:

    warning 202: number of arguments does not match definition
    

    znamená, že voláš metodu (funkci) s větším / menším počtem parametrů než má ve skutečnosti mít. Pokud jsi si jistý, že zadáváš správný počet parametrů (podle samp wiki), pak máš nejspíš staré includy.. icon_e_wink.gif Stáhni si nové a znovu zkompiluj. icon_e_smile.gif

     

    //Edit:

    Includy stáhni zde, jsou v serverovém balíčku ve složce pawno/include .. icon_e_wink.gif Nejlepší ovšem bude když stávající pawno editor smažeš (nebo celou složku se serverem) a začneš používat nově stažený. icon_e_wink.gif

  13. Trošku jsem ti poupravil ten kód a přidal ten, co jsi žádal icon_e_wink.gif

     

     

     

    //vytvaranie auta
    CMD:createvehicle(playerid,params[])
    {
    	new Float:x,Float:y,Float:z, Float: a;
    	new menoauta[128],string[128],farba1,farba2,vehicle;
    	
    	if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
    	if(sscanf(params,"s[128]ii",menoauta,farba1,farba2))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Musíš zadať /createvehicle [ID/meno auta] [FARBA1] [FARBA2]");
    	if(Server[cars] == 50)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemôžeš vytvoriť viac ako 50 áut,musíš ich najprv zničit /destroycars");
    	if(farba1 > 126 || farba1 < 0 || farba2 > 126 || farba2 < 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Rozmezie ID farieb je od 0-126");
    	if(IsNumeric(menoauta)){	vehicle = strval(menoauta);	}
    	else{	vehicle = ReturnVehicleID(menoauta);	}
    	if(vehicle  < 400 || vehicle > 611)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Rozmezie id áut je od 400-611");
    	
    	GetPlayerFacingAngle(playerid,a);
    	GetPlayerPos(playerid,x,y,z);
     	GetXYInFrontOfPlayer(playerid,x,y,8); // ta podmínka, co jsi tady měl byla úplně zbytečná, protože vždy se tak funkce zavolala
    
    	Auta[Server[cars]] = CreateVehicle(vehicle,x,y,z,a+90,farba1,farba2,0,0);
    	LinkVehicleToInterior(Auta[Server[cars]],GetPlayerInterior(playerid));
    	Benzin[Auta[Server[cars]]] = 100;
    	Server[cars]++;
    
    	format(string,sizeof(string),"[%d/50]Úspešne si si spawnol %s,použi /destroycars pre zničenie",Server[cars],VehicleNames[vehicle - 400]);
    	SendClientMessage(playerid,COLOR_RED,string);
    	
    	return 1;
    }
    
    //nicenie vsetkych aut
    CMD:destroycars(playerid,params[])
    {
    	//ta proměnná destroying byla úplně k ničemu...
        if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
        if(Server[cars] == 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Žiadne vozidlo nieje vytvorené");
    	for(new E=0; E < Server[cars]; E++) //optimalizovanější - neprojíždí věech 50 možných, ale jen ty co skutečně existují 
        {
        	if(Auta[E])
         	{
          		DestroyVehicle(Auta[E]);
            }
    	}
    	Server[cars] = 0;
    	SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Vytvorené autá boli úspešne zničené");
     	return 1;
    }
    
    //ničení posledního vytvořeného
    CMD:destroylastcar(playerid,params[])
    {
        if(AdminLevel[playerid] < 2)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
        if(Server[cars] == 0)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Žiadne vozidlo nieje vytvorené");
        if(Auta[Server[cars]-1]) //jen pro jistotu
        {
    	DestroyVehicle(Auta[Server[cars]-1]);
    	Server[cars]--;
    	SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Posledne vytvorené auto bolo úspešne zničené");
        }
        return 1;
    } 

     

     

    • Líbí se mi to! (+1) 1
  14. new Test[17];
    
    //Třeba v OnGameModeInit()
    for(new i = 0; i < sizeof(Test); i++)
    {
        Test[i] = 0;
    } 
    

    Co vidíš nahoře je cyklus. První co děláš že vytváříš proměnnou s kterou bude cyklus for pracovat. Za středníkem potém udáváš podmínku kolikrát má cyklus běžet - sizeof ti vrátí velikost pole v závorkách. tzn, že i může dosahovat maximálně hodnot 0 - 16. jelikož i musí být menší než 17 a první hodnota v i je 0. Za dalším středníkem určuješ co se má po vykonání kódu v cyklu stát - buď navýšit hodnotu i o jednu (i++) nebo snížit (i--), můžeš samozřejmě navyšovat i o více... a v hranatých závorkách je vlastně to co ti nahraje do všech indexů pole hodnotu 0. 

     

    První průběh: i = 0, Test[0] = 0; druhý: i++ takže i = 1, Test[1] = 0, a takhle až do 16. průběhu, pak se zvýší hodnota a i bude 17, poté se zkontroluje podmínka, ale zjistí se že již nevyhovuje a tak se cyklus ukončí. Rozhodně ti doporučuji si něco o cyklech přečíst v programování se využívají o pravdu často, je to základ.. icon_e_wink.gif

     

    Jinak v pawn když vytváříš proměnnou, tak v ní defaultně 0 je. icon_e_wink.gif

     

    //Edit: špatně přečtený kód... :/

    #define ARR_SIZE 17;
    new Test[MAX_PLAYERS][ARR_SIZE];
    
    for(new i = 0; i < MAX_PLAYERS; i++) //nebo sizeof(Test)
    {
        for(new j = 0; j < ARR_SIZE; j++) //nebo odstranit definici ARR_SIZE a použít také sizeof(Test[])
        {
            Test[i][j] = 0;
        }
    }
    

    Tohle je to samé, akorát máš vícerozměrné pole, takže potřebuješ vnořit cyklus do sebe. icon_e_wink.gif

    • Líbí se mi to! (+1) 1
  15. Pokud to chceš jednoduše, tak bych opravdu udělal, to co ti radí Weed, ale ber v potaz, že range je "kruh" (respektive koule). Z toho plyne, že range musíš dát někam dál za ty rampy, aby to hráče nevyhodilo z auta, jen když bude na krajní hranici ještě někde před rampou, ALE zároveň musí být za rampou na takovém místě, kterým vždycky projede (ošetři si i letadla). Musíš si prostě najít i ideální místo. ;)

     

    Složitější způsob by byl něco na způsob gang zóny 4 pozice - minX, minY, maxX, maxY. A místo funkce ROP by sis vytvořil vlastní fci a kontroloval by jsi vlastně zda je v tom rozmezí těch pozic. Ale rozhodně není nutné kvůli tomu gangzónu vytvářet stačí ti 4 float konstanty a ty pak srovnávat s aktuální hráčovou pozicí - zda je mezi souřadnicemi (true) a zda není (false). Tohle by jsi mohl udělat rovnou za rampu (pokud by ji musel překonat) a nebo tam kde leží (pokud by jsi bral jen, to že se na ní bez zaplacení pokusil najet...). :)

     

    Zároveň by to u obou způsobů chtělo nějakou proměnnou pro rampu, zda je otevřená či zavřená (true / false), kde by se mu při zaplacení nic nestalo (protože rampa bude otevřená - true) a při nezaplacení by ho to vykoplo (zavřená - false). 

     

    Obě nejspíš budeš kontrolovat buď v nějakým timeru a nebo OnPlayerUpdate, nevím co je lepší, ale někteří nemají OnPlayerUpdate moc v oblibě. ;):d Přesnější bude určitě ta složitější možnost, kdy je vlastně jediná složitost v v tom, že nebudeš používat předvytvořenou funkci, ale uděláš si vlastní s jednoduchou podmínkou. ;)  

     

    Nákres z wiki pro lepší orientaci v souřadnicích:

                MinY
                 v
          MinX > *-------------
                 |            |
                 |  gangzone  |
                 |   center   |
                 |            |
                 -------------* < MaxX
                              ^
                              MaxY  
    
    • Líbí se mi to! (+1) 1
  16. Zřejmě ti něco shazuje server, ta hláška s tím nemá vůbec nic společného jen se vypisuje při vypnutí fs, což nastane pokud ho undloadneš nebo vypneš server...

     

    S největší pravděpodobností ti to padá kvůli nepřítomnosti sscanf pluginu, který FS využívá. Řešení je jednoduché, stáhni jsi nejaktuálnější verzi includu a pluginu (nebo alespoň stejné verze). Mód znovu zkompiluj s novou verzí, do složky plugins vlož ten plugin a do server.cfg připiš někam kolonku plugins, udělej mezeru a zapiš sscanf. ;)

    plugins sscanf
    
  17. Zkus se kouknout na Google, přijdeš na to že většina lidí řeší stejný problém co ty, nebo dokonce na ten problém někdo napíše i tutoriál. Například zde (sa-mp.com), pokud ti to nepomůže koukni se po něčem jiném, ve výsledcích je toho dost ;)

  18. @GaRGoyLeS

     

     

    Moc si vážím toho že jsi si s tím dal práci. Jenže já mám v kódu tisíce a stovky pickupů a fukncí s nimi spjaté že se mi to popravdě vůbec celý předělávat nechce icon_e_biggrin.gif

     

    No tak to udělej jak xhunterx radí. Sice tam zadáváš každý pickup 2x, ale když ti to na předělávání přijde méně pracnější... icon_e_biggrin.gif

     

    Btw. to chceš předělat všechny pickupy? icon_e_biggrin.gif Já myslel, že pouze některé zmizí a objeví se po 30 minutách.. každopádně kopírovat to a v kládat ručně do polí mi přijde mnohem pracnější než jen k těm pickupům kde chceš mít time delay připsat za Create Re a odstranit typ, který je pro všechny stejný icon_e_wink.gif Ale je to na tobě, jak ti to říkám od začátku. icon_e_wink.gif

     

    Edit.: Jinak v pawnu existuje funkce Najít a nahradit ;) 

  19. Díky, ale přijde mi to zbytečně složitý, myslím že můj problém je pouze v resetování pickupu a nebo používám špatně timer...

     

     

     

     

    No vidíš jak to letí, po roce jsem se vrátil k pickupům, do teď jsem je zatim moc neřešil

     

     

    EDIT - DŮLEŽITÉ

     

    Když hráč sebere pickup[1], použiju DestroyPickup[1] , nastavím pickup[1] = -1, zapnu timer na 10000ms(10 vteřin) ...

    v timeru mám if(pickup[1] = -1) CreatePickup(...)

     

    To znamená, že pokud hráč sebere pickup, pickup zmizí a znovu se vytvoří za tu dobu kdy doběhne timer (10 vteřin). Což je super.

    Problém je však to, že když hráč sebere pickup a spustím timer, a jiný hráč sebere jiný pickup a spustí tento timer, timer začne zase znovu a oba pickupy se vytvoří za 10 vteřin.

     

    Já potřebuji aby hráč sebral pickup a ten se znovu vytvořil prostě za těch 10 vteřin nehledě na to jestli někdo jiný sebere jinej pickup jinde.

     

    Pokud timer udělám do ongamemodeinit a budu ho repeatovat pickupy se budou respawnovat všechny najednou po 10 vteřinách a to nechci.

     

    Znamená to tedy že bych musel pro každý pickup udělat zvláštní timer, nebo existuje něco "víc safe" ? icon_e_biggrin.gif

     

    Díky xHunterx

    Nevšiml jsem si že jsi to tam napsal. Vtipný je že jsem udělal přesně to samý mezitim co jsem tu nebyl  až na to že v tom timeru nemám switch, je to

    tak, že když použiju switch timer se spustí pouze pro tento konkrétní case když player seberepickup?icon_e_biggrin.gif 

     

     

    Není na tom vůbec nic složitého tobě stačí použít funkci 

    stock CreateRePickup(model, Float:X, Float:Y, Float:Z, virtualworld = -1, delay = 30) // nemusíš zadávat ani virtualworld ani delay (tj. za jak dlouho se respawne)
    

    Nic víc znát nemusíš, pokud chceš změnit delay, tak ho jednoduše zadás, za VW:

    CreateRePickup(1274,1492.1907,-1767.8684,18.7958, -1, 15); // 15 minut delay
    
    

    Ovšem jak tam popisuju, má to nevýhodu, nebudeš to mít přesně na vteřinu ale se zpožděním 0 - 59 sekund (timer je dělaný na 1 minutu), dělal jsem to s tím, že ti to nevadí páč to máš na minuty a nějakých pár sekund na víc ti je určitě jedno, ovšem pokud to chceš na sekundy tak to chce předělat, což není problém. icon_e_wink.gif

     

    Jinak tohle používá jediný timer pro všechny... je zbytečný mít na každý pickup timer, buď toto a nebo se ti to bude resetovat zpět na 10 sekund jak píšeš... , nebo můžeš použít xhunterův kód, který ti to dělat nebude .. ;) 

     

    Takže pokud to potřebuješ na sekundy není problém, to předělat... icon_e_wink.gif Jak říkám výše kromě fce CreateRePickup nic jiného znát nepotřebuješ, takže na tom není vlastně nic složitého icon_e_wink.gificon_e_biggrin.gif

×
×
  • Create New...