Pomoc

Započeo Piricc, Januar 17, 2025, 20:33:10 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 8 gostiju pregledaju ovu temu.

Naslov problema*: Problem sa sistemom paketica
Opis problema*: Ovako odradio sam sistem paketica i sve radi bez errora,ingame paketici se mogu stvoriti ali igrac moze otvoriti samo jedan paketic,najlakse objasnjeno je npr.ja dodjem ingame stvorim 10-15 paketica i dodje neki igrac i on moze otvoriti samo 1 paketic kada dodje do drugog pise da nema vise paketica iako stoji pored kreiranog paketica.Da li ima neko ideju kako to da fixam da igrac moze otvarat vise paketica.
Pokušaj rešavanja*: Pokusavao sam nesto ali mi nije islo
Deo programskog koda*: https://pastebin.com/UEcChysQ
Debug informacije://
Fotografija problema u igri: //
Korišćene biblioteke (includes): //
Dodatne informacije: Znam da je ovo sto postavljam glupo al ne mogu da najdem nacin da fixam

Ne mozes da nadjes nacin da fix nesto sto je jako banalno i prosto. Zato sto znas stvari napamet.

new Float:PoklonX[50], Float:PoklonY[50], Float:PoklonZ[50];
new PoklonObject[50];
new bool:PoklonCreated[50];
new const MAX_POKLONA = 50;

stock CreateGift(playerid)
{
    new i;
    for (i = 0; i < MAX_POKLONA; i++)
    {
        if (!PoklonCreated[i])
        {
            GetPlayerPos(playerid, PoklonX[i], PoklonY[i], PoklonZ[i]);
            PoklonX[i] += 1.5;
            PoklonY[i] += 1.5;
            PoklonZ[i] += 0.5;
            PoklonObject[i] = CreateObject(19057, PoklonX[i], PoklonY[i], PoklonZ[i], 0.0, 0.0, 0.0);
            PoklonCreated[i] = true;
            SendClientMessage(playerid, -1, "Stvorili ste novogodišnju kutiju!");
            SendClientMessageToAll(KAZANOVAGAMING, "Novogodišnja kutija je stvorena! Pronađite je i otvorite je.");
            return 1;
        }
    }
    SendClientMessage(playerid, -1, "Maksimalan broj paketića je već stvoren.");
    return 0;
}

stock OpenGift(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);

    for (new i = 0; i < MAX_POKLONA; i++)
    {
        if (PoklonCreated[i] && GetDistanceBetweenPoints3D(x, y, z, PoklonX[i], PoklonY[i], PoklonZ[i]) <= 3.0)
        {
            DestroyObject(PoklonObject[i]);
            PoklonCreated[i] = false;
            new reward = random(3);
            switch (reward)
            {
                case 0:
                {
                    GivePlayerMoney(playerid, 5000);
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 5000$!");
                }
                case 1:
                {
                    PlayerInfo[playerid][xZlato] += 10;
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 10 zlata!");
                }
                case 2:
                {
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju, ali nije bilo ništa unutra. Sretno sljedeći put!");
                }
            }
            return 1;
        }
    }
    SendClientMessage(playerid, -1, "Nema paketića u blizini koje možete otvoriti.");
    return 0;
}

CMD:stvoripoklon(playerid, parms[])
{
    if (PlayerInfo[playerid][xAdmin] < 6) return SendErrorMessage(playerid, "Niste u mogućnosti koristiti ovu komandu.");
    CreateGift(playerid);
    return 1;
}

CMD:otvoripoklon(playerid, parms[])
{
    if (!IsPlayerConnected(playerid)) return SendErrorMessage(playerid, "Niste se ulogovali.");
    if (!OpenGift(playerid)) return SendErrorMessage(playerid, "Trenutno nije moguće otvoriti poklon.");
    return 1;
}
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

Citat: markosimic poslato Januar 17, 2025, 20:44:03 POSLE PODNENe mozes da nadjes nacin da fix nesto sto je jako banalno i prosto. Zato sto znas stvari napamet.

