1. Šis tinklalapis naudoja slapukus. Tęsdami būvimą šiame tinklalapyje, jūs patvirtinate, jog sutinkate priimti slapukus. Sužinoti daugiau.

[Pamoka] Random Spawn

Diskusija 'Serverio kūrimo pamokos' skyriuje nuo Montis, Kovas 15, 2011.

  1. Montis

    Montis Aktyvus narys

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    455
    Taškai už trofėjus:
    133
    Vietovė:
    Kaunas
    Įvertinimai:
    +3 / 0 / -0
    [Pamoka] Random Spawn

    Sveiki šendien parodysiu kaip, reikia sukurti random spawn kad neatsirastų žmonės visi į viena vieta.

    Taigi kursime 3 random spawn bet, jei jūs norite galite ir daugiau daryti.

    Kur nors skripto viršuje dedame:

    Kodas (text):
    new Float:RandomSpawn[][4] = // Skaičius 4 įrašytas todėl kad yra trys random todėl reikia vienu daugiau visada rašyti
    {
        {-2796.9854, 1224.8180, 20.5429}, // pasikeiskite į savo x, y ,z kordinates
        {-2454.2170, 503.8759, 30.0790}, // pasikeiskite į savo x, y ,z kordinates
        {-2669.7322, -6.0874, 6.1328} // ant galo visada kablelis turi būti nuimtas
    };
    Ir beliko aktivuoti random spawn.
    Po:
    Kodas (text):
     public OnPlayerSpawn(playerid)
    Dedame:

    Kodas (text):
    new rand = random(sizeof(RandomSpawn));
    SetPlayerPos(playerid, RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2]);//o čia reikia rašyti nuo 0 iki 2 kadangi yra 3 random spawn reikia čia vienu mažiau rašyti
    Pataisykit jei klaidų įvėliau. Sekmės kūrime.
     
    • Mėgstu Mėgstu x 1
  2. Anonymous

    Anonymous Svečias

    Įvertinimai:
    +0 / 0 / -0
    Ats: [Pamoka] Random Spawn

    Easy and usefull. ;>
    Tačiau dar būtų galima darašyti ir ketvirtąją (angle) koordinatę.
    Tai spawnintis būtų atsisukta į norimą pusę, nes tavo atveju nusisuks į šiaurę. ;>
     
  3. Montis

    Montis Aktyvus narys

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    455
    Taškai už trofėjus:
    133
    Vietovė:
    Kaunas
    Įvertinimai:
    +3 / 0 / -0
    Ats: [Pamoka] Random Spawn

    Na čia nelabai manau būtina svarbu nuteleportuoja.
     
  4. TOMĖJUS

    TOMĖJUS Aktyvus narys
    Personalo narys

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    565
    Taškai už trofėjus:
    153
    Lytis:
    Vyras
    Įvertinimai:
    +15 / 0 / -0
    Ats: [Pamoka] Random Spawn

    Patikėk kiekvienas menkenkis kažkiek tai prideda gerumo serverui, nes tai parodo, kad serverio savininkas kruopštus...
     
  5. Elas

    Elas Gerai žinomas narys

    Užsiregistravęs:
    Kovas 17, 2011
    Pranešimai:
    914
    Taškai už trofėjus:
    413
    Lytis:
    Vyras
    Įvertinimai:
    +11 / 0 / -0
    Skype:
    Ats: [Pamoka] Random Spawn

    Šiaip tai geras scriptas, jei servas startuoja prisijungia kokį 10-20 žmonių ir užstringa visi vienas ant kito :D
     
  6. Montis

    Montis Aktyvus narys

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    455
    Taškai už trofėjus:
    133
    Vietovė:
    Kaunas
    Įvertinimai:
    +3 / 0 / -0
    Ats: [Pamoka] Random Spawn

    Nu jo praverčia ne tik kad tik į serva ateina galima ir kitiems dalykams pritaikyti.
     
  7. Anonymous

    Anonymous Svečias

    Įvertinimai:
    +0 / 0 / -0
    Ats: [Pamoka] Random Spawn

    Praverčia.....
     
  8. Pauliusmk

    Pauliusmk Naujas narys

    Užsiregistravęs:
    Lapkritis 3, 2012
    Pranešimai:
    1
    Taškai už trofėjus:
    1
    Lytis:
    Vyras
    Įvertinimai:
    +0 / 0 / -0
    Veikia ;)
     
  9. TOMĖJUS

    TOMĖJUS Aktyvus narys
    Personalo narys

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    565
    Taškai už trofėjus:
    153
    Lytis:
    Vyras
    Įvertinimai:
    +15 / 0 / -0
    Kodėl reikia vienu daugiau nustatyti? Man atrodo, kad viskas eina taip - 0,1,2,3<..>... Todėl, kuriant kintamajį kaip tik reikia nustatyti tiek kiek naudosi, bet "skaičiukas" bus vienas mažesnis, šiuo atveju tiktų ir - 3. (Bent aš taip manau, ir esu įsitikinęs).

    Kitas dalykas, mažiau naudokite sizeof( kint )... Geriau įrašyti tikrajį string dydį. Tai tiek... ot tai, geros pamokos tryjų eilučių scriptai, damn...
     
  10. ES.^

    ES.^ Gerai žinomas narys

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    3,553
    Taškai už trofėjus:
    983
    Lytis:
    Vyras
    Vietovė:
    Klaipėda
    Pradžios puslapis:
    Įvertinimai:
    +304 / 0 / -0
    Pritariu. Pamoka gera [​IMG]
     
  11. Cpt. Scott

    Cpt. Scott Gerai žinomas narys

    Užsiregistravęs:
    Kovas 16, 2011
    Pranešimai:
    1,155
    Taškai už trofėjus:
    653
    Lytis:
    Vyras
    Vietovė:
    Vandenyno platybės
    Įvertinimai:
    +417 / 1 / -0
    Skype:
    kalbant apie sizeof, skaičiau kad tai nėra kažkokia tai funkcija, vykdoma serverio eigoje. Kadangi visi masyvų dydžiai pawne yra žinomi ( nes pawno nepalaiko dinaminės atminties ) tai sizeof išgauna masyvo dydį compilinimo metu ir amx faile yra naudojama konstanta, o ne funkcija Xddddd
     
  12. TOMĖJUS

    TOMĖJUS Aktyvus narys
    Personalo narys

    Užsiregistravęs:
    Kovas 14, 2011
    Pranešimai:
    565
    Taškai už trofėjus:
    153
    Lytis:
    Vyras
    Įvertinimai:
    +15 / 0 / -0
    Įdomu. Gal turi source kur skaitei apie šitą?
     
  13. Cpt. Scott

    Cpt. Scott Gerai žinomas narys

    Užsiregistravęs:
    Kovas 16, 2011
    Pranešimai:
    1,155
    Taškai už trofėjus:
    653
    Lytis:
    Vyras
    Vietovė:
    Vandenyno platybės
    Įvertinimai:
    +417 / 1 / -0
    Skype:
    deja source neradau, bet pabandžiau praktiškai. Atsisiųsk šitą: http://www.gta-online.lt/v3/index.php?threads/tool-de-amx-naujas.16080/#post-85963
    Tuomet susikurk naują pwn failą su pvz tokiu kodu:
    Kodas (text):
    main ( )
    {
        new
            array [ ] = { 1, 2, 7, 9, 5, 1, 6, 3, 7 };
       
        new
            i = sizeof array;
       
        i += array [ 1 ];
        array [ 1 ] = 1 + 8 * 5 - 3;
    }
    Išsideamxinęs gauni:
    Kodas (text):
    #include <a_samp>
    #include <core>
    #include <float>
     
     
    main()
    {
        new var0[2] = { 1, 2 };
        new var1 = 9;
        var1 = var1 + var0[1];
        var0[1] = 38;
        return 0;
    }
     
    Gaila tik kad array sutrumpino, bet tai esmės nepakeitė :D. Šitas kodas parodo kad compiliuojant, masyvai su nenurodytais dydžiais yra suskaičiuojami, kaip matai sizeof dingsta, vietoj jo parašo 9 ( array masyvo dydis ), bei compileris prie to paties atlieka matematinius veiksmus su konstantom ( o tai praverčia kokiuose timeriuose nenorint skaičiuot patiem jo trukmės )
     
  14. reagat

    reagat Svečias

    Įvertinimai:
    +0 / 0 / -0
    Ačiū, už pamoką ;)
     
  15. MariukasR

    MariukasR Narys

    Užsiregistravęs:
    Spalis 29, 2012
    Pranešimai:
    104
    Taškai už trofėjus:
    28
    Lytis:
    Vyras
    Įvertinimai:
    +15 / 0 / -0
    //o čia reikia rašyti nuo 0 iki 2 kadangi yra 3 random spawn reikia čia vienu mažiau rašyti
    Hmm galėjai paaiškinti kitaip, šiaip skaičiuojamas masyvo id nuo nulio, jei ten masyvas bent :DD
    nežinau remiuosi php kalba :DD
     
  16. _G3N3R1C_

    _G3N3R1C_ Aktyvus narys

    Užsiregistravęs:
    Kovas 20, 2011
    Pranešimai:
    38
    Taškai už trofėjus:
    101
    Įvertinimai:
    +0 / 0 / -0
    As bandziau padaryti kad kai atsispavini ismestu GUI lentele kad pasirinktum miestus San Fiero, Las Venture, Los Santos
    Va scriptas

    Cia virsuje dejau

    Kodas (text):
    new Float:SpawnSF[][4] = // Skaicius 4 irašytas todel kad yra trys random todel reikia vienu daugiau visada rašyti
    {
    {-1926.7870,562.2086,48.4339},
    {-1955.7814,561.7412,39.2546},
    {-1953.5416,565.4101,35.2255}// pasikeiskite i savo x, y ,z kordinates
    };
     
    new Float:SpawnLV[][4] = // Skaicius 4 irašytas todel kad yra trys random todel reikia vienu daugiau visada rašyti
    {
    {2191.9600,1993.4153,12.0733},
    {2191.7844,1987.5007,11.9674},
    {2188.6775,1969.1135,10.8203}// pasikeiskite i savo x, y ,z kordinates
    };
     
    new Float:SpawnLS[][4] = // Skaicius 4 irašytas todel kad yra trys random todel reikia vienu daugiau visada rašyti
    {
    {2505.9712,-1682.6460,13.5469},
    {2508.9231,-1659.1257,13.5938},
    {2473.3186,-1683.7378,13.4594}// pasikeiskite i savo x, y ,z kordinates
    };
    Po
    Kodas (pawn):
    public OnPlayerSpawn(playerid)
    {
    Kodas (pawn):
    ShowPlayerDialog(playerid,1011,DIALOG_STYLE_LIST,"Spawn vieta","{FFFFFF}San Fiero\n{00CC99}Las Venture\n{FFFFFF}Los Santos","Pasirinkti","Atðaukti");
    Kodas (pawn):
    // SPAWNAS =====================================================================
    new rand = random(sizeof(SpawnSF));
    SetPlayerPos(playerid, SpawnSF[rand][0], SpawnSF[rand][1],SpawnSF[rand][2]);//o
    new rands = random(sizeof(SpawnLV));
    SetPlayerPos(playerid, SpawnLV[rands][0], SpawnLV[rands][1],SpawnLV[rands][2]);//o
    new randss = random(sizeof(SpawnLS));
    SetPlayerPos(playerid, SpawnLS[randss][0], SpawnLS[randss][1],SpawnLS[randss][2]);//o
    ir po

    Kodas (pawn):
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {

    Kodas (pawn):
    if(dialogid == 1011)
    {
    if(response)
    {
    if(listitem == 0)
    {
    new rand = random(sizeof(SpawnSF));
    SetPlayerPos(playerid, SpawnSF[rand][0], SpawnSF[rand][1],SpawnSF[rand][2]);//o
    }
    if(listitem == 1)
    {
    new rands = random(sizeof(SpawnLV));
    SetPlayerPos(playerid, SpawnLV[rands][0], SpawnLV[rands][1],SpawnLV[rands][2]);//o
    }
    if(listitem == 2)
    {
    new randss = random(sizeof(SpawnLS));
    SetPlayerPos(playerid, SpawnLS[randss][0], SpawnLS[randss][1],SpawnLS[randss][2]);//o
    }
    }
    return 1;
    }
    Ir man blogai kaskaip tai kai mirstu vel meta ta lentute kur nori pasirinkti
     
  17. DreDas

    DreDas Gerai žinomas narys

    Užsiregistravęs:
    Kovas 20, 2011
    Pranešimai:
    815
    Taškai už trofėjus:
    323
    Vietovė:
    Mažeikiai
    Įvertinimai:
    +100 / 0 / -0
    Skype:
    Dėl to, nes kai miršti suveikia OnPlayerDeath callbackas, o po jo suveikia OnPlayerSpawn
     
  18. _G3N3R1C_

    _G3N3R1C_ Aktyvus narys

    Užsiregistravęs:
    Kovas 20, 2011
    Pranešimai:
    38
    Taškai už trofėjus:
    101
    Įvertinimai:
    +0 / 0 / -0
    o kaip padaryt kad nebemestu ?
     
  19. DreDas

    DreDas Gerai žinomas narys

    Užsiregistravęs:
    Kovas 20, 2011
    Pranešimai:
    815
    Taškai už trofėjus:
    323
    Vietovė:
    Mažeikiai
    Įvertinimai:
    +100 / 0 / -0
    Skype:
    Tai gal duok pasirinkimą , kai žmogus prisijungia? Pasirinktą miestą išsaugok į kintamajį, o kai atsispawnina, tikrink kokia kintamojo reikšmė, jeigu 1 - Daryk Los Santose, jei 2 - San Fierro ir t.t
     
  20. _G3N3R1C_

    _G3N3R1C_ Aktyvus narys

    Užsiregistravęs:
    Kovas 20, 2011
    Pranešimai:
    38
    Taškai už trofėjus:
    101
    Įvertinimai:
    +0 / 0 / -0
    gali scripta imest ?
     

Dalintis šiuo puslapiu

Kraunama...