MOOsaico Help (#161) ==================== accents @idioma ml-mail @quicksend acentos @idiomas ml-prog @show-guest-ids @all-languages @idiomes ml-strings tema behavior irc ml-tell @tempo behaviour @join ml-text theme @client-options @language modales @time comportamento @languages MOOsaico-index @todos-idiomas comportamiento @lenguas multilingual @twitter @descreve @lookfor multilingue uvl @describe manners @name uvls @descriptions @mcp @name-swap @ways events @measure @names @weather @go ml-commands @nome guest-features ml-data programmer-policy ACCENTS/ACENTOS =============== Acentos ======= Para uma melhor consiste^ncia nos textos visualizados pede-se que acentuem todas as palavras que a isso sejam obrigadas ortograficamente. Para isso, todos os acentos devem ser colocados depois da letra a acentuar excepto se o acento for grave; neste caso aparecera' antes da letra. Por exemplo: Rojo~es `a moda do Minho / Corac,a~o (Portugue^s) Ojala' que este pequen~o ejemplo basta. (Espan~ol) ku_ko_ basu wa doko desu ka? (Nihongo) @ALL-LANGUAGES/@TODOS-IDIOMAS ============================= Sintaxe: @todos-idiomas Mostra uma lista de todos os idiomas definidos aqui no MOO. @CLIENT-OPTIONS =============== * charset Existem tre^s tipos de visualizac,a~o de texto: latin1 UTF-8 french-notation que podem ser definidos por: @client-options charset=latin1 @client-options charset=UTF-8 @client-options -charset * noresizeinfo Se na~o pretendes que o MOO te confirme que viu que mudastes as dimenso~es da janela podes activar esta opc,a~o: +noresizeinfo O cliente tem de suportar MCP/2.1 e ter o pacote dns-nl-vgmoo-client * loginonstatus Se pretendes ver as ligac,o~es da faceta Login Watcher (#896) na barra de estado do teu cliente MCP, e se suportar dns-com-awns-status. Ve^ tambe'm 'ajuda @mcp'. @DESCRIBE/@DESCREVE =================== Sintaxe: @descreve <objecto> in <idioma> as <texto> Altera o descrica~o do <objecto> no <idioma> especificado para o <texto> dado. (Descric,o~es do <objecto> em outros idiomas na~o estam afectadas.) Para uma lista dos idiomas definidos, faz "@todos-idiomas". @DESCRIPTIONS ============= Sintaxe: @descricoes <objecto> Mostra as descric,o~es dum objecto em todos os idiomas em que esta' disponi'vel, na~o so' no seu idioma seleccionado. EVENTS ====== EVENT-REPORTING ROOMS The default room has been replaced with the event-reporting room. Whenever something "interesting" happens in such a room, messages get sent to objects (in the room or not) which are interested in such events. This sort of system makes it very simple to program, for example, a dog that barks every time someone enters a room, or a security system that beeps every time someone leaves the jail. DEFAULT EVENTS There are four events which have been built into the generic event-reporting room: enter, exit, connect and disconnect. Whenever someone or something performs any of these actions, the room will notify any interested objects. For information about how to signify interest in these events and how to program objects to respond, see the section below entitled, "EVENT-AWARE OBJECTS". It is worth noting that dropping an object in a room and entering a room are both equivalent, since in both cases something is "entering" the room. Correspondingly, the "enter" event will be triggered in both cases, and it is up to the programmer to distinguish between them. CUSTOM EVENTS If you wish to add or remove additional events on an event room, use the commands: addevent <event name> to <room> rmevent <event name> from <room> The effect of these commands is to modify the .event_list property on the room and the list of listeners. Essentially, adding an event to a room signifies that you anticipate the event happening in that room. However, event-reporting rooms can handle events of any name -- they just happen to be much more efficient when handling expected events. EVENT-AWARE OBJECTS Creating event-aware objects is simple. To have an object respond to "enter" events, create a verb on the object named on_enter (this none this). The :on_enter verb will be called every time something enters. Similarly, verbs named :on_exit, :on_con, :on_dis, or even :on_bark may be added to ordinary object to make them event-aware. In fact, any verb beginning with "on_" will act as an event-handling verb. The event-reporting room will usually call the :on_* verbs with one argument: args[1] is a list of objects which are affected by the event. By default, args[1][1] is the "direct object," or what object triggered the event and args[1][2] is the "indirect object," or what object was affected by the event. For "enter" and "exit" events, args[1][1] will be the player that did the moving, and args[1][2] will be the room moved to/from. For "con" and "dis" events, args[1][1] will be the player doing the (dis)connecting, and args[1][2] will be the room in which it happened. Using the value of args[1] is more accurate than trying to use "dobj" or "iobj," since they will probably be undefined for some events. The args list is (by default) guaranteed to contain relevant information. EVENT REGISTRATION The event-reporting room keeps a list of objects interested in each event (in the .event_listeners property). When objects enter the room (or, equivalently, are dropped in the room), they are registered for any events they are interested in. This is done by checking for :on_* verbs and registering the object for the corresponding events. For example, if a "security box" had an :on_enter verb, it would be registered for "enter" events. If a "front gate" had :on_enter and :on_exit verbs, it would be registered for both "enter" and "exit" events. If an object has :on_* verbs which aren't in the list of events recognized by the room, they are ignored (if any of those custom events are triggered, though, the :on_* verb WILL be called). When an object leaves the room or is picked up, it is automatically unregistered for events in that room. EXPLICIT EVENT REGISTRATION If you wish to have an object explicitly registered for events in a certain room, use these commands: register <object> in <room> unregister <object> in <room> Explicitly registering an object for events in a room prevents it from being automatically registered and unregistered if it moves into/out of the room. This allows for remote objects to be aware of events in the room. An example of this would be a centralized security system that keeps track of all the rooms in a house, or a counter that tallies the number of people entering a given room. EVENT AWARENESS There are situations where it becomes desirable to turn off event-awareness for certain objects. This may occur if there are too many people walking through the room, or more importantly, if the event-handling verb is causing errors and distracting innocent bystanders. If the object is a descendent of the generic event-aware thing, the command to toggle event-awareness is: toggle <thing> If the object is NOT a descendent of the generic event-aware thing, then it suffices to create and set the .events_off property to 1 and to do: update <room> which updates the event_listeners list. Note that if there is no events_off property, the object is assumed to be event-aware. To toggle event-reporting in a room, the command is: toggle <room> When events are turned off for an entire room, no events will be reported at all. EVENT ERRORS The event code does its best to trap errors. However, it cannot catch errors made by other programers, in their :on_* verbs. If the :on_enter on a dog in the E&L Garden is broken, for example, it is going to spew error messages at everyone that enters. Needless to say, this can become distracting and annoying; it is always a good idea to test out your event verbs privately before dropping your object in a public area. If the event code happens to successfully catch an error, the owner of the object will be paged (if online) or MOOmailed about the error. The object will also be deregistered for events in the given room. MORE DETAILS Generic Event-Reporting Room (#1737) verbs: update <room> update listenesr reg*ister <what> in <room> explicitly register something unreg*ister <what> in <room> explicitly unregister something toggle*events <thing> toggle event-awareness addevent <what> to <room> add custom event to room rmevent <what> from <room> remove event from room stat <room> info on room properties: event_list supported events event_listeners listening objects event_listeners_explicit explicitly registered objects event_active reporting events? Generic Event-Aware Thing (#1740) verbs: toggle*events <thing> toggle event-awareness properties: events_off ignoring events? @GO/@JOIN ========= Sintaxe: @go <local> - teleporta-se para um certo local. @join <pessoa> - teleporta-se para o si'tio onde se encontra a pessoa `@go #82' teleporta-o/a para o Sala~o Central. `@join Ziggy' teleporta-o/a para o local onde estiver o Ziggy. GUEST-FEATURES ============== As personagens de visita (Guests) na~o podem adicionar qualquer faceta. So' as que forem aprovadas para a utilizac,a~o por "guests" e' que podera~o ser adicionadas por estes. O(A) programador(a) da faceta e' normalmente o(a) responsavel por controlar isto, mas os feiticeiros intervira~o se acharem que e' caso disso. Os tipos de facetas seguintes na~o sera~o aceites para serem utilizadas por "guests"; quem usar este tipo de facetas tera' de se ligar com a sua personagem sendo assim responsavel pelo seu uso: (a) Spam. Facetas que desenhem grandes imagens ou produzam muitas linhas de saida. Os "guests" na~o precisam disto. A poli'tica corrente de admisso~es e' bastante liberal. Que criem uma personagem. (b) Sexualmente explicita. A utilizac,a~o de comunicac,a~o sexualmente explicita contra pessoas na~o conhecidas na~o deve usada. Uma personagem de visita, na~o pode ser responsabilizada por exageros cometidos, e por isso na~o deve ter acesso a utensi'lios destes. (c) Spoofing. "Spoofing" na~o e' uma actividade aceitavel em muitos casos -- especialmente se e' feita por pessoas ano'nimas. (d) Descorte^s no geral. Ja' basta que os "guests" possam ser uma fonte de problemas so' com `:' ou `page' sem se acrescentar a possibilidade de o serem ainda mais de uma maneira evoluida por programac,a~o. Ve^ tambem "ajuda comportamento". IRC === Para quem so' conhecia IRC segue-se uma tabela de semelhanc,as de comandos. IRC MOOsaico --- -------- <falar> say /msg page /nick @rename /join @go /kick @eject /part @quit /who @who /names look/@who /memoserv send @send/@quicksend /memoserv read @read/@next/@mail Usa o comando 'ajuda' seguido do comando a usar no MOOsaico para saberes pormenores. @LANGUAGE/@IDIOMA ================= @idioma [portugues|ingles|...] - Muda ou informa a linguagem de interacc,a~o que esta' a ser usada. `@idioma ingles' comeca a mostrar-lhe todas as descric,o~es na lingua de Shakespeare. Nota: Se faltar a descric,a~o de um objecto num idioma, ele sera' apresentado noutro. Ve^ tambe'm o comando '@todos-idiomas'. @LANGUAGES/@IDIOMAS/@IDIOMES/@LENGUAS ===================================== Sintaxe: @idiomas @idiomas <quem> Da' uma lista dos quais idiomas fala <quem>. Por defeito, o <quem> e' voce^ mesmo. Sintaxe: @languages = <idioma1> <idioma2> ... @languages <quem> = <idioma1> <idioma2> ... Declara que <quem> e' capaz de falar os idiomas especificados. Por defeito, o <quem> e' voce^ mesmo. (So' um feiticeiro pode mudar esta informac,a~o para outra personagem, mas qualquer personagem pode mudar os idiomas dos seus fantoches.) @LOOKFOR ======== Sintaxe: @lookfor <pessoa> @lookfor! <pessoa> No momento em que se liga, sera' informado/a das pessoas que se encontram no MOO e que fazem parte da sua lista pessoal. Use @lookfor para adicionar uma personagem `a lista e @lookfor! para a remover da lista. MANNERS/BEHAVIOR/BEHAVIOUR/COMPORTAMENTO/COMPORTAMIENTO/MODALES =============================================================== Comportamento ============= Primeiro que tudo, qualquer acc,a~o que ameace a integridade funcional do MOO, ou cause algum problema `as pessoas que apoiam o MOO, fara' com que o utilizador responsa'vel seja imediatamente expulso pelos feiticeiros. Se encontrar um buraco ou erro no nu'cleo, relate o facto a um feiticeiro sem tentar tirar vantagem disso. Furar o sistema sai fora do a^mbito de comportamento. Um bom comportamento resume-se a deixar o MOO funcionar e na~o hostilizar as outras personagens. o Seja educado/a. Evite rudeza. Vale a pena utilizar o MOO se for um lugar aprazi'vel para todas as pessoas. Quando se mostram rudes e so'rdidas umas com as outras, deixa de ser ta~o agrada'vel. O MOO e' um local para as pessoas terem uma actividade social, programarem, divertirem-se e comunicarem enquanto mantiverem um certo grau de educac,a~o entre elas. o Se algue'm for desagrada'vel consigo ignore-o/a. Por favor na~o tente vingar-se; isso so' aumentara' o ni'vel de rudeza e fara' com que as pessoas envolvidas percam o seu aprec,o pelo MOO. Se algue'm estiver a aborrece^-lo/a tem va'rias opc,o~es. O primeiro passo apropriado e' normalmente pedir-lhe/s que parem. Se isto na~o resultar, e evitar a pessoa/s em causa na~o for suficiente, alguns verbos que podem ser u'teis sa~o @gag e @eject. Existe ajuda em todos eles. o Respeite a sensibilidade das outras pessoas. Os participantes no MOO te^m a sua origem num alargado leque de culturas e ambientes. A sua ideia acerca do que constitui um discurso ou descric,o~es ofensivas e' provavelmente diferente da de outros utilizadores. Tente manter os textos que casualmente as pessoas possam ve^r livres de expresso~es potencialmente ofensivas. Se pretende construir objectos ou zonas que porventura suscitem controve'rsia por parte de algum segmento da nossa comunidade, fornec,a avisos suficientes aos exploradores casuais, de modo que lhes seja permitido escolher na~o interactuar com esses objectos ou zonas. o Na~o grite. E' trivial criar um comando MOO que imprima uma mensagem a todos os utilizadores em linha. Por favor na~o o fac,a. o Apenas teletransporte as suas coisas. Por defeito, a maior parte dos objectos ( incluindo os utilizadores ) sa~o passiveis de ser movidos livremente de um si'tio para o outro. Este facto permite a fa'cil criac,a~o de certos objectos u'teis. Infelizmente, isso tambe'm permite aborrecer outras pessoas, movendo-as e aos seus objectos sem o concentimento destas. Na~o fac,a isso. o Na~o engane as pessoas (`spoofing'). Na~o produza mensagens que na~o sa~o atribuidas `a sua personagem. Os `spoofs' podem ser engrac,ados e expressivos quando usados com prude^ncia. Se produzir um `spoof', use uma versa~o simpa'tica que se autoanuncie como `spoof', e use-a com muita moderac,a~o. o Respeite a privacidade dos outros e o direito de controlarem os seus objectos, incluindo o direito de decidirem quem pode entrar ou permanecer nos seus quartos. Na~o crie ou use dispositivos de espionagem. o Na~o se teletransporte silenciosamente nem pela calada. E' fa'cil escrever comandos do MOO para se mover instanta^neamente de um si'tio para outro. Lembre-se de po^r nesses programas uma mensagem clara e compreensivel que seja vista quer por todas as pessoas que esta~o no si'tio de onde vai sair, quer pelas que esta~o no local de destino. o Na~o aninhe o servidor. O servidor e' cuidadosamente partilhado por todos os utilizadores em linha de tal maneira que qualquer um tenha a hipo'tese de executar os seus comandos. Esta partilha e', por necessidade, mais ou menos aproximada. Por favor na~o o force com tarefas que corram muito tempo sem fazerem uma pausa. Se esta' a fazer um programa que vai correr por um peri'odo longo, tente faze^-lo esperar pelo menos cinco segundos entre cada iterac,a~o ( use `fork (n)' ou `suspend(n)' onde `n' e' pelo menos 5 ). Permitira' assim que os outros tenham uma hipo'tese de executarem os seus comandos no meio dos seus. Quantos mais comandos os utilizadores digitarem, mais carregado fica o servidor e, por isso, mais tempo ficara~o `a espera. o Na~o desperdice nu'meros de objectos. Algumas pessoas, numa a^nsia de possuirem objectos com nu'meros `interessantes' ( por exemplo, #1111, #2000, etc ) escreveram programas do MOO com ciclos infinitos criando e reciclando objectos ate' que os `bons' nu'meros aparecessem. Por favor na~o fac,a isso. o Para ajudar a que o crescimento da base de dados se mantenha a um ni'vel baixo crie ponderadamente (@create), recicle objectos sem uso (@recycle), apague correio antigo (@rmmail), use facetas ($feature) em vez de copiar um ror de verbos. Na~o se esquec,a que neste momento, a ma'quina onde o MOOsaico sobrevive e' de baixos recursos. o Se esta' genuinamente inseguro(a), guie-se como se o seu emprego depende-se disso. O seu talvez na~o, mas o de outros talvez. Ha' pessoas que se ligam ao MOO desde o emprego, e na~o se quer que tenham problemas por causa disso. Com o esforc,o linguistico que esta' a ser feito aqui, tenta-se mostrar que existe um potencial para valorizar de modo importante a utilizac,a~o do MOO pelas pessoas da comunidade acade'mica e empresarial. o Em todos os casos em que o comportamento seja aceitavel ou na~o, a ultima palavra e' reservada aos feiticeiros. Se na~o confia nos feiticeiros ou na~o se acha capaz de respeitar as suas deciso~es nesta mate'ria, e' considerado boa educac,a~o contactar os feiticeiros expondo-lhes isso e que na~o quer continuar aqui. ----------------------------------------------------------------------------- Se na~o conseguiu ler o texto acima devido a este ter rolado para fora do seu monitor, e o seu cliente na~o tem um mecanismo de captura de texto, digite `ajuda @pagelength' e `ajuda @linelength' para aprender como o MOO o/a pode ajudar a ler este ou outro texto destas dimenso~es. @MCP ==== Sintaxe: @mcp Mostra uma lista de todos os pacotes MCP/2.1 suportados pelo MOOsaico e pelo cliente que esta' a usar nesse momento. A lista tem os pacotes possiveis de usar que foram "negociados" entre o cliente e o MOOsaico na altura da entrada da personagem. @MEASURE ======== Syntax: @measure object <object name> @measure summary [user] @measure new @measure breakdown <object name> Normally, objects in the MOO are measured approximately once a day, and the usage tally as reported by @quota is updated. You may wish to measure an object specially, however, without waiting for the automatic measurement to take place. @measure has some subcommands to handle this. @measure object will measure an individual object right now, update the usage of that object in your usage as reported by @quota, and update the date of that object's measurement. @measure summary will go through your or another user's objects and produce the summary information that is printed by @quota. Normally this will be just the same as @quota prints out, but occasionally the addition/subtraction done to keep @quota in sync will get out of date, and @measure summary will be needed. @measure new will go through all your objects, measuring exactly those which have never been measured before (that is, are too newly @created to have any measurement data). This is necessary as you are only permitted to own 10 unmeasured objects, or object creation will not be permitted. @measure breakdown will give you full information on where an object's size is coming from. It will offer to moomail you the result. Caution: don't forget to delete this message, as it is large and takes up a lot of space! ML-COMMANDS =========== Estes comandos sa~o uteis em relac,a~o aos idiomas no MOOsaico: @idioma <idioma> Mudar o seu idioma corrente. @idiomas <personagem> Diz-lhe quais os idiomas falados pela personagem. @idiomas = <idioma1> <idioma2> ... Informa o sistema sobre quais os idiomas e' que voce^ fala. @describe <objecto> in <idioma> as <texto> Altera o <texto> da descric,a~o de <objecto> no idioma especificado. @name <objecto> in <idioma> as <texto> Define o nome do <objecto> no <idioma> @todos-idiomas Mostra uma lista de todos os idiomas definidos aqui no MOO. ML-DATA ======= Ha' duas classes de representac,o~es de texto para usos multilingues. Por favor, veja o to^pico de ajuda apropriado: ajuda ml-strings Informac,a~o sobre strings simples (1 linha). ajuda ml-text Informac,a~o sobre listas de linhas. ML-MAIL ======= Pode enviar correio em mais de um idioma incluindo marcas multilingues no texto da sua carta. Para informac,a~o relacionada com isso, faz `ajuda ml-text'. No `mail editor' pode usar o comando print in <idioma> para ver o texto da sua carta no idioma especificado. Quanto a ler o correio, o seu idioma corrente (controlado por @idioma) controla o idioma em que vai ver as mensagens. Uma carta mandada em mais de um idioma vai ter uma linha "Languages: ..." no cabec,alho. Para ver uma carta num outro idioma, pode fazer @idioma <idioma> @peek <n> on <lista> onde <n> e' nu'mero da mensagem e <lista> e' nome da lista que estava a ler quando observou que havia outro idioma. (Na~o se esquec,a de voltar a alterar o seu idioma depois.) Um dia vamos criar um comando que lhe permita ler uma carta directamente num outro idioma, mas para ja' na~o existe tal comando. Na~o e' possi'vel traduzir uma carta depois desta ter sido enviada. Sabemos que isto e' um problema e tambe'm esperamos corrigi-lo algum dia. ML-PROG ======= Va'rias infraestruturas de interesse: :portugues() E' uma forma melhor de descobrir se algue'm fala portugue^s, mas mesmo assim esta' obsoleta em virtude de caminhar-mos para um mundo multilingue. Em vez de: x:portugues() deve utilizar: $language_utils:speaks(x,$standard.language.por) para verificar o que e' que falam ou x.language == $standard.language.por para testar qual o idioma que te^m seleccionado. .language O idioma standard de um utilizador. :languages() Todos os idioma que um utilizador fala. (uma valor falso na~o significa que na~o fala nenhuma lingua -- somente que na~o definiram qualquer valor para isso.) .languages Esta propriedade existe e suporta :languages() mas na~o NUNCA deve ser referida no seu co'digo. E' armazenada de forma codificada para ser mais compacta, e esta codificac,a~o pode ir sendo alterada sem aviso. Em vez disso, utilize sempre :languages(). $standard.generic.language Isto e' um idioma gene'rico. $standard.language.eng $standard.language.por ..etc. Estes sa~o os idioma que o MOOsaico tem pre'-definidos. Veja tambe'm estes outros to'picos de ajuda: $language_utils $translator ml-data ML-STRINGS ========== STRINGS MULTILINGUES. Estas s~E3o as codifica~E7~F5es de strings simples de uma s~F3 linha. Correspondem exactamente ao tipo de dados STR do MOO mas s~E3o representadas como listas. (Veja tamb~E9m `ajuda ml-text'). {{lang1, lang2, ...}, str1, str2, ...} Isto pode ser utilizado para codificar uma string simples, onde str1 est~E1 em lang1, str2 em lang2, etc. Tem de haver o mesmo n~FAmero de linguas como de strings. Os idiomas t~EAm de ser descendentes de $standard.generic.language. Como a primeira lista n~E3o ~E9 eficiente em termos de armazenamento e a sua ocorrencia ~E9 frequente, est~E3o definidos conjuntos de idiomas comuns e podem ser acedidos por um indice num~E9rico, da forma: {integer, str1, str2, ...} Para descobrir o significado destes inteiros, pode utilizar o comando @lsets da faceta #2662 (Language Maintenance Feature). ML-TELL ======= Os seguintes verbos podem ser especialmente u'teis: $language_utils:announce(...) $language_utils:announce_all(...) $language_utils:announce_all_but(...) Sa~o como player.location:announce(...) e companhia, excepto que os os seus argumentos podem ser strings multilingues. Veja `ajuda ml-strings'. e.g., $language_utils:announce(player,{2,"enters.","entra."}); $language_utils:tell(...) E' como player:tell, excepto que os seus argumentos podem ser strings multilingues. Veja `ajuda ml-strings'. e.g., $language_utils:tell($translator.permission_denied); $language_utils:tell_lines(...) E' como player:tell_lines, excepto que os seus argumentos podem ser ser textos multilingues. Veja `ajuda ml-text'. e.g., $language_utils:tell_lines(this:description()) Tambe'm ha' um nu'mero de verbos u'teis com objectivos especiais em $translator. Fac,a `ajuda $translator' para mais informac,a~o. ML-TEXT ======= TEXTO MULTILINGUE. Num texto multilingue, as linhas podem estar identificados como pertencendo a um idioma particular. Essa identificac,a~o ocorre quando uma marca como "*ENG*" ocorre sozinha numa linha. Na~o pode ter outro texto na linha (nem so' espac,os). Quando isto acontece, as linhas seguintes sa~o interpretadas como texto no idioma especificado (ou nos idiomas especificados). Por exemplo: *ENG* This is a test that has two lines. *POR* Isto e' um teste que tem duas linhas. especifica que "This is a test" (linha 1) e "that has two lines" (linha 2) esta~o escritas em ingle^s, e "Isto e' um teste" (linha 1) e "que tem duas linhas" (linha 2) esta~o escritas em portugue^s. Pessoas a ler este texto noutros idiomas va~o ver o texto no primeiro idioma especificado (que usualmente deve ser ingle^s, pois e' a lingua mais falada internacionalmente). Cada idioma tem associado um nome de tre^s letras que pode ser usado para identificar o idioma nesse modo. Algum dia vai poder expandir isto, mas por agora estes nomes va~o funcionar: ENG ingle^s ESP espanhol DEU alema~o POR portugue^s FRA france^s NIH japone^s As notac,o~es possiveis neste momento sa~o: *ENG* <- ingle^s *POR,ESP* <- portugue^s e espanhol *ANY* <- QUALQUER idioma (Esta marca e' interpretada de modo especial. ANY na~o e' o nome de nenhum idioma.) MULTILINGUAL/MULTILINGUE ======================== A tecnologia de MOO estava originalmente toda em ingle^s, mas no MOOsaico temos mudado muitas facilidades para ser multilingues. Ha' ajuda em va'rios dissos: Faz... Para informac,a~o sobre... ------ -------------------------- ajuda ml-text texto multilingue (como usar as marcas, como *ENG* e *POR*) ajuda ml-mail correio multilingue ajuda ml-commands comandos relacionados com os idiomas Por uma lista completa, faz "ajuda ml". Estas caixas de correio tambe'm podem ser uteis... *multilingue Discussa~o sobre o nosso projecto multilingue. *que Envia mensagens para aqui para ajuda com traduc,o~es. @NAME ===== Sintaxe: @name <objecto> in <idioma> as <nome> Define o <nome> do <objecto> no <idioma> especificado. Naturalmente actualiza os aliases desse objecto. Verifica 'ajuda @names'. Para uma lista dos idiomas definidos, faz "@todos-idiomas". (o antigo @name chama-se @name-swap) @NAME-SWAP ========== Sintaxe: @name-swap <nome> Define o teu nome de um dos que tens nos teus aliases. @NAMES ====== Sintaxe: @nomes <objecto> Mostra o nome dum objecto em todos os idiomas em que esta' disponi'vel, na~o so' no seu idioma seleccionado. @NOME ===== Descontinuado. Faz 'ajuda @name'. PROGRAMMER-POLICY ================= Poli'tica de Programadores Esperamos que os nossos programadores contribuam significativamente para o nosso mundo multilingue. Antes de perguntares se podes ser programador, cria pelo menos descric,o~es multilingues para ti mesmo, e preferi'velmente tambe'm para alguns dos objectos que tiveres criado. Assim podemos saber que entendes o nivel de participac,a~o que precisamos aqui. Faz `ajuda tema' para leres mais informac,a~o sobre o tema do MOOsaico. Ser programador e' um privile'gio, na~o um direito. Na~o toleramos o uso de programac,a~o para causar aflic,a~o ou dano. Se abusares do privile'gio, vais perde^-lo. Faz `ajuda comportamento' para leres mais informac,a~o sobre comportamento apropriado. @QUICKSEND ========== Sintaxe: @quicksend <recipiente(s)> [subj=<texto>] [<mensagem>] @qsend Uma forma mais ra'pida de enviar em vez do comando @send. @SHOW-GUEST-IDS =============== Uso: @show_guest_ids [sim/na~o] Activa e desativa a visualizac,a~o dos nu'meros de identificac,a~o dos "guests" nos "pages" e nos "emotes" remotos. THEME/TEMA ========== Tema do MOOsaico O tema do MOOsaico e' a interligac,a~o cultural. O MOOsaico, tal como o mundo, e' tecido a partir dos fios individuais de varias culturas locais. Ainda que as culturas do mundo real variem umas das outras, estas sa~o forc,adas a coexistir nos pequenos limites do globo. O que quer que elas colectivamente formam, acaba por definir o mundo que conhecemos. O mesmo se passa com o MOOsaico. O que e' importante no MOOsaico na~o e' o que possa construir, mas o orgulho que se deve ter nisso, e o esforc,o para integrar esses objectos no ambiente que os rodeia, por forma a criar um mundo MOO que todos possam explorar, e com ele aprender. Para o ajudar no seu esforc,o de contribuir para a nossa comunidade, oferecemos os exemplos seguintes de qualidades deseja'veis que gostariamos de ver presentes nas obras feitas aqui no MOOsaico: MULTILINGUES. Um aspecto importante do trabalho feito aqui no MOOsaico e' experimentar com os aspectos multilingues. Quando apropriado, encoraja-se o uso das facilidades multilingues para acomodar interacc,o~es de uma maneira conforta'vel. CRIATIVOS. As coisas que fac,a devem ser interessantes. Objectos funcionais sa~o preferidos em detrimento dos esta'ticos, para assim incentivar a participac,a~o de todos os utilizadores. Objectos que visem objectivos sociais, tais como educac,a~o, sa~o tambe'm encorajados. LIGADOS. Quantos mais espac,os no MOOsaico ficarem ligados, e quanto mais agrada'vel e coerente essa ligac,a~o for, maior sera' o sentimento de comunidade. Na~o e' necessa'rio que todos os quartos estejam ligados entre si, mas pensar em como ligar o seu espac,o a um ou mais lugares pode ser uma fonte u'til de ideas. ABERTOS. Encorajamos a criac,a~o de espac,os que sejam acessiveis e convidativos para os outros utilizadores. Nem todos os espac,os necessitam de ser abertos. A maioria das pessoas precisam tanto de espac,os pu'blicos como privados. Mas ha' a necessidade de algumas areas pu'blicas, e algue'm tera' de as construir. Acima de tudo, por favor lembre-se que isto e' uma comunidade, e em qualquer iniciativa que tome, tente assegurar que devolve `a comunidade o tipo de coisas boas que daqui espera obter. @TIME/@TEMPO ============ Syntaxe: tempo Mostra-lhe a data corrente e o tempo local do MOOsaico, ie, que horas sa~o neste momento em Portugal. @TWITTER ======== Sintaxe: @twitter <mensagem> @twitter-set <utilizador> <senha> Envia uma mensagem para o seu perfil no Twitter (http://twitter.com). Naturalmente ja' deve ter um utilizador no sistema. A segunda forma define as credenciais de autenticac,a~o a usar no twitter. UVLS/UVL ======== UVLs (Universal Vocabulary Locators) ==================================== Vocabulary fragments (words, phrases, and whole sentences) can be created that can be referred to by an integer key, called a UVL (or "Universal Vocabulary Locator"). The maintainers of each language can then separately, and at their discretion, associate a translation with any such UVL key. A key is computed by $language_utils:make_uvl(object,index) where object is any object that has a .vocabulary property and index is the position of the vocabulary item in the .vocabulary property. The inverse operation is $language_utils:parse_uvl(uvl) which takes an integer as an argument and yields a list of {object, index, failure_reason}. If the failure_reason is false, then the object and index are valid; otherwise, it is string explaining what was the matter with the given UVL. NOTE WELL: Once you put an item into the .vocabulary property, you must NEVER move it. If you remove an element, the other elements will have different positions and things will be horribly messed up! If you even change the contents of an element, you must update ALL references in the MOO and since there is no mechanism for finding all such references, this is virtually impossible. The specific encoding of a UVL key as an integer is bit-encoded: [ 12 bits (0-4095) index ] [ 19 bits (0-524287) objnum ] This means that no number smaller than (or equal to) 524287 is valid as a UVL since the index part must always be 1 or greater. It also means that no vocabulary index may have more than 4095 words. A language object can be `trained' to know about the UVLs for any object that has a .vocabulary property by using `train <language> for <object>'. To assure quality and avoid mischief, however, only the authorized maintainer of a language may do such training. @WAYS ===== Sintaxe: @ways - Mostra as sai'das obvias do corrente quarto. Se o Ziggy estivesse no Sala~o Central, `@ways' mostrar-lhe-ia: Saidas o'bvias: desce, portao, sul, e norte @WEATHER ======== Sintaxe: @weather [co'digo-ICAO] Servic,o AirportWeather. Utilizando um co'digo ICAO (Organizac,a~o Internacional da Aviac,a~o Civil) temos as condic,o~es meteorolo'gicas da estac,a~o de servic,o nesse local. Para encontrar o co'digo da estac,a~o mais perto de si procure em http://www.airrouting.com/content/airportloc.html Co'digos mais populares: LPPR Porto LSZB Bern Belp KJFK New York JFK LPPT Lisboa EGLL London Heathrow KLAX Los Angeles Intl. LPFR Faro EGKK London Gatwick LPBG Braganc,a EHAM Amsterdam VHHH Hong Kong Intl. LPMA Funchal EIDW Dublin, Ireland RJTT Tokyo Intl. LPHR Horta LFPG Paris CDG YSSY Sydney Intl. LEBL Barcelona HECA Cairo LEMD Madrid Barajas Reply Reply to all Forward Invite Gandalf to Gmail Reply Reply to all Reply to allForward Forward Print Add Gandalf to Contacts list Delete this message Report phishing Show original Message text garbled? Gandalf <85@moosaico.moo.mud.org> to gandalf show details 1:44 am (0 minutes ago) MOOsaico Help (#161) ==================== accents @idioma ml-mail @quicksend acentos @idiomas ml-prog @show-guest-ids @all-languages @idiomes ml-strings tema behavior irc ml-tell @tempo behaviour @join ml-text theme @client-options @language modales @time comportamento @languages MOOsaico-index @todos-idiomas comportamiento @lenguas multilingual @twitter @descreve @lookfor multilingue uvl @describe manners @name uvls @descriptions @mcp @name-swap @ways events @measure @names @weather @go ml-commands @nome guest-features ml-data programmer-policy ACCENTS/ACENTOS =============== Accents ======= For better visual consistency in our texts, we request that you use proper accents in all words where it is orthographically required. To do this, place the accents after the letter that you want to accent except for accent grave, which should appear before the letter. For example: Rojo~es `a moda do Minho / Corac,a~o (Portugue^s) Ojala' que este pequen~o ejemplo basta. (Espan~ol) ku_ko_ basu wa doko desu ka? (Nihongo) @ALL-LANGUAGES/@TODOS-IDIOMAS ============================= Syntax: @all-languages Shows a list of all languages defined here in the MOO. @CLIENT-OPTIONS =============== * charset There are three types of text visualization: latin1 UTF-8 french-notation which can be set by: @client-options charset=latin1 @client-options charset=UTF-8 @client-options -charset * noresizeinfo If you don't want a MOO confirmation of the window resize you should activate this option: +noresizeinfo The client must support MCP/2.1 and the package dns-nl-vgmoo-client * loginonstatus Send the connection messages of features Login Watcher (#896) to the status bar of your MCP client. It must support dsn-com-awns-status. Also see 'help @mcp'. @DESCRIBE/@DESCREVE =================== Syntax: @describe <object> in <language> as <text> Sets the description of <object> in the specified <language> to be the given <text>. (Descriptions of <object> in other languages are unaffected.) For a list of defined languages, do "@all_languages". @DESCRIPTIONS ============= Syntax: @descriptions <object> Shows the descriptions of an object in each language that it is available in, not just in your selected language. - Show quoted text - EVENTS ====== EVENT-REPORTING ROOMS The default room has been replaced with the event-reporting room. Whenever something "interesting" happens in such a room, messages get sent to objects (in the room or not) which are interested in such events. This sort of system makes it very simple to program, for example, a dog that barks every time someone enters a room, or a security system that beeps every time someone leaves the jail. DEFAULT EVENTS There are four events which have been built into the generic event-reporting room: enter, exit, connect and disconnect. Whenever someone or something performs any of these actions, the room will notify any interested objects. For information about how to signify interest in these events and how to program objects to respond, see the section below entitled, "EVENT-AWARE OBJECTS". It is worth noting that dropping an object in a room and entering a room are both equivalent, since in both cases something is "entering" the room. Correspondingly, the "enter" event will be triggered in both cases, and it is up to the programmer to distinguish between them. CUSTOM EVENTS If you wish to add or remove additional events on an event room, use the commands: addevent <event name> to <room> rmevent <event name> from <room> The effect of these commands is to modify the .event_list property on the room and the list of listeners. Essentially, adding an event to a room signifies that you anticipate the event happening in that room. However, event-reporting rooms can handle events of any name -- they just happen to be much more efficient when handling expected events. EVENT-AWARE OBJECTS Creating event-aware objects is simple. To have an object respond to "enter" events, create a verb on the object named on_enter (this none this). The :on_enter verb will be called every time something enters. Similarly, verbs named :on_exit, :on_con, :on_dis, or even :on_bark may be added to ordinary object to make them event-aware. In fact, any verb beginning with "on_" will act as an event-handling verb. The event-reporting room will usually call the :on_* verbs with one argument: args[1] is a list of objects which are affected by the event. By default, args[1][1] is the "direct object," or what object triggered the event and args[1][2] is the "indirect object," or what object was affected by the event. For "enter" and "exit" events, args[1][1] will be the player that did the moving, and args[1][2] will be the room moved to/from. For "con" and "dis" events, args[1][1] will be the player doing the (dis)connecting, and args[1][2] will be the room in which it happened. Using the value of args[1] is more accurate than trying to use "dobj" or "iobj," since they will probably be undefined for some events. The args list is (by default) guaranteed to contain relevant information. EVENT REGISTRATION The event-reporting room keeps a list of objects interested in each event (in the .event_listeners property). When objects enter the room (or, equivalently, are dropped in the room), they are registered for any events they are interested in. This is done by checking for :on_* verbs and registering the object for the corresponding events. For example, if a "security box" had an :on_enter verb, it would be registered for "enter" events. If a "front gate" had :on_enter and :on_exit verbs, it would be registered for both "enter" and "exit" events. If an object has :on_* verbs which aren't in the list of events recognized by the room, they are ignored (if any of those custom events are triggered, though, the :on_* verb WILL be called). When an object leaves the room or is picked up, it is automatically unregistered for events in that room. EXPLICIT EVENT REGISTRATION If you wish to have an object explicitly registered for events in a certain room, use these commands: register <object> in <room> unregister <object> in <room> Explicitly registering an object for events in a room prevents it from being automatically registered and unregistered if it moves into/out of the room. This allows for remote objects to be aware of events in the room. An example of this would be a centralized security system that keeps track of all the rooms in a house, or a counter that tallies the number of people entering a given room. EVENT AWARENESS There are situations where it becomes desirable to turn off event-awareness for certain objects. This may occur if there are too many people walking through the room, or more importantly, if the event-handling verb is causing errors and distracting innocent bystanders. If the object is a descendent of the generic event-aware thing, the command to toggle event-awareness is: toggle <thing> If the object is NOT a descendent of the generic event-aware thing, then it suffices to create and set the .events_off property to 1 and to do: update <room> which updates the event_listeners list. Note that if there is no events_off property, the object is assumed to be event-aware. To toggle event-reporting in a room, the command is: toggle <room> When events are turned off for an entire room, no events will be reported at all. EVENT ERRORS The event code does its best to trap errors. However, it cannot catch errors made by other programers, in their :on_* verbs. If the :on_enter on a dog in the E&L Garden is broken, for example, it is going to spew error messages at everyone that enters. Needless to say, this can become distracting and annoying; it is always a good idea to test out your event verbs privately before dropping your object in a public area. If the event code happens to successfully catch an error, the owner of the object will be paged (if online) or MOOmailed about the error. The object will also be deregistered for events in the given room. MORE DETAILS Generic Event-Reporting Room (#1737) verbs: update <room> update listenesr reg*ister <what> in <room> explicitly register something unreg*ister <what> in <room> explicitly unregister something toggle*events <thing> toggle event-awareness addevent <what> to <room> add custom event to room rmevent <what> from <room> remove event from room stat <room> info on room properties: event_list supported events event_listeners listening objects event_listeners_explicit explicitly registered objects event_active reporting events? Generic Event-Aware Thing (#1740) verbs: toggle*events <thing> toggle event-awareness properties: events_off ignoring events? @GO/@JOIN ========= Syntax: @go <location> - teleport yourself to a given location @join <player> - teleport yourself to a player's location `@go #82' will teleport you to Central Hall. `@join Ziggy' will teleport you to Ziggy's location. GUEST-FEATURES ============== Guests cannot add arbitrary features. Only features approved for guests can be added. The programmer of the feature is normally responsible for controlling this, but the wizards will intervene if policy is violated. The following kinds of features are not acceptable for guests to use; people using these kinds of features must log in so that they can be accountable for their own actions: (a) Spam. Features that draw big pictures or otherwise do a lot of output. Guests do not need these. Our admissions policy is quite liberal. Let them get a named account. (b) Sexually explicit. People should not be using sexually explicit communication with anyone they do not know well. A guest is not appropriately accountable for any unwanted actions, so should not use these tools. (c) Spoofing. Spoofing is not a nice activity anyway--it especially not nice when done by anonymous people. (d) Generally impolite. It's enough of a problem that guests can be impolite with the mere use of `:' or `page' without adding the ability for them to be rude in a programmatically-enhanced way. See also "help manners". IRC === The following table will help those users with an IRC background. IRC MOOsaico --- -------- <falar> say /msg page /nick @rename /join @go /kick @eject /part @quit /who @who /names look/@who /memoserv send @send/@quicksend /memoserv read @read/@next/@mail To know how to use them please type the 'help' command followed by the MOOsaico's command. @LANGUAGE/@IDIOMA ================= @language [portuguese|english|...] - Changes or tells you the language interface you are using. `@language portuguese' starts showing you all the description in the language of Magellan. Note: If a description in one language is missing the object will appear described on another language. Please also check '@all-languages' @LANGUAGES/@IDIOMAS/@IDIOMES/@LENGUAS ===================================== Syntax: @languages @languages <who> Tells you a list of what <who> speaks. By default the <who> is yourself. Syntax: @languages = <lang1> <lang2> ... @languages <who> = <lang1> <lang2> ... Declares that <who> is capable of speaking the specified languages. By default, the person is yourself. (Only a wizard can change this information for another person, but anyone can change the languages spoken by their own puppets.) @LOOKFOR ======== Syntax: @lookfor <user> @lookfor! <user> At the time of log in, you will be informed about the users in your personal list that are connected. Use @lookfor to add a user to the list and @lookfor! to remove a given one. MANNERS/BEHAVIOR/BEHAVIOUR/COMPORTAMENTO/COMPORTAMIENTO/MODALES =============================================================== Manners ======= First of all, any action that threats the functional integrity of the MOO, or causes any trouble to the people who support the MOO, will lead to the expelling of the responsible user by the wizards. If you should find a hole or a bug in the core, tell a wizard, don't try to make it work for you. Cracking the system is out of the scope of behaviour. A good behaviour is about letting the MOO run and not bothering the other characters. o Be polite. Avoid being rude. The MOO is worth using if it is a pleasant place for all the people. When people are rude and sordid to each other, it stops being pleasant. The MOO is a place for people to socialize, program, have fun and comunicate; as long as they mantain a certain degree of education between them. o If someone is rude to you, ignore her/him. Please don't try to get even; that will only increase the rudeness and make the people involved loose their interest in the MOO. If someone is bothering you, there are several options. The first step is usually ask her/him/they to stop. If this doesn't work, and avoiding that person/s isn't enough, some verbs that might be useful are @gag and @eject. There is help available for both. o Respect the sensibilities of other people. The users of the MOO come from a wide range of cultures and environments. Each one's idea of what is an offensive speech or description is probably unique. Try to keep potentially offensive expressions out of texts people can casually see. If you intend to create objects or build zones that may cause controversy in a segment of our comunity, provide sufficient warnings to the casual explorers, so that they can choose not to interact with those objects or zones. o Don't shout. It's simple to create a MOO verb that displays a message to every user logged in. Please don't do this. o Only teleport your things. By default, most objects (including users) can be moved freely from one place to another. This allows the easy creation of some handy objects. Unfortunately it also allows bothering other people, by moving them and their objects without consent. Don't do it. o Don't fool people (`spoofing'). Don't produce messages that aren't attributed to you. `Spoofs' can be fun and expressive when used carefully. If you program a `spoof', use a nice version that announces itself as a `spoof', and use it moderately. o Respect other people's privacy and the right to control their objects, including the right to decide who can enter or stay in their rooms. Don't create or use spying devices. o Don't teleport yourself silently or in secrecy. It's easy to write MOO verbs to move yourself instantaneously from one place to another. Remember to include in those programs a clear and understandable message that is seen both by all the people in the place you're leaving and in the place you're going to. o Don't crash the server. The server is carefully shared by all the users on-line, in such a way that anyone has the chance to execute his/her commands. This sharing is, by necessity, more a less aproximate. Please don't overload the server with tasks that run for a long time without pausing. If you're working on a program which is going to run for a long time, try to make it wait at least 5 seconds between each iteration (use `fork (n)' our `suspend (n)', where `n' is at least 5). Thus you'll allow others to have a chance of executing their commands in the middle of yours. The more commands the users type in, the more loaded becomes the server, leading to a greater wait time for the users. o Don't waste object numbers. Some people, in a urge to own objects with `interesting' numbers (like #1111, #2000, etc.), wrote MOO programs with infinite loops, creating and recycling objects until the `good' numbers showed up. Please don't do this. o To help the growth of the database to be kept at a low level, create thoughtfully (@create), recycle objects you don't use anymore (@recycle), delete old mail (@rmmail), use features ($feature) instead of copying a load of verbs. Don't forget that, for the time being, the machine where MOOsaico survives is a low-resource one. o If you are genuinely unsure, conduct yourself as you would if your job depended upon it. Yours might not, but someone else's might. Some people MOO from work, and we do not want to discourage that. Through our linguistic efforts here, we are trying to show that there is a potential for important value to the academic and business community of using MOO. Unmannerly conduct on your part could mean embarrassment or perhaps even loss of a job to someone else! Be sensitive to how actions you take can affect others! o On all matters of what behavior is acceptable or not, the wizards reserve the right to have the final say. If you do not trust or respect the wizards judgment in these matters, it is considered good manners to contact the wizards saying so and asking to have your account turned off. ------------------------------------------------------------------------------ If you couldn't read the above text due to it rolling out of your display, and your client doesn't have a text-capture mechanism, type in `help @pagelength' and `help @linelength' to learn how the MOO can help you to read texts of these dimensions. @MCP ==== Syntax: @mcp Shows the MCP/2.1 supported packages by the client you are using and MOOsaico. This list shows the ones that were negotiated between them, during your entrance. @MEASURE ======== Syntax: @measure object <object name> @measure summary [user] @measure new @measure breakdown <object name> Normally, objects in the MOO are measured approximately once a day, and the usage tally as reported by @quota is updated. You may wish to measure an object specially, however, without waiting for the automatic measurement to take place. @measure has some subcommands to handle this. @measure object will measure an individual object right now, update the usage of that object in your usage as reported by @quota, and update the date of that object's measurement. @measure summary will go through your or another user's objects and produce the summary information that is printed by @quota. Normally this will be just the same as @quota prints out, but occasionally the addition/subtraction done to keep @quota in sync will get out of date, and @measure summary will be needed. @measure new will go through all your objects, measuring exactly those which have never been measured before (that is, are too newly @created to have any measurement data). This is necessary as you are only permitted to own 10 unmeasured objects, or object creation will not be permitted. @measure breakdown will give you full information on where an object's size is coming from. It will offer to moomail you the result. Caution: don't forget to delete this message, as it is large and takes up a lot of space! ML-COMMANDS =========== These commands are useful when dealing with languages at MOOsaico. @language <lang> Changes your current language. @languages <person> Tells you what languages someone speaks. @languages = <lang1> <lang2> ... Tells the system what languages you speak. @describe <object> in <language> as <text> Tells the system what <text> to use as <object>'s description in <language>. @name <object> in <language> as <text> Sets the <object> name in <language>. @all-languages Shows a list of all languages defined here in the MOO. ML-DATA ======= There are two kinds of encodings of text for multilingual purposes. Please see the appropriate help topic: help ml-strings Information about simple one-line strings. help ml-text Information about lists of lines. ML-MAIL ======= You can send mail in multiple languages by adding multilingual markers to the text of your outgoing mail. For information on how to do this, do `help ml-text'. In the mail editor, you can use the command print in <language> to see the text of your outgoing message in the indicated language. When reading mail, your selected language (controlled by @language) controls the language in which you will see mail. Mail that is sent in multiple languages will have a "Languages" field in its header. To see mail in another language, you can do @language <language> @peek <n> on <list> where <n> is the message number and <list> is the name of the recipient you were reading when you noticed its availability in another language. (Don't forget to set your language back when you are done.) Some day we will make a command to let you read the mail directly in another language without switching your language, but right now we don't have such a command. It is not possible to translate a message to another language after it has been sent. We know this is a problem and hope to fix this some day, too. ML-PROG ======= Several facilities of interest: :portugues() This is a better way to find out if someone speaks portuguese, but even this is obsolete as we move into a multilingual world. Instead of x:portugues() you should probably use: $language_utils:speaks(x,$standard.language.por) to test what they speak or x.language == $standard.language.por to test what language they have selected. .language A player's standard language. :languages() All the languages a player speaks. (A false value does not mean they speak no languages--it means they have not set a value for this.) .languages This property exists and supports :languages() but you should NEVER refer to this property in code. It is stored encoded for compactness, and the encoding may change from time to time without warning. Always use :languages() instead. $standard.generic.language This is the generic language. $standard.language.eng $standard.language.por ..etc. These are the languages MOOsaico has pre-defined. See also these other help topics: $language_utils $translator ml-data ML-STRINGS ========== MULTILINGUAL STRINGS. These are encodings of simple one-line strings. They correspond exactly to the MOO datatype STR but are represented as lists. (See also "help ml-text".) {{lang1, lang2, ...}, str1, str2, ...} This can be used to encode a single string, where str1 is in lang1, str2 is in lang2, etc. There must be the same number of langs as strings. The languages must be descendants of $standard.generic.language. Because the first list is not storage-efficient and occurs a lot, common sets of languages are defined and can be accessed by numeric indexes, as in: {integer, str1, str2, ...} To find the meaning of these integers, you can use the @lsets command on feature #2662 (Language Maintenance Feature). ML-TELL ======= The following verbs may be especially useful: $language_utils:announce(...) $language_utils:announce_all(...) $language_utils:announce_all_but(...) These are like player.location:announce(...) and friends, except that their arguments can be multilingual strings. See `help ml-strings'. e.g., $language_utils:announce(player,{2,"enters.","entra."}); $language_utils:tell(...) This is like player:tell, except that the arguments can be multilingual strings. See `help ml-strings'. e.g., $language_utils:tell($translator.permission_denied); $language_utils:tell_lines(...) This is like player:tell_lines, except that the arguments can be multilingual texts. See `help ml-text'. e.g., $language_utils:tell_lines(this:description()) There are also a number of useful special-purpose verbs on $translator. Do "help $translator" for more information. ML-TEXT ======= MULTILINGUAL TEXT. In multilingual text, lines can be identified as belonging to a given language. The identification occurs when a marker such as "*ENG*" occurs on a line by itself. There must be NO other text on the line (not even spaces). When this happens, subsequent lines are interpreted as text in the specified language (or languages). For example: *ENG* This is a test that has two lines. *POR* Isto e' um teste que tem duas linhas. specifies "This is a test" (line 1) and "that has two lines" (line 2) in English, and "Isto e' um teste" (line 1) and "que tem duas linhas" (line 2) in Portuguese. People reading in other languages will see the text in the first language specified (which should usually be English, since it is most widely spoken internationally). Each language has associated with it a three letter name which can be used to identify the language in this mode. At some point, this will be more extensible but for now these names will work: ENG English ESP Spanish DEU German POR Portuguese FRA French NIH Japanese The actual notations possible are: *ENG* <- English *POR,ESP* <- Portuguese and Spanish *ANY* <- ANY language (This marker is handled specially. ANY does not name a language.) MULTILINGUAL/MULTILINGUE ======================== MOO technology was originally all in English, but at MOOsaico we have changed many facilities to be multilingual. There is help on several of these: Do... For information on... ----- --------------------- help ml-text multilingual text (using markers like *ENG* and *POR*) help ml-mail multilingual mail help ml-commands commands related to languages For a complete list, do "help ml". The following mailing lists may also be useful: *multilingual Discussion about our multilingual project. *what Send letters here for help with translations. @NAME ===== Syntax: @name <object> in <language> as <name> Sets the <name> of <object> in the specified <language>. The object aliases are updated accordingly. Also check 'help @names'. For a list of defined languages, do "@all-languages". (the old @name is now @name-swap) @NAME-SWAP ========== Syntax: @name-swap <name> Set your name from one of your aliases. @NAMES ====== Syntax: @names <object> Shows the name of an object in each language that it is available in, not just in your selected language. @NOME ===== Deprecated. Use 'help @name'. PROGRAMMER-POLICY ================= Programmer Policy We hope that our programmers will contribute significantly to our multilingual world. Before asking to be a programmer, please at least create multilingual descriptions for yourself, and preferably also for some of the objects you have created. That way, we can know that you understand what kind of participation we we need here. Do `help theme' for more information about the theme of MOOsaico. Being a programmer is a privilege, not a right. We do not tolerate the use of programming to cause others distress or harm. If you abuse the privilege, you will lose it. Do `help manners' for more information about proper behavior. @QUICKSEND ========== Syntax: @quicksend <recipient(s)> [subj=<text>] [<message>] @qsend A quick form of the @qsend command. @SHOW-GUEST-IDS =============== Syntax: @show_guest_ids [yes/no] Enables/disables showing of guest id numbers in pages and remote emotes. With no arguments, shows the present state. THEME/TEMA ========== MOOsaico Theme The theme of MOOsaico is one cultural connectivity. MOOsaico, like the world, is woven together out of the individual fabrics of a variety of local cultures. Although real world cultures vary from one to another, they are forced by circumstance to co-exist in the tiny confines of the globe, and whatever they collectively form comes to define the world as we know it. So, too, with MOOsaico. What is important in MOOsaico is not what you build, but that you take a sense of pride in it and that you work to integrate it well with its local surroundings in order to create a MOO world that all can explore and learn from. To help you in your effort to contribute to our community, we offer the following as examples of desirable qualities that we would like to see reflected in works made here at MOOsaico: MULTILINGUAL. An important part of the work of MOOsaico is to experiment with multiligual aspects. Where appropriate, use of the multilingual facilities to accomodate interactions in a comfortable way for the user are encouraged. CREATIVE. The things you build should be interesting. Functional objects are encouraged over static ones in order to encourage participation. Objects that encourage social goals such as education are also encouraged. CONNECTED. The more spaces in MOOsaico that connect, and the more gracefully they do so, the better the sense that we are all one community. It isn't necessary that every room be connected, but thinking about how your space connects to one or more other places may be a useful source of ideas. OPEN. We encourage the production of spaces that are accessible and inviting to people. Not every space needs to be open. Most people need both public and private spaces. But there do need to be public spaces here, and somebody has to build them. Most of all, please remember that this is a community, and whatever you try to do, please try to make sure that you put back into the community the kinds of good things you expect to get out of it. @TIME/@TEMPO ============ Syntax: time Shows the current date and MOOsaico's local time, ie, what's the time in Portugal right now. @TWITTER ======== Sintaxe: @twitter <mensagem> @twitter-set <utilizador> <senha> Envia uma mensagem para o seu perfil no Twitter (http://twitter.com). Naturalmente ja' deve ter um utilizador no sistema. A segunda forma define as credenciais de autenticac,a~o a usar no twitter. UVLS/UVL ======== UVLs (Universal Vocabulary Locators) ==================================== Vocabulary fragments (words, phrases, and whole sentences) can be created that can be referred to by an integer key, called a UVL (or "Universal Vocabulary Locator"). The maintainers of each language can then separately, and at their discretion, associate a translation with any such UVL key. A key is computed by $language_utils:make_uvl(object,index) where object is any object that has a .vocabulary property and index is the position of the vocabulary item in the .vocabulary property. The inverse operation is $language_utils:parse_uvl(uvl) which takes an integer as an argument and yields a list of {object, index, failure_reason}. If the failure_reason is false, then the object and index are valid; otherwise, it is string explaining what was the matter with the given UVL. NOTE WELL: Once you put an item into the .vocabulary property, you must NEVER move it. If you remove an element, the other elements will have different positions and things will be horribly messed up! If you even change the contents of an element, you must update ALL references in the MOO and since there is no mechanism for finding all such references, this is virtually impossible. The specific encoding of a UVL key as an integer is bit-encoded: [ 12 bits (0-4095) index ] [ 19 bits (0-524287) objnum ] This means that no number smaller than (or equal to) 524287 is valid as a UVL since the index part must always be 1 or greater. It also means that no vocabulary index may have more than 4095 words. A language object can be `trained' to know about the UVLs for any object that has a .vocabulary property by using `train <language> for <object>'. To assure quality and avoid mischief, however, only the authorized maintainer of a language may do such training. @WAYS ===== @ways - Show the obvious exits of the current room. If Ziggy was in Central Hall, '@ways' would show him: Obvious exits: down, gate, south, and north @WEATHER ======== Syntax: @weather [ICAO-code] AirportWeather service. Giving a ICAO (International Civil Aviation Organisation) code it reports the weather condition from the meteo station. To find the code of the station near you check http://www.airrouting.com/content/airportloc.html Some popular codes: - Hide quoted text - LPPR Porto LSZB Bern Belp KJFK New York JFK LPPT Lisboa EGLL London Heathrow KLAX Los Angeles Intl. LPFR Faro EGKK London Gatwick LPBG Braganc,a EHAM Amsterdam VHHH Hong Kong Intl. LPMA Funchal EIDW Dublin, Ireland RJTT Tokyo Intl. LPHR Horta LFPG Paris CDG YSSY Sydney Intl. LEBL Barcelona HECA Cairo LEMD Madrid Barajas