Skripta koju koristim: UnderPoint RP v0.1
Detaljan opis problema: Ovako, posto sam nacuo, a i sam se uverio da na UPu ima bug kada upises znak % u input dialog server padne. Pa me zanima da li je moguce napraviti proveru oko znaka %, da ne mogu da ga upisem u dialog.. Hvala unapred na pomoci :)
Dio skripte: Treba to meni ..
Neke slike/video za lakse dobivanje pomoci(neobavezno): ///
neophono je koristisi %s da bi ispisao nick igraca
Znak % se koristi uopste u radu sa stringovima, takodje, koristi se u radu sa brojevima %d, %i koji trebaju da se ispisu. Ovaj znak ne mozes koristiti u SendClientMessage f-ji, pa je potrebno da ga formatiras kroz string i dobijes vrednost, kasnije da bi prikazao tu vrednost mozes ga ispisati u SendClientMessage f-ji
Primer:
new string[256];
format(string,sizeof(string),"Igracevo ime je %s",GetPlayerName(playerid));
SendClientMessage(playerid,-1,string);
Takodje mozes ga koristiti i za operacije koje imaju iza sebe ostatak (deljenje "/")
Ne , ne razumete :D Znam za sta se koristi %. Ali , igrac da ne sme da upise znak % u input dialoge :D
Aha kapiram, znaci igrac ne sme da unese takav znak (%) jer se desi nesto sto ne bi trebalo. Oke, reci samo sta se desi i posalji nam dialoge u kojima se to pojavljuje. Sigurno ima neka provera za unos tog znaka
Ovako. Posto je nacin spremanja PW-a udb_hash-ovan, kada igrac upise % u register dialog, server padne .. :) Znaci srw uvek padne cim se upise % u register diaalog
switch (dialogid)
{
case DIALOG_REGISTER:
{
if(!response) return Kick(playerid);
if(response)
{
if(strlen(inputtext) < MIN_DUZINA_LOZINKE)
{
new regstring[512], regname[64]; GetPlayerName(playerid,regname,sizeof(regname));
format(regstring,sizeof(regstring),"{FFFFFF}Dobrodosli "SPLAVA"%s,\n\n{FFFFFF}Molimo vas da unesete zeljenu lozinku\nkako biste zapoceli registraciju.\nKada upisete zeljenu lozinku,\nbice vam prikazan intro.\n\nUzivajte igrajuci na nasem serveru",regname);
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{FFCC00}Rregister",regstring,"Registracija","Izlaz");
SCM(playerid,-1,"{FFCC00}[BV:RP]:{FFFFFF} Lozinka mora imati vise od 6 znakova.");
}
else if(strlen(inputtext) > MAX_DUZINA_LOZINKE)
{
new regstring[512], regname[64]; GetPlayerName(playerid,regname,sizeof(regname));
format(regstring,sizeof(regstring),"{FFFFFF}Dobrodosli "SPLAVA"%s,\n\n{FFFFFF}Molimo vas da unesete zeljenu lozinku\nkako biste zapoceli registraciju.\nKada upisete zeljenu lozinku,\nbice vam prikazan intro.\n\nUzivajte igrajuci na nasem serveru",regname);
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{FFCC00}Register",regstring,"Registracija","Izlaz");
SCM(playerid,-1,"{FFCC00}[BV:RP]:{FFFFFF} Lozinka ne sme imati vise od 14 znakova.");
}
else if(strlen(inputtext) >= MIN_DUZINA_LOZINKE && strlen(inputtext) <= MAX_DUZINA_LOZINKE)
{
new INI:File = INI_Open(Korisnici(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Password",udb_hash(inputtext));
INI_WriteInt(File,"Cash",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Ubistava",0);
INI_WriteInt(File,"Smrti",0);
INI_WriteInt(File,"Level",1);
INI_WriteInt(File,"Supporter",0);
INI_WriteInt(File,"Skin",0);
INI_WriteInt(File,"Godine",0);
INI_WriteInt(File,"Drzava",0);
INI_WriteInt(File,"Pol",0);
INI_WriteInt(File,"Tutorial",0);
INI_WriteInt(File,"Email",0);
INI_WriteInt(File,"Lider",0);
INI_WriteInt(File,"Clan",0);
INI_WriteInt(File,"Rank",0);
INI_WriteInt(File,"Mutiran",0);
INI_WriteInt(File,"NovacBanka",0);
INI_WriteInt(File,"Warn",0);
INI_WriteInt(File,"BankovniRacun",0);
INI_WriteInt(File,"Zatvor",0);
INI_WriteInt(File,"ZatvorenVreme",0);
INI_WriteInt(File,"Respekti",0);
INI_WriteInt(File,"UhapsenPuta",0);
INI_WriteInt(File,"Droga",0);
INI_WriteInt(File,"Mats",0);
INI_WriteInt(File,"PayDayPoeni",0);
INI_WriteInt(File,"SatiIgre",0);
INI_WriteInt(File,"IznosRate",0);
INI_WriteInt(File,"IznosKredita",0);
INI_WriteInt(File,"PreostaloZaOtplatu",0);
INI_WriteInt(File,"ADozvola",0);
INI_WriteInt(File,"KamionDozvola",0);
INI_WriteInt(File,"AvionDozvola",0);
INI_WriteInt(File,"MotorDozvola",0);
INI_WriteInt(File,"BrodDozvola",0);
INI_WriteInt(File,"GunDozvola",0);
INI_WriteInt(File,"PosedovanjeFirme",-1);
INI_WriteInt(File,"Mobilni",0);
INI_WriteInt(File,"Imenik",0);
INI_WriteInt(File,"MobKredit",0);
INI_WriteInt(File,"Cigare",0);
INI_WriteInt(File,"Upaljac",0);
INI_WriteInt(File,"Kanap",0);
INI_WriteInt(File,"Naocare",0);
INI_WriteInt(File,"Sat",0);
INI_WriteInt(File,"BorbeniStil",4);
INI_WriteInt(File,"Posao",0);
INI_WriteInt(File,"Hrana",0);
INI_WriteInt(File,"PosedovanjeKuce",-1);
INI_WriteInt(File,"ProveraSpawna",0);
INI_WriteInt(File,"Rent",-1);
INI_WriteInt(File,"PosedovanjeStana",-1);
INI_WriteInt(File,"PosedovanjeVikendice",-1);
INI_WriteInt(File,"OrgUgovor",0);
INI_WriteInt(File,"PosaoUgovor",0);
INI_WriteInt(File,"PosedovanjeAuta",-1);
INI_WriteInt(File,"DzeparosVreme",0);
INI_WriteInt(File,"PosedovanjeMotora",-1);
INI_WriteInt(File,"Kaciga",-1);
INI_WriteInt(File,"PosedovanjeBicikla",-1);
INI_WriteInt(File,"PosedovanjeAviona",-1);
INI_WriteInt(File,"PosedovanjePlovila",-1);
INI_Close(File);
new string[128];
format(string,sizeof(string),""ZUTA"{FFCC00}[BV:RP] "BELA"Registracija je uspesna.Vasa lozinka je: "SPLAVA"%s",inputtext);
SCM(playerid,-1,string);
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_LIST, "{FFCC00}POL", "{0066FF}- {FFFFFF}Musko\n{0066FF}- {FFFFFF}Zensko", "Dalje", "Odustani");
}
}
}
BUMP !