FS Trucking

Započeo kaspersky, Novembar 27, 2024, 17:26:09 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.



Tema koju ste postavili nije po pravilima foruma.
Razlog zakljucavanja: Pravila

Molimo Vas da procitate glavna pravila foruma kao i pravila ovog podforuma.
Poslednja Izmena: Novembar 27, 2024, 22:02:40 POSLE PODNE od markosimic
ƘƛƧƤЄƦƧƘƳ

Čestitam na trudu.

Zašto koristiš č, ć, đ, š, ž u SendClientMessage ??

Greška:

Jedna od potencijalnih grešaka je u funkciji OnPlayerEnterDynamicCP, gde se proverava da li je checkpointid jednak PlayerCheckpoint[playerid]. Ova provera može biti suvišna jer se već proverava u uslovu if (checkpointid == PlayerCheckpoint[playerid] && PlayerTruckJob[playerid] > 0).

Čitljivost na zadovoljavajućem nivou, trebalo bi da dodaš više komentara.
Obrada grešaka je takođe
minimalna kao u prethodnoj FS za gate create.

Pitanje friendly:


Znaš li šta znači static i kako funkcioniše? Ona zadržava svoju vrednost između poziva f-ja. Kod tebe će znači name zadržati. Govorim o f-ji stock GetName(playerid). Ako više igrača poziva f-ju istovremeno, svi će dobiti istu vrednost imena, što garant nije ono što želiš?? Static ti nije thread safe da znaš. Ako se GetName pozove više puta, vrednost name će biti zamenjena.

Preporučujem ti sledeće:

stock GetName(playerid, name[], maxlen)
{
    GetPlayerName(playerid, name, maxlen);
}
Vidiš da koristim niz kao argument, znači ne treba mi return name.

Korišćenje:
new playerName[MAX_PLAYER_NAME];
GetName(playerid, playerName, sizeof(playerName));

Ovo će ti raditi ko Singer, slušaj Dragija.
SP

P.S. Ako hoćeš na tvoju vodenicu, evo ti sličan kod tvom.
stock GetName(playerid)
{
	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid, name, sizeof(name));
	return name;
}
Poslednja Izmena: Novembar 27, 2024, 18:09:41 POSLE PODNE od Dragi

Citat: Dragi poslato Novembar 27, 2024, 18:06:28 POSLE PODNEČestitam na trudu.

Zašto koristiš č, ć, đ, š, ž u SendClientMessage ??

Greška:

Jedna od potencijalnih grešaka je u funkciji OnPlayerEnterDynamicCP, gde se proverava da li je checkpointid jednak PlayerCheckpoint[playerid]. Ova provera može biti suvišna jer se već proverava u uslovu if (checkpointid == PlayerCheckpoint[playerid] && PlayerTruckJob[playerid] > 0).

Čitljivost na zadovoljavajućem nivou, trebalo bi da dodaš više komentara.
Obrada grešaka je takođe
minimalna kao u prethodnoj FS za gate create.

Pitanje friendly:


Znaš li šta znači static i kako funkcioniše? Ona zadržava svoju vrednost između poziva f-ja. Kod tebe će znači name zadržati. Govorim o f-ji stock GetName(playerid). Ako više igrača poziva f-ju istovremeno, svi će dobiti istu vrednost imena, što garant nije ono što želiš?? Static ti nije thread safe da znaš. Ako se GetName pozove više puta, vrednost name će biti zamenjena.

Preporučujem ti sledeće:

stock GetName(playerid, name[], maxlen)
{
    GetPlayerName(playerid, name, maxlen);
}
Vidiš da koristim niz kao argument, znači ne treba mi return name.

Korišćenje:
new playerName[MAX_PLAYER_NAME];
GetName(playerid, playerName, sizeof(playerName));

Ovo će ti raditi ko Singer, slušaj Dragija.
SP
Hvala na izdvojenom vremenu pregledavanjem koda, nisam testirao InGame nista, kod je pravljen na suho iz glave i koristenjem znanja.
Nisam skriptao skoro 2 godine pa sam se malo zanio.
Ko se razumi u Pawn jezik znat ce i sam to rijesiti i prilagoditi svojoj skripti.
LP
ƘƛƧƤЄƦƧƘƳ

Citat: kaspersky poslato Novembar 27, 2024, 18:11:02 POSLE PODNEHvala na izdvojenom vremenu pregledavanjem koda, nisam testirao InGame nista, kod je pravljen na suho iz glave i koristenjem znanja.
Nisam skriptao skoro 2 godine pa sam se malo zanio.
Ko se razumi u Pawn jezik znat ce i sam to rijesiti i prilagoditi svojoj skripti.
LP

