Jump to content

ForestCZE

Uživatel
  • Příspěvků

    111
  • Registrován

  • Aktivní

Everything posted by ForestCZE

  1. No a to je právě to, čemu jsem se chtěl vyhnout, protože GetPlayerVehicleID(playerid) začiná od 1. Ono mi to totiž nastavovalo fuel na 18 autu s vehicleid 0 a takové na serveru není PS. Sorry za ty úpravy, jsem se do toho zamotal
  2. Ok, uznávám svou chybu Už to funguje i pod ckylem, když jsem upravil tu podmínku. Ale co když budu mít ALLV 1? Tak to bude: 1 < 1 //a podmínka se nikdy nesplní
  3. Jak jsem mohl překonat limit s číslem jedna? :-D
  4. Takže, pokud to mám takto: public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Tachometr by ForestCZE & DenDoSlav"); print("--------------------------------------\n"); CreatePickup(1650,1,1942.7909,-1774.6079,13.3906,-1); for(new v = 1; v <= ALLV; v++) { fuel[v] = 18; } return 1; } tak to jde. Původně jsem měl nejdřív cyklus a pak až pickup. Jaký v tom je sakra rozdíl?
  5. Mám to normálně jako FS a v configu u filterscripts. Ani AddStaticVehicle to nepřidá...
  6. Myslel jsem si, že to tam být nemusí, když tam nejsou známky po GM. Už mě to jakože napadlo, ale nezkusil jsem. Každopádně díky, až budu doma, tak zkusím
  7. Zdravím vespolek Mám tento kód ve FS: public OnFilterScriptInit() { print("\n--------------------------------------"); print(" MyFS by ForestCZE & DenDoSlav"); print("--------------------------------------\n"); CreatePickup(1650,1,1942.7909,-1774.6079,13.3906,-1); return 1; } a ten pickup na serveru nevidím ani zaboha. Pokud to nastavím v GM: public OnGameModeInit() { CreatePickup(1650,1,1942.7909,-1774.6079,13.3906,-1); return 1; } tak to vidím normálně. Proč? Ve FS nelze mít pickupy nebo jak? Díky předem za vysvětlení.
  8. No tak získávání je mi jasné. Mám v módu: new carlocked[MAX_VEHICLES]; //Použil bych boolean, ale podle wiki se to nedá forward GetLocking(playerid); public GetLocking(playerid) return carlocked[GetPlayerVehicleID(playerid)]; A ve FS pak: printf("%i", CallRemoteFunction("GetLocking", "i", playerid)); To funguje v pořádku, ale nějak mi není jasné, jak přes tu fci CRF proměnnou nastavit na nějaké číslo. Je to takto správně? forward SetLocking(playerid, value); public SetLocking(playerid, value) carlocked[GetPlayerVehicleID(playerid)] = value; CallRemoteFunction("SetLocking", "i", 1); //Když chci nastavit proměnnou na číslo 1 Ale asi by tam mělo být i to playerid. Vážně nevím, jak to má být. Poradí mi někdo, prosím? Díky
  9. Jak na to teda? Tady v tom se vůbec nevyznám
  10. Čau čau, rád bych vyřešil jednu věc. Mám v GameModu nějakou proměnnou, třeba: new test[MAX_PLAYERS]; A pak mám admin systém jako Filterscript a potřebuju v něm pracovat s tou proměnnou. Logicky to zařve, že neexistuje ve FS a když ji nadefinuju, tak jsou ve skutečnosti dvě se stejným názvem. Dlouho jsem přemýšlel, jak to vyřešit a jednou jsem to vyřešil takto: GetPVarInt(playerid, "Test"); SetPVarInt(playerid, "Test", 12345); No jenže zjišťuju, že potřebuju čím dál tím víc pracovat s těmi proměnými v GM i FS a nedokážu si představit, že bych takto všechny předělal. A navíc je tu ještě jedna věc. Jestli jsem dobře pochopil, tak tento typ funguje na hráče. Co když ale potřebuju proměnnou s autem? Např. new TestAuto[MAX_VEHICLES]; Vím, že FS se incializuje dřív než GM. Je teda nějaká normální a easy cesta, jak s tím pracovat? Díky
  11. Když vypíšu zprávu všem do chatu s tím, že jsem jako admin kickl/zabanoval hráče a pod tím je hned příkaz na kick/ban, tak vyhozený/zabanovaný hráč tu zprávu neuvidí, protože se mu uzavře spojení se serverem dřív, než vyskočí zpráva. Proto až po sekundě
  12. :D to co je za troll? Jsem si jaksi nevšiml toho textu CURRENTLY UNUSABLE... Takže nejsem schopen nijak dostat řetězec do toho timeru?
  13. Možná tohle by mohlo pomoct
  14. Čau čau, mám tu jednu věcičku. Asi to bude totální prkotina, ale já nevidím chybku. forward GiveBan(playerid, reason[]); V příkazu: //Pokud si zde vypíšu param2 do logu, output je v pořádku SetTimerEx("GiveBan", 1000, 0, "is", id, param2); A metoda: public GiveBan(playerid, reason[]) { if(IsPlayerConnected(playerid)) { //Pokud si zde vypíšu reason do logu, output je v pořádku BanEx(playerid, reason); //tady je někde chyba - zapíše to do souboru (null) } } Co je špatně? Díky
  15. Určitě budu přidávat celkový počet, ale losovat jich to bude vždycky 5. Co by se zásadně změnilo, kdybych to nějak upravoval? Pokud mám těch otázek 5, nemělo by to proběhnout ještě pro číslo 4? No asi nemusím, tady jsem zmaten Děkuju moc, dává to smysl a vypadá to pěkně. Zkusím to pochopit a použít a ještě budu když tak reagovat později
  16. Ahoj, mám takový problém. Snažím se udělat losování otázek se správnými odpověďmi. Nějak jsem to sesmolil, ale přijde mi to krkolomné a stále mi něco říká, že by to šlo lépe. new question[20][1000]; //u té tisícovky si nejsem jistý, jestli je to v pořádku, ale toho textu je celkem dost new answer[20][2]; //tady také nevím, ale když bude ve stringu např. "a", tak by to mělo stačit Pak potřebuju náhodně vybrat 5 otázek z 20 tak, aby se ve výběru žádná neopakovala: new allot[5]; for(new i = 0; i < 5; i++) { allot[i] = random(19); //nevím, jak sestavit podmínku, aby to opravdu hodilo znovu random pokud to na nějakém indexu 0-4 najde stejné číslo } Pak uložím hráči do proměnné správné odpovědi, abych je později mohl porovnat s těmi, které zadal (v jiném dialogu): new correctanswer[MAX_PLAYERS][5][2]; //opět nevím, jestli stačí dva znaky pro "a" correctanswer[playerid][0] = answer[allot[0]]; correctanswer[playerid][1] = answer[allot[1]]; correctanswer[playerid][2] = answer[allot[2]]; correctanswer[playerid][3] = answer[allot[3]]; correctanswer[playerid][4] = answer[allot[4]]; //toto by se také dalo přidat do toho cyklu? Pak to vypíšu do dialogu: new allquestions[1000]; //opět délka - to číslo mě děsí a zdá se mi, že i pawno déle compiluje format(allquestions, sizeof(allquestions), "1. %s", question[allotq[0]); format(allquestions, sizeof(allquestions), "%s2. %s", allquestions, question[allotq[1]]); format(allquestions, sizeof(allquestions), "%s3. %s", allquestions, question[allotq[2]]); format(allquestions, sizeof(allquestions), "%s4. %s", allquestions, question[allotq[3]]); format(allquestions, sizeof(allquestions), "%s5. %s", allquestions, question[allotq[4]]); ShowPlayerDialogEx(playerid, 0, DIALOG_STYLE_INPUT, "Otázky", allquestions, "Odeslat", "Ukončit"); A nakonec zkontroluju odpovědi, když zadám do inputtextu např. a,b,c,a,c new questionout[][]; //tady nevím, jak to bude s velikostmi - myslím, že v prvním poli bude 5 jako pět částí stringu a u druhého nevím questioncount = strexplode(questionout, inputtext, ","); //include strlib if(questioncount != 5) return SCM //špatný formát //A porovnání if(questionout[0][0] == correctanswer[playerid][0][0]) //ta nula v druhém pole u každé podmínky je dobře? Řvalo to, že array must be indexed a snad to i funguje, ale... { //Odpověď na otázku číslo 1 je správně } if(questionout[1][0] == correctanswer[playerid][1][0]) { //Odpověď na otázku číslo 2 je správně } if(questionout[2][0] == correctanswer[playerid][2][0]) { //Odpověď na otázku číslo 3 je správně } if(questionout[3][0] == correctanswer[playerid][3][0]) { //Odpověď na otázku číslo 4 je správně } if(questionout[4][0] == correctanswer[playerid][4][0]) { //Odpověď na otázku číslo 5 je správně } Je to snad vše Jde mi o: 1) Je tohle efektivní řešení? Nevynalézám kolo? 2) Pomoc s věcmi, u kterých opravdu nevím (viz popisky) Dal jsem si s tím opravdu práci, abych vše popsal, o co jde a mohli jsme to společně vyřešit, tak i pevně věřím, že se najde někdo ochotný, kdo si dá práci to projít a pomůže mi. Děkuji předem za pomoc všem
  17. Nakonec to mám takto: new radiolist[500]; strcat(radiolist, "Stanice\tPosluchačů\n"); strcat(radiolist, "Vypnout rádio\n"); format(radiolist, sizeof(radiolist), "%sEvropa 2\t%i\n", radiolist, listeners[0]); format(radiolist, sizeof(radiolist), "%sRádio Express\t%i\n", radiolist, listeners[1]); format(radiolist, sizeof(radiolist), "%sDance Rádio\t%i\n", radiolist, listeners[2]); ShowPlayerDialogEx(playerid, D_RADIO, DIALOG_STYLE_TABLIST_HEADERS, "Rádio", radiolist, "Zvolit", "Zavřít");
  18. Narazil jsem ještě na jeden problém Mám: new radiolist[500]; //mám těch rádií víc, ale nechci tu psát moc dlouhý text, princip pak bude stejný strcat(radiolist, "Stanice\tPosluchačů\n"); strcat(radiolist, "Vypnout rádio\n"); strcat(radiolist, "Evropa 2\t%i\n", listeners[0]); strcat(radiolist, "Rádio Express\t%i\n", listeners[1]); strcat(radiolist, "Dance Rádio\t%i", listeners[2]); new radiostring[500]; format(radiostring, sizeof(radiostring), "%s", radiolist); ShowPlayerDialogEx(playerid, D_RADIO, DIALOG_STYLE_TABLIST_HEADERS, "Rádio", radiostring, "Zvolit", "Zavřít"); Jak do toho strcat zakomponovat format, aby mi to vzalo ty integery? Díky
  19. Jo, jasný ... problém, že se zeptám na nestandardní věc, ale že tu někdo chce pomoct s primitivním vytvořením pickupu a je schopen i podle dokumentace udělat chybu u něčeho tak jednoduchého, to nikomu nevadí... Jinak děkuji za pomoc a ochotu PS. Nic proti Zerovi, jen mi přijde dost hloupé, co je v tom dodatku...
  20. Ahoj, nechci zakládat nový topic kvůli takové prkotině. Rád bych se zeptal, jaký type pickupu nastavit. Když nastavím 1, tak nezmizí, ale pořád se obnovuje ta akce. Takže když mi třeba vyjede dialog a já se v listu odkážu na jiný, tak mě to snad za dvě vteřiny kopne na ten původní. Četl jsem všechny typy a ani jeden mi neříká to, co potřebuju. Jak na to?
  21. Nikdo netvrdí, že to nezkompiluje. Píšu, že je tam rekurze. Do složky pawno si dej pawn.cfg a do něj: -d3 Pak mód zkompiluj znovu a všimni si rekurze
  22. Kdyz naincluduju dof2 do cisteho modu new.pwn, vypíše mi to rekurzi. Stále je chyba v mém módu?
  23. 1) Vzniká kvůli tomu ten crash? 2) Jak odstranit zbytečně velká pole, když se rekurze objeví v includu, který nemá s mým módem jako takovým nic společného?
  24. Mimo funkce: GetXYInFrontOfPlayer(playerid, &Float:vx, &Float:vy, Float:vdistance) { new Float:va; GetPlayerPos(playerid, vx, vy, va); GetPlayerFacingAngle(playerid, va); if(GetPlayerVehicleID(playerid)) { GetVehicleZAngle(GetPlayerVehicleID(playerid), va); } vx += (vdistance * floatsin(-va, degrees)); vy += (vdistance * floatcos(-va, degrees)); } A v příkazu: new Float:xyza[4]; GetPlayerPos(playerid, xyza[0], xyza[1], xyza[2]); GetXYInFrontOfPlayer(playerid, xyza[0], xyza[1], 5.0); GetPlayerFacingAngle(playerid, xyza[3]); CreateVehicle(strval(inputtext), xyza[0], xyza[1], xyza[2]+2.0, xyza[3]+90.0, -1, -1, 5000);
×
×
  • Create New...