niko777112 1 Odesláno: 22. Červenec, 2015 Share Odesláno: 22. Červenec, 2015 Prajem pekný večer! Rád by som niekoho poprosil či by mi toto nevysvetlil: Ako fungujé a čo robí premenná typu: new premmna[MAX_PLAYERS] a aký je rozdiel v new premenna. Ak tomu správne chápem, premenna by bola pre vsetkych a premenna[MAX_PLAYERS] pre kazdeho zvlast? Vopred vám ďakujem za pomoc! Radčej sa spýtať a byť debilom na pár minút ako mlčať a ostať debilom do konca života - Čínske príslovie Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 22. Červenec, 2015 Share Odesláno: 22. Červenec, 2015 (upraveno) Do new promenna; uložíš pouze jednu hodnotu promena = 10; // proměnná je teď 10 promena = -50; // teď je její hodnoota -50 promena = 'o'; // teď '0' .. ... Kdežto do pole new promenna[pocet prvku]; uložíš hodnot více, konkrétně tolik, kolik máš počet prvků. Řekněme, že máš new promenna[10]; do tohoto pole uložíš 10 hodnot promenna[0] = 5; promenna[1] = 8; ... promenna[9] = 20; Číslo v hranatých závorkách se nazývá index. Počet prvků máme 10, ale indexy začínají od 0, takže nejvyšší index je 9. Pokud zadáš větší index než je počet prvků, nastane chyba. To stejné pokud zadáš záporné číslo (index není snad nikdy záporný). Je tedy třeba dbát na dosazování správných čísel. Kód výše můžeš klidné nahradit něčím takovým: new promenna0 = 5; new promenna1 = 8; ... new promenna9 = 20; ale není to moc pěkné a hůře se s tím pracuje. Například pokud bys chtěl tyto hodnoty vypsat, museli bychom je vypisovat manuálně piš promenna0; piš promenna1; ... piš promenna9; U pole je to ale jednodušší, protože do indexu můžeme dosadit proměnnou. To nám dovoluje něco takového for(new i = 0; i < 10 ;i++) piš promenna[ i ]; // vypíše promenna[0], promenna[1] ... promenna[9] V tvém případě máš pole o 500 prvcích (defaultně je MAX_PLAYERS definováno na číslo 500). Můžeš tak docílit proměnné "pro každého", protože za index většinou dosazuješ konkrétní id hráče. Tedy u každého hráče pracuješ s jiným indexem a jinou hodnotou. Například money[ id_hráče ] = částka; zase by toto šlo nahradit za new money0 = 50; // Hráč id 0 má 50$ new money1 = 10; // .. ale zas je zde špatný přístup k proměnné. switch(playerid) { case 0: money0 = 99; case 1: money1 = 55; ... } mnohem lehčí je dosadit za index rovnou playerid. S proměnnou playerid se setkáváme nejčastěji, proto tu je uvedena jako příklad. Můžeme tam dosadit téměř jakoukoliv proměnnou (celočíselnou!). Toto není návod, jen takové menší osvětlení. Pokud chceš do toho více zasvětit, tak tě odkazuji na návody o polích (arrays), kde to vše budeš mít detailněji rozepsané // EDIT: Jedním z příkladů pole je i "string". new str[10] = "AHOJ"; Zde jsme si vytvořili string o velikosti 10 prvků. str[ 0 ] obsahuje znak 'A', str[ 1 ] obsahuje 'H' atd. Prostě string není nic jiného, než pole nějakých hodnot, reprezentujících znaky (v ascii tabulce si můžeš ke každému znaku najít příslušnou hodnotu). Edited 22. Červenec, 2015 by Lukasz 3 Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 22. Červenec, 2015 Author Share Odesláno: 22. Červenec, 2015 Ďakujem za vysvetlenie. keď sa už pÿtam, ako sa to používa? new premenna[MAX_PLAYERS] a chcem do nej napr ci ma alebo nema hrac wanted, ak ma tak kolko, + vypisanie Dalo by sa spravit nieco podobne z ID vozidlami? myslim ulozit do premennej motor, ktore auto ho ma zapnuty a ktore nie? Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 22. Červenec, 2015 Share Odesláno: 22. Červenec, 2015 (upraveno) Ano, za počet prvků dosadíš počet vozidel na serveru (maximální, tj definováno jako MAX_VEHICLES) a pak za index dáváš id vozidla. new wanted[MAX_PLAYERS]; if(wanted[ id ] == wantedlevel) { // zformátování a vypsání } new motor[MAX_VEHICLES]; ... motor[ id_vozidla ] = 0; // třeba vypnutý motor[ id_vozidla ] = 1; // zapnutý Edited 22. Červenec, 2015 by Lukasz Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 22. Červenec, 2015 Author Share Odesláno: 22. Červenec, 2015 Ďakujem zajtra vyskúšam keď budem na PC. Este taka drobnost, ako vypnut motory vsetkych aut na servery? Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 22. Červenec, 2015 Share Odesláno: 22. Červenec, 2015 (upraveno) new pole[7]; for(new i = 1; i <= MAX_VEHICLES; i++) { if(IsValidVehicle(i)) { GetVehicleParamsEx(i, pole[0], pole[1], pole[2], pole[3], pole[4], pole[5], pole[6]); SetVehicleParamsEx(i, false, pole[1], pole[2], pole[3], pole[4], pole[5], pole[6]); } } A detail k tvojí předchozí otázce. Můžeš zjistit stav motoru (zapnutý/vypnutý) pomocí funkce GetVehicleParamsEx(..) Edited 23. Červenec, 2015 by Lukasz Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 22. Červenec, 2015 Author Share Odesláno: 22. Červenec, 2015 K vypnutiu tých mozorov, hore mam ten dlhy riadok z motorom, svetlami..... A do publicu ongamemodeinit som dal engine = 0 a nefunguje... Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 22. Červenec, 2015 Share Odesláno: 22. Červenec, 2015 public OnGameModeInit() { // Vytvoříš vozidla // můj předchozí kód s cyklem atd.. } pokud to máš v módu, jestli ve FS tak OnFilterScriptInit() a to stejné.. Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 23. Červenec, 2015 Author Share Odesláno: 23. Červenec, 2015 Prepáč ja som ťa nepochopil to pole stačí nahradiť tým riadkom: engine, lights... ? Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 23. Červenec, 2015 Share Odesláno: 23. Červenec, 2015 staci to tak, jak to mam ted. Nemusis nic menit. Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 23. Červenec, 2015 Author Share Odesláno: 23. Červenec, 2015 error 017: undefined symbol "IsValidVehicle" Ehm, stačilo to takto public OnGameModeInit(){ManualVehicleEngineAndLights(); return 1;} Link to comment Share on other sites More sharing options...
0 Amenadiel 286 Odesláno: 23. Červenec, 2015 Share Odesláno: 23. Červenec, 2015 error 017: undefined symbol "IsValidVehicle" Ehm, stačilo to takto public OnGameModeInit() { ManualVehicleEngineAndLights(); return 1; } musíš si přidat forward. do include a_samp. Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 23. Červenec, 2015 Author Share Odesláno: 23. Červenec, 2015 Mne to funguje presne tak ako som ti to napísal. Len mi pre zmenu nefunguje toto: if(GetVehicleModel(vehicleid) == 481 || GetVehicleModel(vehicleid) == 409 || GetVehicleModel(vehicleid) == 410) { GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), 1, lights,alarm,doors,bonnet,boot,objective); } Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 23. Červenec, 2015 Share Odesláno: 23. Červenec, 2015 co ti na tom nejde? Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 23. Červenec, 2015 Author Share Odesláno: 23. Červenec, 2015 Ide o to že aby vyplo motor všetkých vozidam okrem bicyklov, no keď nastúpim na bycikel tak stojím stále... Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 23. Červenec, 2015 Share Odesláno: 23. Červenec, 2015 A kde ten kod mas..? Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 23. Červenec, 2015 Author Share Odesláno: 23. Červenec, 2015 (upraveno) public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { if(GetVehicleModel(vehicleid) == 481 || GetVehicleModel(vehicleid) == 409 || GetVehicleModel(vehicleid) == 410) { GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid), 1, lights,alarm,doors,bonnet,boot,objective); } return 1; } Potreboval by som proste aby po štarte módu mali všetky autá vypnuté motory (to už mám) okrem bicyklov (o to sa snažin) Chcel som to spraviť tak že vypnú sa všetkým motory, a ak hráč nastúpi na bicykel tak sa mu motor zapne, no nefunguje to aj keď tam chybu nevidiím Edited 23. Červenec, 2015 by niko777112 Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 23. Červenec, 2015 Share Odesláno: 23. Červenec, 2015 Tyto proměnné někde deklarované máš? engine,lights,alarm,doors,bonnet,boot,objective Jinak problém je v tom, že OnPlayerEnterVehicle se volá, když hráč NASTUPUJE do vozidla. To znamená, že ve vozidle ještě není a tak ti toto GetPlayerVehicleID(playerid) vrací špatnou hodnotu (respektive správnou). GetPlayerVehicleID(..) ale vůbec používat nemusíš, protože víš id vozidla, máš ho v proměnné vehicleid. Takže místo GetPlayerVehicleID(..) dej vehicleid. Link to comment Share on other sites More sharing options...
0 niko777112 1 Odesláno: 23. Červenec, 2015 Author Share Odesláno: 23. Červenec, 2015 Premenné mám, večer to skúsim Link to comment Share on other sites More sharing options...
Dotaz
niko777112 1
Prajem pekný večer!
Rád by som niekoho poprosil či by mi toto nevysvetlil:
Ako fungujé a čo robí premenná typu: new premmna[MAX_PLAYERS] a aký je rozdiel v new premenna.
Ak tomu správne chápem, premenna by bola pre vsetkych a premenna[MAX_PLAYERS] pre kazdeho zvlast?
Vopred vám ďakujem za pomoc!
Link to comment
Share on other sites
18 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