Nadaljevanje na temo se začne z " Delitev bytecode Mono ", čemur sledi" Ali vaša skripta potrebujete nogavice ", to je še en prispevek, ki opisuje še en način, da prenese možnosti konfiguracije s scenariji. Res boril z naslovom ta, in tako ne bi prišli do ničesar, kar bi kot srčkan kot " Ali vaša skripta potrebujete nogavice ". No ja ...
Če povzamemo temo še enkrat, da lahko nastavite skripte za različne namene, ima vsaj dve prednosti.
- Skripte, ki ne potrebujejo treba zbrati, da majhne spremembe parametrov podporo bytecode delitev.
- Biti sposoben oblikovati enoten scenarij, da služijo več namenu lahko naredi scenarij lažje vzdrževati.
V zadnji post sem opisal način, da nastavite skripte z dajanjem oblačila predmetov s posebnimi imeni v notranjosti objekta. Drug način za določitev konfiguracije parametrov je, da jih preberete iz opisa objekta.
Predmet Opis je niz do 127 znakov, ki jih je mogoče tako brati in pisno od scenarija. Pred januarjem 2008, niz nekoč vsaj dvakrat toliko časa. Ampak, da se obravnavajo nekaj drugih napak, LL spremenila največjo dolžino do 127. To pa povzroča veliko motenj v skupnosti. Pojdi si oglejte SVC-1394 in s tem povezanih vprašanj za več informacij.
LlGetObjectDesc funkcija je, kaj se uporablja, da se glasi opis predmeta scenarij je noter Pravzaprav, če skript je v Prim, povezanih z drugimi prims, bo to le preberite opis od Prim vsebuje scenarij.
objdesc = llToLower (llStringTrim (llGetObjectDesc (), STRING_TRIM));
V zgornjem primeru sem prihranek niz predmeta opis v spremenljivko, imenovano "objdesc". Prav tako uporabite llToLower funkcijo, da bi niz male črke, tako mi ni treba skrbeti, kaj stvari so tako noter Vse primerja bom pa v spodnjem primeru. In uporabljam llStringTrim funkcijo odstraniti vse vodi in zaključnimi praznimi mesti. To je enostavno dal prazno nekje ga ne namerava, tako da odstranite vse vodi in zaključnimi praznimi mesti pomaga nekoliko.
Po llGetObjectDesc kodo, skripta gre skozi vrsto, če in sicer, če primerjamo izjave niz s svojimi posebnimi izbranih okoljih. V tem primeru, "debug na" in "debug off". Iskanje ali druge strani, skript obrne na debug zastavo vklop in izklop. Lahko dobite tako zapleten, kot boste želeli tukaj, dokler ne gredo mimo meje 127 znakov. Predmet opis bi lahko držite nekaj ključnih besed, ki se uporabljajo za določitev več možnosti v vašem scenariju.
Nekatere posebnosti o predmetu opisa.
- Če opis je nična in če je bil predmet shrani in vzete iz zalog, se bo funkcija vrne "(brez opisa)" namesto nično ali prazno niz. Torej, tvoj scenarij je potrebno za to, da če je pomembno vedeti, če opis je nična.
- Če opis je nična in če je objekt ni bil shranjen in vzete iz zalog, se bo funkcija vrne null niz.
- Če ste kdaj kaj vnesli v opis, nato pa poskušali odstraniti, se lahko opis zdaj prostore. Morda boste morali tega zavedati. Če uporabljate llStringTrim funkcijo, kot sem, niz se pojavijo kot nična in da vam ni treba skrbeti, koliko se lahko prostori tam.
- Če boste poskušali odstraniti opis z brisanjem znakov v urejanje GUI, bo videti, kot je šel, ampak se dejansko ne shrani kot nično, ko prideš ven od urejanje. Niz bo še vedno tam, ko pogledaš enkrat. Obstaja nekaj odprtih JIRAs o tem. Lahko nastavite nazaj na opis null s pomočjo llSetObjectDesc ("") funkcijo.
Nekaj drugih opombe o vzorčni scenarij.
V " Ali vaša skripta potrebujete nogavice "vzorec, sem uporabil spremenjen dogodek za odkrivanje sprememb zalog, in sproži v obratih za predelavo možnosti samodejno. Ni načina, da samodejno zazna spremembo opisa, tako da boste morali imeti način, kako povedati, da scenarij prebrala opis, če ga spremenite ali pa samo ročno ponastavite scenarij, da bi bilo prebrati opis znova.
V tem vzorcu, sem dal vse opcije predelavo v proceduro readdesc () in nato uporabili touch_start dogodek sproži readdesc () Potprogram. Tudi to je nekaj vzorec koda za prikaz pristop in morda ne želite da se to zgodi, ko se dotakne predmeta. Prav tako sem imel readdesc () v state_entry in da lahko edino mesto, si ga želeli v vašem scenariju.
Na nek način se lahko ta pristop na konfiguracijo enostavnejši od pristopa nogavice. Videl sem veliko primerov tega pristopa objekta opis ki se uporabljajo v SL. Vendar pa je lahko vnesete napačno stvar ali kako drugače nered predmeta opis, tako da boste morali odločiti, koliko preverjanje napak za tipkarske napake, ki jih morate imeti v svojem scenariju.
In zdaj za vzorčno kodo. Ta vzorec je bil preizkušen tako v SL in OpenSim .
// Config Demo - Read Object Desc // // Script to demonstrate the use of the object description to supply // parameters. // // The object description is checked to see if it says either 'debug on' // or 'debug off'. Set the gDebug flag accordingly. // // Micheil Merlin/SL - 1/1/2010 integer gDebug = 0; // Debug flag. readdesc() { string objdesc; // Object description. // Read the description field for the object. // Translate to lower case and trim blanks from the end. objdesc = llToLower(llStringTrim(llGetObjectDesc(), STRING_TRIM)); // Look for an object description of 'debug on' in lower case. if (objdesc == "debug on") { gDebug = 1; // Look for an object description of 'debug off' in lower case. } else if (objdesc == "debug off") { gDebug = 0; // Check for an empty object description. // Empty object descriptions could either be blanks or the string // '(no description)'. Earlier, we trimmed blanks from the string // so if it was blanks, it is now a null string. } else if (objdesc == "" || objdesc == "(no description)") { llSay(0, "No object description exists."); // If the object description is not one of our choices or empty, then // say the string. } else { llSay(0, "Object Description of '" + objdesc + "' found. We weren't expecting this."); } llSay(0, "Debug is set to " + (string)gDebug); // // The object description processing is complete. Other code could be // inserted here. // } default { state_entry() { readdesc(); // Process object description. } // This event is triggered when the object is rezzed. on_rez(integer num) { llResetScript(); // Reset script when object rezzed. } // This event is triggered when the object is touched. touch_start(integer total_number) { readdesc(); // Go check the object description. } } 


















