Jump to content

_NosiK_

Uživatel
  • Příspěvků

    434
  • Registrován

  • Aktivní

Příspěvky posted by _NosiK_

  1. Nechápu význam, proč jí sem napíšeš celý kód.. Já jsem jí řekl, kde má chybu v přičítání napomenutí, pak tu napíše stejný kód akorát změněným sscanf a ty jí tu postneš celý kod.. Tím se opravdu nic nenaučí..

  2. To jsem teda vůbec nechopil :d :d

     

    Takto nějak? Jinak nevím :d

    enum E_OPRAVA
    {
    Parametr1,
    Paramert2,
    Parametr3,
    Paramert4,
    Parametr5,
    Paramert6
    }
    
    new Float:oprava[][E_OPAVA] = 
    {
    {0.0, 0.0, 0.0, -0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0, -0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0, -0.0, 0.0, 0.0},
    {0.0, 0.0, 0.0, -0.0, 0.0, 0.0}
    };
  3. // vytvoření rampy
    GetPlayerFacingAngle(playerid, a); // Zjistí, kam se hráč dívá - následné nastavení rotace objektu
    GetPlayerPos(playerid, x, y, z); // Zjistí aktuální pozici hráče
    GetXYInFrontOfPlayer(playerid, x, y, 3.0); // Zjistí pozici před hráčem - nevím, jak to funguje, využívá to goniometrické funkce; není to mé
    CreateObject(13641, x, y, z, rx, ry, a); // Vytvoří objekt na pozici před hráčem - x a y byly upraveny funkcí GetXYInFrontOfPlayer
    // samotná fce GetXYInFrontOfPlayer
    GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance) //by Y_Less
    {
        new Float:a;
        GetPlayerPos(playerid, x, y, a); // zjištění pozice x, y a z jako a
        GetPlayerFacingAngle(playerid, a); // zjištění pohledu hráče
        if (GetPlayerVehicleID(playerid)) // pokud je ve vozidle
        {
         GetVehicleZAngle(GetPlayerVehicleID(playerid), a); // zjištění pohledu vozidla
        }
        x += (distance * floatsin(-a, degrees)); // výpočet souřadnice x pomocí sinusu
        y += (distance * floatcos(-a, degrees)); // výpočet souřadnice y pomocí cosinusu
    }

    Snad to stačí :d



  4. // vytvoření rampy
    GetPlayerFacingAngle(playerid, a);
    GetPlayerPos(playerid, x, y, z);
    GetXYInFrontOfPlayer(playerid, x, y, 3.0);
    CreateObject(13641, x, y, z, rx, ry, a); //pokud se nemýlím, je to RZ pro nastavení směru (něco jako na vozidle)



    // fce GetXYInFrontOfPlayer
    GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance) //by Y_Less
    {
        new Float:a;
        GetPlayerPos(playerid, x, y, a);
        GetPlayerFacingAngle(playerid, a);
        if (GetPlayerVehicleID(playerid))
        {
         GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
        }
        x += (distance * floatsin(-a, degrees));
        y += (distance * floatcos(-a, degrees));
    }



     

    Doufám, že to bude fungovat  :)

     

  5. Jeden způsob je přes proměnnou s polem, vhodná bude asi typu boolean .. 

    new bool:DM[MAX_PLAYERS];

    v příkazu musíš nastavit hráči proměnnou na true (ano):

    (...) // tělo příkazu
    DM[playerid] = true;
    (...) // tělo příkazu

    při odstupu z DM musíš naopak nastavit hodnotu na false!

     

    A pak následuje jen podmínka v příkazu:

    if(DM[playerid]) return SendClientMessage(playerid, -1, "* Již jsi v DM!"); // podmínka
    

    Podmínka:

    Pokud je proměnná DM (pole ID hráče) nastavená na true (nemusí být == true), příkaz se ukončí a vypíše se „* Již jsi v DM!

  6. Musíš mít pro to pole s defaultní hodnotou (-nekonečno; 399> nebo <612; +nekonečno)

    při příkazu uděláš cyklus do max. hodnoty pole; podmínku, jestli je hodnota proměnné na té defaultní (např. 0), pokud ano, vykonáš příkaz a dáš break;

     

    Při smazání vozidel dáš opět cyklus s tou max. hodnotou pole a pokud ta proměnná nemá defaultní hodnotu (např. ta 0), smažeš vozidlo a nastavíš ji tu defaultní hodnotu.

     

     

    Tak, jak to máš, tak ti to fungovat nebude ;)

  7. Použij CreateDynamic3DTextLabel

    CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
    
    

    globální proměnná Text3D:tWL[MAX_PLAYERS];

     

    tWL[playerid] = CreateDynamic3DTextLabel("WantedLevel", -1, 0, 0, 0.25, 15.0, playerid);

     

    Pokud bys to chtěl smazat, použiješ DestroyDynamic3DTextLabel(tWL[playerid]);

  8. Zdravím,

    potřeboval bych udělat proměnnou, která bude sloužit pro objectid od 103 do 153 (nikoli od 0 do 153).

    Nikdy jsem to takhle nepotřeboval, takže nevím, jak na to. 

     

    Zde je jádro příkazu:



    if(StavCmd >= 50 ) return SendClientMessage(...);
    ObjCmd[StavCmd] = CreateDynamicObject(id, X, Y, 2039.14160,   0.00000, 0.00000, 0.00000, 0, 1);
    SetTimerEx("ObjectStatus", 1000, false, "d", ObjCmd[StavCmd]); //1000 - just for now
    StatusCmd[ObjCmd[StavCmd]] = 0;
    StavCmd ++;


     

    Zde je public od SetTimerEx:



    public ObjectStatus(objectid)
    {
    if(StatusCmd[objectid] < 120)
    {
       StatusCmd[objectid] ++;
       SetTimerEx("ObjectStatus", 1000, false, "i", objectid);
       new Float:x, Float:y, Float:z;
       GetDynamicObjectPos(objectid, Float:x, Float:y, Float:z);
       SetDynamicObjectPos(objectid, x, y, z+0.01);
    }
    return 1;
    }


     

     

    Pokud je StavCmd na 0, objectid je 103. Pokud 1, objectid 104 ...

     

    A já chci vytvořit proměnnou, která bude pouze pro objekty ID 103 až 153 (153 - horní hranice objektů (50 vytvořených))

     

    Za veškerou pomoc bych vám byl vděčný :)

  9. Smaž ! u IsPlayerConnected a potom tam zkus dát přes else

     

    Jinak k tomu předešlému.. Měl jsi tam v tom formátu 2× playerid, proto ti to psalo, že (př.) Hráč _NosiK_ byl zabanován adminem _NosiK_..

     

    Také bych používal funkci PlayerTextDrawXxx, nemusíš tam mít proměnnou na TD

  10. Zdravím,

    mám takový problém. Po dlouhé době jsem si otevřel pawno, že si vyzkouším nějaké scripty apod. Udělal jsem si mapu. Mapa obsahuje závoru. A v tom je problém.

    Když chci závoru otevřít/zavřít vůbec se nepohybuje a vždy skočí na danou rotaci, na kterou se má pohybovat.

     

    Kód /open - close je to samé, akorát R-Y je 90

    dcmd_open(playerid, params[])
    {
    #pragma unused params
    if(IsPlayerInRangeOfPoint(playerid, 5, -308.03220, 889.40277, 9.64520))
    {
    MoveObject(zavora[0], -308.03220, 889.40277, 9.64520, 1, 0.00000, 0.00000, 270.00000);
    }
    return 1;
    }

    Errory to nemá žádný.

    Nevidím v tom chybu.

     

    Předem děkuji za odpovědi a pomoc. :)

  11. xD jmenu to tam neni

    jestli sis nevšiml tak jsem se opravil a misto toho, abys tady rypal do toho co jsem napsal řekl aspoň dik nebo něco, třeba zkusim to, ty tady napišeš jmenu tam neni... jsem se na tebe taky mohl vysrat,,

  12. C:\Users\Roman\Desktop\mod\mod\real.pwn(1215) : error 002: only a single statement (or expression) can follow each "case"

    C:\Users\Roman\Desktop\mod\mod\real.pwn(1215 -- 1216) : error 028: invalid subscript (not an array or too many subscripts): "Current"

    C:\Users\Roman\Desktop\mod\mod\real.pwn(1215 -- 1217) : error 001: expected token: "}", but found "switch"

    C:\Users\Roman\Desktop\mod\mod\real.pwn(1215 -- 1217) : fatal error 107: too many error messages on one line

     

     

    a radky

     

     

    if (Current == TrafikMenu)

    {

    switch(row)

    {

    case 0:

    {

     

    Proč si to neuděláš na dialog?

    1. je to jednodušší

    2. je to lepší pro hráče

    3. mužeš kombinovat HEX barvy..

     

    jestli to chceš máš to tady:

     

    Do toho kde se ti zobrazuje menu dáš asi to máš v OnPlayerPickupPickUp:

    ShowPlayerDialog(playerid, ID, DIALOG_STYLE_LIST, "Trafika","Cigareta [ 5$ ]\nRohlík [ 1$ ]\nPivo [ 15$ ]","Potvrdit","Nic");

    Potom do OnDialogResponse dáš:

    if(dialogid == ID )
    {
    if(response == 1 )
    {
    if(listitem == 0 )
    {
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY);
    SendClientMessage(playerid, 0x00FF00, "[ Trafika ]{FFFFFF} Koupil jsi si cigaretu, stála 5$");
    GivePlayerMoney(playerid, -5);
    }
    if(listitem == 1 )
    {
    SendClientMessage(playerid, 0x00FF00, "[ Trafika ]{FFFFFF} Koupil jsi si rohlíj, stál 1$");
    GivePlayerMoney(playerid, -1);
    }
    if(listitem == 2 )
    {
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
    SendClientMessage(playerid, 0x00FF00, "[ Trafika ]{FFFFFF} Koupil jsi si pivo, stálo 15$");
    GivePlayerMoney(playerid, -15);
    }
    }
    }

     

×
×
  • Create New...