chytrak 14 Odesláno: 7. Srpen, 2008 Share Odesláno: 7. Srpen, 2008 Dnes si ukazeme jak snizit moznost padu modu... 1. GetMaxPlayers() Pouziti misto for(new i=0;i{ Tento script bude vyvolan 200 } pouzijeme for(new i=0; i{ Tento script bude vyvolan pouze tolikrat, kolik je hracu na serveru a ne 200 } 2. ELSE pokud mate nejaky public kde je if(neco } if(neco } if(neco } napriklad if (strcmp(name, "Chytrakl", true)!= 0) { if (Vyber[playerid]==114) { SetPlayerSkinEx(playerid,2); }} if (strcmp(name, "[CRYCZ]CNIRY", true)!= 0) { if (Vyber[playerid]==113) { SetPlayerSkinEx(playerid,23); }} pouzijeme if(neco // prvni if zustava stejne } else if(neco // u dalsiho if uz je else } else if(neco // dalsi if s else } priklad if (strcmp(name, "Chytrakl", true)!= 0) { if (Vyber[playerid]==114) { SetPlayerSkinEx(playerid,2); }} else if (strcmp(name, "[CRYCZ]CNIRY", true)!= 0) { if (Vyber[playerid]==113) { SetPlayerSkinEx(playerid,23); }} Poznamka plati jen pro if, ktere jsou za dalsi zavorkou a nemaji s prvnim kodem co delat prikad spatneho pouziti Na tomto prikladu muzeme videt podminku , dalsi podminku v tom samem kodu, ale je tam else, else davame az do dalsiho kodu if (strcmp(name, "Chytrakl", true)!= 0) { else if (Vyber[playerid]==114) { SetPlayerSkinEx(playerid,2); }} else if (strcmp(name, "[CRYCZ]CNIRY", true)!= 0) { else if (Vyber[playerid]==113) { SetPlayerSkinEx(playerid,23); }} 3. ELSE v prikazech Pokud mame prikazy napr takto if(strcmp(cmd, "/help", true) == 0) { return 1; } if(strcmp(cmd, "/objective", true) == 0) { return 1; } if(strcmp(cmd, "/tips", true) == 0) { return 1; } tak ke druhemu a kazdemu dalsimu if, ktery vyvolaval cely prikaz pridame else ukazka if(strcmp(cmd, "/help", true) == 0) { return 1; } else if(strcmp(cmd, "/objective", true) == 0) { return 1; } else if(strcmp(cmd, "/tips", true) == 0) { return 1; } 4. Nove vyuziti promenych TUT Bude dopsan zitra rano Link to comment Share on other sites More sharing options...
Guest pipik Odesláno: 8. Srpen, 2008 Share Odesláno: 8. Srpen, 2008 prepac, ale ta musim upozornit, ze nemas ani zakladne vedomosti o programovani (nevies ako funguje FOR cyklus) a pises tutorialy: Pouziti misto for(new i=0;i{ Tento script bude vyvolan 200 } pouzijeme for(new i=0;i{ Tento script bude vyvolan pouze tolikrat, kolik je hracu na serveru a ne 200 } premenna Slots bude obsahovat len pocet hracov na servery. FOR cyklus vykonava naslednu postupnost prikazov pre kazdu premenu i z intervalu 0 az Slots, cize 0 az pocet hracov na servery. Klasicky FOR cyklus c MAX_PLAYERS sa vykonava pre vsetky cisla 0-200. To, ze ty v cykle pouzijes pocet hracov moze zapricinit ze ak niekto ma vecsie playerid ako je pocet hracov tak sa pre neho nevykona cyklus. Link to comment Share on other sites More sharing options...
chytrak 14 Odesláno: 8. Srpen, 2008 Author Share Odesláno: 8. Srpen, 2008 Ajo to mne nenapadlo, myslis ze kdybych zmensil define max_players na vlastni ze by to mohlo byt lepsi? Link to comment Share on other sites More sharing options...
Guest pipik Odesláno: 8. Srpen, 2008 Share Odesláno: 8. Srpen, 2008 FOR cyklus sa vyuziva na pracu s playerid, nie na pocet hracov, playerid sa nemeni, pocet hracov ano, takziez playerid moze byt vecsie ako je pvoet hracov priklad: na servery je 50 hracov, odpoja sa hraci s playerid, 10,15,20, na servery zostane 47 hracov, ten cyklus vykona funkcie len pre hracov do playerid 47 ale na servery su hraci s playerid 48,49,50, pre tych sa cyklus nevykona Link to comment Share on other sites More sharing options...
chytrak 14 Odesláno: 8. Srpen, 2008 Author Share Odesláno: 8. Srpen, 2008 Viz ja ted spis myslel, kdybych udelal toto #define MAX_PLAYERS_FOR 60 to by mnelo jit ne? protoze se cyklus jen snizi a nepreskakuje jako u Slots Link to comment Share on other sites More sharing options...
Guest pipik Odesláno: 8. Srpen, 2008 Share Odesláno: 8. Srpen, 2008 a ked bude na servery viac ako 60 ludi? najidealnejsie je GetMaxPlayers pouzit Link to comment Share on other sites More sharing options...
-other-Mizi_CZ 0 Odesláno: 8. Srpen, 2008 Share Odesláno: 8. Srpen, 2008 to by mělo definovat se podle toho kolik je nastavených na serveru lidí ale to je pak na nic když někdo má tolik a někdo tolik Link to comment Share on other sites More sharing options...
chytrak 14 Odesláno: 8. Srpen, 2008 Author Share Odesláno: 8. Srpen, 2008 Myslis takto for (new i; i <= GetMaxPlayers(); i++) { } Link to comment Share on other sites More sharing options...
Guest bronek Odesláno: 8. Srpen, 2008 Share Odesláno: 8. Srpen, 2008 nebo: for(new p;p{ if(!IsPlayerConnected(p))break; //pokud hráč s tímto id nneí připojený zastaví a větší id nebude kontrolovat } Link to comment Share on other sites More sharing options...
chytrak 14 Odesláno: 8. Srpen, 2008 Author Share Odesláno: 8. Srpen, 2008 Ale co kdyz tam budou s id 2,5,10 tak se zastavi u 2 ? Link to comment Share on other sites More sharing options...
Guest bronek Odesláno: 8. Srpen, 2008 Share Odesláno: 8. Srpen, 2008 Ale co kdyz tam budou s id 2,5,10tak se zastavi u 2 ? ty ymslíš že by se id 0,1,3,4,6,7,8,9 tak rychle odpojilo? Ale jinak máš pravdu Link to comment Share on other sites More sharing options...
Guest MaverickCZE Odesláno: 13. Srpen, 2008 Share Odesláno: 13. Srpen, 2008 ještě tě upozorním na jednu chybku, a to je při používání else if v příkazech, když máš správně dané returny na koncích příkazů, else if nepotřebuješ jelikož po nalezení správného příkazu se ukončí script (return 1;) a tudíž ani netestuje další podmínky, v tomto případě bych spíš využil řazení příkazů podle priority, neboli dát například /help před /bleeetajnyprikaz, protože je větší pravděpodobnost, že /help bude napsán častěji a nebude se muset testovat tolik podmínek, ale bez timeru ti jsou tyto "ulehčováky" celkem k ničemu Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now