Möchte auch mal ein Problem haben; ich woltle ein logisches Entity, welches einen Timer bei sich selbst erstellt, sobald es geladen/erstellt wird und jede Sekunde die Uhrzeit auf bestimmte Konditionen hin prüft. Genaugenommen soll es 2 Events auslösen, den Anbruch der Nacht und den Sonnenaufgang. Während der Nacht sollen diese "seltsamen Kreaturen" an vorgesehenen Objekten gespawnt werden gespawnt werden(Ich denke dabei an einen Art "Alptraum"-Gamemode, in dem es tagsüber fiedlich ist und nachts die Party abgeht oO). Die Spawnpunkte funktionieren, der Timer aber nicht, das habe ich durch Ingame-Scripteingaben bereits eingekreist(Execute Script bei den Cheats...)
Hier erstmal die Codes.
[s2s:ox5jaac1]id=88
name=Alptraummodus-Timer
group=stuff
frame=49
description=start
Dieser Timer dient dem Alptraum-Gamemode. Ideallerweise existiert nur einer davon, denn er prüft jede Sekunde die Zeit.
Zudem mehrere unnötig sind.
description=end
script=start
on:create {
local $tmp;
tmp$=currentid();
timer "info",$tmp,1000,0;
freevar $tmp;
}
on:timer {
local $hour;
$hour=hour();
if($hour>21 || $hour<6) {
event "spawncreeps","global";
}
if($hour>5 && $hour<7) {
event "deletecreeps","global";
}
}
script=end[/s2s:ox5jaac1]
Das logische Entity und Sorgenkind meiner Frage. Wie man sieht, soll es zwischen 22 und 6 Uhr rund gehen. Wenn ich aber per "Execute Script" nicht nachhelfe, passiert nichts, und es gibt auch keinerlei Fehlermeldungen :@
Die Null bei der Timer-Deklaration soll übrigens bewirken, dass der Timer unendlich oft läuft. Habe es auch einmal mit -1 probiert, selbes Ergebnis.
[s2s:ox5jaac1]id=201
name=Nachtschatten
icon=gfxroyal_flashicon_creature.bmp
model=gfxroyal_flashcreature.b3d
group=animal,ext
scale=2.25
colxr=10
colyr=20
behaviour=raptor
speed=1.5
turnspeed=1.8
eyes=10
health=400
range=300
attackrange=60
maxweight=25000
ani_move=2,6,0.20
ani_attack=7,12,0.2
ani_idle1=12,16,0.15
ani_idle2=16,22,0.15
ani_idle3=22,26,0.15
ani_die=26,35,0.5
#sfx=native
damage=0
param=damage,8
script=start
on:start {
local $dmg,$tmp,$type;
$tmp=currentid();
$type=type("unit",$tmp);
$dmg=defparam("unit",$type,"damage");
freevar $tmp,$type;
}
on:create {
event "start";
}
on:ai_attack {
local $protection,$blocked,$shield;
$shield=getplayerammo();
if (playergotitem($shield)>0) {
$protection=(defparam("item",$shield,"protection")/100.0);
} else { $protection=0; }
$blocked=($dmg*$protection);
damage "unit",1,($dmg-$blocked);
if ($protection>0) {
echo "!4 Player is wearing a shield and blocked $blocked of $dmg damage";
if (random(1,100)==1) {
msg "Mist! Mein Schild ist zerbrochen!",3,5000;
freestored "unit",1,$shield,1;
}
}
freevar $protection,$blocked,$shield;
}
on:kill {
local $tmp;
$tmp=currentid();
setpos "unit",$tmp,0,0,0;
freevar $tmp;
}
on:deletecreeps {
local $tmp;
$tmp=currentid();
corona 0,0,30,75,25,10,$tmp;
freevar $tmp;
}
script=end[/s2s:ox5jaac1]
(Die Nachtschatten sind, wie gesagt, adaptierte Versionen der "seltsamen Kreatur", aber sie funktionieren etwas anders, wieso ich die poste, sage ich später nochmal)
[s2s:ox5jaac1]id=944
name=Creep-Spawner
icon=gfxmarble01.bmp
group=stuff,std
model=gfxmarble01.b3d
scale=0.7
healthchange=0
mat=stone
script=start
on:spawncreeps {
local $x,$y,$spreadx,$spready,$creeps,$maxcreeps,$active;
$x=getx("self");
$y=gety("self");
$spreadx=random(-10,10);
$spready=random(-10,10);
$x=$x+$spreadx;
$y=$y+$spready;
$creeps=count("unit",201);
$maxcreeps=(count("object",944) * 2);
if ($creeps < $maxcreeps) {
$active=create("unit",201,$x,$y);
}
corona 0,0,30,25,25,75,$active;
}
script=end[/s2s:ox5jaac1]
Der Creep-Spawner, duh. Momentan soll es maximal 2 Creeps pro Spawner geben, aber wenn die alle gleichzeitig agieren, können sie teilweise über das Ziel hinaus schießen. Das ist aber erstmals nicht das Problem, sondern der Timer, der einfahc nicht startet.
Noch ein weiteres Problem, was ich bereits angedeutet habe: Beim Spawnen und Sterben sollen die Creeps einen Corona-Effekt auslösen. Leider habe ich bisher nicht viel davon gesehen.... =/ (Mit anderen Worten, er erscheint einfach nicht)
mfG