Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: lv poslato Maj 17, 2016, 01:42:51 PRE PODNE

Naslov: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: lv poslato Maj 17, 2016, 01:42:51 PRE PODNE
Prethodna tema je zakljucana od strane administratora, ne znam zasto i onako sam hteo da je update-ujem...
I mislim da bi ovu temu trebalo staviti sticky jer nisam video nijedan ovakav tutorijal, a mnogo ljudi se muci sa UP modom, jer je, da se ne lazemo jedan od najkoriscenijih danas.



Pozdrav, vidim da se mnogo vas pati sa UP modom, i pita koji su bagovi za obaranje servera i tih stvarcica.. Ja sam uspeo da pronadjem za sada 4 BAG-a ! A to su
Update: 16.05.2016: Pronadjena su jos 4 nova bag-a, a ima ih jos mnogo.

1. Znak % u input dialozima
2. Duzina lozinke veca od 24 simbola/znaka/slova
3. Boja vozila => 9999 9999
4. /prome(je)nipass
5. SCMF funkcija
6. Stockovi koji se nigde ne koriste
7. Gunshop
8. Infinite string

Potrebno nam je
UnderPoint Mod :D

Pa da krenemo sa popravkama...
Prvo radimo znak % .. Nemojte odmah misliti da trebate ispod svakog dialoga da pravite provere da li je upisan znak % , ili tako nesto.. Vec samo pod OnDialogResponse trebate staviti jednu jedinu proveru.. Evo ovako izgleda

if(strfind(inputtext, "%", true) != -1) // Ukoliko u dialogu server pronadje znak %, sta da radi
{
    SCM(playerid, -1, " Nema ovde obaranja, cibe"); // Salje mu bezobraznu poruku
        return 1;
}

I eto, to je jedan bag ... Sada krenimo na drugi
Duzina lozinke.. Takodje, samo trebate promeniti jedan broj :)
Nadjite na UP modu

MAX_DUZINA_LOZINKE

Kada ste nasli to, iza MAX_DUZINA_LOZINKE pise vam broj 26.. Jednostavno, promenite na neki manji broj.. Recimo 14-15 .. I tako igrac vise nece moci da upise vise od 14 znakova, i server nece pasti...
Ok, idemo na finalni bag, koji sam ja uspeo da nadjem.. A to je da stavite boju vozila na 9999 9999... Takodje, tu samo jedna linija resava problem, ali morate u svim dialozima za farbanje vozila dodati ovo

if(boja[0] >= 255|| boja[0] <= 0 || boja[1] <= 0 || boja[1] >= 255) return SCM(playerid,-1, "Ne mozes koristiti taj ID");

To jednostavno dodajte ispod svakog dialoga za farbanje vozila...
UPDATE: Hvala Levu-u za ovo...
Sledeci bug je /promjenipass, /promenipass .. I tamo morate odraditi ovo.. Dakle, u Up modu nadjite ovo

if(strlen(params) > 26) return SCM(playerid, -1, ""CRVENA"[GRESKA] "SIVA"Lozinka je previse dugacka (Max 26 znakova)!");

Jednostavno, promenite u ovo

if(strlen(params) > 14) return SCM(playerid, -1, ""CRVENA"[GRESKA] "SIVA"Lozinka je previse dugacka (Max 14 znakova)!");

Eto, to je to :) To su svi bagovi koje sam ja uspeo da nadjem, ne kazem da su svi, mozda ima jos koji, ali to su najpoznatiji :)
* UPDATE *
16.05.2016.
Istrazivao sam jos malo skriptu, raspitivao se i pronasao jos koji bag. ;)

Pa pocnimo. Prvi novi bag je SCMF.
Stock SCMF koji koristite i sada na UP modu je prestar i naravno nije skroz kompatibilan sa YCMD i ZCMD... Pa tako kada ukucate 2-3 puta /spodesavanja server ce pasti jer je ta komanda pisana u SCMF.. Sada zamislite da imate server od 20+ igraca i da svako ukuca komandu koja ima SCMF u sebi.. Server puca EZ.
RESENJE: Koristite string umesto SCMF, jeste duze, ali bolje da vam server radi neko da pada.

Drugi bug su stockovi koji se nigde ne koriste. Ja sam ih pronasao tri
Stock stock Log(file[], string[])
forward SendAdminMessage(color, string[]);
stock PointOverString

Nisam siguran da li ovi stock-ovi i forwardi imaju sta sa padanjem servera, ali nisu nigde iskorisceni stoga sam ih uracunao kao nepotrebne u skripti...

