Jump to content

CptBBQ

Member
  • Content Count

    93
  • Joined

  • Last visited

  • Medals

Posts posted by CptBBQ


  1. Hi everyone,

    I´ve ran into a problem I just can´t explain to myself. I´ve taken this code from the biki:

    _vel = velocity _vehicle;

    _dir = direction _vehicle;

    _speed = 80;

    _vehicle setVelocity [(sin _dir*_speed),(cos _dir*_speed),(_vel select 2)];

    It should accelerate a vehicle in the direction it´s already heading towards.

    I just changed it a little so _speed isn´t added to the velocity but velocity is set to _speed.

    I need to use this script on two different vehicles:

    Old_moto_TK_Civ_EP1 and S1203_TK_CIV_EP1

    With the motorcycle everything works as intended but the car just makes a small leap, and then it stops abruptly.

    I´m completely baffled about this because the only difference in the code is the vehicle classname.

    Any ideas?

    Thanks in advance,

    CptBBQ


  2. @Reimann: Did you host it on a dedicated server? Because for me it work´s fine hosted locally but not on a dedi.

    I just made a test where I placed only the trigger and the marker on the map (and me as a player). When I enter the trigger area exactly 13 enemies are created (note that the script only calls for 7).

    @shk: when I try to enter "execVM" in the OnAct line of a trigger the editor won't let me close it. It says "Type Script, expected Nothing". I found

    [] exec "script.sqf" to be the only working syntax (within the editor). Besides, the script obviously gets called.

    This is starting to get frustrating... I really have no idea what I´m doing wrong, or what else to try :(


  3. I´ve got this

    if (isServer) then {
    
    Grp1 = Creategroup EAST;
    _Leader="RU_Soldier" createUnit [getMarkerPos "Marker1", Grp1, "Grp1=this", 1, "Sergeant"];
    _Unit2="RU_Soldier" createUnit [getMarkerPos "Marker1", Grp1, "", 1, "Corporal"];
    _Unit3="RU_Soldier" createUnit [getMarkerPos "Marker1", Grp1, "", 1, "Corporal"];
    _Unit4="RU_Soldier" createUnit [getMarkerPos "Marker1", Grp1, "", 1, "Corporal"];
    _Unit5="RU_Soldier" createUnit [getMarkerPos "Marker1", Grp1, "", 1, "Corporal"];
    _Unit6="RU_Soldier" createUnit [getMarkerPos "Marker1", Grp1, "", 1, "Corporal"];
    _Unit7="RU_Soldier" createUnit [getMarkerPos "Marker1", Grp1, "", 1, "Corporal"];
    exit;
    
    };

    Called by a trigger (which is placed in the editor). Strangely, resulting in 13 (if I haven´t miscounted) enemy AI´s spawning at Marker1...

    EDIT:

    in case it matters... the trigger fires on BluFor, present, once.

    On Act.: [] exec "opfor1.sqf"


  4. sorry for the triple post...

    but this has become a general problem for me. When scripting for multiplayer (dedicated server), creating AI´s and vehicles is a pain in the a##. Most of the time, I get more units then ordered...

    Event handlers seem to do the job, but I doubt there´s one EH for every situation...

    For example, I need to spawn friendly AI and player gear at gamestart. And I need to spawn enemy AI when a certain trigger area is reached by blufor.

    How do you guys get around such issues?

    Are there any existing threads about this I´ve missed searching the forum (which I did quite a lot)?

    Can someone refer me to any example scripts (scripted for multiplayer) that achieve the things I´ve mentioned above?

    Is there a complete list of event handlers or is there an EH-Addon that could help?

    I know, thats a lot of questions.. but I´d be happy to get an answer for any one of them.

    Please, help me to help myself ;)

    Cheers,

    CptBBQ.


  5. Alright, fixed it so far. It was just my stupidity getting in my way ^^

    @SNKMAN: if I wanted it to be executed by the server only, could I just add this at the top?

     if (!isServer) exitWith {};

    EDIT: I just tried and it dind´t work. But how would I ensure, that a script is executed once and only once?

    And if thats not possible, how else would one spawn team members at the beginning of a multiplayer game in an orderly manner?


  6. ahh, I see. Reimann used that line on the event handler too. I guess it also only has to be added once. Im only starting to understand this stuff, so thank you.

    Unfortunately I have to correct my last post: the script is executed correctly, but only for player1. There also is a player2 and I made sure the scripts are identical exept for unit names and variables of course. But he is still spawning loads of unsolicited AI´s at respawn.

    Any ideas how this can be?

    Cheers,

    Bbq.


  7. hmmm, as my scripts work right now, every player calls his own respawn script (i.e. respawn1.sqf and respawn2.sqf). So I think I´ll have to use the player names and make one eventhandler for each player.

    So I´ve deleted the trigger and now call this .sqf from the init.sqs (also I removed the if (isServer) line from my script):

    if ( isNil{myplayer getVariable "mk_killedEHadded"} ) then 
    {
    myplayer addEventHandler ["killed", 
    { 
    	[] spawn {
    		waitUntil { alive myplayer }; 
    		execVM "respawn1.sqf";
    
    	};	
    }];
    myplayer setVariable ["mk_killedEHadded", true];
    };
    

    Wich again works fine when hosted locally.

    On the dedi the units aren´t deleted, so I get 9 new Ai´s but still have the old ones in my team after respawn.

    I think if I can get around this everything would work.

    Thanks for your help so far. And yes, I would love to learn about those other things you mentioned, but on another occasion. I have a feeling that I´ll stay for a while ;)


  8. Thanks for the kind replies =)

    I already feared things wouldn´t stay that simple...^^

    So, I have a few questions about that 'Event Handler' thing...

    - well, first of all where would I add it? ;)

    - I guess, I´ll have to replace 'player' with 'myplayer' in this case?

    - will my script then behave as nicely as it does in single player? ^^

    Luckily I won´t be scripting for more than two players, so JIP won´t be an issue. Hope that makes things a little easier.

    Thanks again!

    Cheers,

    Bbq.


  9. Hi there!

    I´m new to scripting and I tried to do something what I thought would be really easy: Have a team of AI´s spawn with me, delete it whenever I die and respawn them at my location. Also my gear is spawned by this script. All this works just fine in single player.

    But now when I want to host my map on a dedi, the problems start. Most of the time to many units are spawned, some of them don´t belong to my team (cannot give any orders to them) but they follow me like a shadow...

    I´ve read a few times that some scripts should only be executed by the server and some by clients only. In fact, throwing in a "if (isServer)..." helped, but still, the script is acting weird in multiplayer.

    It looks as if the timing is completely fubar. Delays are ignored and things just don´t happen in the correct order. And at least when respawning there are still to many AI´s created.

    Maybe some of you experienced modders can have a look at it. So here´s what I´ve got:

    // respawn1.sqf
    
    sleep 3;
    
    waitUntil {alive myplayer};
    
    _unit = myplayer;
    
    removeAllWeapons _unit;
    
    _unit addWeapon "M107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addMagazine "ACE_10Rnd_127x99_T_m107";
    _unit addWeapon "ACE_Glock18";
    _unit addMagazine "ACE_33Rnd_9x19_G18";
    _unit addMagazine "ACE_33Rnd_9x19_G18";
    _unit addMagazine "ACE_33Rnd_9x19_G18";
    _unit addMagazine "ACE_33Rnd_9x19_G18";
    _unit addMagazine "HandGrenade_West";
    _unit addMagazine "HandGrenade_West";
    _unit addMagazine "HandGrenade_West";
    _unit addWeapon "Binocular";
    _unit addWeapon "NVGoggles";
    
    
    //Team1 incl. gear is spawned at player position
    
    "spawn1" setMarkerPos getpos myplayer;
    
    deleteVehicle ai2; 
    deleteVehicle ai3; 
    deleteVehicle ai4; 
    deleteVehicle ai5; 
    deleteVehicle ai6; 
    deleteVehicle ai7; 
    deleteVehicle ai8; 
    deleteVehicle ai9; 
    deleteVehicle ai10;
    
    
    if (isServer) then {
    
    sleep 3; 
    
    ai2 = alpha createUnit ["USMC_Soldier_HAT", getMarkerPos "spawn1", [], 10, "FORM"];
    ai3 = alpha createUnit ["USMC_Soldier_HAT", getMarkerPos "spawn1", [], 10, "FORM"]; 
    ai4 = alpha createUnit ["USMC_Soldier_HAT", getMarkerPos "spawn1", [], 10, "FORM"]; 
    ai5 = alpha createUnit ["USMC_Soldier_Medic", getMarkerPos "spawn1", [], 10, "FORM"]; 
    ai6 = alpha createUnit ["USMC_SoldierS_SniperH", getMarkerPos "spawn1", [], 10, "FORM"];
    ai7 = alpha createUnit ["USMC_Soldier_MG", getMarkerPos "spawn1", [], 10, "FORM"];
    ai8 = alpha createUnit ["USMC_SoldierM_Marksman", getMarkerPos "spawn1", [], 10, "FORM"]; 
    ai9 = alpha createUnit ["USMC_Soldier_AR", getMarkerPos "spawn1", [], 10, "FORM"]; 
    ai10 = alpha createUnit ["USMC_Soldier_AR", getMarkerPos "spawn1", [], 10, "FORM"];
    
    // arm javelingunner1
    _unit2 = ai2;
    
    removeAllWeapons _unit2;
    
    _unit2 addWeapon "M16A4";
    _unit2 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit2 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit2 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit2 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit2 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit2 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit2 addWeapon "Javelin";
    _unit2 addMagazine "Javelin";
    _unit2 addWeapon "ACE_Glock18";
    _unit2 addMagazine "ACE_33Rnd_9x19_G18";
    _unit2 addMagazine "ACE_33Rnd_9x19_G18";
    _unit2 addMagazine "ACE_33Rnd_9x19_G18";
    _unit2 addMagazine "ACE_33Rnd_9x19_G18";
    _unit2 addMagazine "HandGrenade_West";
    _unit2 addMagazine "HandGrenade_West";
    _unit2 addMagazine "HandGrenade_West";
    _unit2 addMagazine "HandGrenade_West";
    _unit2 addWeapon "Binocular";
    _unit2 addWeapon "NVGoggles";
    
    
    // arm javelingunner2
    _unit3 = ai3;
    
    removeAllWeapons _unit3;
    
    _unit3 addWeapon "M16A4";
    _unit3 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit3 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit3 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit3 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit3 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit3 addMagazine "ACE_30Rnd_556x45_T_Stanag";
    _unit3 addWeapon "Javelin";
    _unit3 addMagazine "Javelin";
    _unit3 addWeapon "ACE_Glock18";
    _unit3 addMagazine "ACE_33Rnd_9x19_G18";
    _unit3 addMagazine "ACE_33Rnd_9x19_G18";
    _unit3 addMagazine "ACE_33Rnd_9x19_G18";
    _unit3 addMagazine "ACE_33Rnd_9x19_G18";
    _unit3 addMagazine "HandGrenade_West";
    _unit3 addMagazine "HandGrenade_West";
    _unit3 addMagazine "HandGrenade_West";
    _unit3 addMagazine "HandGrenade_West";
    _unit3 addWeapon "Binocular";
    _unit3 addWeapon "NVGoggles";
    
    // same with ai4 to ai10
    
    };
    exit;
    

    // init.sqs: 
    
    execVM "respawn1.sqf"; //for initial gear and ai
    alpha = group myplayer;
    

    And a trigger:

    Condition: (!alive myplayer) 
    On act.: myplayer exec "respawn1.sqf";
    

    Also, there is a second player using an identical script called respawn2.sqf, only with different unit names and gear.

    Any advice would be appreciated.

    Thanks in advance!

    Cheers,

    Bbq.

×