Jump to content

The hidden face

Uživatel
  • Příspěvků

    810
  • Registrován

  • Aktivní

  • Vítězných dnů

    22

Everything posted by The hidden face

  1. Bohužel nic nevidím..
  2. 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?
  3. 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ě.
  4. Běž do Pawna, stač Ctrl+F, zadej hledaný výraz, tedy "print" (printf). A pak mačkej F3 pro nalezení další shody nebo F4 pro vrácení se k předchozí. Takhle snad najdeš, co hledáš. Ale podle všeho to vypadá, že to je z main(). Aby ses toho zbavil, tak to jednoduše smažeš. Printy tam měl pouze pro kontrolu.
  5. Co se týče designu, tak máš pěkně zvolený barvy, ale určitě bych jinak zarovnal ty Informace. Dvojtečky bych dal pod sebe a malý odsazení těch info od nich (třeba tab).
  6. Omlouvám se, to jak jsem ti to psal já, byla taky pitomost - pawn to takhle neumí. Zkus opravdu u všech změnit na kód, co ti poslal arci224 to by mělo na 100% fungovat.
  7. Promiň na proměnný jsem zapomněl. Budeš teda muset použít format.: new ex[200]; format(ex, sizeof(ex), "Radio 1 %i/n", posluchaci[0]); format(ex, sizeof(ex), ex + "Radio2 %i/n", posluchaci[1]); . . . A tady máš fce na ovládání času, anglicky snad umíš: SetPlayerTime, TogglePlayerClock (tahle ta tě asi zajímá), GetPlayerTime a SetWorldTime.
  8. Mohl bys využít zpětného lomítka (\). Pro tebe by to bylo sice přehlednější, ale compiler to pořád uvidí v jednom řádku, takže se nevyhnutelně vyskytne chyba input line is too long. Tzn. že bych být tebou použil strcat a co se stylu dialogu týče, ten bych změnil na DIALOG_STYLE_TABLIST_HEADER (wiki), abys to měl opravdu přehledné.
  9. SetTimerEx("PrisonCounter", 60000, false, "u", playerid); Metoda se volá v "" (uvozovkách) a bez parametrů - parametry totiž dosazuješ až potom. Akorát si teď nejsem jistý, zda bude formát "u" funkční. Vím, že ho používá sscanf2, ale u pawn si nejsem jistý. Zkus když tak "i" nebo "d"
  10. Asi by tě vážně zabilo to vyzkoušet.... Neupravil jsem jen příkaz, ale i ten tvůj calback. Měl jsi to tak zmatlaný, že se textdrawy nejspíše překrývaly a prostě to blblo, což není u textdrawu nic neobvyklého. Příště se na pomoc tobě rovnou vykašlu, protože lidem, kterým se ničím nazavděčíš mám opravdu nejradši. Jak píši výše - ono to spolu tak nějak souvisí...
  11. Trošku jsem to poupravil, byla blbost volat TextDrawSetString/Show/Hide pokaždé v jinačím callbacku, udělalo ti to v tom bordel a určitě se ti to překrývalo. Možná tam bude nějaká chybka na to přijdeš až to vyzkoušíš...
  12. Však takhle to lukaszovo i moje funguje. Nejspíš máš u sebe nějakou jinou chybu - špatně napozicované..
  13. Tohle bohatě stačí, ne?: public OnPlayerRequestSpawn(playerid) { if(!IsPlayerAdmin(playerid) && GetPlayerSkin(playerid) == admin_skin) { SendClientMessage(playerid, -1, "ADMIN SKIN"); return 0; } return 1; } //Edit: Sry, úplně stejné jak napsal lukasz... Pak tedy definuj, co znamená: "hráči se skin zobrazí"?
  14. Já jsem, ale neopravoval nic se sscansf, to ať si udělá sám, pouze jsem mu ze zbytečných 3 proměnných nechal jen jednu. A všechno, co jsem k tomu přidal jsem okopíroval z minulého tématu - do vaši SZ bohužel já nevidím... :d
  15. Tady to máš podle mě dobře, buď máš špatně podmínku, nebo ještě někde jinde v módu upravuješ proměnnou. Každopádně mi připadá, že ta proměnná spolu s proměnnou Jail jsou úplně zbytečné, bohatě, by ti na tyhle kontroly stačila JailSeconds. Snad to je všechno dobře:
  16. Nic proti, ale můžeš mi citovat, kde to říká? Tak nějak zásadní chyba to není, ale je to FS, tak by měl použit OnFilterScriptInit(). Mě ovšem nic jiného nenapadá, co by se mohlo zkazit při vytváření objektů. //Edit: Pro autora: Máš ještě nějaké další objekty v módu vytvořené? Pokud ano nesmí jich být více jak 557, jelikož tady máš kolem 473 objektů a maximální limit je 1000 objektů. Tzn. že by jsi musel použít streamer. --> Tak nic prej tam máš víc vozidel
  17. Promiň moje blbost: //OnPlayerConnect jail0[playerid] = CreatePlayerTextDraw(playerid, 572.000000, 226.000000, "120"); //každý hráč potřebuje svůj textdraw, proto nemůžeš vytvářet globální páč, když skrz nějakého hráče nastavíš nějaký čas, ten samý čas se bude zobrazovat i ostatním. (bude ti to zkrátka blbnout... PlayerTextDrawBackgroundColor(playerid, jail0[playerid], 255); PlayerTextDrawFont(playerid,jail0[playerid], 2); PlayerTextDrawLetterSize(playerid,jail0[playerid], 0.330000, 1.000000); PlayerTextDrawColor(playerid,jail0[playerid], -1); PlayerTextDrawSetOutline(playerid,jail0[playerid], 1); PlayerTextDrawSetProportional(playerid,jail0[playerid], 1); PlayerTextDrawSetSelectable(playerid,jail0[playerid], 0); A na zobrazení a skyrtí: PlayerTextDrawShow(playerid, jail0[playerid]); PlayerTextDrawHide(playerid, jail0[playerid]); PlayerTextDrawSetString(playerid, jail0[playerid], str); //Edit: Teď už to je snad kompletní
  18. Zkus toto - místo textdrawu pro každého hráče si vytvářel globální textdraw: //horok modu new PlayerText:jail0[MAX_PLAYERS];//textdraw pro každého hráče new Text:jail1; // OnGameModeInit jail0 = CreatePlayerTextDraw(572.000000, 226.000000, "120"); //každý hráč potřebuje svůj textdraw, proto nemůžeš vytvářet globální páč, když skrz nějakého hráče nastavíš nějaký čas, ten samý čas se bude zobrazovat i ostatním. (bude ti to zkrátka blbnout... PlayerTextDrawBackgroundColor(jail0, 255); PlayerTextDrawFont(jail0, 2); PlayerTextDrawLetterSize(jail0, 0.330000, 1.000000); PlayerTextDrawColor(jail0, -1); PlayerTextDrawSetOutline(jail0, 1); PlayerTextDrawSetProportional(jail0, 1); PlayerTextDrawSetSelectable(jail0, 0); jail1 = TextDrawCreate(532.000000, 226.000000, "cas:"); //tento texdraw bude pro všechny stejný, takže může zůstat globálním TextDrawBackgroundColor(jail1, 255); TextDrawFont(jail1, 2); TextDrawLetterSize(jail1, 0.330000, 1.000000); TextDrawColor(jail1, -1); TextDrawSetOutline(jail1, 1); TextDrawSetProportional(jail1, 1); TextDrawSetSelectable(jail1, 0); // Public Jail public Jail(playerid) { SetPVarInt(playerid, "JailSeconds", GetPVarInt(playerid, "JailSeconds") - 1); PlayerTextDrawHide(playerid, jail0);// Předtím než textdrawy znovu zobrazíš by si je měl skrýt TextDrawHideForPlayer(playerid, jail1);//-||- if(GetPVarInt(playerid, "JailSeconds") == 0) { SetPVarInt(playerid,"Jail",0); SendClientMessage(playerid,-1,"Odpykal si si trest"); SetPlayerPos(playerid,1958.3783, 1343.1572, 15.3746); SetPlayerInterior(playerid,0); Basa[playerid] = 0; KillTimer(jailTimers[playerid]); } else { new str[10]; format(str, 10, "%s", GetPVarInt(playerid, "JailSeconds"));//proč 128 znaků, i těch 10 je zbytečně moc, protože nepředpokládám, že budeš někoho takhle dlouho věznit PlayerTextDrawSetString(jail0,str); PlayerTextDrawShow(playerid, jail0); TextDrawShowForPlayer(playerid, jail1); } return 1; } // dcmd jail ... error spravy SetPVarInt(id,"Jail",1); jailTimers[id] = SetTimerEx("Jail",1000,true,"i",id); SetPVarInt(id, "JailSeconds", minuty * 60); ...nastavenie interieru, pozicia, že je v base atd
  19. Aha, tak to jsem tě nepochopil. Není to nic složitého - tu bránu přes nějaký editor odstraň, vlož si tam vlastní a s tou pohybuj... //Edit: Třeba zde máš pěkný prográmek.
  20. Nevím, zda ti to vyřeší problém, ale říkal jsi, že je to filterscript, tak proč objekty a auta vytváříš v OnGameModeInit() a ne v OnFilterScriptInit() ? K tomu otevírání brány (použiji předchozí kód): new cela; OnGameModeInit() // Po případe OnFilterScriptInit { cela = CreateObject(987,3271.3000000,460.7999900,25.5000000,0.0000000,0.0000000,223.4930000); // do proměnné cela se nahraje id vytvořeného objektu MoveObject(cela,3271.3000000,460.7999900,25.5000000,2,PozíciaX, PozíciaY, PozíciaZ); //a zde na místo objectid dosadíš proměnnou cela, jelikož uchovává to id vytvořeného objektu return 1; }
  21. The hidden face

    pomoc VIP

    Na tom druhým serveru máš taky tolik fs? Mě osobně nikdy snad nešlo tolik fs spustit, vždy byl někde nějaký problém (Co se týče hostingů). Nech to VIP na prvním místě a ty fs bez kterých se dokážeš obejít dej pryč.
  22. The hidden face

    pomoc VIP

    Dej sem server logy z obou serverů. Stačí, když sem dáš jen poslední start.
  23. V kostce řečeno to po tobě vyžaduje verzi PHP 5.5 a vyšší a ty máš nainstalovanou 5.4.45blabla.
  24. The hidden face

    pomoc ERROR

    To bude asi tím, že v proměnné vehid máš uložený id modelu auta, ty ovšem do parametru PutPlayerInVehicle musíš vložit id auta.
  25. Měl jsem podobný problém až na to, že ping jsem měl asi 10x větší jak ty. Stačilo předělat internet z 2,4GHZ na 5 GHz. Stačí vlastně koupit jinačí anténu, která bude s 5 GHz umět pracovat - poskytovatel musí samozřejmě tuto službu nabízet.
×
×
  • Create New...