Jump to content
  • 0

pomoc 3D text přichycený na herci


Marks

Dotaz

Hezký nedělní podvečer. Dělám takové menší experimenty s hercema viz můj předešlý dotaz o otáčení herců
V tomto vlákně bych se chtěl zeptat na další věc týkající se problematiky s hercema.
Na internetu jsem si sehnal tuto vychytávku
http://samp-scripts.com/post/Extended_Actor_Functions-Admigo-other_include-20451/

Tato vychytávka umožňuje přidat 3D text nad vybraného herce.
Ukázka příkazu:

Text3D:Attach3DTextLabelToActor(actorid, text[], color, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:distance = 10.0, worldid = 0, testlos = 0);

Z toho, co mi došlo má to být například takto:

3DText = Attach3DTextLabelToActor(IDHerce, "Herec",0x00007777, 0.0, 0.0, 0.3, 20, -1,0);

Toto by mělo přidat k herci IDHerce text Herec. Ale nestane se tak, napíše mi to tuto chybu:
warning 204: symbol is assigned a value that is never used: "3DText"

Přemýšlím ještě nad tím, jestli tuto chybu nevyvolává fakt, že používám dynamické herce. Ale tato možnost se mi neověřila.
Nevíte prosím někdo, jak tento kus kódu funguje? Mě to jaksi nechce vůbec fungovat. Nikde jsem nenašel podobný problém. 
Děkuji všem.

 

Link to comment
Share on other sites

14 odpovědí na tuto otázku

Recommended Posts

  • 0
warning 204: symbol is assigned a value that is never used: "3DText"

nevím já tam prostě nevidím chybu ale jen varovaní že nepoužíváš 3DText. je to tím že to nikde nepoužívat do funkce nebo podmínky.

Link to comment
Share on other sites

  • 0

:facepalm:

 

warning 204: symbol is assigned a value that is never used: "3DText"

 

volný preklad: bola pridelená hodnota s ktorou sa ďalej nepracuje "3DText"

 

// EDIT

tak už ma niekto predbehol...

skrátka mal by si niekde ten "3DText" použiť :)

 

mimochodom, nehádzalo ti to chybu keď si zadeklaroval premennú s číslom na začiatku?

Edited by Quiter
Link to comment
Share on other sites

  • 0

Quiter - Tato proměnná je pouze ukázková, takže mi to chybu neházelo
 

Steam wallet - Díky, vyzkouším to

 

V podstatě já to nijak nepoužívám, to je pravda, ale i kdybych to nepoužíval, tak by to mělo fungovat, nebo ne?

Link to comment
Share on other sites

  • 0

Quiter - Tato proměnná je pouze ukázková, takže mi to chybu neházelo

 

Steam wallet - Díky, vyzkouším to

 

V podstatě já to nijak nepoužívám, to je pravda, ale i kdybych to nepoužíval, tak by to mělo fungovat, nebo ne?

když nemáš v plánu nijak dál pracovat stím 3D labelem tak je ta proměnná zbytečná. 

Link to comment
Share on other sites

  • 0

Tak jsem to vyzkoušel ale stejně to nejde, sice to už ten error nehází, ale 3D text se stejně nezobrazí nad hercem

EDIT:
Teď mě napadlo, jestli není možné, že když hýbu s hercem přes timer (dávám mu pomalu jiné souřadnice), že se prostě ten 3D Text nezobrazí?

 

Edited by Marks
Link to comment
Share on other sites

  • 0

No, takto. Prešiel som si zhruba ten include (či čo to je) a zistil som pár vecí.

 

- Keď vytvoriš 3Dtext na herca, ty ho naň nepripevníš... Len ho vytvoríš na súradniciach herca +- nastavené hodnoty

- Keď pohneš hercom, 3Dtext zostane pasívne stáť na pozícii kde bol vytvorený (lenivý čo?)

- Ak používaš nejaký dynamický systém na hercov, nesmieš použiť ID ktoré ti vygeneruje ten dynamický systém! Musíš použiť ID herca od SA-MP týmu. Viď pr. 1.

 

 

