RoBiK 3 Odesláno: 24. Srpen, 2016 Share Odesláno: 24. Srpen, 2016 Čau, urobil som si takú vec že to do /server napíše že kolko je hráčov v LS,SF,LV, všetko mi funguje okrem lv... proste idem z /ls do /sf a to funguje, ale ked idem do /lv tak nič.. neviem čo tam mám zle, predom ďakujem . public OnPlayerUpdate(playerid) { if(IsPlayerInArea(playerid,-151, -2964, 2997, -687.5)) { if(somsf[playerid]==1) { somls[playerid]=1; somlv[playerid]=0; somsf[playerid]=0; lsp++; sfp--; } } else if(IsPlayerInArea(playerid,-151, -2964, 2997, -687.5)) { if(somlv[playerid]==1) { somls[playerid]=1; somlv[playerid]=0; somsf[playerid]=0; lvp--; lsp++; } } else if(IsPlayerInArea(playerid,-2925, -919.5, -1212, 1594.5)) { if(somls[playerid]==1) { somls[playerid]=0; somlv[playerid]=0; somsf[playerid]=1; lsp--; sfp++; } } else if(IsPlayerInArea(playerid,-2925, -919.5, -1212, 1594.5)) { if(somlv[playerid]==1) { somls[playerid]=0; somlv[playerid]=0; somsf[playerid]=1; lvp--; sfp++; } } else if(IsPlayerInArea(playerid,-505, 491.5, 2841, 2933.5)) { if(somls[playerid]==1) { somls[playerid]=0; somlv[playerid]=1; somsf[playerid]=0; lvp++; lsp--; } } else if(IsPlayerInArea(playerid,-505, 491.5, 2841, 2933.5)) { if(somsf[playerid]==1) { somls[playerid]=0; somlv[playerid]=1; somsf[playerid]=0; sfp--; lvp++; } } return 1; } Link to comment Share on other sites More sharing options...
0 Globální moderátor bug 131 Odesláno: 24. Srpen, 2016 Globální moderátor Share Odesláno: 24. Srpen, 2016 Mimo problému: Chudák server, takéto veci v OnPlayerUpdate nemajú čo robiť, navyše nekontroluješ či už náhodou v tom LV/SF/LS už nieje takže obsah podmienky sa vykoná aj keď tam už je aj keď je to zbytočné. Update funkcia by sa totižto mala volať každý frame, v skratke je to veľmi veľa volaní za moc krátky čas. Link to comment Share on other sites More sharing options...
0 The hidden face 77 Odesláno: 24. Srpen, 2016 Share Odesláno: 24. Srpen, 2016 (upraveno) Zdravím, už několikrát se tu říkalo, že OnPlayerUpdate vytěžuje dost tvůj server a ty tam nacpeš toto. Tady jsem ti to trochu upravil, akorát by to ještě chtělo, abys sem postnul fci IsPlayerInArea. Taky může být chyba klidně v souřadnicích. #define MAX_PLAYERS_EX 50 new playerCity[MAX_PLAYERS_EX]; //1 = LS, 2 = SF, 3 = LV new CityTimer[MAX_PLAYERS_EX]; public OnPlayerSpawn(playerid) { CityTimer[playerid] = SetTimerEx("CheckCity", 1000, true, "i", playerid); return 1; } public OnPlayerDisconnect(playerid, reason) { KillTimer(CityTimer[playerid]); return 1; } forward CheckCity(playerid); public CheckCity(playerid) { if(IsPlayerInArea(playerid,-151, -2964, 2997, -687.5))//LS { if(playerCity[playerid] != 1) playerCity[playerid] = 1;//tady by snad ani to podmínky být nemuseli } else if(IsPlayerInArea(playerid,-2925, -919.5, -1212, 1594.5))//SF { if(playerCity[playerid] != 2) playerCity[playerid] = 2; } else if(IsPlayerInArea(playerid,-505, 491.5, 2841, 2933.5))//LV { if(playerCity[playerid] != 3) playerCity[playerid] = 3; } return 1; } //Tam, kde zjišťuješ kolik je hráčů v jakém městě stock PlayersInCity(const city)//1 = LS, 2 = SF, 3 = LV; vrátí počet hráčů v daném městě. { new players; for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) if(playerCity[i] == city) players++; return players; } Jinak abys poznal rozdíl mezi Timerem a OnPlayerUpdate. Timer se opakuje v tom intervalu, který si zadáš (tady v tom případě 1 sekunda), ale onPlayerUpdate se ti vyvolá průměrně 30 během sekundy, navíc není pravidelný - volá se podle toho, co hráč zrovna dělá (wiki). Ke kódy je trochu zlechčený, místo 3 glob. proměnných pro hráče máš 1 a místo 3 glob. proměnných pro každé město máš funkci, která ti vrací aktuální počet hráčů v daném městě. Edited 24. Srpen, 2016 by GaRGoyLeS Link to comment Share on other sites More sharing options...
0 RoBiK 3 Odesláno: 24. Srpen, 2016 Author Share Odesláno: 24. Srpen, 2016 dobre a ako to mam potom napisat do formatu ? nejak mi to nedošlo... inak timer viem čo je... Link to comment Share on other sites More sharing options...
0 The hidden face 77 Odesláno: 24. Srpen, 2016 Share Odesláno: 24. Srpen, 2016 (upraveno) Jednoduše: new string[128]; format(string, sizeof(string), "V Los Santos je %d hráčů./n", PlayersInCity(1)); format(string, sizeof(string), "%sV San Fierro je %d hráčů./n",string, PlayersInCity(2)); format(string, sizeof(string), "%sV Los Santos je %d hráčů.",string, PlayersInCity(3)); //už jen dát do SCM, SCMTA nebo do textdrawu s tím si už pořadíš, ne? Edited 24. Srpen, 2016 by GaRGoyLeS Link to comment Share on other sites More sharing options...
0 RoBiK 3 Odesláno: 24. Srpen, 2016 Author Share Odesláno: 24. Srpen, 2016 jop tak dik Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 24. Srpen, 2016 Share Odesláno: 24. Srpen, 2016 Timer ale nespoustej v OnPlayerSpawn, nebo si to trochu predelej. Link to comment Share on other sites More sharing options...
Dotaz
RoBiK 3
Čau, urobil som si takú vec že to do /server napíše že kolko je hráčov v LS,SF,LV, všetko mi funguje okrem lv... proste idem z /ls do /sf a to funguje, ale ked idem do /lv tak nič.. neviem čo tam mám zle, predom ďakujem .
Link to comment
Share on other sites
6 odpovědí na tuto otázku
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