Benutzer-Werkzeuge

Webseiten-Werkzeuge


utilfunctions:createwoodpile

Beschreibung

Ich habe als Naturliebhaber immer einen inneren Konflikt, wenn ich zur Holzgewinnung ganze Wälder roden muss. Da muss eine eine Alternative her, dachte ich mir, und hier ist sie nun! :-)

Mit der Funktion…

CreateWoodPile( _posEntity, _resources )

…kann ein abbaubares Signalfeuer erstellt werden, das die angegebenen Rohstoffe enthält. Dieses ist sozusagen als „Holz-Schacht“ zu verstehen, nur mit dem Unterschied, dass der Spieler (wie bei Bäumen) die verbleibenden Rohstoffe nicht sehen kann.

--Beispiel:
CreateWoodPile( "Holzhaufen1", 1000 )

Vorsicht: Die angegebene Entität dient nicht nur als Platzhalter, sondern wird „replaced“!

Code

function CreateWoodPile( _posEntity, _resources )
    assert( type( _posEntity ) == "string" );
    assert( type( _resources ) == "number" );
    gvWoodPiles = gvWoodPiles or {
        JobID = StartSimpleJob("ControlWoodPiles"),
    };
    local pos = GetPosition( _posEntity );
    local pile_id = Logic.CreateEntity( Entities.XD_SingnalFireOff, pos.X, pos.Y, 0, 0 );
    SetEntityName( pile_id, _posEntity.."_WoodPile" );
    ReplaceEntity( _posEntity, Entities.XD_ResourceTree );
    Logic.SetResourceDoodadGoodAmount( GetEntityId( _posEntity ), _resources*10 );
    table.insert( gvWoodPiles, { ResourceEntity = _posEntity, PileEntity = _posEntity.."_WoodPile", ResourceLimit = _resources*9 } );
end
 
function ControlWoodPiles()
    for i = table.getn( gvWoodPiles ),1,-1 do
        if Logic.GetResourceDoodadGoodAmount( GetEntityId( gvWoodPiles[i].ResourceEntity ) ) <= gvWoodPiles[i].ResourceLimit then
            DestroyWoodPile( gvWoodPiles[i], i );
        end
    end
end
 
function DestroyWoodPile( _piletable, _index )
    local pos = GetPosition( _piletable.ResourceEntity );
    DestroyEntity( _piletable.ResourceEntity );
    DestroyEntity( _piletable.PileEntity );
    Logic.CreateEffect( GGL_Effects.FXCrushBuilding, pos.X, pos.Y, 0 );
    table.remove( gvWoodPiles, _index )
end
utilfunctions/createwoodpile.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)