Skocz do zawartości
Khazil

3DText + nick w 3D text

Rekomendowane odpowiedzi

3D Text

Witam. Pokaże wam jak używać 3D Text  oraz jak utworzyć za jej pomocą Nick na głową gracza ( usuwa to pasek stanu hp, armoru nad postacią).

Podczas tworzenia 3D Textu mamy kilka funkcji do wyboru:

-Create3DTextLabel

-Delete3DTextLabel

-Attach3DTextLabelToVehicle

-Attach3DTextLabelToPlayer

-Update3DTextLabelText

-CreatePlayer3DTextLabel

-DeletePlayer3DTextLabel

-UpdatePlayer3DTextLabelText

Postaram się na początku wytłumaczyć co dana funkcja robi i jak się jej używa.

Create3DTextLabel( “Tekst”, Kolor, 30.0,  40.0, 50.0, 40.0, 0, 0);

”tekst” – Jest to wiadomość jaka wyświetli się nam w utworzonym przez nas 3D Text.

Kolor – Nie ma dużo do mówienia. Ustala to kolor naszego 3D Textu.

30.0,  40.0, 50.0 – są to koordynaty naszego 3D Textu – miejsce gdzie ma zostać utworzony.

40.0 – Draw Distance, czyli odległość z jakiej będzie widziany nasz 3D Text.

0 – Jest Virtual World w jakim ma zostać utworzony nasz 3D Text.

0 - testLOS - 0/1 – odpowiada za to by napis był widziany przez ściany czy nie.

( Można też naszego 3D Text zdefiniować po przez:

new Text3D:Nazwanaszego3dtextu;

Wówczas przed

Create3DTextLabel("tekst", Kolor, 30.0, 40.0, 50.0, 40.0, 0);

Trzeba dodać nazwę naszego 3D Textu. Będzie to wyglądać tak :

Nazwanaszego3dtextu = Create3DTextLabel("tekst", Kolor, 30.0, 40.0, 50.0, 40.0, 0);

Przyda nam się to, żeby go później usunąć lub przyczepić do czegoś.)

Delete3DTextLabel(Text3D:1);

Text3D:1 – Jest to nazwa naszego 3D Textu, którego wcześniej zdefiniowaliśmy.

Attach3DTextLabelToVehicle(Text3D:name,vehicleid,0,0,2);

Text3D:name – Jest to nazwa naszego 3D Textu.

vehicleid – id pojazdu, do którego przyczepiamy  3D Text.

0,0,2 – odległość naszego 3D Textu od pojazdu ( „2” na końcu ustawi nam 3D Text nad naszym autem ).

Attach3DTextLabelToPlayer(Text3D:name,playerid,0,0,2);

Text3D:name – Jest to nazwa naszego 3D Textu.

playerid – Po prostu id gracza do, którego przyczepiamy 3D Text.

0,0,2 – Są to koordynaty naszego 3D Textu w zależności od gracza, do którego jest przyczepiony ( Ta liczba „2” na końcu sprawi, że napis będzie nad postacią).

Update3DTextLabelText(Text3D:name, Kolor, „tekst”);

Text3D:0 – Nazwa naszego 3D Textu.

Kolor – Nowy (niekoniecznie, bo ktoś może ustawić ten sam) kolor naszego 3D Textu.

„tekst” – Nowy tekst, który będzie się ukazywał w naszym 3D Text.

CreatePlayer3DTextLabel(playerid, “Tekst”, Kolor, 30.0,  40.0, 50.0, 40.0, 0, 0);

playerid - id gracza dla, którego tworzymy 3D Text

”tekst” – Jest to wiadomość jaka wyświetli się nam w utworzonym przez nas 3D Text.

Kolor – Nie ma dużo do mówienia. Ustala to kolor naszego 3D Textu.

30.0,  40.0, 50.0 – są to koordynaty naszego 3D Textu – miejsce gdzie ma zostać utworzony.

40.0 – Draw Distance, czyli odległość z jakiej będzie widziany nasz 3D Text.

0 – Jest Virtual World w jakim ma zostać utworzony nasz 3D Text.

0 - testLOS - 0/1 – odpowiada za to by napis był widziany przez ściany czy nie.

DeletePlayer3DTextLabel(playerid, Text3D:1);

