iliveisl

Scripting Këshilla: Vendos përshkrim objekt në përdorim të mirë

5 komente

Vazhdimi në një fillim të temë me " Sharing Mono bytecode ", pasuar nga" A shkrimit tuaj kanë nevojë për çorape ", ky është një tjetër mesazhin e përshkruar një metodë tjetër për të kaluar mundësitë e konfigurimit të Scripts. Unë me të vërtetë luftuan me titullin e ketij një dhe vetëm nuk mund të dalë me ndonjë gjë të afërt si cute si " A shkrimit tuaj kanë nevojë për çorape ". Oh well ...

Për ta përmbledhur temën përsëri, duke qenë në gjendje për të konfiguruar Scripts për qëllime të shumta ka të paktën dy avantazhe.

  • Scripts që nuk duhet të jetë hartuar për të bërë ndryshime të vogla parametër të mbështesë ndarjen e bytecode.
  • Të jesh në gjendje për të konfiguruar një dorëshkrim të vetëm për t'i shërbyer qëllimeve të shumta potencialisht bën një dorëshkrim më të lehtë për të ruajtur.

Në postimi i fundit unë e përshkroi një mënyrë për të konfiguruar Scripts, duke e vendosur artikuj veshje me emra të veçantë brenda objektit. Një tjetër mënyrë për të vendosur parametrat e konfigurimit është për të lexuar ato nga përshkrimi objekt.

Përshkrimi objekt është një varg i deri në 127 karaktere që mund të jenë të dyja të lexuar dhe shkruar nga e shkrimit. Para se deri në janar 2008, varg përdoret për të paktën dy herë më gjatë. Por në mënyrë që të adresuar disa bugs të tjera, LL ndryshuar kohëzgjatjen maksimale të 127. Kjo nga ana e shkaktuar shqetësim shumë brenda komunitetit. Shkoni hidhni një sy në SVC të 1394 dhe çështjet e lidhura për më shumë informacion.

LlGetObjectDesc funksion është ajo që është përdorur për të lexuar përshkrimin e objektit script është futur me emrin tuaj të vërtetë, nëse dorëshkrim është në një ngrirë lidhur me prims të tjera, ai vetëm do të lexoni përshkrimin nga ngrirë përmban script.

objdesc = llToLower (llStringTrim (llGetObjectDesc (), STRING_TRIM));

Në shembullin e mësipërm, unë jam i kursyer vargun përshkrimin e objektit në një variabël të quajtur 'objdesc'. Unë gjithashtu përdorin llToLower funksionin për të bërë rastin string ulët kështu që unë nuk duhet të shqetësohen për atë rast gjërat janë futur me emrin tuaj Gjithcka krahason unë nuk do të jetë në rastin më të ulët. Dhe, unë përdorni llStringTrim funksionin për të hequr çdo udhëheqës dhe zvarritës boshllëqet. Është e lehtë për të vënë një bosh diku ju nuk keni ndërmend, kështu heqjen e çdo udhëheqës dhe zvarritës boshllëqet ndihmon disi.

Pas llGetObjectDesc kod, script kalon nëpër një seri e nëse dhe tjetër në qoftë se deklarata krahasuar vargun në parametrat e veçantë e mia zgjedhur. Në këtë rast, "debug mbi 'dhe' debug off '. Gjetja e as i atyre, script kthen një flamur debug ose off. Ju mund të merrni aq komplekse sa të doni këtu për aq kohë sa ju nuk e kaloj kufirin e karakterit 127. Përshkrim i objekteve mund të mbajë disa fjalë kyçe që do të përdoren për të vendosur disa opsione brenda shkrimit tuaj.

Disa veçori në lidhje me përshkrimin e objektit.

  • Nëse përshkrim është i pavlefshëm dhe në qoftë se objekti është ruajtur dhe marrë nga inventari, funksioni do të kthehet "(no description) 'në vend të null ose një varg bosh. Pra, script juaj ka nevojë për të lejuar për këtë, nëse është e rëndësishme që të dini nëse përshkrim është i pavlefshëm.
  • Nëse përshkrim është i pavlefshëm dhe në qoftë se objekti nuk është ruajtur dhe marrë nga inventari, funksioni do të kthehet një varg null.
  • Nëse ju keni shtypur ndonjëherë ndonjë gjë në përshkrimin dhe pastaj u përpoq për të hequr atë, përshkrimi tani mund të ketë hapësira. Ju mund të kenë nevojë të jetë i vetëdijshëm për këtë. Nëse ju përdorni llStringTrim funksionin si unë kanë, string duket si e pavlefshme dhe ju nuk duhet të shqetësohen për sa hapësira mund të jetë atje.
  • Nëse ju provoni të hiqni përshkrim nga fshirjes karaktere në GUI edit, ajo do të duket si ajo është e shkuar, por nuk është ruajtur në të vërtetë si një null kur ju merrni nga redaktim. String do të jenë ende aty kur ju shikoni përsëri. Ka JIRAs pak të hapura për këtë. Ju mund të vendosni përshkrim të kthehet në null duke përdorur llSetObjectDesc ("") funksion.

