[[http://www.siedler-games.de|{{:sg-link.jpg|}}]] ====== 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