playerid - id gracza, któremu usuwamy 3D Text

Text3D:1 – Jest to nazwa naszego 3D Textu, którego wcześniej zdefiniowaliśmy.

UpdatePlayer3DTextLabelText(playerid, Text3D:name, Kolor, „tekst”);

playerid - id gracza, któremu zmieniamy treść 3D Textu

Text3D:0 – Nazwa naszego 3D Textu.

Kolor – Nowy (niekoniecznie, bo ktoś może ustawić ten sam) kolor naszego 3D Textu.

„tekst” – Nowy tekst, który będzie się ukazywał w naszym 3D Text.

Teraz pokaże jak zrobić Nicki w 3D text. Ma to zaletę, bo usuwa paski życia i armoru.

Na samym początku musimy usunąć normalne nicki i paski. Robimy to dodając do publica OnGameModeInit

ShowNameTags( 0 );
I bierzemy się za robienie prawidłowej części. Na początku u góry mapy definiujemy naszego 3D Text.
new Text3D:Nick[MAX_PLAYERS];
[MAX_PLAYERS] na końcu tego oznacza to, że dla każdego gracza tworzymy oddzielny 3D Text. Następnie w publicu OnPlayerConnect
Nick[playerid] = Create3DTextLabel(pName(playerid), COLOR_WHITE, 30.0, 40.0, 50.0, 30.0, 0, 0); 
To, że po Nick dałem [playerid] oznacza, że dla każdego gracza będzie tworzony 3D Text z jego Nickiem, a nie czyimś. Naszym kolejny krokiem, będzie przyczepienie 3D Textu do gracza. Idziemy do publicu OnPlayerSpawn i dodajemy:
Attach3DTextLabelToPlayer(Nick[playerid], playerid, 0.0, 0.0, 0.2);
Przyczepiliśmy teraz to gracza 3D Text z jego Nickiem, który chwilę temu utworzyliśmy.  Jak można zauważyć w ostatniej wartości ( przemieszczenie 3D Textu w osi Z ) dałem 0.2, ponieważ to jest optymalne ustawienie nicku. Nick będzie lekko nad głową gracza. Na sam koniec musimy przejść do publicu OnPlayerDisconnect i wklejamy tam:
Delete3DTextLabel(Text3D:Nick[playerid]);

Gry gracz wyjdzie z serwera, wówczas usuwa ten 3D Text. Dzięki temu unikniemy limitów związanych z maksymalną ilością 3DText.

Mam nadzieję, że udało mi się przybliżyć Wam działanie 3DTextów.

Nie zezwalam na kopiowanie poradnika na inne fora bez mojej zgody.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli zrobisz to tak:

Delete3DTextLabel(Nick[playerid]);
to wszystkie utworzone 3dText'y się usuną. Musi być:
Delete3DTextLabel(Text3D:Nick[playerid]);

Pozdrawiam LeNy  ;)

//NeMoO

Poprawione.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@up

Zamiast

Nick[playerid] = Create3DTextLabel(pName(playerid), COLOR_WHITE, 30.0, 40.0, 50.0, 30.0, 0, 0);
wklej:
Nick[playerid] = Create3DTextLabel(pName(playerid), GetPlayerColor(playerid), 30.0, 40.0, 50.0, 30.0, 0, 0);// Funkcja GetPlayerColor pobiera kolor gracza o id "playerid" i go zwraca.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

E:\Documents and Settings\Kaminiak\Pulpit\kolory.pwn(114) : error 017: undefined symbol "pName"

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

1 Error.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dokładnie nie wiem co to enum lecz widziałem to w mapach RP ..

tak jak jest pInfo to pewnie jest pName

przykład :

