[Aide] --Question Pour Un Champion--

Répondre
Partager Rechercher
Hello,

J'ai un projet en tete ... mais comme vous le savez (ou le devinerez), je debute en scriptage . (je bidouille pour le moment)


Projet:
Faire un compte a rebour (reglable dans le script), a partir d'un script d'horloge


Matieres:

-Script Horloge.
-Script d'affichage du nombre voulu.
-Script de compte a rebour.
-Textures 0,1,2,3,4,5,6,7,8,9
-5 prims. (le support et les 4 chiffres)
(que du reciclage me direz vous)




Script Horloge :
Code PHP:

integer first_number 2;
integer digits 4;
integer mil 1;
setTime(string time) {
    
integer len llStringLength(time);
    
integer i;
    for (
0digitsi++) {
        if (
len) {
            
integer number = (integer)(llGetSubString(timelen ilen i));
            
llMessageLinked(first_number inumber"""");
        } else {
            
llMessageLinked(first_number i, -1"""");
        }
    }
}
default
{
    
state_entry()
    {
        
llSetStatus(STATUS_PHANTOM STATUS_BLOCK_GRABTRUE);
//        llListen(8877661, "timekeeper", "", "");
        
llSetTimerEvent(1);
        
llMessageLinked(LINK_ALL_CHILDREN, -1"""");
        
llListen(2257,"","","");
    }
    
listen(integer chstring namekey idstring msg)
    {
        if (
msg == "mil"mil 1;
        if (
msg == "std"mil 0;
    }
    
timer()
    {
        
integer hh;
        
integer mm;
        
float time llGetWallclock();
//        float time = llGetTimeOfDay();
        
time=time + (( 60 ) * 60 ); // gmt plus 1 offset 9 hours
        
if (time 86399)
        {
            
time =time 86400;
        }
        
string score;
        
hh = (integer)time 3600;
        
mm = ((integer)time 3600) / 60;
        
hh hh 24;
        if (
mil == && hh 12) {
            
hh hh 12;
            
llWhisper(2258,"PM");
        } else {
            if (
mil == 0) {
                if (
hh == 0hh 12;
                
llWhisper(2258,"AM");
            } else {
                
llWhisper(2258,"mil");
            }
        }
        
score = (string)hh;
        if (
mm 10) {
          
score score "0" + (string)mm;
        } else {
          
score score + (string)mm;
        }
        if (((integer)
time 2) == 0) {
            
llWhisper(2259,"<1,0,0>");
        } else {
            
llWhisper(2259,"<0.23,0.01,0.02>");
        }
        
setTime(score);
    }

Qui communique avec les script dans les 4 auttre prims pour leur indiquer quel textures affichées.


[]= 1prim ===> [2][1]:[4][5]

Code PHP:

//
//  Digit 
//  
//  Implements one character of a digital display 
// 
 
integer FACE 0;               //  Which face to display value on
integer value 0;                    
display()
{
    if (
value == -1)
    {
        
llSetTexture("null"FACE);
    }
    if (
value == 0)
    {
        
llSetTexture("zero"FACE);
    }
    else if (
value == 1
    {
        
llSetTexture("one"FACE);
    }
    else if (
value == 2
    {
        
llSetTexture("two"FACE);
    }
    else if (
value == 3
    {
        
llSetTexture("three"FACE);
    }
    else if (
value == 4
    {
        
llSetTexture("four"FACE);
    }
    else if (
value == 5
    {
        
llSetTexture("five"FACE);
    }
    else if (
value == 6
    {
        
llSetTexture("six"FACE);
    }
    else if (
value == 7
    {
        
llSetTexture("seven"FACE);
    }
    else if (
value == 8
    {
        
llSetTexture("eight"FACE);
    }
    else if (
value == 9
    {
        
llSetTexture("nine"FACE);
    }
}
default
{
    
state_entry()
    {
        
llSetTexture("null"FACE);
        
llPassTouches(TRUE); 
    }
 
    
link_message(integer whointeger numstring strkey id)
    {
        
integer new_value num;
        if (
new_value != value)
        {
            
value new_value;
            
display();
        }
    } 
Et le fameux script de compte a rebour (qui lui ne fait qu'afficher le texte au dessus de la prims)

Code PHP:

// ENTER YOUR DATE TO COUNTDOWN TO
integer aYear 2012;
integer aMonth 12// 1 through 12
integer aDay 21// 1 through 31
integer aHour 12// 12 is noon
integer aMinute 0// 0 through 59
integer aSecond 0// 0 through 59
integer aGMToffset = -8// -8 for the SL clock
integer DST TRUE// TRUE or FALSE depending on daylight savings time.
// END SETTINGS
 
// BEGIN SCRIPT
integer expires;
integer MakeUNIXTimeinteger yearinteger monthinteger dayinteger hourinteger minuteinteger secondinteger GMToffsetinteger DST ) {
    list 
month_days = [ 0315990120151181212243273304334 ];    
    
integer time = ( year 1970 ) * 31536000;
    
time += ( day llList2Integermonth_daysmonth ) - ) * 86400;
    
time += ( hour GMToffset ) * 3600 minute 60 second;
    if ( 
DST == TRUE ) {
        
time += -3600;
    }
    if ( 
year 1972 ) {
        
integer past_leap_years = (integer)( ( year 1969 ) / );
        
time += past_leap_years 86400;
    }
    if ( 
year == && month ) {
        
time += 86400;
    }
    return 
time;
}
default 
{
    
on_rezinteger sparam )
    {
        
llResetScript();
    }
 
    
state_entry() 
    {
        
expires MakeUNIXTimeaYearaMonthaDayaHouraMinuteaSecondaGMToffsetDST );
        
llSetTimerEvent1.0 );
    }
    
timer() 
    {
        
integer seconds expires llGetUnixTime();
        if( 
seconds 
        {
            
integer days seconds 86400;
            
integer hours = ( seconds - ( days 86400 ) ) / 3600;
            
integer minutes = ( seconds - ( days 86400 ) - ( hours 3600 ) ) / 60;
            
seconds = ( seconds - ( days 86400 ) - ( hours 3600 ) - ( minutes 60 ) );
            
string s1 " Days, ";
            if( 
days == 
            {
                
s1 " Day, ";
            }
            
string s2 " Hours, & ";
            if ( 
hours == 
            {
                
s2 " Hour, ";
            }
            
string s3 " Minutes ";
            if ( 
minutes == 
            {
                
s3 " minute, ";
            }
            
string s4 " seconds ";
            if ( 
seconds == 
            {
                
s4 " second ";
            }
            
llSetText( (string)days s1 + (string)hours s2 + (string)minutes s3 "Left", <1.0,1.0,1.0>, 1.0 ); //no seconds version
            //llSetText( (string)days + s1 + (string)hours + s2 + (string)minutes + s3 + (string)seconds + s4 + "Left", <1.0,1.0,1.0>, 1.0 ); //with seconds
        
}
        else 
        {
            
state expired;
        }
    }
}
state expired 
{
    
on_rezinteger sparam )
    {
        
llResetScript();
    }
 
    
state_entry() 
    {
        
llSetText" ", <1.0,1.0,1.0>, 1.0 );
    }

Si vous pouviez deja m'indiquer par ou commencer ....


J'avais pensé a un script qui changerait la texture avec un delai de 1sec.

Exemple:

[0]---[2]---:---[0]---[0]
[0]---[1]---:---[5]---[9]
[0]---[1]---:---[5]---[8]
[0]---[1]---:---[5]---[7]
[0]---[1]---:---[5]---[6]
[0]---[1]---:---[5]---[5]
[0]---[1]---:---[5]---[4]
[0]---[1]---:---[5]---[3]
[0]---[1]---:---[5]---[2]
[0]---[1]---:---[5]---[1]
[0]---[1]---:---[5]---[0]
[0]---[1]---:---[4]---[9]

Mais laisse tomber la taille du script M.........D..........R

Donc je m'oriente plus vers la communication du compte a rebour vers les 4 prims
qui affichent l'heure.
Au lieu de
Code PHP:

llSetText( (string)days s1 + (string)hours s2 + (string)minutes s3 "Left", <1.0,1.0,1.0>, 1.0 ); //le remplacer par un moyen de communication . 

Mais lequel ?

Merci d'avance de vos conseil.

PS: C'est ma façon d'apprendre , je me jette dedans et ensuite j'apprend petit a petit ... ... ... quand je galere pour trouver, je retien mieu.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés