NEIN. Sorry, aber Du hast NICHTS verstanden.
Die Variable umzubenennen, macht überhaupt keinen Sinn. Wie Du sie nennst, ist schnurzpiepegal.
Und on_call(int p); wird wahrscheinlich nicht mal kompilieren. In Deiner Vorstellung setzt das anscheinend p auf 1 oder sowas, keine Ahnung. Das ist jedenfalls totaler Käse.
Der Parameter, der bei CallRoomScript(1) in der Klammer steht, also hier die 1, dient dazu, in verschiedenen Situationen verschieden zu reagieren.
Beispielsweise:
CallRoomScript(1); // Stromausfall, Raum wird dunkel -> AGS führt diesen Befehl aus: on_call(1);
CallRoomScript(2); // ausgelaufenes Wasser wird sichtbar -> AGS führt diesen Befehl aus: on_call(2);
CallRoomScript(3); // Schwerkraft fällt aus, alle Objekte im Raum fangen an, zu schweben -> AGS führt diesen Befehl aus: on_call(3);
Ich muss in jedem Raum auf alle Situationen reagieren, ich habe aber nur EINE on_call pro Raum zur Verfügung. Irgendwie muss ich also wissen, welche der Situationen eingetreten ist; mit anderen Worten, ich muss irgendwie an die Zahl kommen, die nach CallRoomScript in der Klammer steht.
Ich deklariere also die Funktion mit einem Integer-Parameter, wie durch AGS vorgeschrieben:
[ags]void on_call(int param) {
...
}[/ags]
Statt "param" kann ich auch "Blumenkohl" schreiben, es macht absolut keinen Unterschied. Entscheidend ist nicht der NAME, sondern der WERT dieser Variable; dieser Wert teilt nämlich mit, welches Ereignis eingetreten ist, z.B. 3 wäre die aufgehobene Schwerkraft.
Ich kann also jetzt innerhalb der on_call-Funktion den WERT der Variable abfragen und auf das Ereignis reagieren.
[ags]void on_call(int Blumenkohl) {
if (Blumenkohl == 1) { // falls CallRoomScript(1); aufgerufen wurde, hat Blumenkohl den Wert 1
// Raum verdunklen
}
if (Blumenkohl ==2 ) { // falls CallRoomScript(1); aufgerufen wurde, hat Blumenkohl den Wert 2
// Wasser läuft aus
}
...
}[/ags]
Ich kann natürlich genauso gut einen globale Variable namens "EreignisNummer" benutzen und dann den Parameter ignorieren:
[ags] EreignisNummer = 2;
CallRoomScript(3567);
// room script
void on_call(int p) {
if (EreignisNummer == 2) ...
...
}[/ags]
Aber ich spare mir die globale Variable, indem ich den vorhandenen Parameter benutze.