LOCAL'lar VAR'lar gibidir, ancak yalnızca tanımlandıkları komut dosyası bloğu (yani bir function veya trigger) içinde erişilebilirler ve ardından hemen temizlenirler. Avantajı, VAR'lardan çok daha hızlı olmaları ve ayrıca farklı senaryoların birbiriyle çakışması konusunda endişelenmenize gerek olmamasıdır.
Aşağıdaki script dosyası, neden VAR yerine LOCAL kullanmak isteyebileceğinizi gösterir:
[FUNCTION f_var_joe]
VAR.NAME = Joe
F_VAR_BOB
SYSMESSAGE <VAR.NAME>
RETURN
[FUNCTION f_var_bob]
VAR.NAME = Bob
SYSMESSAGE <VAR.NAME>
RETURNYukarıdaki iki function ilgili fikir, F_VAR_JOE'ın "Joe" mesajını göstermesi ve F_VAR_BOB'ın "Bob" mesajını göstermesidir. Ancak, oyuna girecek olsaydınız ve şunu yazın. F_VAR_JOE, "Bob" diyen iki mesaj alırsınız. Bunun nedeni nedir?F_VAR_JOE yakından bakarsanız, VAR.NAME Joe'ya ayarladıktan sonra, F_VAR_BOB ve içindeki functionı yürüttüğünü göreceksiniz. F_VAR_BOB sonra VAR.NAME Bob'a ayarladık. VAR'lar küresel değişkenler olduğundan, bu istemeden F_VAR_JOE davranışını etkiler ve aradığımız çıktıyı alamayız. Bu komut dosyasında fark etmemiş olabileceğiniz bir başka kusur da, script dosyası sona ermeden önce VAR.NAME temizlememiş olmamız ve bu nedenle Sphere'in hala bellekte VAR.NAME depolamasıdır. Bu özel durumda, VAR.NAME için daha fazla kullanımımız olmadığı için kaynak israfıdır.
Bu özel senaryoda, functionları farklı VAR adları kullanacak şekilde değiştirebiliriz, ancak sunucudaki her komut dosyasını manuel olarak kontrol etmeyi düşünmediğimiz sürece, başka bir komut dosyasının kullandığı bir VAR'ı kolayca kullanabilir ve bunun yerine çalışmasını engelleyebiliriz.
LOCAL'in devreye girdiği yer burasıdır, aşağıdaki örneğe bakın:
[FUNCTION f_local_joe]
LOCAL.NAME = Joe
F_LOCAL_BOB
SYSMESSAGE <LOCAL.NAME>
RETURN
[FUNCTION f_local_bob]
LOCAL.NAME = Bob
SYSMESSAGE <LOCAL.NAME>
RETURNYukarıdaki functionlar, VAR yerine LOCAL kullanmaları dışında öncekilerle aynıdır. Bu sefer yazdığınızda. F_LOCAL_JOE oyun içinde, başlangıçta amaçladığımız gibi "Joe" ve "Bob" mesajları alacaksınız.Bunun nedeni, LOCAL'lerin yalnızca onları tanımlayan functionlar içinde bulunmasıdır. F_LOCAL_BOB LOCAL.NAME kullanmaya çalıştığında, triggerın F_LOCAL_JOE'da tanımlanan değişkenle çakışmayan kendi sürümünü aldı. F_LOCAL_BOB geri döndüğünde, F_LOCAL_JOE hala içinde "Joe" ile orijinal LOCAL.NAME duruyor.
LOCAL'leri başka bir functionla paylaşmak istediğiniz bir zaman gelebilir. Bu CALL komutu kullanılarak gerçekleştirilebilir. Bir functionı doğrudan çalıştırmak yerine bir function çalıştırmak için CALL komutunu kullandığınızda, LOCAL'ler her iki komut dosyası arasında paylaşılır, örneğin:
[FUNCTION f_bla]
LOCAL.DUDE = Bob
RETURN
[FUNCTION f_bleep]
CALL F_BLA
NAME = <LOCAL.DUDE>
RETURNYukarıdaki F_BLEEP functionu çalıştırdığımızda CALL satırı LOCAL'e izin verir. DUDE F_BLA olarak ayarlanacak ve daha sonra F_BLEEP tarafından erişilebilir olacak. Bu nedenle, NAME = <LOCAL.DUDE> satırı, nesnenin adını, LOCAL olarak ayarlanan F_BLA function ne olursa olsun ayarlayacaktır. DUDE to (bu durumda "Bob"
.</LOCAL.DUDE>TAG'lar, CTAG'lar ve VAR'lardan farklı olarak, LOCAL'lerin LOCAL0 eşdeğeri yoktur. Bunun nedeni, LOCAL'lerin boşaldıklarında her zaman 0 döndürmeleridir ve bu nedenle hiçbir zaman almazlar.