new Float:PoklonX[50], Float:PoklonY[50], Float:PoklonZ[50];
new PoklonObject[50];
new bool:PoklonCreated[50];
new const MAX_POKLONA = 50;

stock CreateGift(playerid)
{
    new i;
    for (i = 0; i < MAX_POKLONA; i++)
    {
        if (!PoklonCreated[i])
        {
            GetPlayerPos(playerid, PoklonX[i], PoklonY[i], PoklonZ[i]);
            PoklonX[i] += 1.5;
            PoklonY[i] += 1.5;
            PoklonZ[i] += 0.5;
            PoklonObject[i] = CreateObject(19057, PoklonX[i], PoklonY[i], PoklonZ[i], 0.0, 0.0, 0.0);
            PoklonCreated[i] = true;
            SendClientMessage(playerid, -1, "Stvorili ste novogodišnju kutiju!");
            SendClientMessageToAll(KAZANOVAGAMING, "Novogodišnja kutija je stvorena! Pronađite je i otvorite je.");
            return 1;
        }
    }
    SendClientMessage(playerid, -1, "Maksimalan broj paketića je već stvoren.");
    return 0;
}

stock OpenGift(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);

    for (new i = 0; i < MAX_POKLONA; i++)
    {
        if (PoklonCreated[i] && GetDistanceBetweenPoints3D(x, y, z, PoklonX[i], PoklonY[i], PoklonZ[i]) <= 3.0)
        {
            DestroyObject(PoklonObject[i]);
            PoklonCreated[i] = false;
            new reward = random(3);
            switch (reward)
            {
                case 0:
                {
                    GivePlayerMoney(playerid, 5000);
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 5000$!");
                }
                case 1:
                {
                    PlayerInfo[playerid][xZlato] += 10;
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 10 zlata!");
                }
                case 2:
                {
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju, ali nije bilo ništa unutra. Sretno sljedeći put!");
                }
            }
            return 1;
        }
    }
    SendClientMessage(playerid, -1, "Nema paketića u blizini koje možete otvoriti.");
    return 0;
}

CMD:stvoripoklon(playerid, parms[])
{
    if (PlayerInfo[playerid][xAdmin] < 6) return SendErrorMessage(playerid, "Niste u mogućnosti koristiti ovu komandu.");
    CreateGift(playerid);
    return 1;
}

CMD:otvoripoklon(playerid, parms[])
{
    if (!IsPlayerConnected(playerid)) return SendErrorMessage(playerid, "Niste se ulogovali.");
    if (!OpenGift(playerid)) return SendErrorMessage(playerid, "Trenutno nije moguće otvoriti poklon.");
    return 1;
}
Hvala puno,pokusavao sam na neki tome slican nacin fixat ali mi je izbacivalo error sad vidim gdje je greska,jos jedno Hvala

Citat: markosimic poslato Januar 17, 2025, 20:44:03 POSLE PODNENe mozes da nadjes nacin da fix nesto sto je jako banalno i prosto. Zato sto znas stvari napamet.

new Float:PoklonX[50], Float:PoklonY[50], Float:PoklonZ[50];
new PoklonObject[50];
new bool:PoklonCreated[50];
new const MAX_POKLONA = 50;

stock CreateGift(playerid)
{
    new i;
    for (i = 0; i < MAX_POKLONA; i++)
    {
        if (!PoklonCreated[i])
        {
            GetPlayerPos(playerid, PoklonX[i], PoklonY[i], PoklonZ[i]);
            PoklonX[i] += 1.5;
            PoklonY[i] += 1.5;
            PoklonZ[i] += 0.5;
            PoklonObject[i] = CreateObject(19057, PoklonX[i], PoklonY[i], PoklonZ[i], 0.0, 0.0, 0.0);
            PoklonCreated[i] = true;
            SendClientMessage(playerid, -1, "Stvorili ste novogodišnju kutiju!");
            SendClientMessageToAll(KAZANOVAGAMING, "Novogodišnja kutija je stvorena! Pronađite je i otvorite je.");
            return 1;
        }
    }
    SendClientMessage(playerid, -1, "Maksimalan broj paketića je već stvoren.");
    return 0;
}

