Problem mit $_IPS['SENDER']

Hallo Zusammen,

offensichtlich habe ich mal wieder ein „Brett“ vor dem Kopf. Ich möchte abfangen, wenn ein Script durch IPS_SetScriptTimer gestartet wird. Da es nicht funktioniert hat, habe ich folgendes Testscript erstellt. Die Variable 17896 ist beim Start = 0. Leider wird der elseif Zweig nie durchlaufen. Was mache ich falsch? Danke!

<?php

$i = GetValueInteger(17896);

if ($i == 0)
    {
        $i = $i+1;
        SetValueInteger(17896, $i);
        IPS_SetScriptTimer(52048, 2);
    }
    elseif (($_IPS['SENDER'] == "RunScript") AND ($i >= 0) AND ($i <= 10))
        {
            $i = $i+1;
            SetValueInteger(17896, $i);
            IPS_SetScriptTimer(52048, 2);
            echo $i;
        }
        elseif (($_IPS['SENDER'] == "RunScript") AND ($i = 11))
            {
                IPS_SetScriptTimer(52048, 0);
            }

Gruß
Frank

AND ($i >= 0)
statt
AND ($i > 0)

der Fall $i=0 wird ja im ersten Teil des if-Statements abgehandelt. Aber egal auch mit der Änderung funktioniert es leider nicht.

Wenn du das Skript in der Konsole ausführst, ist der SENDER = Execute und nicht RunScript. Beim Timer wäre der Sender TimerEvent

1 „Gefällt mir“

genau!

hier mal etwas umgeschrieben :slight_smile:

mit einem Ausführern aus der Console wird es gestartet und läuft bis 11

Man braucht den Script-Timer nicht immer wieder neu zu starten da er läuft bis er auf 0 gesetzt wurde.

<?php
$varId = 17896;

if($_IPS['SENDER'] == "Execute")    
{
    $i = 0;
    SetValueInteger($varId, $i);
    IPS_SetScriptTimer($_IPS['SELF'], 2);
}  

if($_IPS['SENDER'] == "TimerEvent")
{
    $i = GetValueInteger($varId);
    if ($i<11)
    {
        $i++;
        SetValueInteger($varId, $i);
    }
    else
    {
        IPS_SetScriptTimer($_IPS['SELF'], 0);
    }
}

O.k., dass war der „Denkfehler“. Danke!!!