String without a lenght


Započeo ShomY071, Jun 05, 2018, 18:00:19 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): Sve ima dole, gledao sam na netu nesto al idalje ne kapiram do cega je :P...
Dio skripte:
    if(dialogid == DIALOG_ORG)
	{
		new org;
	    if(!response) return 1;
	    if(sscanf(inputtext,"i",org)) return ShowPlayerDialog(playerid, DIALOG_ORG, 1, ""C_BELA"Uredjivanje", ""C_BELA"Unesite ID bande koju zelite urediti", "Dalje", "Odustani");
	    new oFile[50];
		format(oFile, sizeof(oFile), ORGE, org);
    	if(!fexist(oFile))return ShowPlayerDialog(playerid, DIALOG_ORG, 1, ""C_BELA"Banda ne postoji", ""C_BELA"Unesite ID bande koju zelite urediti", "Dalje", "Odustani");
		orga[playerid]=org;
		SPD(playerid, ORG_IME, DIALOG_STYLE_INPUT, "Ime Organizacije", "Unesite zeljeno ime:","Odaberi","Odustani");
	}
    if(dialogid == ORG_IME)
	{
	    new ime[128];
		if(!response) return 1;
	    if(sscanf(inputtext,"s",ime)) return ShowPlayerDialog(playerid, ORG_IME, 1, ""C_BELA"Promena imena", ""C_BELA"Unesite novo ime bande", "Uredu", "Odustani");
	    if(strlen(ime) < 1) return SCM(playerid,CRVENA,"Ime mora sadrzavati minimalno jedno slovo!");
		SCM(playerid,-1,"{00C0FF}Ime je postavljeno!");
		SPD(playerid, ORG_IMERANKA1, DIALOG_STYLE_INPUT, "Imena Rankova", "Unesite zeljeno ime za rank 1\n","Dalje","Odustani");
		new string[128];
    	strmid(OrganizacijaInfo[orga[playerid]][Name],ime,0,strlen(ime),255);
    	SaveORG(orga[playerid]);
    	DestroyDynamic3DTextLabel(GangLabel[orga[playerid]]);
    	format(string,sizeof(string),"Organizacija: "C_BELA"%s\nLider 1: "C_BELA"%s\nLider 2: "C_BELA"%s",OrganizacijaInfo[orga[playerid]][Name], Leader[0][orga[playerid]], Leader[1][orga[playerid]]);
    	GangLabel[orga[playerid]] = CreateDynamic3DTextLabel(string,SERVERBOJA,OrganizacijaInfo[orga[playerid]][uX],OrganizacijaInfo[orga[playerid]][uY],OrganizacijaInfo[orga[playerid]][uZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 15.0);
	}
    if(dialogid == ORG_IMERANKA1)
	{
	    new ime[128];
		if(!response) return 1;
		if(sscanf(inputtext,"s",ime)) return SPD(playerid, ORG_IMERANKA1, DIALOG_STYLE_INPUT, "Imena Rankova", "Unesite zeljeno ime za RANK 1", "Dalje", "Odustani");
        SPD(playerid, ORG_IMERANKA2, DIALOG_STYLE_INPUT, "Imena Rankova", "Unesite zeljeno ime za RANK 2", "Dalje", "Odustani");
		strmid(OrganizacijaInfo[orga[playerid]][Rank1],ime,0,strlen(ime),255);
		SCMF(playerid,-1,"{00C0FF}Ime %s je postavljeno za RANK 1!", ime);
	    SaveORG(orga[playerid]);
	}

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
[17:53:38] sscanf warning: Strings without a length are deprecated, please add a destination size.
[17:53:45] sscanf warning: Strings without a length are deprecated, please add a destination size.

Slika/video ingame problema(obavezno ako je ingame problem): Mislim da mi se zbog toga ne prikazuje sledeci dialog
Poslednja Izmena: Jun 09, 2018, 14:26:39 POSLE PODNE od Bašovski

umjesto "s"
stavi "s[128]" u 2. parametru kod sscanf


bilo je lijepo dok je trajalo.


Nisi stavio string value kod sscanf parametra. Uradi kao sto je rekao Bašovski iznad.
Third-party Pawn Developer

Oke jesam, jedno pod pitanje (cisto informativno xD)

ako stavim
new text[256];
i onda u proveri string s stavim 100, da li to smanjuje optimizaciju(tj da li ima potrebe onda pod new da stoji 256)? Ili su to 2 razlicite stvari i nema veze

if(sscanf(params, "s[100]",tekst)) return Koristi(playerid, "b [tekst]");

new text[256]; to 256 ti je array mozes pronaci na netu detaljno objasnjenje arraya to ti je u biti velicina stringa.
Third-party Pawn Developer

Ne optimizuje, bespotrebno ti je onda 156 cellova koje ti array zauzima. Za unos ti je limit 128 simbola, tako da bilo sta preko 128 ti je bespotrebno.


bilo je lijepo dok je trajalo.