stock OpenGift(playerid)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);

    for (new i = 0; i < MAX_POKLONA; i++)
    {
        if (PoklonCreated[i] && GetDistanceBetweenPoints3D(x, y, z, PoklonX[i], PoklonY[i], PoklonZ[i]) <= 3.0)
        {
            DestroyObject(PoklonObject[i]);
            PoklonCreated[i] = false;
            new reward = random(3);
            switch (reward)
            {
                case 0:
                {
                    GivePlayerMoney(playerid, 5000);
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 5000$!");
                }
                case 1:
                {
                    PlayerInfo[playerid][xZlato] += 10;
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 10 zlata!");
                }
                case 2:
                {
                    SendClientMessage(playerid, -1, "Otvorili ste kutiju, ali nije bilo ništa unutra. Sretno sljedeći put!");
                }
            }
            return 1;
        }
    }
    SendClientMessage(playerid, -1, "Nema paketića u blizini koje možete otvoriti.");
    return 0;
}

CMD:stvoripoklon(playerid, parms[])
{
    if (PlayerInfo[playerid][xAdmin] < 6) return SendErrorMessage(playerid, "Niste u mogućnosti koristiti ovu komandu.");
    CreateGift(playerid);
    return 1;
}

CMD:otvoripoklon(playerid, parms[])
{
    if (!IsPlayerConnected(playerid)) return SendErrorMessage(playerid, "Niste se ulogovali.");
    if (!OpenGift(playerid)) return SendErrorMessage(playerid, "Trenutno nije moguće otvoriti poklon.");
    return 1;
}

Štancuješ odgovore na pomoć, @markosimic . Nema šta, munja nebeska si.


@Piricc Sto ceti dijakritici u komentarima i u SCM? Ako programiras na latinici. Dobro, ako ti nije ANSI videce se, ali ne znam jos nikog da kuca kod na latinicnoj tastaturi. A ovde si kucao bez dijakritika... :o
Poslednja Izmena: Januar 18, 2025, 00:56:15 PRE PODNE od Dragi

Citat: Dragi poslato Januar 18, 2025, 00:43:25 PRE PODNEŠtancuješ odgovore na pomoć, @markosimic . Nema šta, munja nebeska si.


@Piricc Sto ceti dijakritici u komentarima i u SCM? Ako programiras na latinici. Dobro, ako ti nije ANSI videce se, ali ne znam jos nikog da kuca kod na latinicnoj tastaturi. A ovde si kucao bez dijakritika... :o
Eto sad znaš nekog ko radi na latinicnoj tastaturi,jbg od početka sam navikao na to i nisam imao razloga da je mijenjam

Citat: Piricc poslato Januar 18, 2025, 09:43:24 PRE PODNEEto sad znaš nekog ko radi na latinicnoj tastaturi,jbg od početka sam navikao na to i nisam imao razloga da je mijenjam

Osim sto se latinicni karakteri popust Š Č Ć Ž Đ ne prikazuju.

Ako bih pricao sta je sve pogresno sa ovim nacinom pisanja code, bilo bi verovatno "svako pise code kako zeli" iako je pogresno vecinom vremena, od naminga do svega ostalog.

@Dragi a malo dosadno eto, da ne bude da samo pricamo, a nista ne pomazemo.

Inace jako mi je cudno gde stoji taj komentar jer ako sam pises code taj komentar ti apsolutno ne treba i uopste ne izgleda programerskog tipa, nego tutorijal tipa ili AI tipa...
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

Citat: markosimic poslato Januar 18, 2025, 10:44:02 PRE PODNEOsim sto se latinicni karakteri popust Š Č Ć Ž Đ ne prikazuju.