Taman posla. Razumem sve. Eto, uhvatio sam malo vremena frei. ;D Kao što rekoh, svaka čast na trudu i nemoj da shvatiš moje kritike negativno. Drago mi je što si se potrudio i respect ako si tako radio. Ali kako je moja razredna govorila: "Uvek može bolje!". Ima štofa.

Citat: Dragi poslato Novembar 27, 2024, 18:14:10 POSLE PODNETaman posla. Razumem sve. Eto, uhvatio sam malo vremena frei. ;D Kao što rekoh, svaka čast na trudu i nemoj da shvatiš moje kritike negativno. Drago mi je što si se potrudio i respect ako si tako radio. Ali kako je moja razredna govorila: "Uvek može bolje!". Ima štofa.
moze bolje naravno :D radi optimizacije, string 'message' bi trebalo da ima 27 karaktera u komandi /trucker (new message[128];new message[27];).

Citat: 𐌃 𐌄 𐌍 𐌌 𐌋 𐌀 poslato Novembar 27, 2024, 18:23:34 POSLE PODNEmoze bolje naravno :D radi optimizacije, string 'message' bi trebalo da ima 27 karaktera u komandi /trucker (new message[128];new message[27];).


Ne videh to. U pravu si, ima dosta propusta, ali ako uzmemo u obzir da nije 2 godine programirao... Ne znam.

Citat: 𐌃 𐌄 𐌍 𐌌 𐌋 𐌀 poslato Novembar 27, 2024, 18:23:34 POSLE PODNEmoze bolje naravno :D radi optimizacije, string 'message' bi trebalo da ima 27 karaktera u komandi /trucker (new message[128];new message[27];).


Da bismo optimizovali kod u kontekstu promenljivih i optimizacije memorije, možeš koristiti new message[27]; u komandi /trucker samo ako si siguran da je dužina poruke uvek 27 karaktera. U suprotnom, ako poruka može biti duža od 27 karaktera, ne bi trebalo smanjivati veličinu niza.

Dakle, ako je tvoje pitanje da optimizuješ kod, evo nekoliko objašnjenja i mogućih rešenja:

Koristi manju veličinu niza ako znaš da je dužina poruke konstantna (27 karaktera).
Ako nije jasno koliko će poruka biti dugačka (dinamična dužina), bolje je ostaviti veću veličinu niza (npr. message[128];).
Evo kako bi to izgledalo u slučaju kada želiš da ograničiš veličinu niza na 27 karaktera, pretpostavljajući da komanda /trucker uvek šalje poruku sa 27 karaktera:

Optimized kod sa porukom od 27 karaktera:
CMD:trucker(playerid, params[])
{
    new message[27];  // Ovdje koristimo niz sa 27 karaktera

    // Postavite poruku (pretpostavljamo da je duzina poruke tacno 27 karaktera)
    strmid(message, "Poruka sa tacno 27 karaktera", 0, 27); // Primer poruke

    // Posaljite poruku igracu
    SendClientMessage(playerid, COLOR_GREEN, message);
    return 1;
}
Za dinamične poruke:
Ako dužina poruke nije fiksna, bolje je koristiti veći niz, kao što je message[128];, da bi mogao da pokriješ sve moguće slučajeve.

Dakle, ako znaš da poruka nikad neće biti duža od 27 karaktera, korišćenje new message[27]; može biti dobro za optimizaciju memorije. Međutim, ako dužina varira, bolje je da koristiš message[128]; ili neki drugi dovoljno veliki niz da bi bio siguran da se cela poruka može smestiti.

Da li to odgovara na tvoje pitanje o optimizaciji?
ƘƛƧƤЄƦƧƘƳ

Citat: kaspersky poslato Novembar 27, 2024, 20:08:04 POSLE PODNEDa bismo optimizovali kod u kontekstu promenljivih i optimizacije memorije, možeš koristiti new message[27]; u komandi /trucker samo ako si siguran da je dužina poruke uvek 27 karaktera. U suprotnom, ako poruka može biti duža od 27 karaktera, ne bi trebalo smanjivati veličinu niza.

Dakle, ako je tvoje pitanje da optimizuješ kod, evo nekoliko objašnjenja i mogućih rešenja:

