Benutzer-Werkzeuge

Webseiten-Werkzeuge


scripting:tutorials:level2:functions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
scripting:tutorials:level2:functions [2023/09/09 17:17] – [Zu viele und zu wenige Parameter] fritz_98scripting:tutorials:level2:functions [2024/05/17 10:02] (aktuell) fritz_98
Zeile 162: Zeile 162:
 ====Beispiele im Siedler-Skripting==== ====Beispiele im Siedler-Skripting====
  
-Eine Funktion, die beim Siedler-Skripten häufig verwendet wird, ermittelt die Gebäude oder Einheiten eines bestimmten Typs des Spielers. ''Logic.GetPlayerEntities(_PlayerId, _EntityType, _Amount)'' gibt höchstens ''_Amount'' EntityIds (FIXME link) von Spieler ''_PlayerId'' vom Typ ''_EntityType'' zurück. Wenn der Spieler weniger als ''_Amount'' Entities des gesuchten Typs besitzt, werden entsprechend weniger EnitityIds zurückgegeben. Wir haben hier also genau den Fall, dass eine Funktion viele Rückgabewerte hat, deren Anzahl aber nicht immer gleich ist.+Eine Funktion, die beim Siedler-Skripten häufig verwendet wird, ermittelt die Gebäude oder Einheiten eines bestimmten Typs des Spielers. ''Logic.GetPlayerEntities(_PlayerId, _EntityType, _Amount)'' gibt höchstens ''_Amount'' [[ scripting:tutorials:level1:place_entities#exkursentity-id_vs_skriptname |Entity-Ids]] von Spieler ''_PlayerId'' vom Typ ''_EntityType'' zurück. Wenn der Spieler weniger als ''_Amount'' Entities des gesuchten Typs besitzt, werden entsprechend weniger EnitityIds zurückgegeben. Wir haben hier also genau den Fall, dass eine Funktion viele Rückgabewerte hat, deren Anzahl aber nicht immer gleich ist.
  
 Darüber hinaus ist der erste Rückgabewert keine EntityId, sondern die Anzahl der gefundenen Ids! Darüber hinaus ist der erste Rückgabewert keine EntityId, sondern die Anzahl der gefundenen Ids!
Zeile 317: Zeile 317:
 <code lua> <code lua>
 function Sum(...) function Sum(...)
 +    local Result = 0
     for _, Number in ipairs(arg) do     for _, Number in ipairs(arg) do
         Result = Result + Number         Result = Result + Number
Zeile 342: Zeile 343:
 </code> </code>
 Nach dem Aufruf hat ''MyTable'' 8 Einträge, wurde also um alle Werte, die der Funktion übergeben wurden, erweitert. Nach dem Aufruf hat ''MyTable'' 8 Einträge, wurde also um alle Werte, die der Funktion übergeben wurden, erweitert.
 +
 +**Achtung**: Die Parameter können in diesem Fall nicht umgekehrt angegeben werden (also nicht ''MultiInsert(..., _Table)''! Die Funktion kann beim Aufruf nicht wissen, welche Argumente zu ''...'' und welche zu ''_Table'' gehören. Deshalb besteht generell die Regel, dass zuerst die festen/notwendigen Parameter angegeben werden müssen, bevor man die Funktion für beliebig viele weitere Parameter mit ''...'' "öffnet".
  
 ---- ----
scripting/tutorials/level2/functions.txt · Zuletzt geändert: 2024/05/17 10:02 von fritz_98