Ako bih pricao sta je sve pogresno sa ovim nacinom pisanja code, bilo bi verovatno "svako pise code kako zeli" iako je pogresno vecinom vremena, od naminga do svega ostalog.

@Dragi a malo dosadno eto, da ne bude da samo pricamo, a nista ne pomazemo.

Inace jako mi je cudno gde stoji taj komentar jer ako sam pises code taj komentar ti apsolutno ne treba i uopste ne izgleda programerskog tipa, nego tutorijal tipa ili AI tipa...
Ja znam da ovaj code nije nesto iz razloga jer sam jos uvijek pocetnik u skriptanju ali opet on radi,a sto se tice komentara ja sam to pisao iz razloga sto mi je lakse da se snadjem ja svaki kod koji radim pisem na taj nacin da pisem te komentare jer mi je lakse posle.Ja stvarno ne razumijem sta je toliki problem oko toga sto je kod pisan na taj nacin pa pobogu nije niko rodjen naucen da skripta ja to pisem na nacin na koji je meni lakse,Vecinu svojih sistema sam radio na takav princip i oni rade ono sto trebaju.Postujem vasa misljenja ali opet smatram da niko nije rodjen naucen...

Niko nije komentarisao to. Nekada koristis latinicu a nekada ne. Kazes jedno a prikaze se drugo. Zbunjujes @Dragi veoma
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

Citat: markosimic poslato Januar 18, 2025, 14:37:26 POSLE PODNENiko nije komentarisao to. Nekada koristis latinicu a nekada ne. Kazes jedno a prikaze se drugo. Zbunjujes @Dragi veoma

Naravno, nesto drugo se tu komentarise, al' hajde sad, nema veze. Ako mu je tako lakse, bujrum sto se kaze.

Ne da me je zbunio... 🤣 Znas kako se kaze, badava je dobro seme kad je rdjavo oranje.
Poslednja Izmena: Januar 18, 2025, 17:57:06 POSLE PODNE od Dragi

Citat: Dragi poslato Januar 18, 2025, 17:54:02 POSLE PODNENaravno, nesto drugo se tu komentarise, al' hajde sad, nema veze. Ako mu je tako lakse, bujrum sto se kaze.

Ne da me je zbunio... 🤣 Znas kako se kaze, badava je dobro seme kad je rdjavo oranje.
Pa dobro onda dajte ljudi recite gdje sve grijesim pa da popravim to

Citat: Piricc poslato Januar 18, 2025, 18:17:07 POSLE PODNEPa dobro onda dajte ljudi recite gdje sve grijesim pa da popravim to

https://balkan-samp.com/forum/index.php?topic=138667.0

Neka @Dragi prvo popise sve pa cu se nadovezati ali tehnicki sve imas gore na linku.
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

Joj, mi se salimo malo, nemoj ozbiljno shvatiti, ako jesi. ;D

Kao sto si rekao, vidi se da si pocetnik, sto nije nista strasno.

Potrudicu se da ti nabrojim kad si fino pitao:
  • Nedostatak break unutar switch
  • Nedostatak komentara
  • Razmotriti refaktorisanje koda
  • Scalability
  • Error handling
  • Naming

Potrebno je napomenuti da u PAWNu nisi obavezan koristiti break unutar switch naredbe. Jer to radi na principu if else. Napomenuo sam cisto da znas. Bez break, kod ce nastaviti izvrsavati sve slucajeve nakon prvog pogodjenog, sto moze dovesti do neocekivanih rezultata. Takodje, treba postojati podrazumevana vrednost osim konstantnih. Ako nijedan slucaj ne bude realizovan.
switch (izraz)
 {
    case 0: naredba1
    break;

    default: podrazumevana naredba;
    break;
}

