Uporabniška orodja

Orodja spletišča


vrata_na_geslo

Vrata na geslo

Besedilo

Besedilo za učitelja.

Kmalu po uspešnem začetku gradnje objektov v navideznem svetu, želijo učenci zaščititi svoje kreacije. Želijo prostor v katerega lahko vstopijo samo oni ali tudi njihovi prijatelji. Lahko torej zgradijo hišo z vrati, ki se odprejo samo tistemu, ki pozna pravilno geslo.

Kanal 0 je javni kanal, ki ga lahko uporabljajo uporabniki in objekti za komuniciranje. Kanal 0 vidijo vsi uporabniki. Kanali od 1 do 2,147,483,648 (tudi od -1 do -2,147,483,648) uporabniki ne vidijo in se lahko uporabljajo za komunuciranje med objekti oz. med skriptami v objektih.

Besedilo naloge.

Sestavite program, ki bo vrata odprl tako, da se bodo vrata premaknila gor za 3m, počakala v tej poziciji nekaj sekund in se nato spustila na začetno mesto. Vrata se morajo odpreti, ko uporabnik v komunikacijski kanal (kanal za klepet = 0) napiše pravilno geslo.

Vrata naj se odprejo le lastniku objekta.

Primer izvedbe

Zaprta vrata Odprta vrata

Izvor naloge

Namigi

Vrata se morajo odpreti, ko „slišijo“ pravo geslo. Sprožilec animacije odpiranja vrat je v S4O when I recive. Sprožilci se nahajajo s sklopu Control.

Geslo, ki ga uporabnik napiše v prostor za klepet uporablja kanal 0. Torej geslo, s katerim boste želeli odpreti vrata, bo „potovalo“ po kanalu 0 do vrat.

Vrata uporabljajo funcijo llisten() za neprestano „poslušanje“ kanalov za komunikacijo. Ko vrata zaslišijo pravo geslo se odprejo.

Vrata poslušajo na kanalu 0.

llListen( 0, ““, ““, ““ );

Vrata poslušajo na kanalu 0 in preverjajo ali je geslo napisal lastnik vrat.

llListen( 0, ““, llGetOwner(), ““ );

Rešitev

vrata_na_geslo.zip

Sestavljeni program reši le del problema. Kdorkoli pozna geslo in ga vpiše v prostor za klepet in je v bližini vrat, bo uspešno odrl vrata. Kmalu vaše geslo ugotovijo tudi drugi uporabniki, zato vaš varovani prostor ni več varen.

Za rešitev tega problema moramo ročno dodati funcijo llGetOwner() v generirano kodo. Poiščemo predel, kjer llisten() funkcija „posluša“ na komunikacijskem kanalu 0 in 1. Kot vidite na sliki, tretji parameter funcije llisten() zamenjaj s funkcijo llGetOwner().

Razširitev problema

  • Želimo, da bi se vrata odpirala s pritiskom na gumb. Odprirajo naj se tako kot se vrata odpirajo v resničem svetu (VRATA NA TEČAJIH).
  • Skupina prijateljev gradi hišo in želijo si, da bi samo oni odpirali vrata. Naredite vrata, ki bodo poleg gesla, preverjala tudi uuid-je (unikatni uporabniški id) uporabnikov. Vrata dovolijo vstop le skupini uporabnikov, ki jih boste določili v skripti.
vrata_na_geslo.txt · Zadnja sprememba: 2014/01/07 15:49 uporabnika lea