Odpowiedz
Autor Wiadomość
Nie podano
PostWysłany: 25 Mar 2009, 11:11 
Awatar użytkownika
Dołączenie:
Grudzień 2006
Posty: 79
nick w SL: AL Prospero
Krótkie pytanie:

mam jakiś tekst w llSetText i chcę do niego dodać dodatkowy string ale nie poprzez edycje skryptu tylko za dotknięciem obiektu.

Załóżmy, że tekst brzmi "dzisiejsza data to:", po dotknięciu obiektu chcę by do tekstu została dołączona data poprzez llGetDate()

w Visual Basicu takie zadanie realizowałbym tak:

MojText As String

MojTex = "dzisiejsza data to:"
Mojtext = MojText + data

Print MojText

a jak to zrobić w skrypcie SL?


Profil E-mail Offline
Nie podano
PostWysłany: 25 Mar 2009, 11:54 
Awatar użytkownika
Dołączenie:
Marzec 2007
Posty: 1054
nick w SL: Noah Perinal
Kod:
default
{
    state_entry()
    {
         llSetText("Dzisiejsza data to: "+llGetDate(), <0.0, 1.0, 0.0>, 1.0); // Display in green
    }



Kod jest tylko przykładem łączenia tekstu i llGetDate. Sprawdza i pokazuje aktualną datę , ale w chwili uruchomienia skryptu.


Profil E-mail Offline
Nie podano
PostWysłany: 25 Mar 2009, 12:53 
Awatar użytkownika
Dołączenie:
Grudzień 2006
Posty: 79
nick w SL: AL Prospero
Noah_Perinal napisał(a):
Kod:
default
{
    state_entry()
    {
         llSetText("Dzisiejsza data to: "+llGetDate(), <0.0, 1.0, 0.0>, 1.0); // Display in green
    }



Kod jest tylko przykładem łączenia tekstu i llGetDate. Sprawdza i pokazuje aktualną datę , ale w chwili uruchomienia skryptu.



Tak to już znam:) ale zależy mi aby skrypt odczytał istniejący tekst i dołaczył do niego date


Profil E-mail Offline
Nie podano
PostWysłany: 25 Mar 2009, 13:55 
Awatar użytkownika
Dołączenie:
Marzec 2007
Posty: 1054
nick w SL: Noah Perinal
Do tego co napisze właściciel na czacie po dotknięciu ma się ukazać za pomocą llSetText , tak ?


Profil E-mail Offline
Nie podano
PostWysłany: 25 Mar 2009, 16:29 
Dołączenie:
Lipiec 2008
Posty: 3307
nick w SL: MaxJames Chemistry
Kod:
default
{
    touch_start()
    {
         llSetText("Dzisiejsza data to: "+llGetDate(), <0.0, 1.0, 0.0>, 1.0); // Display in green
    }



A może dodanie odpowiedniego zdarzenia? Klikasz na obiekt i się tekst zmieni. nie sprawdzałem, czy działa, ale zdarzenie na pewno jest wtedy, kieyd klikasz.


Profil E-mail Offline
Nie podano
PostWysłany: 25 Mar 2009, 17:30 
Awatar użytkownika
Dołączenie:
Sierpień 2007
Posty: 2632
nick w SL: WoodPaker Barbosa
Kod:
integer listen_handle;
key rememberID;
string wiadomosc;


default
{
    state_entry()
    {  //Sluchaj na glownym czacie co kto mowi
        listen_handle = llListen(0, "", NULL_KEY, "");
    }
    listen( integer channel, string name, key id, string message )
    {
        rememberID=id;
        wiadomosc=message;

    }
    touch(integer param)
    {   
        if(llDetectedKey(0)==rememberID)
           {
               llSetText(wiadomosc+" "+llGetDate(),<1,0,0>,1);
            }
    }

}


Skrypt powyzej dziala tak
-cos trza powiedziec na ogolnym (mozna zmienic kanal)
-trza kliknac w obiekt
-po kliknieciu obiekt sparwdza czy klika ta sama osoba co powiedziala jakies slowa
-Jesli tak to ustawia tekst wypowiedziany na czacie glownym i dopisuje do niego date :-)


Profil E-mail Offline
Nie podano
PostWysłany: 26 Mar 2009, 13:04 
Awatar użytkownika
Dołączenie:
Listopad 2007
Posty: 1181
nick w SL: Krzysztof Aeon
Nie zapomniałeś przypadkiem dodać samego listena, oprócz przypisania go do integera?


Profil E-mail Offline
Nie podano
PostWysłany: 26 Mar 2009, 15:54 
Awatar użytkownika
Dołączenie:
Sierpień 2007
Posty: 2632
nick w SL: WoodPaker Barbosa
to zanczy co masz na mysli?
Przeciez masz najpierw w state_entry wywolanie listena, a potem samo zadrzenie pod spodem :-)
Chyba, ze nie o to pytales :-)


