Az időkód beírása a sscanf parancsokba
Adja meg a becenevet az [sscanf] parancsok azonosítója helyett.
Kedves kedves felhasználók gyalogosan. Az sscanf-ot a szabványos parancsfeldolgozóval használom (a ZCMD nem forog). Meg kell tennem néhány parancsot, hogy az adminisztrátor ne csak írja be a játékos azonosítóját, hanem írja be a becenevét is. A probléma lényege ez: feltételezzük, hogy van egy játékos Alex_Brut-val a szerveren. Ha az adminisztrátor belép a km / gethere-ba [játékos azonosítója], akkor minden jól működik. Ha a rendszergazda belép / gethere [becenév], akkor minden rendben van, akkor a játékos az adminisztrátorra lép (ebben az esetben egyszerűen végrehajtja a parancsot). De ha meg / gethere [Alex] vagy / gethere [Alex_Brutsss] vagy / gethere [Al] a rendszergazda még utazik Alex_Brut játékos. Ez azt jelenti, kiderül, hogy a teszt nem működik a kapcsolat a lejátszó (IsPlayerConnected), és ha meg pl nem / gethere Alex és / gethere Mike (vagy más becenevet), a csekket váltott. Konzultáltam Vladislavral (Deimos), és azt mondta nekem, hogy olvassa el a sscanf dokumentációját, de soha nem találtam hasonló problémát. Itt van az aktuális parancs:
Egyébként, ha (! strcmp (cmd. "/ gethere"))
<
ha (PlayerInfo # 91; playerid # 93; # 91; pAdmin # 93; <2 ) return SendClientMessage ( playerid. COLOR_ERROR. "Недостаточно прав для использования команды." );
ha (sscanf (params. "u" .params # 91; 0 # 93;)) return SendClientMessage (playerid. COLOR_ERROR. "Parancs / getesz # 91; playerid / PartOfName # 93; ");
ha (! IsPlayerConnected (params # 91; 0 # 93;)) return SendClientMessage (playerid. COLOR_ERROR. "Ez a játékos jelenleg offline állapotban van.");
új Float. X. Float. Y. Float. Z;
GetPlayerPos (playerid, X.Y.Z);
SetPlayerInterior (params # 91; 0 # 93;, GetPlayerInterior (playerid));
SetPlayerVirtualWorld (params # 91; 0 # 93;, GetPlayerVirtualWorld (playerid));
ha (GetPlayerState (params # 91; 0 # 93;) == 2) SetVehiclePos (GetPlayerVehicleID (params # 91; 0 # 93;), X. Y + 4Z);
egyébként SetPlayerPos (params # 91; 0 # 93;, X. Y + 2. Z);
visszatérés 1;
>
Segítsen megérteni ezt a problémát.
Próbáld meg itt olvasni, talán segítséget.
Nem értettem a dolgot. De a típusok annyira híresek az információkról, írok.
A kapott változók típusai
i. d - Integer értékek 1 3 6
c - Betűk és betűk *
l - Boolean true false
b - bináris 01001. 0b1100
h. x - Hex 1A. 0x23
o - Október 045 12
n értéke 42. 0b010. 0xac. 045
f - Frakcionális 0,7. - 99,5
g - IEEE Float 0,7. - 99,5. INFINITY. - INFINITY. NAN. NAN_E
u - A játékos neve vagy Y_Less azonosítója. 0
q - Bot név / id ShopBot. 27
r - Játékos neve / id Y_Less. 42
Üzenet a FanHamMer-től
Nem értettem a dolgot. De a típusok annyira híresek az információkról, írok.
A kapott változók típusai
i. d - Integer értékek 1 3 6
c - Betűk és betűk *
l - Boolean true false
b - bináris 01001. 0b1100
h. x - Hex 1A. 0x23
o - Október 045 12
n értéke 42. 0b010. 0xac. 045
f - Frakcionális 0,7. - 99,5
g - IEEE Float 0,7. - 99,5. INFINITY. - INFINITY. NAN. NAN_E
u - A játékos neve vagy Y_Less azonosítója. 0
q - Bot név / id ShopBot. 27
r - Játékos neve / id Y_Less. 42
Én mindent világosan elmagyaráztam. De megpróbálom röviden megmagyarázni: Képzeld el, hogy van ilyen becenévem - Nick_Name. Ha bekerülök / bejövök Nick_Name, akkor minden jól működik. Ha csak a Nick nevet adom meg, akkor a Nick_Name-t is áthelyezi. Az eredmény egy csekk itt a lejátszó kapcsolata nem működik. Ha például a Nick név helyett, írjon másik nevet egy másik betűvel kezdődően, akkor az ellenőrzés megkezdődik.
Sscanf. return_user (szöveg # 91; # 93;)
új p_nick # 91; MAX_PLAYER_NAME # 93 ;;
(új t = strlen (szöveg) - 1; t! = - 1; t -)
kapcsoló (szöveg # 91; t # 93;)
"0" eset. '9'. tovább;
alapértelmezett:
a (új i; i
GetPlayerName (i. P_nick MAX_PLAYER_NAME);
ha (! strcmp (p_nick .text. true)) return i;
>
visszatér INVALID_PLAYER_ID;
>
>
>
visszatérési strval (szöveg);
>
És most használja ezt:
Egyébként, ha (! strcmp (cmd. "/ gethere"))
ha (PlayerInfo # 91; playerid # 93; # 91; pAdmin # 93; <2 ) return SendClientMessage ( playerid. COLOR_ERROR. "Недостаточно прав для использования команды." );
ha (sscanf (params. "k
ha (! IsPlayerConnected (params # 91; 0 # 93;)) return SendClientMessage (playerid. COLOR_ERROR. "Ez a játékos jelenleg offline állapotban van.");
új Float. X. Float. Y. Float. Z;
GetPlayerPos (playerid, X.Y.Z);
SetPlayerInterior (params # 91; 0 # 93;, GetPlayerInterior (playerid));
SetPlayerVirtualWorld (params # 91; 0 # 93;, GetPlayerVirtualWorld (playerid));
ha (GetPlayerState (params # 91; 0 # 93;) == 2) SetVehiclePos (GetPlayerVehicleID (params # 91; 0 # 93;), X. Y + 4Z);
egyébként SetPlayerPos (params # 91; 0 # 93;, X. Y + 2. Z);
visszatérés 1;
>
Üzenet a Wise-tól
Megpróbáltam helyett U-t használni R mindegyik ugyanazt a hibát.
"u" keres minden játékosot és botot.
"r" csak a játékosok keresése, a botok kihagyása
"q" csak a botok között keres.
Általánosságban ez aktiválja a különböző ellenőrzéseket egy hurokban, amely ellenőrzi a játékosokat
A csoport privát üzenetében felveheti a kapcsolatot velem
Széles körben ismert, hogy az elképzelések 0,8333 cent (egy tucatnyi 10 centes piaci áron alapulnak).
A nagy ötletek tele vannak, nem követelik meg őket.
Az ötlet megvalósítása a kész játékhoz sok munkát igényel,
a tehetség, a türelem és a kreativitás, nem beszélve a pénz, az idő és az erőforrások költségeiről.
Az ötlet javaslata egyszerű, észrevehető - ez a probléma
S teve P avlina