Pr. 1:

Ak použijem dynamický systém (streamer) na objekty, vráti mi ID objektu pre ten systém, ten sa však nemusí (ale môže) rovnať ID objektu od SA-MP týmu. Takže ak by som ja použil príkaz MoveObject(objectID, ...) bolo by mi to k ničomu. Musím použiť MoveDynamicObject - skrátka funkciu z toho includu. Alebo ak existuje, použiť funkciu na zistenie ID objectu, napríklad GetRealObjectID(objectID).

!!POZOR TOTO BOLA LEN TEORIA!!

 

No ale to stále nerieši tvoj problém. Takže, skús niekde zistiť ako získať ID herca (skutočné ID od SA-MPu) alebo prestaň používať dynamických hercov.

Ďalej, keďže chceš s hercom pohybovať, uprav si funkciu na pohyb herca.

stock SetActorPosNew(actorid, Float:x, Float:y, Float:z)
{
SetActorPos(actorid, x, y, z);
Attach3DTextToActor(...);
return true;
}
Link to comment
Share on other sites

  • 0

 Quiter - Díky za rady. Jenom bych se chtěl zeptat, šel by tento kus kódu:

Text3D:Attach3DTextLabelToActor(actorid, text[], color, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:distance = 10.0, worldid = 0, testlos = 0);

Přepsat do includu s Dynamickejma hercema? Že bych poté změnil Název na Attach3DTextToDynamicActor(....);
Myslím si, že by to také takto mohlo fungovat, nebo se pletu?

 

Link to comment
Share on other sites

  • 0

Nikdy nehovor, že sa niečo nedá, pretože vždy sa nájde nejaký de*il, ktorý nevie že sa to nedá a urobí to! (môj popis)

 

Pošli mi link na tých dynamických hercov a možno ti to spravím...

Link to comment
Share on other sites

  • 0
new actorid = GetDynamicActorInternalID(DynamicActorID);
Attach3DTextLabelToActor(actorid, text[], color, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:distance = 10.0, worldid = 0, testlos = 0);
stock SetActorPosEx(actorid, Float:x, Float:y, Float:z)
{
SetDynamicActorPos(actorid, Float:x, Float:y, Float:z);
Destroy3DTextLabel(...);
new actoridEx = GetDynamicActorInternalID(actorid);
Attach3DTextLabelToActor(actoridEx, ...);
}

V tom SetActorEx si to už musíš dokončiť sám... potrebuješ niekam ukladať text ktorý máš u aktora, to už skrátka nechám na teba :d

 

Len mi ešte vysvetli jedno:

v SA-MPe je povolených 1000 hercov a 1024 globálnych 3D textov. Načo používať streamer na hercov? to ich máš vážne v móde viac ako 1000?

Link to comment
Share on other sites

  • 0

Quiter - Používám dynamický herce, abych mohl používat více herců a nebyl limitován počtem kolik jich právě mám na serveru

 

Komplikuješ si týmto život... 1000 hercov je dostatok nech už robíš čokolvek takže nie si "limitovaný" ničím... Akurát si sťažuješ toto celé čo tu chystáš, pretože aj keď sa ti podarí nejako dať dokopy ten 3D text a hercov, tak je tu nový problém a to, že potrebuješ ďalší streamer na 3D texty. Nuž ale veľa šťastia samozrejme

Link to comment
Share on other sites

  • 0

Pokud se tu bavime o herci ve smyslu Actor (CreateActor), tak neexistuje funkce Attach3DTextLabelToActor a to z jednoducheho duvodu. Actor stoji na miste a nemuze se nijak pohnout, pokud ho ty sam nepresunes pomoci SetActorPos. Proto staci vytvorit proste na tom miste obycejny text a neupinat ho na nic. A jakmile si Actora premistis (jinak nez tvym scriptem to nejde), tak si ten text musis smazat a vytvorit na novem miste.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...