enum pInfo
{
	pKey[128],
	pLevel,
	pAdmin,
	pDonateRank,
	pRegistered,
	pTut,
	pSex,
	pAge,
	pExp,
	pCash,
	pGun1,
	pGun2,
	pGun3,
	pGun4,
	pAmmo1,
	pAmmo2,
	pAmmo3,
	pAmmo4,
	pBank,
	pSkin,
	pDrugs,
	pMaterials,
	pProducts,
	pJob,
	pContractTime,
	pPlayingHours,
	pAllowedPayday,
	pPayCheck,
	pFaction,
	pRank,
	pHouseKey,
	pBizKey,
	pSpawnPoint,
	pWarnings,
	pCarLic,
	pFlyLic,
	pWepLic,
	pVisitPass,
	pPhoneNumber,
	pPhoneC,
	pPhoneBook,
	pLottoNr,
	pListNumber,
	pDonator,
	pJailed,
	pJailTime,
	pHospital,
	pRequestingBackup,
	pRoadblock,
	pNote1[128],
	pNote1s,
	pNote2[128],
	pNote2s,
	pNote3[128],
	pNote3s,
	pNote4[128],
	pNote4s,
	pNote5[128],
	pNote5s,
	Float:pLoadPosX,
	Float:pLoadPosY,
	Float:pLoadPosZ,
	pLoadPosInt,
	pLoadPosW,
	pLoadPos,
	pZamkniete,
};

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Kopnij się z ćwierć obrotu w głowę CraceR

stock pName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    return name;
}

dodaj na koniec mapki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dokładnie nie wiem co to enum lecz widziałem to w mapach RP ..

tak jak jest pInfo to pewnie jest pName

przykład :

enum pInfo
{
	pKey[128],
	pLevel,
	pAdmin,
	pDonateRank,
	pRegistered,
	pTut,
	pSex,
	pAge,
	pExp,
	pCash,
	pGun1,
	pGun2,
	pGun3,
	pGun4,
	pAmmo1,
	pAmmo2,
	pAmmo3,
	pAmmo4,
	pBank,
	pSkin,
	pDrugs,
	pMaterials,
	pProducts,
	pJob,
	pContractTime,
	pPlayingHours,
	pAllowedPayday,
	pPayCheck,
	pFaction,
	pRank,
	pHouseKey,
	pBizKey,
	pSpawnPoint,
	pWarnings,
	pCarLic,
	pFlyLic,
	pWepLic,
	pVisitPass,
	pPhoneNumber,
	pPhoneC,
	pPhoneBook,
	pLottoNr,
	pListNumber,
	pDonator,
	pJailed,
	pJailTime,
	pHospital,
	pRequestingBackup,
	pRoadblock,
	pNote1[128],
	pNote1s,
	pNote2[128],
	pNote2s,
	pNote3[128],
	pNote3s,
	pNote4[128],
	pNote4s,
	pNote5[128],
	pNote5s,
	Float:pLoadPosX,
	Float:pLoadPosY,
	Float:pLoadPosZ,
	pLoadPosInt,
	pLoadPosW,
	pLoadPos,
	pZamkniete,
};

Hahahhahahahahah co to jest? hahahahaha

Bardziej mniej na temat już się nie dało xD

@down Dobra dobra nie chciałem Cię urazić ;/

edit: a kto tu mówił o offtopie poprostu się pomyliłeś ale jakby to czesio powiedział to było śmiechowe  ;D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Po pierwsze nie spamuj. Po drugie napisałem tak bo miałem takie wrażenie, że będzie ok. Po trzecie nie znałem takiej funkcji jak pName .. Po czwarte to ty off topujesz !

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiem, że pewnie odkopuję ale przypisanie tego 3D pod gracza ogólnie mi nie działa. Po prostu nie tworzy oraz przez to miałem błąd, że nie widziałem jak inni gracze się poruszają.

@CrackeR: Hm, spam i odkop.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ej bo mi wyszły takie errory proszę o pomoc

C:\Users\Mati\Desktop\bajki palki\Scooby doo\SA MP\gamemodes\mapa.pwn(54) : error 017: undefined symbol "pName"

C:\Users\Mati\Desktop\bajki palki\Scooby doo\SA MP\gamemodes\mapa.pwn(55) : warning 217: loose indentation

C:\Users\Mati\Desktop\bajki palki\Scooby doo\SA MP\gamemodes\mapa.pwn(61) : warning 217: loose indentation

C:\Users\Mati\Desktop\bajki palki\Scooby doo\SA MP\gamemodes\mapa.pwn(67) : warning 217: loose indentation

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

1 Error.

@edit sry już działa

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@dość wysoki up:

Moim zdaniem PVar'ów lepiej używac tylko wtedy, gdy danym chcemy używać w kliku fs'ach.

Delete3DTextLabel (pNick) nie usunie wszystkich 3DText'ów, a jedynie wyrzuci

array must be indexed

:P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×