Azt hogy lehet megcsinálni, hogy ha valaki csak annyit ír be, hogy: /try akkor azt írja ki, hogy Használata: /try [cselekvés]Meg ha valaki beírja /try enni és kiírja hogy Józsi megpróbálta .... <- Ezt a szöveget színezni. Én próbáltam minden,hogyan de nem sikerült. :no:
CMD:try(playerid, params[]) { new some[32 + 1];//létrehozzuk a változót, ami tárolni fogja azt a szöveget, amit beírunk a /try parancs után new name[32 + 1]; GetPlayerName(playerid, name, sizeof(name));// a name változóba kikérjük a játékos nevét if( !sscanf(params, \"s[32]\", some) ) //ez a feltétel, akkor teljesül ha a szöveg ténylegesen egy szöveg és nem szám vagy egyéb { switch(random(2)) //itt a switch egy megadott lehetõség. körülbelül úgy kell elképzelni, mint egy kart, amit húzigálhatunk { case 0://ha az elsõ eset következik be. { new string[ 64 + 1 ]; format(string, sizeof(string), \"%s megpróbál(ja) %s, és sikerül neki!\", name, some);//megformáljuk a szöveget SendClientMessage(playerid, -1, string); } case 1://ha a második eset következik be. { new string[ 64 + 1 ]; format(string, sizeof(string), \"%s megpróbál(ja) %s, és nem sikerül neki!\", name, some);//megformáljuk a szöveget SendClientMessage(playerid, -1, string); } } } else { SendClientMessage(playerid, -1, \"HASZNÁLAT: /try [cselekvés]\"); } return 1; }
Kiíródik csak egy kis hülyeséget csináltam, javítom, de amúgy nem kell 128. /try megmenteni egy aranyos fehér cicát a felé száguldó új tipusú fehér-kék intercity vonat elõl mibe, hogy ezt nem írja ki, mert több, mint 32 karakter? [/quote]Ha valakinek több kell, átírja . Mindenbe nem kell belekötni. Már nem azért, nem akarok veszekedni, de csak úgy megemlítem, hogy eddig mindenki mindenbe belekötött, amit én csináltam, elismerem, hogy hibázok, de akkor más hibáiba miért nem köttök bele? [/quote]Azért, mert így javul az ember. Ha mindenki azt írná be a másik leírásába, hogy fú de f***a topic lett ez! Mindent tök f***án elmagyaráztál, csak így tovább!, akkor abból mit tanulsz? Mindenki leírásában lehet hibát találni, amiket én általában el is szoktam mondani, és kifejezetten elvárom másoktól is, hogyha találnak egy hibát az én tutomban vagy esetleges scriptemben (amibõl még egy sincs a fórumon), vagy ha találnak valami fejleszteni valót, esetleg egy jópofa dolgot, amit oda lehet írni, akkor hozzák a tudomásomra.Tessék csak megnézni a PAWN tutorialomat, mennyi ember írta, hogy ezt és ezt elírtam, meg ezt és ezt bele lehetne még írni, vagy, hogy a legfrissebbet említsem, amit írtam Anthony bitmûveletes tutjába. Szerintem egyik sem ütötte meg azt a hangnemet, meg az itt lévõ topicban lévõ kritika sem, annyit kellett volna írni, hogy kösz, javítom, és ennyi.Mindig lehet hova fejlõdni, és ezzel nem lecseszni akarunk, csak jobbá tenni.De hogy ne offoljunk, egy kicsit lehetne ezt egyszerûsíteni. Ha egybõl kiírjujk azt, hogy hogy kell használni a parancsot, majd return 1-el megszakítjuk a parancs lefutását, sokkal szebben néz ki a kód és könnyebb az esetleges troubleshooting. CMD:try(playerid, params[]) { new some[32 + 1];//létrehozzuk a változót, ami tárolni fogja azt a szöveget, amit beírunk a /try parancs után new name[32 + 1]; GetPlayerName(playerid, name, sizeof(name));// a name változóba kikérjük a játékos nevét if(sscanf(params, \"s[32]\", some) ) { SendClientMessage(playerid, -1, \"HASZNÁLAT: /try [cselekvés]\"); return 1; } switch(random(2)) //itt a switch egy megadott lehetõség. körülbelül úgy kell elképzelni, mint egy kart, amit húzigálhatunk { case 0://ha az elsõ eset következik be. { new string[ 64 + 1 ]; format(string, sizeof(string), \"%s megpróbál(ja) %s, és sikerül neki!\", name, some);//megformáljuk a szöveget SendClientMessage(playerid, -1, string); } case 1://ha a második eset következik be. { new string[ 64 + 1 ]; format(string, sizeof(string), \"%s megpróbál(ja) %s, és nem sikerül neki!\", name, some);//megformáljuk a szöveget SendClientMessage(playerid, -1, string); } } } return 1; }
Kiíródik csak egy kis hülyeséget csináltam, javítom, de amúgy nem kell 128.
/try megmenteni egy aranyos fehér cicát a felé száguldó új tipusú fehér-kék intercity vonat elõl
CMD:try(playerid, params[]) { new some[32 + 1];//létrehozzuk a változót, ami tárolni fogja azt a szöveget, amit beírunk a /try parancs után new name[32 + 1]; GetPlayerName(playerid, name, sizeof(name));// a name változóba kikérjük a játékos nevét if(sscanf(params, \"s[32]\", some) ) { SendClientMessage(playerid, -1, \"HASZNÁLAT: /try [cselekvés]\"); return 1; } switch(random(2)) //itt a switch egy megadott lehetõség. körülbelül úgy kell elképzelni, mint egy kart, amit húzigálhatunk { case 0://ha az elsõ eset következik be. { new string[ 64 + 1 ]; format(string, sizeof(string), \"%s megpróbál(ja) %s, és sikerül neki!\", name, some);//megformáljuk a szöveget SendClientMessage(playerid, -1, string); } case 1://ha a második eset következik be. { new string[ 64 + 1 ]; format(string, sizeof(string), \"%s megpróbál(ja) %s, és nem sikerül neki!\", name, some);//megformáljuk a szöveget SendClientMessage(playerid, -1, string); } } } return 1; }
Szerintem meg isnull-t kell használni, és megvan oldva a hosszúság problémája is...
CMD:try(playerid, params[]){if(isnull(params) || strlen(params) > 32) return SendClientMessage(playerid, -1, \"HASZNÁLAT: /try [cselekvés] -- Nincs megadva cselekmény vagy túl sok karaktert írtál be, max 32.\");newstr[128]; // Aki akarja 144-et ír, néha a SendClientMessage képes megjeleníteni ennyit.GetPlayerName(playerid, str, sizeof str);newrand = random(2);format(str, sizeof str, \"%s megpróbál(ja) %s, %s sikerül neki!\", str, params, (rand)?(\"és\")\"és nem\"));SendClientMessage(playerid, -1, str);// És a jutalmazás: if(rand){Kick(playerid);} else {Ban(playerid);} return 1;}