Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0004280opensim[REGION] Scripting Enginepublic2009-10-19 13:352011-07-03 08:21
Reporterorionhax 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusacknowledgedResolutionopen 
PlatformOSOS Version
Product Versionmaster (dev code) 
Target VersionFixed in Version 
Summary0004280: Exception reported inworld, caused by script API failure.
DescriptionStarting a door script give this error.

Line (0,0): Error : /***/opensim/bin/OpenSim.Region.ScriptEngine.Shared.Api.Runtime.dll (Location of the symbol related to previous warning)

script works on .net win system.
TagsNo tags attached.
Git Revision or version number6d3d985511a8e70624c3a06a042890002f223978
Run Mode Grid (1 Region per Sim)
Physics EngineODE
Script Engine
EnvironmentMono / Linux64
Mono Versiontrunk
Viewer
Attached Files

- Relationships

-  Notes
(0013915)
melanie (administrator)
2009-10-19 13:36
edited on: 2009-10-19 13:38

The information you are providing is meaningless in itself. The title of the report is also meaningless.
Unless more, and useful, information can be provided, this will need to be closed as "Can't reproduce"

(0013916)
orionhax (reporter)
2009-10-19 13:43

script that produces the error.


//Prepare a notecard and put down names of listed people like this.
//
//Amanda Shinji
//Seagel Neville
// NOTE: Names MUST be Exact and are CaSe SensiTive
//
//And use this script.
//1 prim double sliding glass door was made by Seagel Neville as public domain, Nov 2006
//Note: Put the script into the prim before the notecard. You can also add names on the list in the prim.
// ==========================================================================
// Script adopted for use in OpenSim May-2009 by WhiteStar Magic @ OSGrid.
//
integer pitch = 5;
float TimeInterval = 3.0;
integer TouchFlag;
integer Holding;
integer SecureFlag;

string gName;
integer gLine;
key gQueryID;
list autholizedList;

Open()
{
    TouchFlag = TRUE;
    llTriggerSound("startrekdoor", 0.5);
    integer i;
    for(i = 0; i < pitch + 1; i++)
    {
        llSetPrimitiveParams([PRIM_TYPE, 0, 0, <0.000000, 1.000000, 0.000000>,
            0.949000, <0.000000, 0.000000, 0.000000>, <(float)i/pitch, 1.000000, 0.000000>,
            <0.000000, 0.000000, 0.000000>]);
    }
    llSetTimerEvent(TimeInterval);
}

Close()
{
    llSetTimerEvent(0);
    TouchFlag = FALSE;
    llTriggerSound("startrekdoor", 0.5);
    integer i;
    for(i = pitch - 1; i >= 0 ; i--)
    {
        llSetPrimitiveParams([PRIM_TYPE, 0, 0, <0.000000, 1.000000, 0.000000>,
            0.949000, <0.000000, 0.000000, 0.000000>, <(float)i/pitch, 1.000000, 0.000000>,
            <0.000000, 0.000000, 0.000000>]);
    }
}

TouchOpen()
{
    if(TouchFlag == FALSE)
    {
        Open();
    }
    else
    {
        Close();
    }
}

CollideOpen()
{
    if(TouchFlag == FALSE)
    {
        Open();
    }
    else
    {
        llSetTimerEvent(TimeInterval);
    }
}

Init()
{
    llSetPrimitiveParams([PRIM_MATERIAL, PRIM_MATERIAL_GLASS, PRIM_SIZE, <2.0, 2.7, 0.01>,
        PRIM_TYPE, 0, 0, <0.0, 1.0, 0.0>, 0.949, <0.0, 0.0, 0.0>, <0.0, 1.0, 0.0>, <0.0, 0.0, 0.0>,
        PRIM_FULLBRIGHT, ALL_SIDES, TRUE, PRIM_ROTATION, <0.7, 0, 0, 0.7>,
        PRIM_COLOR, ALL_SIDES, <0.0, 0.0, 0.5>, 0.5, PRIM_POSITION, llGetPos() + (<0, 0, 1.1> * llGetRot()),
        PRIM_TEXTURE, ALL_SIDES, "5748decc-f629-461c-9a36-a35a221fe21f",
        <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>, 0.0]);
}

