Açıkçası zaten kullanılan random spawn sistemlerinin hemen hemen hiç birisi random değil, belli başlı bölgeler koordinat olarak belirlenmiş SERV.NEWNPC ile o koordinata npc çıkarmak üzerine.
Direkt olarak script vermek yada yazmakla uğraşacak vaktim yok ancak sana başlayacak bir yer verebilirim.
Aslında Random Spawn Sistemi yapmak o kadar da zor değil, burada başka bir sistem için yazdığım rastgele koordinat alma sistemim var;
Kod:
[DEFNAME def_terrain_types]
dt_t_sand = 1
dt_t_jungle = 1
dt_t_forest = 1
dt_t_swamp = 1
[FUNCTION getRandomCoordinates]
LOCAL._x = <r0,7167>
LOCAL._y = <r0,4095>
LOCAL._t = <SERV.MAP(<dLOCAL._x>, <dLOCAL._y>).TYPE>
WHILE !(<ddef.dt_<LOCAL._t>>)
LOCAL._x = <r0,7167>
LOCAL._y = <r0,4095>
LOCAL._t = <SERV.MAP(<dLOCAL._x>, <dLOCAL._y>).TYPE>
ENDIF
LOCAL._z = <SERV.MAP(<dLOCAL._x>, <dLOCAL._y>).TERRAIN.Z>
RETURN <dLOCAL._x>, <dLOCAL._y>, <dLOCAL._z>
Burada MAP1 için yapıldığı için bu sistem map1 deki 7167x4095 kare içinden üstte belirtilen t_jungle, t_forest gibi bölgeler gelene kadar rastgele kare seçip seçtiği kareyi döndüren bir kod, yani bu kodu kullandığınızda orman, çöl, bataklık gibi bölgelerden birini rastgele olarak seçecektir. Daha sonra yapman gereken tek şey, burdan gelen koordinatı bir LOCAL.VARIABLE üzerine kayıt edip SERV.NEWNPC ile hangi npcyi çıkaracaksan çıkarıp P ve HOME verilerini bu koordinat olarak atamak, sonrasında HOMEDIST verisini 5 kare gibi kafana göre kaç kareye kadar npcler uzaklaşacaksa belirtmek. Eski sürümlerde otomatik güncelleme olmadığından bu işlemlerden sonra NEW.UPDATE ile güncellemen gerekebilir.
Yani basitçe kodu şu şekilde yazabilirsin;
Kod:
[FUNCTION spawnRandom]
LOCAL.NPC = c_horse_brown_dk
IF !(<ISEMPTY <ARGS>>)
LOCAL.NPC = <ARGS>
ENDIF
LOCAL.POS = <getRandomCoordinates>
SERV.NEWNPC <LOCAL.NPC>
NEW.P = <LOCAL.POS>
NEW.HOME = <LOCAL.POS>
NEW.HOMEDIST = 5
NEW.UPDATE
.spawnRandom dediğinde rastgele bir pozisyonda npc spawn olacaktır, gerisi artık hayal gücüne kalmış, bir taş yapar her belli bir sürede bir spawnRandom komutunu uygulatabilirsin, spawn ettikten sonra NEW.UPDATE altında bir VAR.VARIABLE üzerine yada taş üzerinde bir TAG ile spawn edilen NPCyi kayıt edip dialogda gösterebilirsin vs vs. Çoktandır scriptle uğraşmadığım için yukardaki komutlardan bazılarını yanlış hatırlamışta olabilirim ama bunlar sphere wiki sayfasında vardır kolaylıkla bulabilirsin.