Profil E-mail Offline
Nie podano
PostWysłany: 26 Mar 2009, 16:25 
Dołączenie:
Czerwiec 2008
Posty: 55
nick w SL: Aligatorek Furse
Chyba problem dotyczy odczytania tekstu jaki jest nad obiektem, a nastepnie dodaniu tej daty na koncu.
Wyglada na to, ze sie nie da odczytac wyswietlanego tekstu.
Jeżeli tekst jest generowany przez ten sam skrypt to:
Mozna ten sam tekst zapamietac na jakiejs zmiennej w skrypcie i później z niej odczytywać. Albo nawet w Description obiektu.
Jezeli tekst jest generowany przez inny skrypt. To moze komunikacja wewnatrz prima lub zapisanie w Description.
Raczej nie widze mozliwosci takiego zastosowania zeby ten prezentowany tekst w momencie pojawienia sie nie mogl byc zapamietany. No chyba, ze to ktos obcy wrzuca nam skrypt wyswietlajacy napis. Wtedy raczej nie ma rozwiazania.


Profil E-mail Offline
Nie podano
PostWysłany: 26 Mar 2009, 16:44 
Dołączenie:
Lipiec 2008
Posty: 3307
nick w SL: MaxJames Chemistry
Jeżeli szanowna moderatornia nie usunie tego postu, to na pewno drobne rozwiązanie jest. Zamiana linijki
Kod:
wiadomosc=message;
na linijkę
Kod:
wiadomosc += '\n' + message;
może pomóc w zapamiętaniu.

trzeba też w zdażeniu state_entry ustawić początkową wartość dla zmiennej wiadomości.


Jeżeli gdzieś wstawiłem błąd, to mnie proszę poprawić, ale chyba w taki sposób można zapamiętać wiadomość. Użycie \n powoduje, że tekst jest wyświetlany od nowej linii.


Szanowna moderatornia usunęła post, który był tylko i wyłącznie cytatem. Wg regulaminu należy dodać coś od siebie 8-) Madelaine


Ostatnio edytowany przez projekt, 26 Mar 2009, 17:18, edytowano w sumie 1 raz

Profil E-mail Offline
Nie podano
PostWysłany: 26 Mar 2009, 19:12 
Awatar użytkownika
Dołączenie:
Sierpień 2007
Posty: 2632
nick w SL: WoodPaker Barbosa
Ale po co? Przeciez to masz w miejscu wyswietlania tekstu :-)
Kod:
llSetText(wiadomosc+" "+llGetDate(),<1,0,0>,1);


Profil E-mail Offline

Wyświetl posty z poprzednich:  Sortuj według  

Odpowiedz



Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość

Panel
Góra
Skocz do:  
SecondLife.pl designed by CvX! Powered by phpBB © phpBB Group - tłumaczenie
SecondLife.pl nie jest oficjalną stroną Second Life. SecondLife.pl is an unofficial Second Life website. SecondLife, SL logo and Second Life related graphics are trademarks of Linden Lab.

Entropia Universe , Planet Calypso