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
Pomoc
1,282
1,282
pregleda
17
17
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
pre 1 godinu
Ne mozes da nadjes nacin da fix nesto sto je jako banalno i prosto. Zato sto znas stvari napamet.
new Float:PoklonX, Float:PoklonY, Float:PoklonZ;
new PoklonObject;
new bool:PoklonCreated;
new const MAX_POKLONA = 50;
stock CreateGift(playerid)
{
new i;
for (i = 0; i < MAX_POKLONA; i++)
{
if (!PoklonCreated)
{
GetPlayerPos(playerid, PoklonX, PoklonY, PoklonZ);
PoklonX += 1.5;
PoklonY += 1.5;
PoklonZ += 0.5;
PoklonObject = CreateObject(19057, PoklonX, PoklonY, PoklonZ, 0.0, 0.0, 0.0);
PoklonCreated = 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 && GetDistanceBetweenPoints3D(x, y, z, PoklonX, PoklonY, PoklonZ) <= 3.0)
{
DestroyObject(PoklonObject);
PoklonCreated = false;
new reward = random(3);
switch (reward)
{
case 0:
{
GivePlayerMoney(playerid, 5000);
SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 5000$!");
}
case 1:
{
PlayerInfo += 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 < 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;
}
pre 1 godinu
markosimic wrote on January 17, 2025, 7:44 pm:
Ne mozes da nadjes nacin da fix nesto sto je jako banalno i prosto. Zato sto znas stvari napamet.
new Float:PoklonX, Float:PoklonY, Float:PoklonZ;
new PoklonObject;
new bool:PoklonCreated;
new const MAX_POKLONA = 50;
stock CreateGift(playerid)
{
new i;
for (i = 0; i < MAX_POKLONA; i++)
{
if (!PoklonCreated)
{
GetPlayerPos(playerid, PoklonX, PoklonY, PoklonZ);
PoklonX += 1.5;
PoklonY += 1.5;
PoklonZ += 0.5;
PoklonObject = CreateObject(19057, PoklonX, PoklonY, PoklonZ, 0.0, 0.0, 0.0);
PoklonCreated = 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 && GetDistanceBetweenPoints3D(x, y, z, PoklonX, PoklonY, PoklonZ) <= 3.0)
{
DestroyObject(PoklonObject);
PoklonCreated = false;
new reward = random(3);
switch (reward)
{
case 0:
{
GivePlayerMoney(playerid, 5000);
SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 5000$!");
}
case 1:
{
PlayerInfo += 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 < 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;
}
pre 1 godinu
markosimic wrote on January 17, 2025, 7:44 pm:
Ne mozes da nadjes nacin da fix nesto sto je jako banalno i prosto. Zato sto znas stvari napamet.
new Float:PoklonX, Float:PoklonY, Float:PoklonZ;
new PoklonObject;
new bool:PoklonCreated;
new const MAX_POKLONA = 50;
stock CreateGift(playerid)
{
new i;
for (i = 0; i < MAX_POKLONA; i++)
{
if (!PoklonCreated)
{
GetPlayerPos(playerid, PoklonX, PoklonY, PoklonZ);
PoklonX += 1.5;
PoklonY += 1.5;
PoklonZ += 0.5;
PoklonObject = CreateObject(19057, PoklonX, PoklonY, PoklonZ, 0.0, 0.0, 0.0);
PoklonCreated = 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 && GetDistanceBetweenPoints3D(x, y, z, PoklonX, PoklonY, PoklonZ) <= 3.0)
{
DestroyObject(PoklonObject);
PoklonCreated = false;
new reward = random(3);
switch (reward)
{
case 0:
{
GivePlayerMoney(playerid, 5000);
SendClientMessage(playerid, -1, "Otvorili ste kutiju i osvojili 5000$!");
}
case 1:
{
PlayerInfo += 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 < 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... 😮
pre 1 godinu
Dragi wrote on January 17, 2025, 11:43 pm:
Š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... 😮
@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... 😮
pre 1 godinu
Piricc wrote on January 18, 2025, 8:43 am:
Eto 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...
pre 1 godinu
markosimic wrote on January 18, 2025, 9:44 am:
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...
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...
pre 1 godinu
markosimic wrote on January 18, 2025, 1:37 pm:
Niko 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.
pre 1 godinu
Dragi wrote on January 18, 2025, 4:54 pm:
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.
Ne da me je zbunio... 🤣 Znas kako se kaze, badava je dobro seme kad je rdjavo oranje.
pre 1 godinu
Joj, mi se salimo malo, nemoj ozbiljno shvatiti, ako jesi. 😁
Kao sto si rekao, vidi se da si pocetnik, sto nije nista strasno.
Potrudicu se da ti nabrojim kad si fino pitao:
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.
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. 🙂
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. 🙂
pre 1 godinu
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.
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.
pre 1 godinu
markosimic wrote on January 18, 2025, 6:19 pm:
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.
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. 😎
Dobro bi mu dosao i nemacki da nauci, hehe.
pre 1 godinu
Dragi wrote on January 18, 2025, 6:30 pm:
Zaboravih napomenuti code strukturu, odlicno da si se setio. 😎
Dobro bi mu dosao i nemacki da nauci, hehe.
Dobro bi mu dosao i nemacki da nauci, hehe.
Ruski suka, ruski
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava