Spawnsetzung

Hier könnt ihr allgemeine themen behandel, die sich mit Ultima Online befassen.
Antworten
Nachricht
Autor
Mani
Newbie
Beiträge: 6
Registriert: 31 Aug 2010 12:11

Spawnsetzung

#1 Beitrag von Mani » 06 Dez 2010 22:47

Hallöchen!

Um auf den Punkt zu kommen, habt ihr schon mal etwas von einem Tool zum Worldspawn setzen gehört?
Sprich womit man Ganze Map mit Wildtierspawns zB bestücken kann ohne jeden Spawn einzeln per Hand zu setzen?

Wenn ja, wäre ein Link zu jenem Tool sehr nett!

Danke im Voraus!

Zecole
Bronze Mitglied
Beiträge: 221
Registriert: 09 Jul 2004 20:08
Kontaktdaten:

#2 Beitrag von Zecole » 07 Dez 2010 22:26

also zu erst ich kenne leider keins wäre mir auch neu das es das gibt
weil woher soll er wissen welchen spwan er wo setzen soll

und zweitens solltest du noch angeben ob du sphere oder runuo nutzt das wäre schon mal hilfreich :)

Mani
Newbie
Beiträge: 6
Registriert: 31 Aug 2010 12:11

#3 Beitrag von Mani » 08 Dez 2010 09:12

Der Server läuft auf Sphere version.

Wäre es möglich überhaupt so ein Tool zu schreiben?

Man kann es ja an Groundtile erkennbare Gebiete erfassen lassen.

Oder sagen wir mit eingrenzbarem Koordinatengebiet.

Oder ergibt sich so etwas als Sinnlos?

Zecole
Bronze Mitglied
Beiträge: 221
Registriert: 09 Jul 2004 20:08
Kontaktdaten:

#4 Beitrag von Zecole » 08 Dez 2010 13:55

ich glaube es ist schwer so was zu automatisieren weil einmal könnte höhlenboden eine mine sein und einmal eine monsterhöhle also einmal mit und einmal ohne monster.
und wenn man die gebiete eingrenzen soll kann man glaube ich sich den aufwand sparen und gleich alles von hand machen dann hat man alles unter kontrolle
bei sphere kann man mit axis ja gute und schnelle ergebnisse erziehlen so hab ich das jedenfalls immer gemacht

Korshurl
Senior Newbie
Beiträge: 50
Registriert: 18 Jan 2009 10:17

#5 Beitrag von Korshurl » 09 Dez 2010 19:52

Also ich habe das zwar nicht mit Spawns von NPC gemacht aber mit Items und es ist extrem Serverlastig und es kann gut und gerne mal passieren das Sphere auch mal paar Minuten lagt je nach dem wie groß man die Fläche auf einmal macht. Allerdings kann man so sehr gut in Verbindung mit Templates seine eigenen Wälder, Wiesen und was auch immer bespawnen ohne selbst mit Axis Hand anzulegen. Vielleicht kannst du dir das umschreiben auf NPC Spawns.

Hier mal ein Beispiel für unsere Eisinsel:

Code: Alles auswählen

//Def im sphere_types.scp

[TYPEDEF t_snow]
TERRAIN = 011a 011d
TERRAIN = 0179 018a
TERRAIN = 03a9 03ac
TERRAIN = 05df 05e2
TERRAIN = 075d 0760
TERRAIN = 076d 0773

Code: Alles auswählen

////////////////////////////////////////////////////////////////////////
//
//	Shard: Athoris
//
//	HomePage: www.athoris-uo.de
//
//	Autor: Taro
//
//	Inhal: Tool zum Spawnen der Vegetation %u28Wald/Wiese%u29
//
//	History: 05-10-2010  erstellt bis ID 0d04
//
////////////////////////////////////////////////////////////////////////

//###############################################
// #
// #                                          F U N K T I O N E N
// #
//###############################################

[FUNCTION spawnstart]
//Funktion für einfache eingabe in Console
serv.wp t_snow,i_worldspawn_schnee_1,2560,38,3027,444
serv.log Fertig Spawn 1

[FUNCTION spawnend]
//Funktion löscht Platzhalteritems wo keine neuen Items hin sollen
FORINSTANCES i_no_worldspawn
    remove
    var0.remove_item +=1
ENDFOR
serv.log <dvar.remove_item> Items geloescht
var.remove_item

[FUNCTION wp]
//Funktion setzt Hilfsitems die den eigentlichen Spawn darstellen
IF !(<argv>==6)
    src.smsg @02b Ungueltige Parameteranzahl
    src.smsg Syntax: type,item,startX,startY,endX,endY
    return 1
ELIF !(<ARGV[2]>) || !(<ARGV[3]>)
    src.smsg @02b Start-Parameter muss groesser als 0 sein.
    src.smsg Syntax: type,item,startX,startY,endX,endY
    return 1
ELIF !(<ARGV[2]> <= <ARGV[4]>) || !(<ARGV[3]> <= <ARGV[5]>)
    src.smsg @02b End-Parameter muss groesser als Start sein.
    src.smsg Syntax: type,item,startX,startY,endX,endY
    return 1
ELIF (<ARGV[2]> >= 7168) || (<ARGV[4]> > 7168) || (<ARGV[3]> >= 4096) || (<ARGV[5]> > 4096)
    src.smsg @02b Parameter muss innerhalb der Map liegen.
    src.smsg Syntax: type,item,startX,startY,endX,endY
    return 1
ENDIF
local.spownitem <ARGV[1]>
local.kordsx=(<ARGV[4]>-<ARGV[2]>)+1
local.kordsx1=(<ARGV[4]>-<ARGV[2]>)+1
local.kordsy=(<ARGV[5]>-<ARGV[3]>)+1
local.kordszahl=<local.kordsx>*<local.kordsy>
local.pointx=<ARGV[2]>
local.pointx1=<ARGV[2]>-1
local.pointy=<ARGV[3]>
FOR 1 <dlocal.kordszahl>
    local.x +=1
    local.pointx1 +=1
    IF (<local.x> > <local.kordsx>)
        local.pointx1=<local.pointx>
        local.x=1
        local.pointy +=1
    ENDIF
    IF (<serv.MAP(<dlocal.pointx1>,<dlocal.pointy>).type>==<ARGV[0]>) && (<serv.MAP(<dlocal.pointx1>,<dlocal.pointy>).STATICS>==0)
        serv.newitem <local.spownitem>
        new.p <dlocal.pointx1>,<dlocal.pointy>
    ENDIF
ENDFOR

[FUNCTION sectoraktiv]
//Funktion um durch die Sectoren zu springen um diese aus dem Sleepmode zu holen damit der @timer triggert
local.x <src.p.x>
local.x1 <src.p.x>-64
local.y <src.p.y>
FOR 24
    local.x1 += 64
    src. go <dlocal.x1>,<dlocal.y>
ENDFOR
local.y += 64
src.go <dlocal.x>,<dlocal.y>

[FUNCTION f_spowntool_itemseach_onpoint]
//Funktion prüft ob an diesen MapPoint schon ein Item existiert in Static oder Normal
local.itemseach_onpoint=0
FORITEMS 0
    local.itemseach_onpoint +=1
ENDFOR
IF (<local.itemseach_onpoint> > 1) || (<serv.MAP(<p.x>,<p.y>).STATICS> > 0)
    return 0
ELSE
    return 1
ENDIF

//###############################################
// #
// #                                          H I L F S I T E M S
// #
//###############################################

[ITEMDEF i_no_worldspawn]
ID=0181d
NAME=No Spawn
TYPE=t_normal
CATEGORY=Athoris - Staff
SUBSECTION=Spawntools
DESCRIPTION=No Spawn

ON=@create
ATTR=010

//###############################################
// #
// #                                          R E G I O N E N S P A W N
// #
//###############################################

[ITEMDEF i_worldspawn_schnee_1]
ID=i_worldgem_lg
TYPE=t_script
CATEGORY=Athoris - Staff
SUBSECTION=Spawntools
DESCRIPTION=Schnee 1

ON=@create
ATTR=010
// Itemdichte in Prozent
more1={1 100}
// Wählt spawnendes Item aus Template
more2={it_deko_wintersteine 5 it_deko_winterbaumstumpf 1 it_pflanze_winter 1 it_baum_winter 10 it_deko_schnee 50}
TIMER=1

ON=@timer
//Prüft ob schon ein Item existiert auf dem MapPoint hier More1 Prüfung ist Itemdichte von 5%
IF (<more1> <= 5) && (<f_spowntool_itemseach_onpoint>)
    local.movez=<p.TERRAIN.Z>-<p.z>
    move 0 0 <dlocal.movez>
ELSE
    remove
    return 1
ENDIF
newitem <more2>
new.p <p>
remove
RETURN 1

//###############################################
// #
// #                                          T A M P L A T E S
// #
//###############################################

[template it_deko_schnee]
CATEGORY=Athoris - Staff
SUBSECTION=Templates
DESCRIPTION=Deko - Schnee
item={02649 1 0264a 1 0264b 1 0264c 1 0264d 1 0264e 1}

... usw.

Benutzeravatar
Amirin
Gold Mitglied
Beiträge: 604
Registriert: 16 Aug 2004 12:46
Wohnort: Remscheid
Kontaktdaten:

#6 Beitrag von Amirin » 18 Dez 2010 00:39

Nabend zusammen,

bevor ihr mich rupft oder teert ... ich hab nicht den leisesten Hauch einer Ahnung woher ich das geladen hab und warum es noch immer auf meiner Platte rumliegt. Jedoch hab ich hier einen gesamten Code für Sphere der die Welt bespawnt. Wenn ich mich noch recht entsinne, ist er jedoch einzig und allein für die UO Original Map von Anno dazumal.


EDIT : Code zu groß, passt hier nicht rein. Wer haben will soll mir seine MailAddy per PN zu kommen lassen. Ich schau zumindest jeden zweiten Tag mal hier ins Forum rein.

Wer dann noch herausfindet wer den Code geschrieben hat, wäre es nett den Urheber hier zu posten. Danke

mfg
Amirin

Toldy
Junior Mitglied
Beiträge: 54
Registriert: 22 Mär 2006 10:11
Kontaktdaten:

#7 Beitrag von Toldy » 04 Jan 2011 15:34

Es wäre durchaus denkbar, auch ein Tool zu entwickeln, das eine komplette - auch beliebige - Map bespawnt. Rein programmiertechnisch jedenfalls. Ein Problem wurde schon angesprochen:
Wie sieht es aus mit Höhlen? Naturhöhle? Bewohnt oder unbewohnt? Oder Dunegon?

Okay, auch das würde man vielleicht noch hinkriegen (mit mehr oder minder zufriedenstellenden Ergebnissen).

Wenn ihr mich fragt, sind Spawns dann gut gesetzt, wenn sich jemand dazu Gedanken macht. Und dazu gehören nicht nur Platzierung und Respawnrate. Eine gut bespawnte Gegend besteht aus vielen aufeinander abgestimmten Spawns. Und das geht nur durch individuellen Einsatz. Ich steh diesbezüglich total auf Handarbeit, auch wenns Zeit kostet. ;)

Antworten