Treci bug je gunshop.. Jedan prijatelj preko fejsa, ophion, mi je rekao za ovaj bag.. Nisam mogao da verujem, ali tacno je...
Kada se za kratko vise puta u gunshopu kuca /kupi server ce pasti. Ne znam zasto... Pokretao sam SAMP sandboxed i sa 3 razlicita profila sam ovo uradio i server je uvek pao.
RESENJE: Na zalost, ne znam stvarno kako bih ovo resio... Ali imam neka privremena resenja...
Obrisite gunshop biz i neka vam gunshop bude obican interijer kao opstina..
Koristite /save da dobijete koordinate mesta gde zelite da se kupuje oruzje i koristite IsPlayerInRangeOfPoint(playerid, 3.0, x, y, z); umesto provere da li je blizu izlaza firme.

Poslednji bug u update-u je infinite string... Da... Nisam verovao da ima [cenzura] koje ovo da rade, ali eto, klince i ljubomorne budale nista ne zaustavlja od rusenja tudjeg truda.. Znaci kada neko unese, pazite sad... 32952 karaktera u input dialog server puca... Nisam siguran kako to rade, verovatno ima na internetu negde samo copy...
RESENJE: Samo pod OnDialogResponse napravite proveru da ukoliko npr. igrac upise vise od 24 karaktera bude SCM(playerid, -1, "ne mozes vise od 32 karaktera bla bla"); ili tako nesto..

To je to sto se tice update-a 16.05.2016. Ukoliko vi znate neki bug ne budite ... znate vec sta... recite da i drugi znaju kako bih mogao ja napisati u temu.. Creditsi ce vam biti dati.. Zasto da dopustimo da ljubomorni klinci ruse tudji trud.. Da se razumemo, nema servera koji danas ne koristi UP mod i koji se ne zajebava sa ovim bagovima.

Credits: Rooky, Paolo , Levu, Ophion
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: Levu poslato Maj 17, 2016, 11:11:15 PRE PODNE
Stavis kao Lukenzi na BE/LV da se komande mogu koristiti svake 2s i eto reseno /kupi.
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: Łuk@ poslato Maj 17, 2016, 11:18:44 PRE PODNE
thanks :p
EDIT: 'Ja sam ih pronasao tri" bice vise xD ima ih vise od 20 napisacu ti na fejs :3
@Lazarevic
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: Levu poslato Maj 17, 2016, 11:20:08 PRE PODNE
Evo ti

http://pastebin.com/FMSf9XUH

Definisi samo Error ili prebaci u SCM :D
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: Łuk@ poslato Maj 17, 2016, 11:31:47 PRE PODNE
 @Levu  http://pastebin.com/S17dXaM3 :)
EDIT:ja imam jednostavniju funkciju od te za text
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: lv poslato Maj 17, 2016, 11:49:18 PRE PODNE
Pronasao sam alternativno resenje za one koje mrzi da menjaju SCMF u format. Imate Y_Less-ov y_va, updatujem temu.

Nemam perm da editujem temu. Kako god, za SCMF koristite ovo
Na vrh skripte dodajte

#include <YSI\y_va>


I medju stockove ovo


SCMF(playerid, colour, format[], va_args<>)
{
    new out[384];
    va_format(out, sizeof (out), format, va_start<3>);
    SendClientMessage(playerid, colour, out);
    return 1;
}
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: Łuk@ poslato Maj 17, 2016, 12:16:41 POSLE PODNE
Komanda /podesinovac ima bug > http://prntscr.com/b51sdn
umesto playerid target :)
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: GoodbyeSamp poslato Maj 19, 2016, 13:38:25 POSLE PODNE
Zanimljivo :)
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: GoodbyeSamp poslato Maj 19, 2016, 13:41:06 POSLE PODNE
Extazy je lepo optimizovan sve pogledajte tu i to vam je to :)
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: Muma poslato Maj 19, 2016, 14:42:48 POSLE PODNE
Fino objasnjeno, ali to bi svaki skripter trebao da rijesi bez ove pomoci koji pokusava od UPa da napraviti nesto... :)
Naslov: Odg: [TuT] UPDATED - Popravljanje bagova za obaranje na UPu
Poruka od: lv poslato Maj 19, 2016, 15:17:12 POSLE PODNE
Naravno da bi trebao.. Ali malo pomoći nikome neće loše biti... Da. BExtazy takodje moze da posluži za fix nekih bagova.