ПредишенСледващото

Въвеждане на псевдоним вместо ID в командите [sscanf].

Здравейте скъпи потребители про-заложните. Аз sscanf използвате със стандартния команден процесор (ZCMD не се търкаля). Бях в някои команди трябва да се направи така, че администраторът може не само да въведете идентификацията на играча, но и да се напише прякорът му. Проблемът се състои е това: нека сървъра седи един играч с Alex_Brut прякор. Ако администраторът влиза ПМС / gethere [id_igroka], след което всичко работи добре. Ако администраторът влиза / gethere [псевдоним] все още е твърде голямо, се движи играч на администратора (в този случай, просто да се изпълняват командата). Но ако въведете / gethere [Alex] или / gethere [Alex_Brutsss] или / gethere [Al] администраторът все още пътува до Alex_Brut играч. Това означава, че се оказва, че тестът не работи на свързването на плейъра (IsPlayerConnected), а ако например не влиза / gethere Алекс, и / gethere Майк (или други прякори), проверката се задейства. Консултирах се с Владислав (Деймос) и той ми каза да прочетете документацията за sscanf, но не намерих този проблем. Това е всъщност самият екип:

иначе, ако (! strcmp (ПМС. "/ gethere"))
<
ако (PlayerInfo # 91; playerid # 93; # 91; pAdmin # 93; <2 ) return SendClientMessage ( playerid. COLOR_ERROR. "Недостаточно прав для использования команды." );
ако (sscanf (Поколения назад. "ф". Поколения назад # 91; 0 # 93;)) връщат SendClientMessage (playerid COLOR_ERROR "Екип / gethere .. # 91; playerid / PartOfName # 93; ");
ако (! IsPlayerConnected (PARAMS # 91; 0 # 93;)) връщат SendClientMessage (playerid COLOR_ERROR ". Този играч в момента не е на линия") ..;
Новият Float. X. Float. Y. поплавък. Z;
GetPlayerPos (playerid X. Y. Z.);
SetPlayerInterior (PARAMS # 91; 0 # 93;, GetPlayerInterior (playerid));
SetPlayerVirtualWorld (PARAMS # 91; 0 # 93;, GetPlayerVirtualWorld (playerid));
ако (GetPlayerState (PARAMS # 91; 0 # 93) == 2) SetVehiclePos (GetPlayerVehicleID (PARAMS # 91; 0 # 93), X. Y + Z 4.);
друг SetPlayerPos (PARAMS # 91; 0 # 93;, X. Y + Z 2.);
върне 1;
>

Моля, помогнете сделка с този проблем.

Опитайте четете това, може да помогне.

Аз не разбирам от съществено значение. Но така Лоя видове информация, пишат.

Видове променливи за
аз. г - число 1, 3, 6
В - букви г и г *
л - Пъзел Zanki вярно невярно
б - Binary 01001. 0b1100
ч. х - Hex 1А. 0x23
о - Осмичен 045 12
п - брой 42. 0b010. 0xac. 045
F - Фракционен 0.7. - 99.5
г - IEEE поплавък 0.7. - 99,5. Безкрайност. - безкрайност. NAN. NAN_E
ф - име на играча или Id Y_Less. 0
Q - Bot име / ID ShopBot. 27
R - Player име / номер Y_Less. 42

Публикувано от FanHamMer

Аз не разбирам от съществено значение. Но така Лоя видове информация, пишат.

Видове променливи за
аз. г - число 1, 3, 6
В - букви г и г *
л - Пъзел Zanki вярно невярно
б - Binary 01001. 0b1100
ч. х - Hex 1А. 0x23
о - Осмичен 045 12
п - брой 42. 0b010. 0xac. 045
F - Фракционен 0.7. - 99.5
г - IEEE поплавък 0.7. - 99,5. Безкрайност. - безкрайност. NAN. NAN_E
ф - име на играча или Id Y_Less. 0
Q - Bot име / ID ShopBot. 27
R - Player име / номер Y_Less. 42

Харесва ми всичко ясно обяснено. Но се опитам да обясня накратко: Представете си, че имам псевдоним - NICK_NAME. Ако въведете / gethere NICK_NAME тогава всичко работи добре. Ако въведете само името (Ник), след това също се движат на играча NICK_NAME. Оказва проверка тук, за да свържете плейъра не работи. И ако, например, вместо името на Ник, пише друго име започва с различна буква, тук проверка започва.

SSCANF. return_user (текст # 91; # 93)
новият p_nick # 91; MAX_PLAYER_NAME # 93 ;;
за (нови Т = strlen (текст) - 1 ;! т = - 1; т -)
превключвател (текст # 91; т # 93)
При "0". "9". продължи;
по подразбиране:
за (ново аз, аз ако (IsPlayerConnected (и)!) да продължи;
GetPlayerName (I p_nick MAX_PLAYER_NAME ..);
ако връщане аз (strcmp (p_nick текст вярно) ..!);
>
върнете INVALID_PLAYER_ID;
>
>
>
върнете strval (текст);
>

И сега се използва по следния начин:

иначе, ако (! strcmp (ПМС. "/ gethere"))
ако (PlayerInfo # 91; playerid # 93; # 91; pAdmin # 93; <2 ) return SendClientMessage ( playerid. COLOR_ERROR. "Недостаточно прав для использования команды." );
ако (sscanf (Поколения назад. "к. "Params # 91; 0 # 93;)) връщат SendClientMessage (playerid COLOR_ERROR "Екип / gethere .. # 91; playerid / PartOfName # 93; ");
ако (! IsPlayerConnected (PARAMS # 91; 0 # 93;)) връщат SendClientMessage (playerid COLOR_ERROR ". Този играч в момента не е на линия") ..;
Новият Float. X. Float. Y. поплавък. Z;
GetPlayerPos (playerid X. Y. Z.);
SetPlayerInterior (PARAMS # 91; 0 # 93;, GetPlayerInterior (playerid));
SetPlayerVirtualWorld (PARAMS # 91; 0 # 93;, GetPlayerVirtualWorld (playerid));
ако (GetPlayerState (PARAMS # 91; 0 # 93) == 2) SetVehiclePos (GetPlayerVehicleID (PARAMS # 91; 0 # 93), X. Y + Z 4.);
друг SetPlayerPos (PARAMS # 91; 0 # 93;, X. Y + Z 2.);
върне 1;
>

Публикувано от Wise

Опитах да се използва вместо U R е все една и съща грешка.

"U" търси между всички играчи и ботове.
"R" търси само сред играчите от преминаващите лодки
"Q" търси само сред лодки.
Като цяло, това активира различен тест, в една линия, която проверява играчите

Можете да се свържете с мен на лични съобщения към тази група

Всеизвестно е, че идеите са 0.8333 цента (на базата на пазарната цена на 10 цента на десетина).
Пълен с велики идеи, няма търсене.
Изпълнение на идеята в краен игра изисква продължителна работа,
талант, търпение и креативност, да не говорим за цената на пари, време и ресурси.
Предложи идея просто да осъзнаем - това е проблемът

S teve P avlina

Подкрепете проекта - споделете линка, благодаря!