-
Příspěvků
827 -
Registrován
-
Aktivní
-
Vítězných dnů
32
Content Type
Profiles
Forums
Calendar
Gallery
SA-MP
Everything posted by Quiter
-
http://string-functions.com/length.aspx Your string is 71 characters long. Takže keďže max. dlžka stringu je 80 znakov (new query[80] logicky tam nezmestíš všetky potrebné údaje
-
no dobre, ale vypíše ti Zadajte heslo tvare od 4 až po 24!!! alebo niečo iné? A daj si tam vypísať inputtext aspoň do chatu nech vieš čo sa ti ukladá do inputtext (prípadne aj strlen(inputtext) vypísať)
-
No chybu tam nevidím... Co presne ti to vypíše do dialogu? Prípadne si nechaj vypísať aj INPUTTEXT, či ti tam dáke ptákoviny nehádže
-
Nebude celý problém v tom, že hore vytváraš CP a dole mažeš RCP? (race CP) Alebo si si to už upravil?
-
Myslím si, že odsledované to nebude mať nikto jediné čo ti môžem doporučiť je sadnúť si k tomu s kamarátom a skúšať a skúšať
-
Mrkni sa opäť na ten kód... ....a ešte raz... ...a naposledy... fajn. Teraz sa ťa opýtam, ideš si tak na svojom novom BMW a vidíš že ti pomály dochádza palivo, tak teda vytiahneš kanister (pretože čerpačka je ďaleko) a namiesto toho, aby si ho nalial do nádrže, ho vypiješ... prečo ti nestúpne ukazateľ paliva v aute? Vieš mi to vysvetliť? Riešenie nájdeš tu:
-
Nooo, tak začneme tým, prečo nám dávaš kód na prihlásenie? Neviem ako máš spravenú banku a výplaty, ale ak chceš aby ti miesto peňazí na ruku chodili peniaze do banky, tak musíš zmeniť v odmene za vykonanú prácu riadok GivePlayerMoney(playerid, hodnota); na Banka[playerid] += hodnota; // Banka je premenná do ktorej ukladáš koľko peňazí má v banke A to je všetko EDIT: Sorry, nevšimol som si text "A Dále =>" Potrebujeme riadok nad a riadok pod tým kódom na prihlásenie
-
new string[256]; - načo toľko znakov?? if(IsPlayerConnected(playerid)){ - čo je sakra toto? ako môže hráč ktorý nie je pripojený zadať príkaz /ann? Ukladanie si sprav cez registráciu, je tu mnoho návodov, stačí pohladať
-
Noo, rotácia bude problém, pokiaľ nie si dobrý v matematike a geometrii, tak bych sa do toho nepúšťal... Pretože akonáhle zmeníš rotáciu, posunú sa ti všetky pozície... Predstav si sieť s osou x a y... Odporúčam si kresliť aby si to lepšie pochopil Povedzme že je na pozícii 2 a 3 (x a y), tento objekt smeruje na východ (tj. smeruje na uhol 0) no a máme ďalší objekt na pozícií 3 a 4 smerujúci k uhlu 38. Teraz chceš presunúť prvý objekt na poziciu 6 a 7 a chceš ho pootočiť 90 stupňov (tj. bude ukazovať na sever). Povieš si fajn, tak dopocitam súradnice a taktiež otočím druhý objekt, výjde ti že druhý je na pozícii 7 a 8 a smeruje na uhol 108... A teraz je tu problém, objekt je síce správnym smerom otočený, ale je na inom mieste než by mal byť... Správne by mal byť na pozícií 5 a 7. Na to, aby si zistil akú pozíciu mu musíš nastaviť treba počítať s cosinusmi, sinusmi, tangensami - stredoškolská matematika. No a toto bol len 1 smer a 2 rozmerná pozícia, teraz si to predstav s 3 smermi a 3 rozmernou pozíciou... Preto je to tak komplikované. PS: som za každý šialený nápad, takže ak sa do toho pustíš, určite mi daj vedieť aspoň do správy alebo na skype
-
1) Neviem odkiaľ public SC berie playerid? Pokiaľ ho nikde neudávaš, automaticky je vždy 0, takže to bude fungovať len pre ID 0 2) Nenapísal si, ako sa to chová teraz, čo máme riešiť?
-
No, v kóde chybu nevidím... každopádne kedy používaš ForMaxPlayer? Čo všetko máš pred if(IsPlayerInAnyVehicle(playerid)) ? Ako sa to teraz chová?
-
V podstate rovnaká vec ako som už písal... zistíš pozíciu objektu a prirátaš k nej posun v ose X, Y a Z... MoveObject(StructObj, PosX+X, PosY+Y, PosZ+Z, RYCHLOST); nezabudni zachovať konštatnú rýchlosť pri všetkych objektoch
-
if(!(++NahratyCas[playerid] % 60)) { Peniaze[playerid] += 10.00; SendClientMessage(playerid,COLOR_RED,"YAYYYY"); } Tá podmienka sa mi nejako nepáči... Nikdy som taký zápis nevidel, radšej si ju sprav normálne a vyskúšaj to NahratyCas[playerid]++; if(NahratyCas[playerid]%60 == 0) { Peniaze[playerid] += 10.00; SendClientMessage(playerid,COLOR_RED,"YAYYYY"); }
-
Čo ti poradil Atomas je síce pekné, ale takmer zbytočné, nakoľko zmena textu v TD sa prejavuje až po jeho opätovnom prekreslení/zobrazení. Pošli sem ešte raz celý kód a snáď ti poradím.. PS: spravi si to tak ako si to mal na začiatku, následne pridaj && GetPlayerVehicleSeat(playerid) == 0) a potom ešte TextDrawShowForPlayer - potom to skús a ak to nepojde, postni celý kod
-
Áno, bude to presne tak... Teda pokiaľ si to nespravíš správne... príklad: X - objekt ktorým pohybujem O - ostatné objekty _ - volne miesto O O O O O X O O O Chcem dosiahnúť: _ _ _ _ _ _ _ _ _ _ _ O O O _ _ _ _ O O X _ _ _ _ O O O Čo znamená pozíciu všetkých predmetov posúnúť o X bodov vpravo a o Y bodov dole od pôvodnej pozície (upozorňujem že pozíciu Z som v tomto príklade uviesť nemôhol, ale v kóde ju uvediem) Kód bude približne nasledovný: for(new i=0;i<MAX_OBJECT_STRUCTURE;i++) { // Posun môže byť kladný ale aj záporný! new Float:X = 0.5, // posun v ose X Float:Y = 0.5, // posun v ose Y Float:Z = 0.5; // posun v ose Z new Float:PosX, Float:PosY, Float:PosZ; GetObjectPos(StructObj, PosX, PosY, PosZ); SetObjectPos(StructObj, PosX+X, PosY+Y, PosZ+Z); } Pre každý object si musíš vytvoriť premennú! MAX_OBJECT_STRUCTURE - je počet objektov Snáď si tomu porozumel
-
Každý mobil má funkciu na zobrazenie využitia batérie... Nájdeš to v nastaveniach
-
Ale ako to použijem v ShowPlayerDialog? Tak ako pri klasickom define?
-
Uvedieš mi príklad, ako použiť enum bez identifikátoru? napr. ako si spomenul na tie dialogy Díky
-
Asi si nepochopil čo autor myslel... :/ Na autora: Predpokladám, že máš v OnPlayerPickUpPickup IsPlayerInRangeOfPoint a na základe toho zisťuješ na akom je pickupe, že? Na tvoj problém mám také 2 riešenia... Začneme tým komplikovanejším. 1) Sprav si novú premennú (bool) - pre každého hráča zvlášť - a pri vstupe na pickup, skontroluj či je premenná 0, ak áno, nastav tú premennú na 1/true, následne zobraz hráčovi dialog, správu alebo skrátka čo potrebuješ keď už budeš chcieť aby hráčovi opäť zobrazilo dialog/správu, nastav premennú na 0 Príklad z realu: Hráč vstúpi na pickup, skontrolujem či je premenná 0, zistím že áno, nastavím premennú na 1 a zobrazím mu dialog napr. s jedlom... TJ: "Jedlo, Pitie, Alkohol"... Následne v OnDialogResponse pri tomto dialogu zobrazím ďalšie dialogy (napr. vyberie si jedlo) "Hamburger, Pizza, Chlieb, ...". No a v poslednom dialogu, keď už nebudem chcieť nič ďalšie zobraziť mu nastavím premennú na 0, aby môhol opäť využívať pickup. Ešte technický detail: Musíš kontrolovať, či v dialogu nestlačil ESC (!response), pretože aj pri zrušení dialogu mu musíš nastaviť premennú na 0 Toto riešenie mi príde príliš komplikované, nakoľko musíš premýšlať kedy je 0, kedy 1 a kedy to máš ako nastaviť aby to fungovalo správne (pre vysvetlenie: ak zabudneš vynulovať premennú, nebudú hráčovi fungovať žiadne pickupy) No a druhé riešenie - jednoduchšie - keď hráč vojde na pickup, posuň ho o 1-2 metre späť Príklad: Pozícia pickupu: 100.0 200.0 50.0 Keď vstúpi na pickup, SetPlayerPos(playerid, 102.0, 200, 50);
-
Tak pošli celý kód ako to máš spravené... PS: Spawn si si opravil? Nie, ten spawn tam nebol zmienený zbytočne...
-
http://wiki.sa-mp.com/wiki/GetPlayerDistanceFromPoint Distance[playerid] += GetPlayerDistanceFromPoint(playerid, Px[playerid],Py[playerid],Pz[playerid]); A ako už bolo spomenuté, prerob Distance[MAX_PLAYER] na Float:Distance[MAX_PLAYER];
-
timer + ukladanie poslednej pozície + zisťovanie aktualnej pozície + výpočet vzdialenosti 2 bodov + ukladanie do dát hráča 1) Vytvor si premenné pre hráča - najlepšie PosX, PosY, PosZ najlepšie na začiatku modu 2) Vytvori si timer, napr. na 1 sekundu, prípadne ak to nechceš až tak presné a odlahčiť serveru tak na 5-10 sekund. 3 V timery zisti hráčovu pozíciu 4) V timery zisti vzdialenosť medzi aktuálnou pozíciou a súradnicami PosX, PosY, PosZ 5) Ulož vzdialenosť do nejakej svojej premennej 6) Prepíš PosX, PosY, PosZ aktuálnou pozíciou 7) V OnPlayerSpawn nastav premenné PosX, PosY, PosZ na aktuálnu pozíciu hráča PS: odporúčam si timer ošetriť na kontrolu, či bol už hráč spawnutý
-
Isto to bolo zrazu? Nemenil si niečo? Máš nainšatalované všetky Microsoft visual c++ - niektoré pluginy potrebujú rôzne verzie...
-
Nebude problém v float aktualny = MaxBarProg; ?? Ako, MC pluginom sa nerozumiem, ale z programovacieho hladiska mi príde, že AKTUALNY nastavíš na MaxBarProg... ale odkial si nabral MaxBarProg? Netreba určiť objekt ktorý má parameter MaxBarProg?
- 10 odpovědí
-
Ja bych ešte tak okrajovo upozornil autora, že odosiela správu 2x sebe...