Lepo, cestitam na trudu i vremenu koje si proveo da napises ovaj tutorial, ali imam par zamerki. Nemoj da me shvatis pogresno, vec prijateljski. Znam da ti je prvi tutorial i to vrlo postujem.- Nije bas narocito jasan tutorial, trebalo je da citam sve kako bih dosao do onoga sto trazim
- Fali objasnjenja vise, sta koji deo koda izvrsava jer korostis posebnu logiku za cooldown
Sta sam uradio/poboljsao:- Promenio sam ime varijable za sadasnji armor. Uvek je bolje engleske nazive koristiti za te stvarcice.
- Poboljasnja struktura koda, jasniji komentari.
- Dodao sam logiku provere armora, dodatnu, da se armor ne moze povecati iznad 99.0.
Objasnjenje cooldowna:Kada igrac koristi komandu
/kupiarmor, trenutni timestamp se cuva u promenljivoj (u tvom slucaju,
armorCooldown[playerid]). Ova promenljiva se koristi za pracenje kada je igrac poslednji put koristio komandu.
Kada igrac pokusa da ponovo koristi komandu, sistem proverava razliku izmedju trenutnog vremena (dobijenog pomocu
gettime()) i vremena kada je poslednji put koriscena komanda (tj.
armorCooldown[playerId]).
Ako je razlika manja od definisanog cooldown-a (15 sekundi), igracu se salje poruka da mora sacekati pre nego sto ponovo koristi komandu.
Ako je proslo dovoljno vremena (15 sekundi), igrac moze koristiti komandu, a trenutni timestamp se ponovo postavlja na
armorCooldown[playerid], cime se resetuje cooldown.
Kako to izgleda u kodu:[pawn]
// Proveravamo cooldown
if (gettime() - armorCooldown[playerid] < 15)
{
new message[55]; // Deklaracija niza za poruku
new remainingTime = 15 - (gettime() - armorCooldown[playerid]); // Izracunavamo preostalo vreme
format(message, sizeof(message), "Sledecu kupovinu mozete izvrsiti za %d sekundi.", remainingTime); // Formiramo poruku
return SendClientMessage(playerid, -1, message); // Saljemo poruku igracu
}
[/pawn]
- gettime(): Ova funkcija vraca trenutni Unix Timestamp
- armorCooldown[playerid]: Ovo je vreme (Timestamp) kada je igrac poslednji put koristio komandu.
- gettime() - armorCooldown[playerId] < 15: Ova provera utvrdjuje da li je proslo manje od 15 sekundi od poslednjeg koriscenja komande.
- remainingTime: Ako je proslo manje od 15 sekundi, izracunava se preostalo vreme do sledece upotrebe komande i salje se poruka igracu.
Moj nacin kodiranja ove komande i sistema:[pawn]
CMD:kupiarmor(playerid, params[]) // Kreiramo komandu /kupiArmor
{
// Proveravamo cooldown
if (gettime() - armorCooldown[playerid] < 15)
{
new message[55]; // Deklaracija niza za poruku
new remainingTime = 15 - (gettime() - armorCooldown[playerid]); // Izracunavamo preostalo vreme
format(message, sizeof(message), "Sledecu kupovinu mozete izvrsiti za %d sekundi.", remainingTime); // Formiramo poruku
return SendClientMessage(playerid, -1, message); // Saljemo poruku igracu
}
new Float:currentArmor; // Varijabla koja sadrzi trenutni armor igraca
GetPlayerArmour(playerid, currentArmor); // Uzimamo trenutni armor i smestamo ga u varijablu
// Proveravamo da li igrac vec ima pun armor
if (currentArmor >= 99.0) return SendClientMessage(playerid, -1, "Vec imate pun armor."); // Poruka za pun armor
// Povecavamo armor i osiguravamo da ne predje maksimalnu vrednost
currentArmor += 50.0; // Povecavamo trenutni armor za 50
if (currentArmor > 99.0) currentArmor = 99.0; // Postavljamo na maksimalnu vrednost
SetPlayerArmour(playerid, currentArmor); // Postavljamo igracu novi armor
// Slanje poruka igracu
SendClientMessage(playerid, -1, "Uspesno ste kupili armor! +50.0"); // Potvrda o kupovini
SendClientMessage(playerid, -1, "Sledecu kupovinu mozete izvrsiti nakon 15 sekundi."); // Informacija o cooldown-u
armorCooldown[playerid] = gettime(); // Postavljamo trenutno vreme na varijablu cooldown
return 1; // Izadji ovde
}
[/pawn]
Nadam se da si razumeo o cemu govorim i opet kazem nemoj da me shvatis pogresno da sad ja odmah kritikujem, ovo, ono... Ovako opsirno ti niko ne bi napisao i ukazao na sitne propuste. Ja zaista cenim i postujem to sto si odvojio vreme i napravio tutorial.
Puno ti hvala sto cenis moje vreme i trud za tutorijal, prvi mi je pa sad tako je kako je. Hvala ti mnogo na kritikama, ja to obozavam jer uvek mogu da se poboljsam : D
Citat: 𓆩đɉꝋᵯłⱥ𓆪 poslato Mart 01, 2025, 16:25:15 POSLE PODNEPuno ti hvala sto cenis moje vreme i trud za tutorijal, prvi mi je pa sad tako je kako je. Hvala ti mnogo na kritikama, ja to obozavam jer uvek mogu da se poboljsam : D
Lepo. Molim i drugi put. Drago mi je što si razuman čovek i nisi odmah "aaa, džaaa, buuu, odmah me kritikuje"...
Smatrao sam da si okej i da ćeš prihvatiti to što govorim, zato sam i napisao. Bilo kome da pišem, ljudi treba da shvate da ja nemam ništa protiv njih, meni je drago kad neko napiše neki tutorial, objašnjenje, pomogne nekome. Tako i ja želim svojim iskustvom ili nekom konstruktivnom kritikom, komentarom, bilo čime pomoći tom nekome. Jer da ne komentarišemo, čemu bi služio ovaj forum. Treba da delimo svoja mišljenja na lep i civilizovan način, prijateljski. 8)
Citat: Dragi poslato Mart 01, 2025, 16:29:40 POSLE PODNELepo. Molim i drugi put. Drago mi je što si razuman čovek i nisi odmah "aaa, džaaa, buuu, odmah me kritikuje"...
Smatrao sam da si okej i da ćeš prihvatiti to što govorim, zato sam i napisao. Bilo kome da pišem, ljudi treba da shvate da ja nemam ništa protiv njih, meni je drago kad neko napiše neki tutorial, objašnjenje, pomogne nekome. Tako i ja želim svojim iskustvom ili nekom konstruktivnom kritikom, komentarom, bilo čime pomoći tom nekome. Jer da ne komentarišemo, čemu bi služio ovaj forum. Treba da delimo svoja mišljenja na lep i civilizovan način, prijateljski. 8)
naravno, uvek ali bas uvek treba biti otvorenog uma : D