Einzelnen Beitrag anzeigen
Alt 17.02.2010, 22:30   #4 (permalink)
JoeJoe87577
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
Standard

Nächste Fragen:
Wie kann ich Spieler per addAction Befehl auf Stühle setzen? Ich hab mir mal aus der VTS 3.5 3 Scripte rausgezogen, aber die laufen nicht so ganz wie ich will. Um genau zu sein, der Action Eintrag ist da, wenn ich ihn anwähle verändert sich auch die Position meines Soldaten und der neue Action Eintrag fürs Aufstehen taucht auf. Nur die Animation des Sitzens wird nicht abgespielt...
Hier die Scripte:
sitchair.sqf:
Code:
if (not isnull sittingchair) exitWith {};

_gen = _this select 0;
_caller = _this select 1;
_id = _this select 2;

//Security check on global variable
if (_gen getVariable "Locked") exitWith {};

// remove the action once it is activated
_gen removeAction _id;

_random = round(random 2);
_anim = "";

switch (_random) do
{
  case 0 : {_anim="sykes_c0briefing"};
  case 1 : {_anim="rodriguez_c0briefing"};
  case 2 : {_anim="cooper_c0briefing"};
};


playeranim=_caller;
playeranim2=_anim;
//publicvariable "playeranim";
//publicvariable "playeranim2";
_clientcode=compile format["%1 switchMove ""%2"";clientcode=nil;",_caller,_anim];
//[_clientcode] execVM "runcodeonallclients.sqf";

achairid = _caller addAction ["Stand up", "unsitchair.sqf", [], 1,false, false, "", "_this == player"];

sittingchair=_gen;

sittingchair setVariable ["Locked",true,true]; 


while {sittingchair==_gen} do
{
  [_clientcode] execVM "runcodeonallclients.sqf";
 
  sleep 0.25;

  _caller setposasl [getposasl _gen select 0, getposasl _gen select 1, getposasl _gen select 2];
  _caller setDir (direction _gen)+180;
  
  sleep 30;
  
  if (_caller distance _gen > 5) exitwith {sittingchair setVariable ["Locked",nil,true];sittingchair=objnull;_caller removeAction achairid;};
};
unsitchair.sqf
Code:
_gen = _this select 0;
_caller = _this select 1;
_id = _this select 2;
// remove the action once it is activated
_gen removeAction _id;

if (_caller distance _gen > 5) exitwith {};

_chair=sittingchair;

playeranim=_caller;
//publicvariable "playeranim";
_clientcode=compile format["%1 switchMove """";clientcode=nil;",_caller];

[_clientcode] execVM "runcodeonallclients.sqf";

//_caller switchmove "";
_caller setposasl [getposasl _chair select 0, (getposasl _chair select 1)-1, getposasl _chair select 2];
_caller setDir (direction _chair)+180;

_chair addAction ["Sit", "sitchair.sqf", [], 1,false, false, "", "isNull(sittingchair)"];

_chair setVariable ["Locked",nil,true];

sittingchair=objnull;
und runcodeonalclients.sqf
Code:
codetorun=_this select 0;
//var1=_this select 1;

clientcode=codetorun;
publicvariable "clientcode";
runclientcode=true;
publicvariable "runclientcode";
in der Init des Stuhls steht:
Code:
this addAction ["Sit", "sitchair.sqf", [], 1,false, false, "isNull sittingchair"];
So das is die erste, und die zweite:
Wie bekomm ich eine Fahrzeugwartungsposition zum laufen? Geht das nur über einen Auslöser mit setFuel, setammo und setdamage, oder gibts da ne andere Möglichkeit.

LG
JoeJoe87577 ist offline