Uporabil sem opise predmetov, kot dobro. Bug ki se uporablja za obstoj, ki je omogočila, da shranite ogromno količino podatkov, z opisi predmetov, vendar so od lip določi to. Prav tako lahko shranite informacije o konfiguraciji v note kartico. Naredil sem video vodič, ki prikazuje, kako brati vrednosti iz note kartico.
Dedric Mauriac
29. januar 10 na 10:36 am
Ah, pozabil sem povezavo. Tukaj je - http://dedricmauriac.wordpress.com/2008/05/03/configuration-reading-tutorial/
Dedric Mauriac
29. januar 10 na 10:36 am
Da o notecard. Sem ga shranili za zadnji, saj zahteva malo več truda kot drugi nekaj metod, vendar ponuja veliko več možnosti.
Uporabljam metodo notecard konfiguracijo največkrat če bom samo še eno ali dve stvari zastavili. To ponavadi ne zdi, da je temu tako, čeprav ... lol. Toda, ko sem imela le eno ali dve stvari, bom uporabiti metodo, o "nogavice rokom.
Micheil Merlin
30. januar 10 na 7:23 uri
Morda bo zanimalo, kako mi rešiti to z uporabo RealXtend pozna. Ini zapis v razširjenem polju predmeta opis.
Peter Šala
30. januar 10 na 11:17 uri
Zdaj, da je res lepo lastnost Peter. Bolj elegantno kot navaden starih notecards. Bilo bi lepo, če SL imeli kaj takega.
Micheil Merlin
31. januar 10 na 11:56 am