Peršokti į turinį
Pyazo

[PAMOKA] SSCANF naudojimas

Recommended Posts

Sveiki, šį kartą parodysiu kaip reikia tinkamai naudoti sscanf include ir pluginą, kuris leidžia išties daug.

Pirmiausia parsisiųskime viską iš čia:

www.forum.sa-mp.com

Na visų pirma pasakysiu kuo skiriasi ZCMD nuo strcmp:

ZCMD - yra daug greitesnė už strcmp.

strcmp - komanda pradedama su: if (strcmp("/mycommand", cmdtext, true, 10) == 0)

ZCMD - komanda pradedama su: CMD:mycommand(playerid, params[])

Taip pat strcmp galima naudoti tik po public OnPlayerCommandText(playerid, cmdtext[]) callback'o, o ZCMD galima naudoti bet kurioje vietoje.

Dabar parodysiu įvairias ZCMD komandų galimybes ir privalumus. Susikurkime paprastą komandą:

COMMAND:supergames( playerid, params[ ] )
{
  #pragma unused params
  print( " Sveiki supergames nariai " );
  return true;
}

Aptarkime komandą.

COMMAND:supergames( playerid, params[ ] )

Turbūt suprantate,kad pasirinkta komandą yra "supergames",o parametrai yra playerid, params.

#pragma unused params

Yra naudojama numalšinti ( sunaikinti ) parametra params.

Jo dabar nenaudojame,todėl mums jis nereikalingas.

print( " " );

Kaip jau iš pavadinimo,galima suprasti yra naudojama kažką atspausdinti,šiuo atveju į consoles langą ( cout ).

Gerai maždaug jau suprantame,kas yra greitųjų komandų procesurius.

Na, o dabar pakalbėkime apie sscanf.

Taigi sscanf naudojama plačiai,bet labiausia tai naudojama kartu su komandomis,o zcmd ir sscanf toks jausmas, kad jie yra sukurti vienas kitam..

Gerai sukurkime paprastą komandą.

Šiai komanda naudosime sscanf parametra "r" tai yra naudojama žaidėjams.

COMMAND:supergames( playerid, params[ ] )
{
  new
      ID
  ;
  if( sscanf( params, "r", ID ) )
      return SendClientMessage( playerid, -1 ," Naudojimas: /supergames [ Nick/ID ] " );
  if( !IsPlayerConnected( ID ) )
     return SendClientMessage( playerid, -1 ,"Žaidëjas nėra prisijungęs! " );


   SendClientMessage( playerid, -1 ," Komanda sėkmingai atlikta! " );

   SendClientMessage( ID, -1 ," Jūs gavote zcmd komandą! " );
   return true;
}

Komanda sukurta, dabar aptarkime kodėl naudojame "r" raidę ir kam jos reikia.

Specifier(s) Name Example values

i, d Integer 1, 42, -10

c Character a, o, *

l Logical true, false

b Binary 01001, 0b1100

h, x Hex 1A, 0x23

o Octal 045 12

n Number 42, 0b010, 0xAC, 045

f Float 0.7, -99.5

g IEEE Float 0.7, -99.5, INFINITY, -INFINITY, NAN, NAN_E

u User name/id (bots and players) Y_Less, 0

q Bot name/id ShopBot, 27

r Player name/id Y_Less, 42

Naudojant enumus:

e - Start of the "enum" type

< - Starts the specification of the structure of the enum

i - An integer, corresponds with E_DATA_C

f - A float, corresponds with E_DATA_X

s[32] - A 32 cell string, corresponds with E_DATA_NAME

c - A character, corresponds with E_DATA_Z

> - End of the enum specification

All specifiers:

Format Use

L(true/false) Optional logical truthity

l Logical truthity

B(binary) Optional binary number

b Binary number

N(any format number) Optional number

n Number

C(character) Optional character

c Character

I(integer) Optional integer

i Integer

D(integer) Optional integer

d Integer

H(hex value) Optional hex number

h Hex number

O(octal value) Optional octal value

o Octal value

F(float) Optional floating point number

f Floating point number

G(float/INFINITY/-INFINITY/NAN/NAN_E) Optional float with IEEE definitions

g Float with IEEE definitions

{ Open quiet section

} Close quiet section

P Invalid delimiter change

p Delimiter change

Z(string)[length] Invalid optional string

z(string)[length] Deprecated optional string

S(string)[length] Optional string

s[length] String

U(name/id) Optional user (bot/player)

u User (bot/player)

Q(name/id) Optional bot (bot)

q Bot (bot)

R(name/id) Optional player (player)

r Player (player)

A(default)[length] Optional array of given type

a[length] Array of given type

E(default) Optional enumeration of given layout

e Enumeration of given layout

'string' Search string

% Deprecated optional specifier prefix

Pamoką kūriau aš. Kopijuoti draudžiama. Jeigu padėjau, +R3P :)

  • Teigiamai 1
  • Neigiamai 1

Dalintis šį pranešimą


Nuoroda iki šio pranešimo
Dalintis per kitą puslapį

Svečias
Ši tema yra užrakinta.

  • Narių peržiūri šį forumą:   0 nariai

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


  • SuperGames programele
  • SuperGames programele


×