Nedostatak komentara: Uvek je dobro dodati komentare iznad funkcija (sta ta funkcija radi), pojedinih varijabli zbog odrzavanje u buducnosti. Na kom jeziku? Najbolje bi bilo ako bi mogao na engleskom da kucas komentare. Jer ako nekad budes radio u nekom timu, svako moze procitati. To govorim i za imenovanje variabli, takodje. Opet, ako nisi u mogucnosti, nema problema da kucas na nasem za pocetak, bitno je da postoje komentari. Ne mnogo! Tutoriali su nesto deseto!

Refaktorisanje: Uvek je bolje imati 5 funkcija, nego sve strpati u jednu. Jedna funkcija treba da obavlja jedan posao i to je to.

Scalability: Kod je relativno skalabilan za tvoje trenutne potrebe, ali slobodno mozes poboljsati dodavanjem sistema za upravljanje poklonima, na primer.

Error handling: Kod ti sadrzi osnovne provere gresaka, ali se to uvek moze poboljsati dodavanjem dodatnih provera, poruka o gresci, logovanje itd. itd.

Dodatno: U programiranju postoji nesto sto se zove Konvencija imenovanja, preporucujem ti da procitas, @markosimic  ti je to napomenuo. Uzmi neku knjigu za C, C++ i uci polaHko. Gledaj video predavanja, na YT imas milion takvih. Ako si vec pitao, smatram da te to i zanima da ucis.


Ako uzmes u obzir ove sve moje preporuke, kod ce ti postati robusniji i laksi za odrzavanje.

P.S. Ako bas moram u for petlji pozivati funkciju, uvek cu gledati da to bude dobro optimizovano. :)
Poslednja Izmena: Januar 18, 2025, 19:01:26 POSLE PODNE od Dragi

Uglavnom da se nadovezem, u IRL expirience dok radis, preporuceno je sve da bude na engleskom u code, osim stringova naravno.

https://www.freecodecamp.org/news/how-to-write-clean-code/

Ovde sustinski imas sve, forsiraj se da ucis na engleskom a ne na nasem jeizku. Jednostavno je prakticnije za buducnost, sve je na engleskom i engleski treba znati.

Code koji pises treba da bude sto jednostavniji i sto prakticniji. Vodi se tom logikom pre svega.
Poslednja Izmena: Januar 18, 2025, 19:20:34 POSLE PODNE od markosimic
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.

Citat: markosimic poslato Januar 18, 2025, 19:19:22 POSLE PODNEUglavnom da se nadovezem, u IRL expirience dok radis, preporuceno je sve da bude na engleskom u code, osim stringova naravno.

https://www.freecodecamp.org/news/how-to-write-clean-code/

Ovde sustinski imas sve, forsiraj se da ucis na engleskom a ne na nasem jeizku. Jednostavno je prakticnije za buducnost, sve je na engleskom i engleski treba znati.

Code koji pises treba da bude sto jednostavniji i sto prakticniji. Vodi se tom logikom pre svega.

Zaboravih napomenuti code strukturu, odlicno da si se setio.  8)

Dobro bi mu dosao i nemacki da nauci, hehe.

Poslednja Izmena: Januar 18, 2025, 19:31:23 POSLE PODNE od Dragi

Citat: Dragi poslato Januar 18, 2025, 19:30:06 POSLE PODNEZaboravih napomenuti code strukturu, odlicno da si se setio.  8)

Dobro bi mu dosao i nemacki da nauci, hehe.



Ruski suka, ruski
HTML / CSS / Javascript / Inspect : Entry Masterclass.
ReactJS / Tailwind CSS / PWA / Axios / SCSS / Redux, ViteJS : Entry Masterclass.
C / C++ / C# / C-objective - kroz Pawn Lang : Entry Masterclass
Grupisano Pravljenje Objekata : Filterscript.


Sta je to web development?
To je nesto ono kao, kako bih to rekao, izgubis volju za zivotom i zelis da se ubijes, ali to je okej.
Onda jednostavno shvatis da si bio glup i resis problem, das sam sebi lajk,
skuvas NES 3u1 i pripremis se za sledeci projekat.