Peršokti į turinį

[ INFO ]sscanf custom speciferių naudojimas.


SCmindė

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3336 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, aš buvau susidūręs su problema dėl sscanf naudojimo, naudodamas tokius speciferius kaip u,r ( išgauti žaidėjo vardui ) tiesiog neveikdavo, t.y veikdavo tik kaip įrašydavau žaidėjo ID numerį. Daug klausinėjau ir galų gale sutvarkiau naudodamas sscanf custom specifier. 

 

[ ! ] Kodas

// Custom sscanf specifier for searching through player names
// The default one doesn't find "def" in [ABC]Def.
SSCANF:player_name(string[]) {
	new foundplayer = INVALID_PLAYER_ID, name[MAX_PLAYER_NAME];
	new bool:numeric = true;
	
	for (new i = 0, c; (c = string[i]); i++) {
		if (c < '0' || c > '9') {
			numeric = false;
			
			break;
		}
	}
	
	if (numeric) {
		foundplayer = strval(string);
		
		if (IsPlayerConnected(foundplayer))
			return foundplayer;
		else
			foundplayer = INVALID_PLAYER_ID;
	}
	
	foreach(new playerid : Player) {
		GetPlayerName(playerid, name, sizeof(name));
		
		if (strfind(name, string, true) != -1) {
			if (foundplayer != INVALID_PLAYER_ID)
				return INVALID_PLAYER_ID; // Multiple matches
			else
				foundplayer = playerid;
		}
	}
	
	return foundplayer;
}

Dabar tarkim vietoi 

sscanf(params,"u",id)

Naudoju:

sscanf(params, "k<player_name>", id)

[ ! ] Pabaiga

Aš neliepiu dabar staigiai pereiti prie tokio kodo, tiesiog šitos temos esmė buvo tam, kad jeigu yra koks žmogus kuris susidūrė su tokia problema kaip mano nevargtu tiek daug ,dauguma liks prie kitų specifikatorių, bet man jie neveikdavo.

 

[ ! ]Šaltiniai

https://github.com/Y-Less/sscanf/wiki/%22k%22-Specifier

http://forum.sa-mp.com/showpost.php?p=1839718

Redaguota , nario SCmindė
Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 2 savaičių...

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3336 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...