default
{
    state_entry()
    {
        // Init(); // ENABLE this to Regenrate a Standard Prim to default build size and config
    }
    changed(integer change)
    {
        if(change & CHANGED_INVENTORY)
        {
            if(llGetInventoryType(llGetInventoryName(INVENTORY_NOTECARD, 0)) != -1)
            {
                gName = llGetInventoryName(INVENTORY_NOTECARD, 0);
                gLine = 0;
                autholizedList = [];
                gQueryID = llGetNotecardLine(gName, gLine);
            }
        }
    }
    touch(integer total_number)
    {
        if((llDetectedKey(0) == llGetOwner()) || llListFindList(autholizedList, [llDetectedName(0)]) != -1)
        {
            Holding++;
            if(Holding == 50)
            {
                if(SecureFlag == FALSE)
                {
                    llOwnerSay("Door is Now LOCKED");
                    SecureFlag = TRUE;
                }
                else
                {
                    llOwnerSay("Door is Now UNLOCKED");
                    SecureFlag = FALSE;
                }
            }
        }
    }
    touch_end(integer total_number)
    {
        Holding = 0;
        if(SecureFlag == FALSE)
        {
            TouchOpen();
        }
        else
        {
            if(llDetectedKey(0) == llGetOwner() || llListFindList(autholizedList, [llDetectedName(0)]) != -1)
            {
                TouchOpen();
            }
            else
            {
                llWhisper(0, "Sorry, this door has been LOCKED.");
            }
        }
    }
    dataserver(key query_id, string data)
    {
        if (query_id == gQueryID)
        {
            if (data != EOF)
            {
                autholizedList += data;
                ++gLine;
                gQueryID = llGetNotecardLine(gName, gLine);
            }
        }
    }
    collision_end(integer num_detected)
    {
        if(SecureFlag == FALSE)
        {
            CollideOpen();
        }
        else
        {
            if(llDetectedKey(0) == llGetOwner() || llListFindList(autholizedList, [llDetectedName(0)]) != -1)
            {
                CollideOpen();
            }
            else
            {
                llWhisper(0, "Sorry, this door has been LOCKED.");
                llSleep(5.0);
            }
        }
    }
    timer()
    {
        Close();
    }
}
(0018751)
makopoppo (manager)
2011-07-03 08:21

Issue reproduced.

More precise cause is the method name "Close()". If I have changed it to "CloseDoor()", it succeeded in compile.

It seems to be ridiculous but I guess some method name which is the same to Mono/.NET runtime method name, it will try to use those function instead of inworld scripts. It might be more kind to set some "reserved" method names and prevent them from using...

- Issue History
Date Modified Username Field Change
2009-10-19 13:35 orionhax New Issue
2009-10-19 13:35 orionhax Git Revision => 6d3d985511a8e70624c3a06a042890002f223978
2009-10-19 13:35 orionhax SVN Revision => 0
2009-10-19 13:35 orionhax Run Mode => Grid (1 Region per Sim)
2009-10-19 13:35 orionhax Physics Engine => ODE
2009-10-19 13:35 orionhax Environment => Mono / Linux64
2009-10-19 13:35 orionhax Mono Version => trunk
2009-10-19 13:36 melanie Note Added: 0013915
2009-10-19 13:37 melanie Summary Error : /***/bin/OpenSim.Region.ScriptEngine.Shared.Api.Runtime.dll => Exception reported inworld, caused by script API failure.
2009-10-19 13:38 melanie Note Edited: 0013915
2009-10-19 13:43 orionhax Note Added: 0013916
2011-07-03 08:21 makopoppo Note Added: 0018751
2011-07-03 08:21 makopoppo Status new => acknowledged


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker