HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Zusätzliche Parameter funktionieren nicht (https://hx3.de/editing-scripting-167/zusaetzliche-parameter-funktionieren-18816/)

Hannibal 24.03.2010 01:27

Zusätzliche Parameter funktionieren nicht
 
Hallo,

ich habe zu meinen zusätzlichen 2 bestehenden Parametern 2 zusätzliche hinzugefügt.
Leider funktionieren nur 2, nämlich nur die Parameter mit der Sichtweite und dem Gras.

description.ext:

PHP-Code:

class Params
{
      class 
PlayTime
        
{
        
//paramsArray[0]
                
title "Play Time";
                
values[] = {0,1,2,3,4,5};
                
texts[] = {"1min","45 min","90 min","2 h","4 h","24 h"};
                default = 
2;
      };
        class 
TimeScale
        
{
        
// paramsArray[1]
                
title "TimeScale:";
                
values[] = {0,1,2};
                
texts[] = {"24 Hour Day","30 min. Day","1 Hour Day"};
                default = 
1;
        };
        class 
Viewdistance
        
{
        
// paramsArray[2]
                
title "ViewDistance:";
                
values[] = {1,2,3,4,5,6};
                
texts[] = {"1500 m","2000 m","2500 m","3000 m","3500 m","4000 m"};
                default = 
5;
        };
        class 
Grass
        
{
           
//paramsArray[3        
           
title "Grass";    
              
values[]={0,1,2,3,4};
           
texts[]={"No Grass""Default MP""Default SP""More""Max"};
           default=
0;
     };    
}; 

init.sqf

PHP-Code:

//gdate = [2007,6,7,Param2,0912];
gdate = [2007,6,7,0912];
//setDate gdate;

playtimeparam paramsArray select 0;
if (
playtimeparam == 0then {estimatedTimeLeft 60};
if (
playtimeparam == 1then {estimatedTimeLeft 2700};
if (
playtimeparam == 2then {estimatedTimeLeft 5400};
if (
playtimeparam == 3then {estimatedTimeLeft 7200};
if (
playtimeparam == 4then {estimatedTimeLeft 1400};
if (
playtimeparam == 5then {estimatedTimeLeft 86400};

timescaleparam paramsArray select 1;
if (
timescaleparam == 0then {setDate gdate};
if (
timescaleparam == 1then {setDate gdate};
if (
timescaleparam == 2then {setDate gdate};

viewparam paramsArray select 2;
if (
viewparam == 0then {setviewdistance 1500};
if (
viewparam == 1then {setviewdistance 2000};
if (
viewparam == 2then {setviewdistance 2500};
if (
viewparam == 3then {setviewdistance 3000};
if (
viewparam == 4then {setviewdistance 3500};
if (
viewparam == 5then {setviewdistance 4000};

grassparam paramsArray select 3;
if (
grassparam == 0then {setTerrainGrid 50};
if (
grassparam == 1then {setTerrainGrid 25};
if (
grassparam == 2then {setTerrainGrid 12.5};
if (
grassparam == 3then {setTerrainGrid 6.25};
if (
grassparam == 4then {setTerrainGrid 3.125};

// respawn dialog

// You can remove this loop entirely and simply use "Base deployment..." action instead.
player execVM "scripts\respawn_player.sqf"// infinite loop, controls respawning
//player addeventhandler ["Killed", {_this execVM "scripts\respawn_player.sqf"}]; // would rather use event handler

// ==================================================================================== 

Und hier ein Auszug aus der arma.rpt

Creating debriefing
Error in expression < gdate};
if (timescaleparam == 1) then {setDate gdate};
if (timescaleparam == 2)>
Error position: <setDate gdate};
if (timescaleparam == 2)>
Error 4 Elemente angegeben, 5 erwartet
File C:\Documents and Settings\Administrator\My Documents\ArmA 2 Other Profiles\[W-R]Hannibal\mpmissions\[C&H]V01.Chernarus\init.sqf, line 15
Creating debriefing

TeRp 24.03.2010 01:48

Also warum der "timescaleparam" nicht funktioniert steht doch ausdrücklich in der .rpt, die du eigenes mit angegeben hat:
4 Elemente angegeben, 5 erwartet

Was erwartest du von dem anderen Parameter?
Dieser setzt nur einen reinen Informationswert, er beendet die Mission nicht nach der angegebenen Zeit!
Wenn ein Zeitlimit gewünscht ist, reicht ein Trigger mit Bedingung
Code:

time > SpieldauerInSekunden
und bei Typ "Ende x" oder ggf. "Verlieren".

Hannibal 24.03.2010 02:05

genau das mit den 4 Elemente angegeben, 5 erwartet kann ich nicht nachvollziehen
ich sehe nämlich in der description keinen fehler

vorher hatte ich das mit der missionszeit so gelöst gehabt was auch funktionierte

init.sqf

estimatedTimeLeft Param1;


description.ext

titleParam1 = "Play Time";
valuesParam1[] = {60,2700,5400,7200,14400,86400};
defValueParam1 = 5400;
textsParam1[] = {"1min","45 min","90 min","2 h","4 h","24 h"};

.kju 24.03.2010 07:31

//gdate = [2007,6,7,Param2,0912]; <-5
gdate = [2007,6,7,0912]; <-4

Buliwyf 24.03.2010 08:03

gdate = [2007, 6, 7, 9, 12] <- 5

Hannibal 26.03.2010 00:42

Die Mission wird über diese trigger beendet.

1.Trigger: Mission Ende
Bedingung: (param1<10000) && (time >= param1) && (local host)
Bei Akt: this exec”missionsende.sqf”

2.Trigger: Zeit Anzeigen
Bedingung: this
Bei Akt.: hint format ["Spielzeit :%1",(param1-time)/60-((param1-time)/60%1)];


3,Trigger: noch 2min
Bedingung: ((Param1<10000) && (Param1>=120) && ((Param1-time)<=120)) or ZeitAnzeige==2
Bei Akt.: Hint “Noch 2 Minuten”;


Param1 habe ich durch paramsArray select 0 ersetzt
Oder wie muesste ich die Trigger umschreiben?

Description.ext

class Params
{
class PlayTime
{
//paramsArray[0]
title = "Play Time";
values[] = {0,1,2,3,4,5};
texts[] = {"1min","45 min","90 min","2 h","4 h","24 h"};
default = 2;
};


init.sqf:

playtimeparam = paramsArray select 0;
if (playtimeparam == 0) then {estimatedTimeLeft 60};
if (playtimeparam == 1) then {estimatedTimeLeft 2700};
if (playtimeparam == 2) then {estimatedTimeLeft 5400};
if (playtimeparam == 3) then {estimatedTimeLeft 7200};
if (playtimeparam == 4) then {estimatedTimeLeft 1400};
if (playtimeparam == 5) then {estimatedTimeLeft 86400};

Ist meine Description.ext und meine init.sqf so richtig?

Pfandgiraffe 26.03.2010 13:46

1. funktioniert das so nicht
Zitat:

Bei Akt: this exec”missionsende.sqf”
sqf wird so aufgerufen:
Code:

_psy = [] execVM "missionsende.sqf"

2. deine parameterdefinition ist viel zu umständlich. so wie es erst war war es besser. schreibe in der description.ext das mal so:
Code:

class PlayTime
        {
        //paramsArray[0]
                title = "Play Time";
                values[] = {60,2700,5400,7200,10000};
                texts[] = {"1min","45 min","90 min","2 h","NO LIMIT"}; 
                default = 2;
      };

erstmal hast du so die sekunden direkt definiert und kannst dir diese ganze if then zuweiserei in der init sparen. und 2. hast du da schon 2 zeiten drinnen gehabt die einen wert in sekunden jennseits der 10000 haben, die ja in deiner weiterführenden definition als unendliche spielzeit geführt wurden. also ebenfalls überflüssig.


3. kommen wir zu deiner init.sqf:
das wird gelöscht und nienie, ich wiederhole NIEwieder benutzt:
Code:

playtimeparam = paramsArray select 0;
if (playtimeparam == 0) then {estimatedTimeLeft 60};
if (playtimeparam == 1) then {estimatedTimeLeft 2700};
if (playtimeparam == 2) then {estimatedTimeLeft 5400};
if (playtimeparam == 3) then {estimatedTimeLeft 7200};
if (playtimeparam == 4) then {estimatedTimeLeft 1400};
if (playtimeparam == 5) then {estimatedTimeLeft 86400};

...stattdessen schreibst du:
Code:

playtime = paramsArray select 0;
if (isNil "playtime") then {playtime = 5400;};

das wars!


4. dein auslöser zum beenden nach der eingestellter spielzeit:
Bedingung: (playtime<10000) && (time >= playtime)
bei aktivierung: psy = [] execVM "missionsende.sqf"


da die anderen beiden auslöser nur eine visualisierende wirkung verfolgen überlasse ich es dir selbst diese umzuschreiben. ich habe übrigens das gefühl das du nicht verstehst wie das ganze zusammenwirkt und arbeitet. vielmehr wirst du es zusammengeschnipselt haben über copy&paste aus anderen missionen. im mr.murray editing guide ist ein komplettes beispiel für so einen zeitauslöser enthalten. einfach mal reinlesen und verstehen. ;)


mfg

Hannibal 26.03.2010 17:30

Danke, es hat funktioniert.
Die missionsende.sqf ist in Wahrheit eine sqs, habe mich nur verschrieben. Aber deine annahme das ich es zusammengeschnipselt habe muss ich zu meinem bedauern bestätigen.^^

ICh werde mir den Guide wohl noch mal genauer angucken


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119