Disa shënime të tjera në lidhje me shkrimin e mostrës.

Në " A shkrimit tuaj duhet çorape "mostër, kam përdorur ndryshuar ngjarje për të zbuluar ndryshimin e inventarit dhe të shkaktojë ripërpunimin e opsioneve automatikisht. Nuk ka asnjë mënyrë që të zbulojë automatikisht ndryshimin e përshkrimit kështu që ju do të duhet të ketë një mënyrë për të treguar script për të reread përshkrim nëse ju ndryshojë atë ose vetëm me dorë të rivendosur script për ta bërë atë të lexuar përshkrimin përsëri.

Në këtë mostër, kam vënë të gjitha të përpunimit të opsionit në subroutine readdesc () dhe përdoren pastaj touch_start ngjarje të shkaktojë readdesc () subroutine. Përsëri, kjo është një kod mostër për të demonstruar qasje dhe ju nuk mund të dëshironi që kjo të ndodhë kur objekti është i prekur. Unë gjithashtu kanë readdesc () në state_entry dhe që mund të jetë i vetmi vend qe doni atë në shkrimin tuaj.

Në disa mënyra, kjo qasje të konfigurimit mund të jetë e thjeshtë se qasjen e çorape. Unë kam parë shumë shembuj të kësaj qasjeje përshkrim të objektit në përdorim brenda SL. Megjithatë, është e lehtë të tipit gjë e gabuar ose bela ndryshe deri përshkrim objekt kështu që ju do të duhet të vendosin se sa gabim kontrolluar për gabime shkrimi ju duhet të keni në shkrimin tuaj.

Dhe tani per kodin mostër. Kjo mostër është testuar në të dy SL dhe 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. } } 
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Shkruar nga Micheil Merlin

Jan 27, 2010 at 8:20 pm

Postuar në jetën e dytë

Tagged with ,

5 Responses to "Këshilla scripting: Vendos përshkrim objekt në përdorim të mirë '

Regjistrohu për komentet me RSS ose ndjekëse për të 'Këshilla scripting: Vendos përshkrim objekt në përdorim të mirë'.

  1. Unë e kam përdorur përshkrime objekt si. Një bug përdorur për të lejuar ju që ekzistojnë për të ruajtur një sasi masive të të dhënave në përshkrimet objekt, por Lindens kanë fiksuar që nga kjo. Ju gjithashtu mund të ruani informacionin e konfigurimit brenda një kartë shënim. Unë bëra një video tutorial që tregon si të lexuar vlerat nga një kartë shënim.

    Dedric Mauriac

    29 Jan 10 në 10:36 am

  2. Dedric Mauriac

    29 Jan 10 në 10:36 am

  3. Po në lidhje me notecard. Unë u shpëtuar atë për të kaluar si ajo kërkon përpjekje pak më shumë se dy të tjera të metodave, por ofron shumë më tepër potencial.

    I përdorni metodën e konfigurimit notecard më shpesh nëse unë vetëm një apo dy gjëra për të vendosur. Kjo zakonisht nuk duket të jetë rasti pse ... lol. Por, kur unë kam vetëm një ose dy gjëra, Unë do të përdorë metodën e 'çorape të.

    Micheil Merlin

    30 Jan 10 në 7:23 pm

  4. Ju mund të jenë të interesuar për të parë se si unë e trajtoi këtë në RealXtend duke përdorur të njohur. Iniciativë simbol në fushën përshkrim të zgjeruar të objektit.

    Peter Quirk

    30 Jan 10 në 11:17 PM

  5. Tani që është një tipar Peter really nice. Më elegante se notecards thjeshtë të vjetra. Ajo do të mirë nëse SL kishte diçka të tillë.

    Micheil Merlin

    31 Jan 10 në 11:56 am

lënë një përgjigje - shtoni mendimet tuaja