Jump to content

DuFF

Přispěvatel
  • Příspěvků

    207
  • Registrován

  • Aktivní

  • Vítězných dnů

    43

Příspěvky posted by DuFF

  1. Môžeš sa pozrieť na funkciu GetWeaponName.
    Ak ti nevyhovujú tieto (anglické) názvy zbraní alebo spôsob použitia tejto funkcie, môžeš si vyrobiť vlastnú alternatívu.

    Namiesto miliona else ifov, ktoré navrhuje bigMike, by som radšej skúsil statické pole.
    Napríklad nejak takto:

    Spoiler
    
    stock WeaponName(weaponid)
    {
        new weaponName[50];
        static const weaponNames[][sizeof(weaponName)] = 
        {
            "Pěst",
            "Nůž",
            "Boxer",
            // ... sem si dopíšeš všetky názvy zbraní (v správnom poradí)
            "Padák"
        };
    
        if (weaponid < 0 || weaponid >= sizeof(weaponNames))
        {
            format(weaponName, sizeof(weaponName), "Neplatná zbraň");
            return weaponName;
        }
    
        format(weaponName, sizeof(weaponName), weaponNames[weaponid]);
        return weaponName;
    }

     

     

     

    • Líbí se mi to! (+1) 1
  2. před 7 hodinami, ATomas said:

    Nostalgicky server a nema ve vyberu valku gangov a realny zivot 3.2 ? Kamo vis vubec co to je historie samp ? :D A davat RZE do seznamu nostalgie beru jako osobni urazku :D Je to jediny mod ktery se dokazal dorovnat (a prekonat?, aspon podle lidi) Maikero townu a dodnes to nikdo jiny nedokazal :D

    Možno treba brať ohľad na to, že nie všetci tu začínali hrávať v rovnakej dobe, a teda u každého môže vyvolať nostalgiu niečo iné. Napríklad ja (a určite nie som jediný) som začínal až na tvojej RZE okolo 2011 a mám na to pekné spomienky. Určite by to u mňa vyvolalo viac nostalgie ako Maikeroo Town alebo nejaké iné módy zo zoznamu, ktoré som hral možno 2-krát v živote. Na druhej strane chápem, že hráči, ktorí začínali oveľa skôr ako ja, môžu mať úplne iné preferencie. 

  3. Keď všetko ostatné zlyhá a budeš zúfalý, môžeš ešte skúsiť Zeexov compiler, ktorý má opravených pár známych bugov pawn compileru.

    Compiler sa ešte zvykol chovať podobne v prípade, že niekde chýbala zátvorka uzatvárajúca blok. Tanga na to vyrobil užitočný nástroj "Missing Brackets Detector", ktorý by tu mal byť niekde v sekcii Na stažení (ak prežil rollback).

  4. Aj keď sme už problém vyriešili, ešte si dovolím drobnú optimalizáciu.


    Skús sa zamyslieť, či potrebuješ ten vnútorný cyklus na počítanie temp_sum.
    Podľa mňa by ti stačilo spočítať ho iba raz (na začiatku) a v každej iterácii cyklu ho iba mierne upraviť (bez potreby vnútorného cyklu).  


    Skús to vymyslieť najskôr sám, až potom si rozklikni spoiler.

    Spoiler
    
    int special_numbers(const int input_array[], const int array_size, int result_array[])
    {
        int totally = 0;
        int temp_sum = 0;
        for (int x = 0; x < array_size; ++x)
            temp_sum += input_array[x];
    
        for (int i = 0; i < array_size; ++i) {
            temp_sum -= input_array[i];
            if (temp_sum < input_array[i]) {
                result_array[totally] = input_array[i];
                totally ++;
            }
        }
    
        return totally;
    }

     

     

    • Líbí se mi to! (+1) 1
  5. před 9 minutami, ThomaSM said:

    ale stále som sa dostal len na stabilný výstup: 20 17 5

    Neviem, kde môžeš mať chybu. Ja s týmto programom:

    Spoiler
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int special_numbers(const int input_array[], const int array_size, int result_array[])
    {
        int totally = 0;
        for (int i = 0; i < array_size; ++i) {
            int temp_sum = 0;
            for (int x = i+1; x < array_size; ++x)
                temp_sum += input_array[x];
    
            if (temp_sum < input_array[i]){
                result_array[totally] = input_array[i];
                totally ++;
            }
        }
        return totally;
    }
    
    int main()
    {
        int input_array[] = { 16, 17, 4, 3, 5, 2 };
        int result_array[6];
        int count = special_numbers(input_array, 6, result_array);
    
        printf("count = %d\n", count);
        printf("special numbers:\n");
    
        for(int i = 0; i < count; ++i) {
            printf("%d\n", result_array[i]);
        }
    
        return 0;
    }

     

    Dostávam pravdepodobne správny výstup:

    count = 3
    special numbers:
    17
    5
    2

    V maine, ktorý si sem postol, máš nejaké "test_array", ktoré ani nevidím nikde zadeklarované.
    Možno si over, či si namiesto toho použil result_array.

    • Líbí se mi to! (+1) 1
  6. Myslím si, že chyba je na tomto riadku:

    result_array[i] = input_array[i];

    Špeciálne číslo na i-tom indexe vstupu nemusí byť nutne uložené na i-tom indexe výstupu.
    Vstupné pole môže obsahovať najskôr nejaké čísla, ktoré nie sú špecialne a povedzme, že prvé špeciálne číslo bude vo vstupnom poli na indexe 3.
    Toto prvé špeciálne číslo pochopiteľne nechceš uložiť vo výstupnom poli na index 3, ale na index 0.

    Chceš, aby bolo i-té nájdené špeciálne číslo uložené na i-tom indexe výstupu. 
    Správne by malo teda byť:

     result_array[totally] = input_array[i];

     

    • Líbí se mi to! (+1) 1
  7. Trochu si ten login prekombinoval, skús to nejak takto:

    Spoiler
    
    if (dialogid == DIALOG_LOGIN)
    {
        // Ak hráč zavrel prihlasovací dialog / klikol na Cancel, zobraz dialog znova a ukonči funkciu (returnom)
        if (response == 0) 
            return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Account is already registered!\nPlease enter a password.", "Submit", "Cancel");
    
        // Hráč klikol na tlačítko na tlačítko Submit, skús ho prihlásiť (funkcia Login mu zobrazí prihlasovací dialog znova, ak zadá nesprávne heslo)
        Login(playerid, inputtext);
        return 1;
    }

     

    Ak sa rozhodneš pridávať hashovanie, urobíš to vo funkciách Register a Login.

    Pre začiatočníka to nie je najľahšie na pochopenie, ale skúsim:
    Trik je v tom, že neukladáš priamo heslo, ale iba jeho hash - reťazec, ktorý vznikol aplikovaním hashovacej funkcie na heslo a náhodný reťazec (salt).
    Pri prihlasovaní potom rovnakou hashovacou funkciou a rovnakým saltom zahashuješ heslo, ktoré hráč zadal do prihlasovacieho dialogu. Ak sa tento nový hash zhoduje s hashom, ktorý si uložil do súboru pri registrácii, je veľmi vysoká šanca, že hráč zadal správne heslo (niektoré hashovacie funkcie majú kolízie a tak sa môže stať, že 2 rôzne heslá majú rovnaký hash).

    Teda čo musíš urobiť:
    Vo funkcii Register vygeneruješ náhodný salt, zahashuješ  hráčovo heslo pomocou vygenerovaného saltu a salt a hash si uložíš do súboru (budeš ich potrebovať pri overení správnosti hesla pri prihlasovaní).
    Vo funkcii Login potom prečítaš zo súboru salt, zahashuješ hráčovo heslo pomocou prečítaného saltu, prečítaš zo súboru hash, ktorý si tam uložil pri registrácii a porovnáš (napríklad pomocou funkcie strcmp), či sa nový hash rovná tomu prečítanému zo súboru. Ak áno, hráč zadal správne heslo. Ak nie, zobrazíš mu znova prihlasovací dialog. 

    • Děkuji (+1) 1
    • Líbí se mi to! (+1) 1
  8. před 17 hodinami, ThaDonMachiaveceli said:

    keď by som dal do toho dialogu PASSWORD, namiesto INPUT, nepokazil by som to že?

    Nič by sa nepokazilo, hráč by iba videl namiesto zadávaných znakov v dialogu bodky. 

    Môj osobný názor ale je, že je fajn schovávať heslo pri logine, ale pri registrácii by som ho hráčovi radšej zobrazil, aby mal istotu, že sa zaregistruje pod správnym heslom (caps lock, num lock, preklepy, ... vedia spôsobiť problémy).

    • Děkuji (+1) 1
  9. Problém je v tejto časti:

    On 12. 9. 2020 at 2:38, ThaDonMachiaveceli said:

    if(response==0)
            {
                if(strlen(inputtext))

    Pravdepodobne si chcel napísať if (response == 1).

    Každopádne táto podmienka je zbytočná a môžeš ju z kódu odstrániť, pretože o 5 riadkov vyššie kontroluješ, či je response 0 a ak je, tak ukončíš funkciu returnom. Ak sa teda vykoná kód z tejto časti, máš istotu, že response nie je 0 (aj bez ďalšieho overovania podmienkou).

    Momentálne sa ti deje to, že kód v tele tvojej podmienky sa nemôže nikdy vykonať. Je to z toho dôvodu, že ak je response 0, funkciu ukončíš o pár riadkov vyššie returnom. Naopak, ak response nie je 0, funkcia sa síce neukončí, ale podmienka response == 0 nie je splnená, a tak sa nevykoná jej telo.

    Druhý problém je s podmienkou if(strlen(inputtext)).
    Ak by si to nechal takto, ako to je teraz, na každé neprázdne heslo by ti vypísalo správu, že ty heslo je krátke.
    Pravdepodobne si chcel napísať napríklad if(strlen(inputtext) < 6).

    Tip:
    Aj keď to nie je všeobecne dobrá prax, v pawne je užitočné používať debugovacie správy. Napríklad aby si zistil, ktorá vetva podmienky sa vykonala, prípadne kde sa ukončilo vykonávanie funkcie. Jednoducho na nejaké miesto v kóde pridaj printf("<nejaký unikátny text>"); a keď tento text potom nájdeš v server logu, budeš vedieť, že sa ten blok kódu, do ktorého si vložil print, vykonal. Keby si takýto print vložil na začiatok svojej funkcie Register, zistil by si, že sa táto funkcia nikdy nevolá.

    • Děkuji (+1) 1
  10. Ospravedlňujem sa za otváranie starého topicu, ale všimol som dosť podstatný bug.

    Nie je ošetrený výber (ani vklad) zápornej čiastky.
    Funkcia OnlyNumbers mi síce zabráni napísať do dialogu priamo zápornú hodnotu, ale myslím, že mi nič nebráni docieliť zápornú hodnotu pomocou overflowu. 
    Napríklad tak, že by som do dialogu na výber peňazí napísal sumu 2147483649 (2^31 + 1).

    Funkcia OnlyNumbers ma nezastaví, pretože každý znak v reťazci "2147483649" je platná číslica.
    strval("2147483649") vracia hodnotu -2147483647.
    if (GetPlayerMoney(playerid) < strval(inputtext)) ma nezastaví, pretože budem mať pri sebe viac $ ako -2147483647.
    Riadok GivePlayerMoney(playerid, -strval(inputtext)); nakoniec spôsobí, že mi server vyplatí 2147483647 $ aj napriek tomu, že som v banke nemusel mať uložené vôbec nič.

    • Děkuji (+1) 1
  11. Bohužiaľ (pre niekoho vďakabohu),  realita je taká, že všetky známejšie rze servery sú už buď úplne mŕtve (progamers, sacz, nfs, tgr, avalon, play sector, velka parba, psycho social, real national...) alebo postupne zomierajú aj napriek (aspoň minimálnej) snahe majiteľov a admin teamu (bfs, snk, ...).

  12. Zdravím, má niekto nápad, ako sa bez použitia hrubej sily dopracovať k riešeniu rovnice 2 * n^2 = d^2 + d, ak musí platiť 50 <= d <= 500 a n <= d?  

    Použitím hrubej sily som sa síce dopracoval k jedinému možnému riešeniu (d = 288, n = 204), ale verím, že na to existuje aj krajší postup.

    // Edit: n a d sú prirodzené čísla.

  13. Predpokladám, že ide o obdĺžnikovú (výška nás nezaujíma) zónu zadanú 2 protiľahlými bodmi.
    Označme tieto body A, B a príslušné súradnice týchto bodov Ax, Ay, Bx a By.

    Na tomto obrázku vidno zónu, ktorej Ax = 1, Ay = 2, Bx = 3 a By = 5.
    V tejto zóne ležia všetky body, ktorých súradnica x je väčšia alebo rovná 1menšia alebo rovná 3 a zároveň ich súradnica y je väčšia alebo rovná 2 a menšia alebo rovná 5.

    Vidíš, že v zóne ležia všetky body, ktorých súradnica x je medzi Ax a Bx a zároveň ich súradnica y je medzi Ay a By.
    Mohol by si teda napísať niečo takéto:
     

    Spoiler
    
    stock IsPlayerInArea(playerid, Float:Ax, Float:Bx, Float:Ay, Float:By)
    {
        new Float:x, Float:y, Float:z;
        GetPlayerPos(playerid, x, y, z);
        return Ax <= x <= Bx && Ay <= y <= By;
    }

     

    Tento kód má jeden problém - musíš vždy zabezpečiť, aby bolo Ax vždy menšie alebo rovné Bx a Ay vždy menšie alebo rovné By.
    Aby si si nemusel dávať taký veľký pozor, môžeš vo funkcii kontrolovať, či to naozaj platí a v prípade potreby argumenty vymeniť.

    Spoiler
    
    stock IsPlayerInArea(playerid, Float:Ax, Float:Bx, Float:Ay, Float:By)
    {
        new Float:tmp;
        if (Ax > Bx)
        {
            tmp = Ax;
            Ax = Bx;
            Bx = tmp;
        }
    
        if (Ay > By)
        {
            tmp = Ay;
            Ay = By;
            By = tmp;
        }
    
        new Float:x, Float:y, Float:z;
        GetPlayerPos(playerid, x, y, z);
        return Ax <= x <= Bx && Ay <= y <= By;
    }

     

     

    • Líbí se mi to! (+1) 3
  14. Máš už vytvorenú mysql databázu a funkčné ukladanie banov do nej? To by som riešil ako prvé. Na webe sa potom už len na túto databázu pripojíš, pomocou jednoduchého query získaš zoznam banov a následne cyklom každý ban zobrazíš ako nejaké html elementy (pravdepodobne to chceš ako tabuľku).

    • Líbí se mi to! (+1) 1
  15. před 18 hodinami, Scydo said:

    Nejlepší je na to si zařídit funkci, která ti bude po určité akci, zabití, připojení apod. zjistí, zda má hráč dostatečný počet XP na level up.

    Ja by som toto zakomponoval skôr do funkcie, ktorou budem zvyšovať XP hráča. Rovno by som mu v nej zvýšil level, ak by to bolo možné a zavolal nejaký callback, napr. OnPlayerLevelIncreased(playerid), ktorý by mal na starosti odmeny za nový level (toľkokrát, na koľko levelov by mal hráč XP).

    // Edit: prikladám kód pre zmätených (netestoval som)

    Spoiler
    
    #include <a_samp>
    
    #define MAX_PLAYER_LEVEL    255
    #define XP_FOR_KILL         50
    
    new gPlayerLevel[MAX_PLAYERS];
    new gPlayerXP[MAX_PLAYERS];
    new const gMinumumXPForLevel[MAX_PLAYER_LEVEL + 1] = { 0, 7500, 17500, ... };
    
    public OnPlayerDeath(playerid, killerid, reason)
    {
        if (killerid != INVALID_PLAYER_ID) // teoreticky zbytočná podmienka
            GivePlayerXP(killerid, XP_FOR_KILL);
        
        return 1;
    }
    
    forward OnPlayerLeveledUp(playerid);
    public OnPlayerLeveledUp(playerid)
    {
        new newLevel = GetPlayerLevel(playerid);
        switch(newLevel)
        {
            case 1: 
            {
                // odmena za lvl 1
            }
            case 2:
            { 
                // odmena za lvl 2
            }
            // ...
        }
    }
    
    stock GivePlayerXP(playerid, xp)
    {
        if (!SetPlayerXP(playerid, GetPlayerXP(playerid) + xp))
            return 0;
    
        while (CanPlayerLevelUp(playerid))
            IncreasePlayerLevel(playerid);
    
        return 1;
    }
    
    stock CanPlayerLevelUp(playerid)
    {
        if (!IsPlayerConnected(playerid))
            return 0;
        
        new currentPlayerLevel = GetPlayerLevel(playerid);
        if (currentPlayerLevel >= MAX_PLAYER_LEVEL)
            return 0;
        
        new nextPlayerLevel = currentPlayerLevel + 1;
        return gMinumumXPForLevel[nextPlayerLevel] <= GetPlayerXP(playerid);
    }
    
    stock IncreasePlayerLevel(playerid)
    {
        if (!SetPlayerLevel(playerid, GetPlayerLevel(playerid) + 1))
            return 0;
    
        CallLocalFunction("OnPlayerLeveledUp", "d", playerid);
        return 1;
    }
    
    stock GetPlayerLevel(playerid)
    {
        if (!IsPlayerConnected(playerid))
            return 0;
        
        return gPlayerLevel[playerid];
    }
    
    stock GetPlayerXP(playerid)
    {
        if (!IsPlayerConnected(playerid))
            return 0;
    
        return gPlayerXP[playerid];
    }
    
    // Iba na interné použitie
    stock SetPlayerXP(playerid, xp)
    {
        if (!IsPlayerConnected(playerid))
            return 0;
    
        gPlayerXP[playerid] = xp;
        return 1;
    }
    
    stock SetPlayerLevel(playerid, level)
    {
        if (!IsPlayerConnected(playerid))
            return 0;
    
        gPlayerLevel[playerid] = level;
        return 1;
    }

     

     

    • Líbí se mi to! (+1) 1
  16. před 4 hodinami, MichaelMik9 said:

    když tam dojdu tak pickup tam není

    Práve som testoval tento kód a po zadaní príkazu /createpickup sa pickup vedľa mňa vytvoril. Keď som sa naň postavil, zobrazila sa mi tiež hláška „Skrytý balíček“.

    Spoiler
    
    #include <a_samp>
    
    enum E_PICKUP_TYPE
    {
        PICKUP_TYPE_UNDEFINED,
        PICKUP_TYPE_PACKAGE,
        PICKUP_TYPE_REPAIR
    }
    
    new E_PICKUP_TYPE:gPickupType[MAX_PICKUPS] = {PICKUP_TYPE_UNDEFINED};
    
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
        if (gPickupType[pickupid] == PICKUP_TYPE_PACKAGE)
        {
            // Hráč našiel skrytý balíček
            SendClientMessage(playerid, -1, "Skrytý balíček");
            return 1;
        }
    
        if (gPickupType[pickupid] == PICKUP_TYPE_REPAIR)
        {
            // Hráč našiel pickup na opravu vozidla
            SendClientMessage(playerid, -1, "Oprava vozidla");
            return 1;
        }
    
        return 1;
    }
    
    stock CreatePickupEx(model, type, Float:X, Float:Y, Float:Z, virtualworld, E_PICKUP_TYPE:pickupType=PICKUP_TYPE_UNDEFINED)
    {
        new pickup = CreatePickup(model, type, Float:X, Float:Y, Float:Z, virtualworld);
        gPickupType[pickup] = pickupType;
    }
    
    stock DestroyPickupEx(pickup)
    {
        DestroyPickup(pickup);
        gPickupType[pickup] = PICKUP_TYPE_UNDEFINED;
    }
    
    #include <zcmd>
    CMD:createpickup(playerid, params[])
    {
        new Float:x, Float:y, Float:z;
        GetPlayerPos(playerid, x, y, z);
        CreatePickupEx(1279, 1, x + 2.0, y + 2.0, z, -1, PICKUP_TYPE_PACKAGE);
        return 1;
    }

     

     
    před 4 hodinami, MichaelMik9 said:

    CreatePickupEx jsem si poupravil, že jsem vyměnil parametry - world jsem dal jako poslední

    Toto bude pravdepodobne dôvod, prečo sa ti pickup nezobrazil.
    Parameter pickupType som dal účelovo ako posledný, aby mohol byť nepovinný (defaultne PICKUP_TYPE_UNDEFINED).
    Ak vymeníš poradie parametrov v definícii funkcie, musíš vymeniť aj poradie argumentov vo volaní funkcie.

    Predpokladám, že upravená definícia funkcie u teba vyzerá nasledovne:
    stock CreatePickupEx(model, type, Float:X, Float:Y, Float:Z, E_PICKUP_TYPE:pickupType, virtualworld)

    V tomto prípade chceš funkciu volať nasledovne:

    CreatePickupEx(1279, 15, x, y, z, PICKUP_TYPE_PACKAGE, -1);

    Navrhujem ti vyskúšať najskôr neupravenú verziu funkcie a do úprav sa púšťať až keď ti bude neupravená verzia fungovať.

    před 4 hodinami, MichaelMik9 said:

    a to STOCK u té funkce znamená co?

    Modifikátor „stock“ pri funkcii znamená, že funkcia bude do výsledného .amx súboru zahrnutá iba vtedy, ak sa niekde v kóde používa. Ak ju nikde nepoužiješ, kompilátor ju bude ignorovať a na rozdiel od klasickej funkcie (bez modifikátoru) nedostaneš varovanie, že funkcia nie je nikde použitá. Využíva sa to napríklad v includoch (väčšinou nepotrebuješ použiť všetky funkcie, ktoré include obsahuje). Viac o funkciách a modifikátore stock sa môžeš dočítať napríklad tu.

  17. Nebude lepší nápad uložiť si pre každý pickup, či ide o skrytý balíček, o pickup na opravu auta, (prípadne o nejaký iný typ), alebo to nie je žiaden z týchto prípadov?

    Tých 16 kB ( ak správne počítam 4096 * 4 B ) pamäte nikoho nezabije a ak potom budeš mať viac pickupov rovnakého typu, budeš môcť v konštantnom čase zistiť, aký typ pickupu si zobral.
    Momentálne musíš napríklad na zistenie, či si zobral repair pickup, prechádzať celé pole s repair pickupmi.

    Myslím to nejak takto (kód som neskúšal, nezaručujem funkčnosť, chcem iba ukázať myšlienku):

    Spoiler
    
    enum E_PICKUP_TYPE 
    {
        PICKUP_TYPE_UNDEFINED,
        PICKUP_TYPE_PACKAGE,
        PICKUP_TYPE_REPAIR
    }
    
    new E_PICKUP_TYPE:gPickupType[MAX_PICKUPS] = {PICKUP_TYPE_UNDEFINED};
    
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
        if (gPickupType[pickupid] == PICKUP_TYPE_PACKAGE)
        {
            // Hráč našiel skrytý balíček
            return 1;
        }
        
        if (gPickupType[pickupid] == PICKUP_TYPE_REPAIR)
        {
            // Hráč našiel pickup na opravu vozidla
            return 1;
        }
    
        return 1;
    }
    
    // Túto funkciu budeš používať vždy namiesto CreatePickup, má 1 nepovinný parameter navyše, v ktorom môžeš uviesť, o aký typ pickupu ide
    // Namiesto 
    // RepairPickup[rp][PICKUP_ID] = CreatePickup(1240, 1, posx, posy, posz, -1); 
    // teda môžeš napísať: 
    // CreatePickupEx(1240, 1, posx, posy, posz, -1, PICKUP_TYPE_REPAIR);
    stock CreatePickupEx(model, type, Float:X, Float:Y, Float:Z, virtualworld, E_PICKUP_TYPE:pickupType=PICKUP_TYPE_UNDEFINED)
    {
        new pickup = CreatePickup(model, type, Float:X, Float:Y, Float:Z, virtualworld);
        gPickupType[pickup] = pickupType;
    }
    
    // Túto funkciu budeš používať vždy namiesto DestroyPickup na vynulovanie informácie o type pickupu
    // Keďže sa táto informácia resetuje pri vytvorení nového pickupu, niekto by mohol argumentovať, že táto funkcia nie je potrebná
    // Problém je ale u pickupov vytvorených cez iné scripty, ktoré nepoužívajú tvoju CreatePickupEx, ale klasicky CreatePickup
    stock DestroyPickupEx(pickup)
    {
        DestroyPickup(pickup);
        gPickupType[pickup] = PICKUP_TYPE_UNDEFINED;
    }

     

    A ešte lepší nápad by bol asi využiť Streamer plugin, jeho CreateDynamicPickup, Streamer_SetArrayData a Streamer_GetArrayData.

    Ako na to sa môžeš dočítať napríklad tu.

  18. před 17 hodinami, ryder said:

    Riadky, ktoré si poslal, používajú Streamer Plugin. Musíš si ho stiahnuť (napríklad z tohto odkazu). V stiahnutom archíve v priečinku pawno/include nájdeš include streamer.inc, ktorý si vlož do priečinku include vo svojom priečinku s pawnom. 

    Následne môžeš skompilovať tento kód:

    Spoiler
    
    #include <a_samp>
    #include <streamer>
    
    public OnFilterScriptInit()
    {
    	/*===== Map Parkour by JeeF =====*/
    	CreateDynamicObject(3437,2320.3000488,1055.0999756,9.6000004,89.2094421,251.5642090,108.4374695); //object(ballypllr01_lvs) (1)
    	CreateDynamicObject(3437,2318.5000000,1055.0996094,9.6000004,89.2089844,251.5539551,108.4350586); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2324.8999023,1055.0999756,9.6000004,89.2089844,251.5594482,108.4350586); //object(ballypllr01_lvs) (3)
    	CreateDynamicObject(3437,2323.0000000,1055.0999756,9.6000004,89.2089844,251.5594482,108.6850586); //object(ballypllr01_lvs) (4)
    	CreateDynamicObject(3437,2321.5000000,1055.0999756,9.6000004,89.2089844,251.5539551,108.6822510); //object(ballypllr01_lvs) (5)
    	CreateDynamicObject(718,2325.0000000,1048.1999512,9.8000002,0.0000000,0.0000000,0.0000000); //object(vgs_palm04) (1)
    	CreateDynamicObject(718,2325.1000977,1062.0000000,9.8000002,0.0000000,0.0000000,0.0000000); //object(vgs_palm04) (2)
    	CreateDynamicObject(718,2321.6999512,1048.0999756,9.8000002,0.0000000,0.0000000,0.0000000); //object(vgs_palm04) (3)
    	CreateDynamicObject(718,2318.6000977,1048.0999756,9.8000002,0.0000000,0.0000000,0.0000000); //object(vgs_palm04) (4)
    	CreateDynamicObject(718,2321.8000488,1062.0999756,9.8000002,0.0000000,0.0000000,0.0000000); //object(vgs_palm04) (5)
    	CreateDynamicObject(718,2318.6999512,1062.1999512,9.8000002,0.0000000,0.0000000,0.0000000); //object(vgs_palm04) (6)
    	CreateDynamicObject(3437,2317.1999512,1055.0000000,9.5000000,66.7491455,90.5826416,270.1032715); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2315.1999512,1054.9000244,9.8999996,66.7474365,90.5822754,270.0988770); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2312.8999023,1054.5999756,10.6000004,66.7474365,90.5822754,270.0988770); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2310.6000977,1054.5999756,11.8000002,54.7479553,90.3540039,270.2991943); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2308.6999512,1054.6999512,13.3999996,48.7450256,90.2833252,270.3502808); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2307.1999512,1055.4000244,15.1000004,48.7408447,90.2801514,270.3460693); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2305.6000977,1059.0000000,16.6000004,48.7408447,90.2801514,270.3460693); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(3437,2303.6000977,1061.3000488,17.8999996,48.7408447,90.2801514,270.3460693); //object(ballypllr01_lvs) (2)
    	CreateDynamicObject(1684,2303.8000488,1073.9000244,15.0000000,0.0000000,0.0000000,332.0000000); //object(portakabin) (1)
    	CreateDynamicObject(1638,2313.0000000,1075.9000244,15.1000004,0.0000000,0.0000000,352.0000000); //object(od_pat_hut) (1)
    	CreateDynamicObject(1638,2309.6000977,1081.5000000,15.1000004,0.0000000,0.0000000,351.9964600); //object(od_pat_hut) (2)
    	CreateDynamicObject(1638,2312.5000000,1088.6999512,15.1000004,0.0000000,0.0000000,351.9964600); //object(od_pat_hut) (3)
    	CreateDynamicObject(1638,2305.6999512,1092.6999512,15.1000004,0.0000000,0.0000000,351.9964600); //object(od_pat_hut) (4)
    	CreateDynamicObject(18367,2304.5000000,1098.3000488,16.7999992,0.0000000,0.0000000,136.0000000); //object(cw2_bikelog) (1)
    	CreateDynamicObject(18367,2315.6999512,1108.9000244,16.7999992,0.0000000,0.0000000,273.9997559); //object(cw2_bikelog) (2)
    	CreateDynamicObject(18367,2291.1000977,1107.5000000,16.7999992,0.0000000,0.0000000,117.9990234); //object(cw2_bikelog) (3)
    	CreateDynamicObject(13645,2303.6999512,1119.0999756,18.6000004,0.0000000,0.0000000,52.0000000); //object(kickramp06) (1)
    	CreateDynamicObject(13645,2296.6999512,1118.3000488,18.6000004,0.0000000,0.0000000,51.9982910); //object(kickramp06) (2)
    	CreateDynamicObject(13645,2289.5000000,1117.0999756,18.6000004,0.0000000,0.0000000,51.9982910); //object(kickramp06) (3)
    	CreateDynamicObject(13645,2289.8999023,1123.8000488,18.6000004,0.0000000,0.0000000,51.9982910); //object(kickramp06) (4)
    	CreateDynamicObject(13645,2291.0000000,1131.1999512,18.6000004,0.0000000,0.0000000,51.9982910); //object(kickramp06) (5)
    	CreateDynamicObject(16337,2285.3000488,1135.4000244,16.2000008,0.0000000,0.0000000,324.0000000); //object(des_cranecontrol) (1)
    	CreateDynamicObject(16337,2282.3000488,1131.8000488,16.2000008,0.0000000,0.0000000,323.9978027); //object(des_cranecontrol) (2)
    	CreateDynamicObject(16337,2277.6999512,1135.1999512,16.2000008,0.0000000,0.0000000,323.9978027); //object(des_cranecontrol) (3)
    	CreateDynamicObject(16337,2274.8999023,1131.5999756,16.2000008,0.0000000,0.0000000,323.9978027); //object(des_cranecontrol) (4)
    	CreateDynamicObject(16337,2272.1999512,1127.8000488,16.2000008,0.0000000,0.0000000,323.9978027); //object(des_cranecontrol) (5)
    	CreateDynamicObject(16337,2267.8000488,1130.9000244,17.5000000,0.0000000,0.0000000,323.9978027); //object(des_cranecontrol) (6)
    	CreateDynamicObject(16337,2263.1000977,1133.3000488,19.1000004,0.0000000,0.0000000,323.9978027); //object(des_cranecontrol) (7)
    	CreateDynamicObject(16337,2257.8999023,1136.3000488,20.6000004,0.0000000,0.0000000,323.9978027); //object(des_cranecontrol) (8)
    	CreateDynamicObject(16337,2259.0000000,1130.5000000,22.1000004,0.0000000,0.0000000,327.9978027); //object(des_cranecontrol) (9)
    	CreateDynamicObject(16337,2264.0000000,1128.3000488,23.8999996,0.0000000,0.0000000,327.9968262); //object(des_cranecontrol) (10)
    	CreateDynamicObject(14416,2248.8000488,1091.8000488,32.5000000,0.0000000,0.0000000,162.0000000); //object(carter-stairs07) (1)
    	CreateDynamicObject(14416,2247.1000977,1086.5000000,36.2000008,0.0000000,0.0000000,161.9989014); //object(carter-stairs07) (2)
    	CreateDynamicObject(16502,2238.5000000,1087.0999756,37.2999992,1.9648743,10.7563782,163.6268311); //object(cn2_jetty1) (1)
    	CreateDynamicObject(13649,2220.1999512,1096.3000488,37.9000015,0.0000000,0.0000000,2.0000000); //object(ramplandpad01) (1)
    	CreateDynamicObject(13649,2204.3000488,1089.5000000,37.9000015,0.0000000,0.0000000,1.9995117); //object(ramplandpad01) (2)
    	CreateDynamicObject(13649,2199.1000977,1097.6999512,40.7000008,0.0000000,0.0000000,1.9995117); //object(ramplandpad01) (3)
    	CreateDynamicObject(13649,2192.8999023,1101.8000488,44.2000008,0.0000000,0.0000000,1.9995117); //object(ramplandpad01) (4)
    	CreateDynamicObject(13649,2197.6999512,1111.0000000,44.5000000,0.0000000,0.0000000,1.9995117); //object(ramplandpad01) (5)
    	CreateDynamicObject(3414,2207.1999512,1120.5999756,43.2000008,0.0000000,0.0000000,141.7500000); //object(ce_oldhut1) (1)
    	CreateDynamicObject(3612,2222.8999023,1127.9000244,36.0000000,0.0000000,0.0000000,324.0000000); //object(hillhouse12_la) (1)
    	CreateDynamicObject(2932,2239.6000977,1131.8000488,49.5000000,0.0000000,0.0000000,318.0000000); //object(kmb_container_blue) (1)
    	CreateDynamicObject(2934,2247.5000000,1125.4000244,47.7000008,0.0000000,0.0000000,358.0000000); //object(kmb_container_red) (1)
    	CreateDynamicObject(2935,2245.6999512,1114.0000000,49.2999992,0.0000000,0.0000000,310.0000000); //object(kmb_container_yel) (1)
    	CreateDynamicObject(2932,2255.8999023,1110.0000000,48.2999992,0.0000000,0.0000000,317.9992676); //object(kmb_container_blue) (2)
    	CreateDynamicObject(2934,2265.6992188,1110.0000000,47.7000008,0.0000000,0.0000000,355.9899902); //object(kmb_container_red) (2)
    	CreateDynamicObject(2935,2277.3999023,1120.5000000,47.5999985,0.0000000,0.0000000,333.9957275); //object(kmb_container_yel) (2)
    	CreateDynamicObject(3571,2283.8000488,1123.9000244,50.7999992,0.0000000,0.0000000,308.0000000); //object(lasdkrt3) (1)
    	CreateDynamicObject(3571,2287.6999512,1113.0999756,51.7999992,0.0000000,0.0000000,273.9962158); //object(lasdkrt3) (2)
    	CreateDynamicObject(3571,2283.6000977,1103.0999756,53.0999985,0.0000000,0.0000000,239.9935303); //object(lasdkrt3) (3)
    	CreateDynamicObject(3571,2276.1999512,1100.3000488,55.0999985,0.0000000,0.0000000,199.9908447); //object(lasdkrt3) (4)
    	CreateDynamicObject(3571,2266.6999512,1102.4000244,57.0999985,0.0000000,0.0000000,141.9896240); //object(lasdkrt3) (5)
    	CreateDynamicObject(3571,2261.8000488,1111.0999756,59.2000008,0.0000000,0.0000000,99.9873047); //object(lasdkrt3) (6)
    	CreateDynamicObject(3571,2263.3999023,1120.8000488,60.5000000,0.0000000,0.0000000,55.9865723); //object(lasdkrt3) (7)
    	CreateDynamicObject(3571,2266.5000000,1119.0999756,62.5000000,0.0000000,0.0000000,53.9863281); //object(lasdkrt3) (8)
    	CreateDynamicObject(3571,2269.5000000,1117.3000488,64.8000031,0.0000000,0.0000000,53.9813232); //object(lasdkrt3) (9)
    	CreateDynamicObject(16073,2267.1999512,1088.5999756,65.0000000,0.0000000,0.0000000,300.7500000); //object(des_quarrybelt03) (1)
    	CreateDynamicObject(1985,2274.6000977,1109.0000000,71.5999985,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (1)
    	CreateDynamicObject(1985,2273.8999023,1108.0999756,71.4000015,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (2)
    	CreateDynamicObject(1985,2273.6999512,1106.5000000,71.1999969,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (3)
    	CreateDynamicObject(1985,2272.8999023,1105.3000488,71.0000000,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (4)
    	CreateDynamicObject(1985,2272.6000977,1103.3000488,70.6999969,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (5)
    	CreateDynamicObject(1985,2271.6999512,1102.0999756,70.5000000,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (6)
    	CreateDynamicObject(1985,2271.6999512,1100.1999512,70.1999969,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (7)
    	CreateDynamicObject(1985,2271.0000000,1099.1999512,69.8000031,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (8)
    	CreateDynamicObject(1985,2270.6999512,1097.5999756,69.6999969,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (9)
    	CreateDynamicObject(1985,2269.6999512,1096.3000488,69.5999985,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (10)
    	CreateDynamicObject(1985,2269.6000977,1094.5000000,69.0000000,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (11)
    	CreateDynamicObject(1985,2268.5000000,1092.8000488,68.6999969,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (12)
    	CreateDynamicObject(1985,2267.8999023,1090.1999512,68.4000015,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (13)
    	CreateDynamicObject(1985,2266.8000488,1088.3000488,68.1999969,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (14)
    	CreateDynamicObject(1985,2266.3000488,1085.5999756,67.5000000,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (15)
    	CreateDynamicObject(1985,2265.0000000,1083.3000488,67.0000000,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (16)
    	CreateDynamicObject(1985,2264.8000488,1080.9000244,66.5000000,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (17)
    	CreateDynamicObject(1985,2263.5000000,1079.4000244,66.3000031,0.0000000,0.0000000,0.0000000); //object(punchbagnu) (18)
    	CreateDynamicObject(13637,2251.0000000,1053.4000244,61.0999985,0.0000000,0.0000000,195.0000000); //object(tuberamp) (1)
    	CreateDynamicObject(13637,2244.0000000,1039.5000000,61.0999985,0.0000000,0.0000000,24.7463379); //object(tuberamp) (2)
    	CreateDynamicObject(13637,2234.1999512,1027.9000244,61.0999985,0.0000000,0.0000000,128.7412109); //object(tuberamp) (3)
    	CreateDynamicObject(13637,2219.3999023,1031.1999512,57.0999985,0.0000000,0.0000000,118.7377930); //object(tuberamp) (4)
    	CreateDynamicObject(13637,2205.1000977,1036.1999512,53.0999985,0.0000000,0.0000000,46.7347412); //object(tuberamp) (5)
    	CreateDynamicObject(13637,2210.6999512,1046.5999756,48.7999992,0.0000000,0.0000000,344.7303467); //object(tuberamp) (6)
    	CreateDynamicObject(13637,2225.3999023,1051.1999512,48.7999992,0.0000000,0.0000000,140.7290039); //object(tuberamp) (7)
    	CreateDynamicObject(974,2235.8000488,1047.0000000,48.0999985,0.0000000,0.0000000,336.0000000); //object(tall_fence) (1)
    	CreateDynamicObject(974,2238.1000977,1046.0000000,48.0999985,0.0000000,0.0000000,335.9948730); //object(tall_fence) (2)
    	CreateDynamicObject(16337,2254.3000488,1039.0999756,44.9000015,0.0000000,0.0000000,0.0000000); //object(des_cranecontrol) (12)
    	CreateDynamicObject(16337,2259.1000977,1040.3000488,44.5000000,0.0000000,0.0000000,0.0000000); //object(des_cranecontrol) (13)
    	CreateDynamicObject(16337,2264.3000488,1042.9000244,43.5000000,0.0000000,0.0000000,0.0000000); //object(des_cranecontrol) (14)
    	CreateDynamicObject(3578,2276.1000977,1040.5999756,43.5000000,0.0000000,0.0000000,302.0000000); //object(dockbarr1_la) (1)
    	CreateDynamicObject(3578,2276.8000488,1035.1999512,43.5000000,0.0000000,0.0000000,309.7476807); //object(dockbarr1_la) (2)
    	CreateDynamicObject(3578,2285.3999023,1033.1999512,43.5000000,0.0000000,0.0000000,39.7449951); //object(dockbarr1_la) (3)
    	CreateDynamicObject(1380,2289.1999512,1043.8000488,35.5999985,0.0000000,0.0000000,0.0000000); //object(magnocrane_01) (1)
    	CreateDynamicObject(3578,2276.3999023,1034.8000488,43.5000000,0.0000000,0.0000000,309.7430420); //object(dockbarr1_la) (4)
    	CreateDynamicObject(3578,2285.0000000,1033.5999756,43.5000000,0.0000000,0.0000000,39.7430420); //object(dockbarr1_la) (5)
    	CreateDynamicObject(3578,2276.6000977,1040.9000244,43.5000000,0.0000000,0.0000000,301.9976807); //object(dockbarr1_la) (6)
    	CreateDynamicObject(17050,2296.8000488,1038.0000000,26.3999996,8.3001709,46.6314697,319.3066406); //object(cw_silo02) (1)
    	CreateDynamicObject(17050,2307.8000488,1024.4000244,32.4000015,8.3001709,46.6314697,261.3066406); //object(cw_silo02) (2)
    	CreateDynamicObject(17050,2300.0000000,1006.4000244,39.4000015,8.3001709,46.6314697,207.3043213); //object(cw_silo02) (3)
    	CreateDynamicObject(2935,2277.8999023,1121.5999756,48.5000000,0.0000000,0.0000000,333.9953613); //object(kmb_container_yel) (3)
    	CreateDynamicObject(3631,2278.3999023,999.2999878,55.5999985,0.0000000,0.0000000,24.0000000); //object(oilcrat_las) (1)
    	CreateDynamicObject(3631,2272.1000977,992.7999878,58.5999985,0.0000000,0.0000000,45.9996338); //object(oilcrat_las) (2)
    	CreateDynamicObject(3631,2268.1000977,993.7000122,61.9000015,0.0000000,0.0000000,7.9942627); //object(oilcrat_las) (3)
    	CreateDynamicObject(3631,2254.1000977,991.2000122,63.2000008,0.0000000,0.0000000,27.9925537); //object(oilcrat_las) (4)
    	CreateDynamicObject(18367,2251.6000977,989.9000244,63.4000015,346.0000000,0.0000000,296.0000000); //object(cw2_bikelog) (4)
    	CreateDynamicObject(18367,2225.6000977,981.2999878,72.4000015,345.9979248,0.0000000,115.9991455); //object(cw2_bikelog) (6)
    	CreateDynamicObject(3406,2249.3999023,1001.5000000,83.4000015,56.0000000,180.0000000,180.0000000); //object(cxref_woodjetty) (1)
    	CreateDynamicObject(3406,2260.6000977,1005.0999756,84.9000015,55.9973145,179.9945068,131.9945068); //object(cxref_woodjetty) (2)
    	CreateDynamicObject(3406,2271.1999512,1012.0000000,84.9000015,55.9918213,179.9945068,119.9897461); //object(cxref_woodjetty) (3)
    	CreateDynamicObject(3406,2283.8000488,1018.2999878,84.9000015,55.9863281,179.9945068,163.9871826); //object(cxref_woodjetty) (4)
    	CreateDynamicObject(974,2298.6999512,1031.8000488,82.1999969,0.0000000,0.0000000,60.0000000); //object(tall_fence) (3)
    	CreateDynamicObject(974,2301.8999023,1037.4000244,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (4)
    	CreateDynamicObject(974,2305.0000000,1042.9000244,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (5)
    	CreateDynamicObject(974,2308.1999512,1048.5000000,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (6)
    	CreateDynamicObject(974,2311.5000000,1054.1999512,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (7)
    	CreateDynamicObject(974,2314.6999512,1059.9000244,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (8)
    	CreateDynamicObject(974,2318.0000000,1065.5999756,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (9)
    	CreateDynamicObject(974,2321.3000488,1071.3000488,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (10)
    	CreateDynamicObject(974,2324.6000977,1076.9000244,82.1999969,0.0000000,0.0000000,59.9963379); //object(tall_fence) (11)
    	CreateDynamicObject(16337,2323.1999512,1086.6999512,84.9000015,0.0000000,0.0000000,292.0000000); //object(des_cranecontrol) (11)
    	CreateDynamicObject(16337,2325.3999023,1091.9000244,87.9000015,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (15)
    	CreateDynamicObject(16337,2320.6000977,1094.8000488,90.8000031,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (16)
    	CreateDynamicObject(16337,2319.6999512,1107.8000488,90.8000031,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (17)
    	CreateDynamicObject(16337,2311.6000977,1116.8000488,90.8000031,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (18)
    	CreateDynamicObject(16337,2311.1999512,1127.9000244,90.8000031,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (19)
    	CreateDynamicObject(16337,2310.3999023,1130.8000488,88.4000015,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (20)
    	CreateDynamicObject(16337,2309.6999512,1133.6999512,85.9000015,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (21)
    	CreateDynamicObject(16337,2308.8000488,1135.9000244,83.0999985,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (22)
    	CreateDynamicObject(17067,2256.0000000,1161.3000488,80.4000015,0.0000000,0.0000000,328.2500000); //object(cw2_logcabins) (1)
    	CreateDynamicObject(3502,2217.5000000,1145.9000244,84.8000031,0.0000000,0.0000000,288.0000000); //object(vgsn_con_tube) (1)
    	CreateDynamicObject(3502,2209.8999023,1143.4000244,86.0999985,344.0000000,0.0000000,287.9956055); //object(vgsn_con_tube) (2)
    	CreateDynamicObject(5153,2204.3000488,1135.5000000,85.5000000,0.0000000,0.0000000,286.0000000); //object(stuntramp7_las2) (1)
    	CreateDynamicObject(5153,2206.3000488,1129.5000000,85.3000031,0.0000000,24.7500000,285.9960938); //object(stuntramp7_las2) (3)
    	CreateDynamicObject(5153,2211.0000000,1127.5999756,85.3000031,0.0000000,24.7467041,285.9960938); //object(stuntramp7_las2) (4)
    	CreateDynamicObject(5153,2215.3999023,1125.4000244,85.3000031,0.0000000,24.7467041,285.9960938); //object(stuntramp7_las2) (5)
    	CreateDynamicObject(5153,2219.3999023,1121.8000488,83.8000031,0.0000000,54.7467041,299.9960938); //object(stuntramp7_las2) (7)
    	CreateDynamicObject(5153,2224.5000000,1118.8000488,81.0999985,0.0000000,54.7448730,299.9926758); //object(stuntramp7_las2) (8)
    	CreateDynamicObject(5153,2223.3999023,1114.0000000,78.5999985,0.0000000,54.7448730,299.9926758); //object(stuntramp7_las2) (9)
    	CreateDynamicObject(5153,2225.1000977,1110.5000000,75.8000031,0.0000000,24.7467041,285.9960938); //object(stuntramp7_las2) (10)
    	CreateDynamicObject(5153,2222.1999512,1106.6999512,75.8000031,0.0000000,24.7467041,285.9960938); //object(stuntramp7_las2) (11)
    	CreateDynamicObject(5153,2227.3000488,1102.9000244,75.8000031,0.0000000,24.7467041,285.9960938); //object(stuntramp7_las2) (12)
    	CreateDynamicObject(5153,2225.1999512,1097.1999512,75.8000031,0.0000000,24.7467041,285.9960938); //object(stuntramp7_las2) (13)
    	CreateDynamicObject(3631,2228.1000977,1089.3000488,73.0000000,0.0000000,0.0000000,105.9942627); //object(oilcrat_las) (5)
    	CreateDynamicObject(3631,2234.6999512,1082.5000000,74.5000000,0.0000000,0.0000000,137.9906006); //object(oilcrat_las) (6)
    	CreateDynamicObject(3631,2238.1000977,1074.4000244,77.8000031,0.0000000,0.0000000,119.9883118); //object(oilcrat_las) (7)
    	CreateDynamicObject(3631,2248.3000488,1072.3000488,79.0999985,0.0000000,0.0000000,159.9871826); //object(oilcrat_las) (8)
    	CreateDynamicObject(3631,2257.0000000,1072.8000488,82.4000015,0.0000000,0.0000000,201.9829102); //object(oilcrat_las) (9)
    	CreateDynamicObject(3631,2263.8000488,1072.8000488,85.9000015,0.0000000,0.0000000,167.9781494); //object(oilcrat_las) (10)
    	CreateDynamicObject(3631,2272.6000977,1067.6999512,88.4000015,0.0000000,0.0000000,145.9754639); //object(oilcrat_las) (11)
    	CreateDynamicObject(3631,2279.1000977,1058.6999512,89.9000015,0.0000000,0.0000000,111.9753418); //object(oilcrat_las) (12)
    	CreateDynamicObject(3631,2284.6000977,1052.1999512,89.9000015,0.0000000,36.0000000,135.9726562); //object(oilcrat_las) (14)
    	CreateDynamicObject(3631,2288.8000488,1048.1999512,94.0999985,0.0000000,35.9967041,135.9723206); //object(oilcrat_las) (15)
    	CreateDynamicObject(3631,2292.8999023,1044.3000488,98.1999969,0.0000000,35.9967041,135.9723206); //object(oilcrat_las) (16)
    	CreateDynamicObject(16337,2310.6999512,1142.6999512,83.0999985,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (23)
    	CreateDynamicObject(16337,2309.3000488,1148.3000488,83.0999985,0.0000000,0.0000000,291.9946289); //object(des_cranecontrol) (24)
    	CreateDynamicObject(12990,2294.6000977,1164.5000000,83.0000000,0.0000000,0.0000000,50.0000000); //object(sw_jetty) (1)
    	CreateDynamicObject(897,2301.6000977,1038.4000244,99.8000031,0.0000000,0.0000000,54.0000000); //object(searock01) (1)
    	CreateDynamicObject(897,2313.3999023,1044.0000000,96.5999985,0.0000000,0.0000000,53.9978027); //object(searock01) (2)
    	CreateDynamicObject(897,2326.8000488,1043.5000000,97.5999985,0.0000000,0.0000000,103.9978027); //object(searock01) (3)
    	CreateDynamicObject(897,2335.8000488,1032.4000244,97.5999985,10.0000000,0.0000000,103.9965820); //object(searock01) (4)
    	CreateDynamicObject(897,2344.6999512,1020.9000244,95.4000015,2.4070740,283.7955933,39.7029114); //object(searock01) (5)
    	CreateDynamicObject(897,2355.3000488,1019.2000122,100.1999969,8.2213440,26.2905273,337.0727539); //object(searock01) (6)
    	CreateDynamicObject(897,2368.1999512,1010.4000244,100.1999969,332.8939514,262.6782837,54.2185974); //object(searock01) (7)
    	CreateDynamicObject(897,2382.1999512,1017.4000244,96.6999969,332.8912354,262.6776123,54.2175293); //object(searock01) (8)
    	CreateDynamicObject(897,2391.6000977,1009.7000122,96.6999969,332.8912354,262.6776123,54.2175293); //object(searock01) (9)
    	CreateDynamicObject(897,2405.8000488,1008.0000000,93.8000031,332.8912354,262.6776123,54.2175293); //object(searock01) (10)
    	CreateDynamicObject(897,2418.1000977,1001.4000244,93.8000031,284.5285950,196.1125793,21.5885925); //object(searock01) (11)
    	CreateDynamicObject(897,2428.0000000,1011.0000000,90.8000031,313.8596497,105.0105896,236.3656616); //object(searock01) (12)
    	CreateDynamicObject(897,2440.1000977,1006.2999878,88.8000031,1.9407654,89.5169067,177.9512939); //object(searock01) (13)
    	CreateDynamicObject(897,2452.5000000,998.0000000,88.8000031,57.1733093,67.2770386,238.4400635); //object(searock01) (14)
    	CreateDynamicObject(897,2462.8999023,1004.0999756,85.3000031,21.1053467,83.6481323,263.1223450); //object(searock01) (15)
    	CreateDynamicObject(897,2474.8999023,1008.5000000,79.3000031,21.1047363,83.6444092,263.1170654); //object(searock01) (16)
    	CreateDynamicObject(897,2490.1000977,1012.7000122,79.3000031,68.8577271,42.1267700,239.7794342); //object(searock01) (17)
    	CreateDynamicObject(897,2494.5000000,1026.0999756,75.5999985,63.0297852,304.3119202,302.4775696); //object(searock01) (18)
    	CreateDynamicObject(897,2500.0000000,1036.5000000,70.5999985,24.9203491,277.6589661,350.2164307); //object(searock01) (19)
    	CreateDynamicObject(897,2508.3000488,1046.4000244,65.5999985,24.9170227,277.6574707,350.2111511); //object(searock01) (20)
    	CreateDynamicObject(897,2509.6999512,1062.8000488,59.0999985,340.8044434,264.2760620,306.9366455); //object(searock01) (21)
    	CreateDynamicObject(971,2510.1999512,1056.1999512,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (1)
    	CreateDynamicObject(971,2501.1992188,1056.2998047,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (2)
    	CreateDynamicObject(971,2492.3994141,1056.2998047,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (3)
    	CreateDynamicObject(971,2483.5996094,1056.3994141,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (4)
    	CreateDynamicObject(971,2477.0000000,1059.5000000,60.0999985,0.0000000,0.0000000,304.0000000); //object(subwaygate) (5)
    	CreateDynamicObject(897,2508.6000977,1054.5000000,56.5999985,308.9467773,249.2242126,263.8996887); //object(searock01) (22)
    	CreateDynamicObject(897,2497.6000977,1052.4000244,54.9000015,292.4780273,133.8574219,114.0270996); //object(searock01) (23)
    	CreateDynamicObject(971,2483.8999023,1060.0000000,63.9000015,89.7497559,180.0000000,180.0000000); //object(subwaygate) (6)
    	CreateDynamicObject(971,2480.1000977,1061.4000244,63.9000015,89.7473145,179.9945068,213.9916992); //object(subwaygate) (7)
    	CreateDynamicObject(971,2492.8000488,1059.8000488,63.9000015,89.7473145,179.9945068,179.9945068); //object(subwaygate) (8)
    	CreateDynamicObject(971,2501.6999512,1059.8000488,63.9000015,89.7473145,179.9945068,179.9945068); //object(subwaygate) (9)
    	CreateDynamicObject(1457,2480.3000488,1060.1999512,58.2000008,0.0000000,0.0000000,94.5000000); //object(dyn_outhouse_2) (1)
    	CreateDynamicObject(3534,2482.8999023,1057.5999756,57.7999992,0.0000000,0.0000000,0.0000000); //object(trdlamp01) (1)
    	CreateDynamicObject(3534,2486.6999512,1057.5999756,57.7999992,0.0000000,0.0000000,0.0000000); //object(trdlamp01) (2)
    	CreateDynamicObject(3534,2490.3999023,1057.5000000,57.7999992,0.0000000,0.0000000,0.0000000); //object(trdlamp01) (3)
    	CreateDynamicObject(3534,2494.1999512,1057.4000244,57.7999992,0.0000000,0.0000000,0.0000000); //object(trdlamp01) (4)
    	CreateDynamicObject(971,2500.6000977,1063.0000000,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (2)
    	CreateDynamicObject(971,2491.6999512,1063.0999756,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (3)
    	CreateDynamicObject(971,2482.8000488,1063.0999756,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (4)
    	CreateDynamicObject(971,2478.8000488,1063.0999756,60.0999985,0.0000000,0.0000000,0.0000000); //object(subwaygate) (4)
    	// Please don't Remove the Credits. Thankyou <3 //
    	return 1;
    }

     

    Upozorňujem ťa ešte na to, že ak sa pokúsiš spustiť tento filterscript na nejakom serveri, musí na ňom bežať Streamer Plugin.
    Nahráš ho tam tak, že si zo stiahnutého archívu z priečinku plugins vyberieš streamer.dll (ak používaš Windows) alebo streamer.so (ak používaš Linux alebo máš server hosťovaný na Fakahede) a vybraný súbor umiestniš do priečinku plugins vo svojom samp serveri (prípadne na hostingu). Potom už len tento plugin zapíšeš do server.cfg podobným spôsobom, ako tam zapisuješ filterscripty.
    Do server.cfg zapíšeš "plugins streamer.dll" alebo "plugins streamer.so" (podľa toho, ktorý súbor si nahral do priečinku plugins).

  19. Ukáž nám kód, ktorý sa pokúšaš skompilovať a robí ti problémy.

    Ak chceš pridať mapu do filterscriptu, pridaj riadky s CreateObject do public OnFilterScriptInit.
    Ak ju chceš pridať do herného módu, pridaj tieto riadky do public OnGameModeInit. 

    Ukážka, ako by mal vyzerať kód filterscriptu, ktorý na server pridá nejaké objekty:

    Spoiler
    
    #include <a_samp>
    
    public OnFilterScriptInit()
    {
        // Sem dáš riadky, ktoré vytvoria objekty:
        CreateObject(...);
        CreateObject(...);
        CreateObject(...);
        .
        .
        .
        return 1;
    }

     

    Tiež môžeš zvážiť využitie streameru - hlavne ak sa chystáš pridávať väčšie množstvo objektov.

  20. před 52 minutami, Janik22 said:

    Začiatočnik v pawne Nemáš tám include core 😄

    error 010: invalid function or declaration
    vyzerá trochu inak ako 
    fatal error 100: cannot read from file: "core", súhlasíš?

  21. On 19. 6. 2020 at 12:22, Nko said:

    public OnPlayerDeath(playerid, killerid, reason) { PlayerInfo[killerid][pKills]++; PlayerInfo[playerid][pDeaths]++; return 1; }

    Skôr, než sa pokúsiš o PlayerInfo[killerid][pKills]++, by si mal overiť, či killerid nie je INVALID_PLAYER_ID. Inak ti to spadne kvôli neplatnému prístupu do poľa (PlayerInfo[INVALID_PLAYER_ID][pKills], teda PlayerInfo[65535][pKills]) a nezvýši sa ti ani počet smrtí.

×
×
  • Create New...