---------------------------------------------
if(!strcmp(cmd, "/myinfo"))
{
new n[24], a, c[40];
sscanf(params, "sds", n, a, c);
//cos tam od komendy
return 1;
}
-------------------------------------------------
Czy to co jest zaznaczone na pomara?czowo to robi jak?? r??nice jak to zaznacze?
I czy to co na czerwono czy te cyfry te? maj? jak?? r??nice.
Te liczby zaznaczone na czerwono, to wielko?ci tablicy. Np. tablica o wielko?ci 24, zmie?ci w sobie 24 znaki.
W Twoim kodzie, "n" i "c" to ci?gi znak?w, czyli "string". W sscanf'ie stringi okre?la si? literk? "s".
"a" natomiast to zwyk?a zmienna, czyli liczba. Liczby okre?la si? jako "d".
Czyli to co na pomara?czowo to "sds" - 2 ci?gi znak?w po bokach i w ?rodku jaka? liczba. Przyk?adowo wywo?ana komenda: /myinfo ci?g znak?w (max. 24 znaki) 55555 drugi ci?g znak?w (max. 40 znak?w)
Sscanf sam rozr??nia ci?gi i liczby, tak wi?c to co poda?em b?dzie poprawnie wczytane nawet je?li nie wida? dok?adnych przerw (bo wsz?dzie s? spacje).
Nie, powinno by? "dds" bo masz tutaj dwie liczby i jeden ci?g znak?w. "powod" powinien by? zdefiniowany tak:
No i og?lnie w strcmp takie co? nie dzia?a, bo do sscanf'a podaje si? parametry komendy, a nie ca?o??, razem z sam? komend?.
Przyk?adowo u?yjesz komendy: "/mandat 1 5000 Przekroczenie pr?dko?ci"
Wtedy zostaje wywo?any public OnPlayerCommandText. Parametr "cmdtext" zawiera ca?? zawarto?? komendy, czyli "/mandat 1 5000 Przekroczenie pr?dko?ci". U?ywaj?c "if(!strcmp("/mandat", cmdtext, false, 7))" por?wnujesz pierwsze 7 znak?w "cmdtext" z "/mandat" i je?li strcmp zwr?ci "0", wywo?ywany jest kod komendy. Do sscanf'a musisz poda? "1 5000 Przekroczenie pr?dko?ci". Dlatego w?a?nie programi?ci u?ywaj? np. ZCMD, bo nie trzeba si? bawi? w rozdzielanie tego ci?gu znak?w. W przypadku strcmp trzeba zastosowa? funkcj? "strtok" kt?ra wycina kod mi?dzy spacjami. Je?li chcesz u?ywa? strcmp+sscanf najlepiej u?ywa? funkcji strrest, kt?ra zwraca ca?o?? od pierwszej spacji, bez potrzeby zabawy strtokiem.
Wszystko si? da. Ale zrozum, ?e pisaniem komend "normalnie", czyli poprzez wpisywanie kodu bezpo?rednio w public OnPlayerCommandText, spowalniasz sw?j skrypt, map? w/e.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach