Sveiki, turiu problemėlę nežinau iškarto ar čia pataikiau ar ne , jei ne nepykit moderatoriai, perkelkit temą. turiu klausimėlį.
COMMAND:sdrk ( playerid , params [ ] )
{
new
id,
darbo_pav [ 10 ],
msg [ 150 ];
if ( GetPVarInt ( playerid , "Admin" ) < 3 ) return 0;
if ( sscanf ( params , "us[10]" , id , darbo_pav ) ) return SendZin ( playerid , "[ NAUDOJIMAS ] : /sdrk [ Vardas_Pavardė ] [ Nuimti / Darbo pavadinimas ] " );
printf ( "id : %s darbo pav : %s ",id,darbo_pav);
if ( !IsPlayerConnected ( id ) ) return SendZin ( playerid , "[ >> ] Žaidėjas nėra prisijunges!" );
problema tame , kad printiną [17:26:41] id : ˙ darbo pav : nuimti , nors įrašau normaliai vardą ir to pasakoje raso zaidėjas neprisijungęs kame bėda?
SCmindė prieš 9 metus
Jeigu naudoji
if ( sscanf ( params , "is[10]" , id , darbo_pav ) )
veikia, bet tada reikia id rašyti.
Virsenas prieš 9 metus
Tikiuosi tu supranti, kad bandai patalpinti žaidėjo vardą į integer'į (kintamajį, kuris gali palaikyti tik skaičius) ?
if ( sscanf ( params , "us[10]" , id , darbo_pav ) ) return SendZin ( playerid , "[ NAUDOJIMAS ] : /sdrk [ Vardas_Pavardė ] [ Nuimti / Darbo pavadinimas ] " );
SCmindė prieš 9 metus
'u' palaiko tik skaičius, hmm pirmą karta girdžiu , gal kažka praleidau bet
u - User, takes a name, part of a name or an id and returns the id if they're connected.
The q, r, and u specifiers search for a user by name or ID
kiek suprantu tai u ieško vartotojo pagal jo vardą ar ID numerį?
Virsenas prieš 9 metus
printf ( "id : %s darbo pav : %s ",id,darbo_pav);
Susitvarkyk. Ir atnaujink į dabartinį kodą, nes visą laiką atsimint dabartinio kodo nesinori.
Virsenas prieš 9 metus
Nu tu tiesiog pabandyk pakeist tarp printf funkcijos ir pasižiūrėk ką printins. Nes nelabai tikisi, kad %s gali atspausdint integer'į.
Yiin prieš 9 metus
printf("%s", "Čia yra tekstas kurį gali sudaryti betkokie simboliai &%**% ir betkokie skaičiai, kurie taip pat yra TEKSTAS");
printf("%s", 65456); // čia yra SKAIČIUS, bet vietoj jo tau parašys nesamonę, nes tu sakai kad nori parodyti tekstą, kai iš tikro rodai skaičių
printf("%i", 65456); // čia yra skaičius, ir kadangi naudoji %i o ne %s, tau parodys normaliai skaičių.
- "123" yra tekstas
- 123 yra skaičius
- '1' yra simbolis
Kas dar neaišku?
Virsenas prieš 9 metus
O pabandei tiesiog kodą pakeisti taip, kaip sakiau ? Ar net nesinori pabandyt ?
Arba galima paaiškinti lengviau už Yiiin:
new skaicius; // %i
new tekstas[25]; // %s
new Float:koordinate; // %f
Virsenas prieš 9 metus
Kiekvienas tas "specifikatorius" atitinka tam tikrą reikšmę.
Norint atspausdinti tekstinį kintamajį, naudoji %s, norint atspausdinti tiesiog paprastą skaičių, naudoji %i. Ta sscanf vieta tave sumaišė, nes sscanf tiesiog nuskaitė tavo įrašytą tekstą, bet kintamasis nepasikeitė, jis vis tiek buvo integer'is (id). Lengviausia tiesiog pasižiūrėti kaip yra sukurtas kintamasis. Tavo id kintamasis yra sukurtas taip:
new id; // Tai jeigų tarkim norėtum parodyti šito kintamojo reikšmę žinutėje, reikėtų naudoti %i.
O visi kiti sukurti kintamieji (darbo_pav [ 10 ],msg [ 150 ]) yra masyvai, į kuriuos gali talpinti tekstą arba į kiekvieną index'ą po tam tikrą skaičių.
Iš kart visko nesuprasi. Man ankščiau irgi painiai atrodydavo.