Koristi manju veličinu niza ako znaš da je dužina poruke konstantna (27 karaktera).
Ako nije jasno koliko će poruka biti dugačka (dinamična dužina), bolje je ostaviti veću veličinu niza (npr. message[128];).
Evo kako bi to izgledalo u slučaju kada želiš da ograničiš veličinu niza na 27 karaktera, pretpostavljajući da komanda /trucker uvek šalje poruku sa 27 karaktera:

Optimized kod sa porukom od 27 karaktera:
CMD:trucker(playerid, params[])
{
    new message[27];  // Ovdje koristimo niz sa 27 karaktera

    // Postavite poruku (pretpostavljamo da je duzina poruke tacno 27 karaktera)
    strmid(message, "Poruka sa tacno 27 karaktera", 0, 27); // Primer poruke

    // Posaljite poruku igracu
    SendClientMessage(playerid, COLOR_GREEN, message);
    return 1;
}
Za dinamične poruke:
Ako dužina poruke nije fiksna, bolje je koristiti veći niz, kao što je message[128];, da bi mogao da pokriješ sve moguće slučajeve.

Dakle, ako znaš da poruka nikad neće biti duža od 27 karaktera, korišćenje new message[27]; može biti dobro za optimizaciju memorije. Međutim, ako dužina varira, bolje je da koristiš message[128]; ili neki drugi dovoljno veliki niz da bi bio siguran da se cela poruka može smestiti.

Da li to odgovara na tvoje pitanje o optimizaciji?
naravno, upravu si, ali ja bih rekao isto da treba 128 karaktera ako bi negde u funkciji bilo potrebno 128 karaktera, dok je ovde dovoljno 27.

Citat: kaspersky poslato Novembar 27, 2024, 20:08:04 POSLE PODNEDa bismo optimizovali kod u kontekstu promenljivih i optimizacije memorije, možeš koristiti new message[27]; u komandi /trucker samo ako si siguran da je dužina poruke uvek 27 karaktera. U suprotnom, ako poruka može biti duža od 27 karaktera, ne bi trebalo smanjivati veličinu niza.

Dakle, ako je tvoje pitanje da optimizuješ kod, evo nekoliko objašnjenja i mogućih rešenja:

Koristi manju veličinu niza ako znaš da je dužina poruke konstantna (27 karaktera).
Ako nije jasno koliko će poruka biti dugačka (dinamična dužina), bolje je ostaviti veću veličinu niza (npr. message[128];).
Evo kako bi to izgledalo u slučaju kada želiš da ograničiš veličinu niza na 27 karaktera, pretpostavljajući da komanda /trucker uvek šalje poruku sa 27 karaktera:

Optimized kod sa porukom od 27 karaktera:
CMD:trucker(playerid, params[])
{
    new message[27];  // Ovdje koristimo niz sa 27 karaktera

    // Postavite poruku (pretpostavljamo da je duzina poruke tacno 27 karaktera)
    strmid(message, "Poruka sa tacno 27 karaktera", 0, 27); // Primer poruke

    // Posaljite poruku igracu
    SendClientMessage(playerid, COLOR_GREEN, message);
    return 1;
}
Za dinamične poruke:
Ako dužina poruke nije fiksna, bolje je koristiti veći niz, kao što je message[128];, da bi mogao da pokriješ sve moguće slučajeve.

Dakle, ako znaš da poruka nikad neće biti duža od 27 karaktera, korišćenje new message[27]; može biti dobro za optimizaciju memorije. Međutim, ako dužina varira, bolje je da koristiš message[128]; ili neki drugi dovoljno veliki niz da bi bio siguran da se cela poruka može smestiti.

Da li to odgovara na tvoje pitanje o optimizaciji?

Druze, sta ti pises? To ti je covek sve i rekao? Pises sta mozemo uraditi u mnozini, a sve ti receno? Gde ti duzina varira?

CitatDakle, ako je tvoje pitanje da optimizuješ kod, evo nekoliko objašnjenja i mogućih rešenja:
Kakvo crno pitanje, ko ti je postavio pitanje? Boze, Petra.

Koliko ti ovaj string sadrzi karaktera? "Izaberite rutu (1-%d):"  Za ovaj string dovoljno je 25 karaktera! Ukljucujuci tvoje rute i null terminator. Kakvo crno variranje stringa do 128 karaktera? Ako se bojis variranja, metni ga na 30 i mirna kuca. Sta blebeces, svega ti? Sta  ce ti strmid ovde? Reci mi iskreno, pises li ti sam ovo ili AI?
Poslednja Izmena: Novembar 27, 2024, 21:57:17 POSLE PODNE od Dragi