Visa ämne
Anrop » Anrop » Multiplayer
 Skriv ut ämne
Gisslan Mission
Mummel mummel, jag kom precis på att jag ska på LAN på fredag. Och det är ingen där som vill spela Arma, så jag kommer kommer förmodligen inte in. Resigned
CAUTION: I'm a screamer and I'm using Voice-Activated!
Tack för att så många var med! Trist med radioproblemen.
Som jag sade ett par gånger, i alla tester så fungerade perfekt,
så jag kommer post:a lite kod och grejjer här så folk kan hjälpa mig felsöka ifall det skulle vara någon kod som är helt åt fanders!

Några punkter:

• Det jag sade om att indep-helikoptern hade 20% chans att spawna var fel.
Det skulle vara så, men jag hade råkat sätta upp den på 100% i ett test, så varför den alltid fanns var mitt fel :)

Folk verkade inte gilla att indep hade helikopter, vilket jag förstår,
men tanken är att den ska finnas där kanske 10-20% av matcherna för att röra om i grytan lite,
så att man inte riktigt vet vad man kan förvänta sig.

Ska jag ta bort helikoptern helt, eller ska den vara kvar med 10-20% chans att spawna varje runda?

• Just nu så får alla spelare sin gear genom karaktärernas init-fält, vilket jag egentligen vet är ett slarvigt sätt att dela ut gear på,
men jag hade för mig att det bara var ett 'Join-In-Progress'-problem.
Hur som helst; Vad är det mest effektiva sättet att dela ut gear till 40~ personer, där många ska ha olika saker?

• Musiken i trucken ska bara gå att spela en vända, men det verkade som att vissa kunde spela upp den flera gånger.

• Knockout-scriptet verkade fungera utmärkt. Var det några som hade problem med det?

• AGM Team Management modulen var inställd på att den inte skulle gå att joina varandra med AGM-menyn,
men det gick ändå att göra. Någon aning om varför?
Varför jag inte vill ha folk i samma grupp är för att man får ständiga 'regroup' chat meddelanden från sin gruppledare,
och när de slutar eller byts ut till en annan person så vet man att gruppledaren har dött. Det här hände under kvällen spel.

i.imgur.com/kGDZwmL.jpg

Såhär är TFAR-inställt mellan lagen. Alla har varsin 'TFAR - Frequencies'-modul kopplade till sig:

i.imgur.com/N2jjUAo.jpg

Jag kommer att posta lite kod från Shady Business och Hidden ArmA här. Känn er välkomna att kritisera sönder koden med förbättringsförslag.

Init.sqf

Kod Källa  

enableSaving [false,false];

// Execute Scripts

execVM "Markers.sqf";
execVM "repair.sqf";
execVM "time.sqf";
execVM "knockout.sqf";
execVM "musicradio.sqf";

if (playerSide == west) then {
   execVM "heatSig.sqf";
};



// Lock Ammotruck seats

missiontruck lockCargo [1,true];
missiontruck lockCargo [2,true];
missiontruck lockCargo [3,true];
missiontruck lockCargo [4,true];
//missiontruck lockCargo [5,true]; // Gunner seat
missiontruck lockCargo [6,true];
missiontruck lockCargo [7,true];
missiontruck lockCargo [8,true];
missiontruck lockCargo [9,true];
missiontruck lockCargo [10,true];
//missiontruck lockCargo [11,true]; // Gunner seat
missiontruck lockCargo [12,true];
missiontruck lockCargo [13,true];
missiontruck lockCargo [14,true];



// Add/Remove Items

//Blufor Helicopter

if (isServer) then {

   clearItemCargoGlobal heli1;
   clearBackpackCargoGlobal heli1;
   heli1 addItemCargoGlobal ["optic_aco",3];
   heli1 addItemCargoGlobal ["optic_MRD",3];
   heli1 addItemCargoGlobal ["AGM_M84",3];
   heli1 addBackpackCargoGlobal ["B_parachute",3];
   heli1 additemcargoglobal["H_PilotHelmetHeli_B",1];
   heli1 additemcargoglobal["H_Helmet_Kerry",5];

   _sniper = floor random 6; // Random chance of spawning sniper instead of optic
   if (_sniper == 0) then {
      heli1 addItemCargoGlobal ["srifle_LRR_SOS_F",1];
      heli1 addMagazineCargoGlobal["7Rnd_408_Mag",2];
   } else {
      heli1 addItemCargoGlobal ["optic_Hamr",1];
   };


   // Random Events

   // Hostage Items

   _random = floor random 10;
   if (_random == 0) then {
      indep_car1 addItemCargoGlobal "AGM_M84";
   };
   if (_random == 1) then {
      indep_car1 addItemCargoGlobal "MiniGrenade";
   };
   if (_random == 2) then {
      if (!alive hostage_02) then {
         indep_car1 addItemCargoGlobal "AGM_HandFlare_Green";
      } else {
         hostage_02 addItemCargoGlobal "AGM_HandFlare_Green";
      };
   };
   if (_random == 3) then {
         indep_car1 addItemCargoGlobal "9Rnd_45ACP_Mag";
         indep_car1 addItemCargoGlobal "hgun_ACPC2_F";
   };

   //Weather Random

   _random = floor random 6;
   if (_random == 0) then {
      execVM "weather.sqf";
   };

   // Remove hats from hostages.

   sleep 7;
   removeHeadgear hostage_01;
   removeHeadgear hostage_02;

};



Markers.sqf
Kod Källa  


// Meeting Marker Location Init

_meeting_mk_array = ["hospital_mk","office_mk","office2_mk","castle_mk","park_mk","gas_mk","office3_mk","sub_mk","sub_mk_2","sub_mk_3","ind_mk","Stadium_mk",
"quarry_mk",
"factory_mk","church_mk","industrial_mk_2","powerplant_mk","factory_mk_2","constr_mk","neri_mk","harbour_mk","mk_panochori"];

if ((playerSide == east) OR (playerSide == resistance)) then {
"meeting_area" setMarkerTypeLocal "mil_end";
"meeting_area" setMarkerColorLocal "colorIndependent";
{_x setMarkerTypeLocal "mil_dot_noShadow"} forEach _meeting_mk_array; //mil_circle_noShadow
{_x setMarkerColorLocal "ColorBlack"} forEach _meeting_mk_array;
{_x setMarkerSizeLocal [0.7,0.7]} forEach _meeting_mk_array;
};

if (isServer) then {
   _meeting_mk_pos = _meeting_mk_array select floor random count _meeting_mk_array;
   "meeting_area" setMarkerPos getMarkerPos _meeting_mk_pos;
   _meeting_mk_pos setMarkerAlpha 0;
};
_meeting_mk_array = nil;

// Delete markers for certain teams

if (playerSide == west) then {

deleteMarkerLocal "opforbase";
deleteMarkerLocal "escape_zone";
deleteMarkerLocal "escape_2";
deleteMarkerLocal "safe-house-zone";

};


if (playerSide == east) then {

deleteMarkerLocal "blufor_escape";
deleteMarkerLocal "safe-house-zone";
deleteMarkerLocal "exfil";
};


if (playerSide == resistance) then {

deleteMarkerLocal "opforbase";
deleteMarkerLocal "escape_zone";
deleteMarkerLocal "escape_2";
deleteMarkerLocal "blufor_escape";
deleteMarkerLocal "exfil";
};


if (playerSide == civilian) then {

deleteMarkerLocal "opforbase";
deleteMarkerLocal "escape_zone";
deleteMarkerLocal "escape_2";
deleteMarkerLocal "blufor_escape";
deleteMarkerLocal "safe-house-zone";
deleteMarkerLocal "exfil";
};


Annars verkade reparationsscripten fungera bra, tidsgränsen fungerade bra osv.

I Hidden ArmA så har alla indep bland annat den här koden i sitt init-fält för att göra dem osynliga:
Kod Källa  

this setObjectTextureGlobal [0,""];

Verkade fungera för vissa, men inte för andra.

Kill-scriptet ser ut såhär:

Kod Källa  

{
if (playerside == resistance) then {

   _nearestVictims = nearestObjects [player,["Man"],3];
   if(west countSide _nearestVictims > 0) then {
   
      sleep 0.5;
      (_nearestVictims select 1) setDamage 1;
      
   };

};

} forEach allUnits;


Fungerade för några, men inte för andra.

Det som är mest bortom mig är varför Blufor ser Meeting Area markern. I alla mina test så har det inte varit fallet, men när jag kör med Anrop så ballar det ur helt :/
Redigerat av Echo den 2015-02-21 03:01
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos
Radioproblement kanske, KANSKE, är för att Virtual Arsenal automatiskt gör om 'itemRadio' klassnamnet till tf_anprc152_1, där _1 möjligtvis är en fördefinierat ID. Så istället för att den gör om itemRadio när uppdraget börjar och ger alla ett eget ID, så får alla samma ID.

Det här är en halvvild gissning, men jag tror att om man ger folk itemRadio istället så får man en unik radio efter matchstart.
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos
TFR är grymt och problemfritt har jag hört, eller hur var det? Wink

Citera

Tomten skrev:

TFR är grymt och problemfritt har jag hört, eller hur var det? Wink


Hade exakt samma problem med ACRE 1 förut, det var därför jag upptäckte det. De bygger nog på samma ID-system Wink
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos

Citera

Echo skrev:

Radioproblement kanske, KANSKE, är för att Virtual Arsenal automatiskt gör om 'itemRadio' klassnamnet till tf_anprc152_1, där _1 möjligtvis är en fördefinierat ID. Så istället för att den gör om itemRadio när uppdraget börjar och ger alla ett eget ID, så får alla samma ID.

Det här är en halvvild gissning, men jag tror att om man ger folk itemRadio istället så får man en unik radio efter matchstart.


TFAR Radios skall under inga omständigheter ligga i Arsenal. Radio IDs blir fel. Vanilla Radios konverteras av servern till en 152a med unikt id när den plockas upp.
Källa: 506th IR RU.
Safety First, Humans Second
Då är det nog det som var boven. Trist att TFAR automatiskt lägger till en tfar-radio när man trycker export i Virtual Arsenal, även om radioslotten är tom.
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos

Citera

Echo skrev:

Citera

Tomten skrev:

TFR är grymt och problemfritt har jag hört, eller hur var det? Wink


Hade exakt samma problem med ACRE 1 förut, det var därför jag upptäckte det. De bygger nog på samma ID-system Wink

ACRE har inte alls det problemet. Jag har ett gammalt script som bygger just på det. Men vad vet jag, de kanske har patchat det för att bli mer likvärdigt med TFAR.
CAUTION: I'm a screamer and I'm using Voice-Activated!
Om man hade ACRE 1 Addonet på och kollade i Config Viewer i editorn så fanns det hundratals inlägg med:

PRC148
PRC148_1
PRC148_2
PRC148_3

osv.

Om man gav två personer en PRC148_1 så fick man samma problem.
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos
Okej!

Saker som jag tror jag fixat hittils:

• Alla startar nu med itemRadio som byts ut till en TFAR-radio, som matchar ens sida, vid mission-start. Det ser redan lovande ut eftersom varje lag får en egen typ av radio, vilket såklart är tanken. Lite pinsamt att jag missade detta tidigare.

• All gear delas ut genom ett .sqf-script som körs lokalt. Scriptet kollar vilken sida du är, och ger dig gear därefter och specialbehandlar vissa enheter som ska ha vissa föremål.

• Bytt ut så att servern fixar 'Meeting Area' markern för alla, men Blufor och Gisslan tar bort dessa markers.

Som vanligt så ser ju allting bra ut när jag kör själv eller med få personer, så ska försöka dra ihop ett test som folk gärna får hjälpa mig med någon gång under veckan. Kanske blir att lira uppdraget igen nästa vecka om resultatet verkar lovande Smile

Huvudvärken som kvarstår är ju varför Team Management med AGM fortfarande fungerade, trots modulens inställnging.
Redigerat av Echo den 2015-02-21 03:08
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos
Bra jobbat echo! längtar redan Smile
matheez is never late nor is he early he arrives precisely when he means to

Citera

Echo skrev:

Om man hade ACRE 1 Addonet på och kollade i Config Viewer i editorn så fanns det hundratals inlägg med:

PRC148
PRC148_1
PRC148_2
PRC148_3

osv.

Om man gav två personer en PRC148_1 så fick man samma problem.

Ja och nej. Mitt skript gick ut på att just leta upp en redan använd radio och "klona" den, och efter Kloningen så fick den ett nytt, eget, id-nummer (om vi kallar det så) och börja leva ett eget liv. Enda effekten blev att den nya radion började med den gamla radions inställningar, vilket var precis vad jag ville uppnå. Och med eget liv så menar jag att när man ändrade kanal eller volym så förblev den andra oförändrad.
Fast nu är vi kanske lite off topic. Smile Jag är på LAN (Frown) för tillfället, så just nu kan jag inte hjälpa. Men jag ska se om jag orkar ta mig en titt när jag kommit hem.

EDIT:
Kollade precis mitt gamla script och jag fick inte det problemet, men det har också slutat att fungera nu i ACRE2. Ska kolla in det senare igen och se om det är något som går att fixa.
Redigerat av Chris_Acrobat den 2015-02-21 11:01
CAUTION: I'm a screamer and I'm using Voice-Activated!

Citera

Echo skrev:
• All gear delas ut genom ett .sqf-script som körs lokalt. Scriptet kollar vilken sida du är, och ger dig gear därefter och specialbehandlar vissa enheter som ska ha vissa föremål.

Kör scriptet på servern (starta i init.sqf i isServer) och kolla side så spar du dig huvudvärk Smile
Vill bara säga att jag hade jättekul igår trots radio problem. Bra jobbat Echo.
The objekt of war is not to die for your country, but making the other bastard die for his.
Gen. George .S Patton
ZiP, behövs det då alla kommandon som lägger till gear till spelare broadcastas till resten av servern? Jag ifrågasätter inte din kunskap, försöker bara förstå när saker ska köras lokalt eller genom servern Pfft
Förvisso så fixar det väl möjliga join-in-progress problem, men Shady Business har inte JIP.

Jag lägger koden så att servern bara kör den. Det verkar fungera lika bra ändå Smile
Om ett script körs genom servern så fungerar väl fortfarande 'player'?
ex: player addItemToUniform "AGM_Morphine";

Nikke, tack! Jag hade också jätteroligt!
Redigerat av Echo den 2015-02-21 12:03
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos
Enklast är att låta servern sköta all inventory, speciellt i startup fasen. Alla gubbar är AI hos servern först och då kan du ge dem rätt gear. När spelaren senare "ansluter" i briefing tar han över soldaten och får då all gear. Mindre data att skicka mellan spelare och server Smile

Kan även rekommendera att flytta all kod som ska köras på servern till initServer.sqf istället.

Se https://community.bistudio.com/wiki/E...nt_Scripts för när olika scripts körs.

Se https://community.bistudio.com/wiki/F...tion_Order för ordningen de körs

Citera

ZiP skrev:

Enklast är att låta servern sköta all inventory, speciellt i startup fasen. Alla gubbar är AI hos servern först och då kan du ge dem rätt gear. När spelaren senare "ansluter" i briefing tar han över soldaten och får då all gear. Mindre data att skicka mellan spelare och server Smile

Kan även rekommendera att flytta all kod som ska köras på servern till initServer.sqf istället.

Se https://community.bistudio.com/wiki/E...nt_Scripts för när olika scripts körs.

Se https://community.bistudio.com/wiki/F...tion_Order för ordningen de körs


Okej, tack för tipsen! Smile
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos
Jag har nu suttit i timmar och försökt få gear-koden att fungera.

Vad som blir fel;

Jag som server får rätt gear, alla andra på servern får två primary/secondary weapons (Det som en rifleman startar med + Det som scriptet försöker ge spelaren). Om de släpper ett av dessa vapnen så ligger det vapen som de ska få genom scriptet i deras händer, men det har inte fått rätt tillbehör så som supressors och ir-pointers.

Vad nu detta? Det är som att removeAllWeapons inte fungerar för någon annan än servern.
Även om man har ett vapen och får ett nytt genom AddWeaponGlobal så ska det vapen man har ersättas, inte läggas på det vapen man redan har.

Kan någon bekräfta följande:

Gör ett uppdrag där servern ser till att alla tappar sin gear med hjälp av:

removeUniform
removeVest
removeBackpack
removeAllAssignedItems
removeHeadgear
removeGoggles
removeAllWeapons
removeAllItems

Testkör uppdraget med minst en annan person, och kolla så att de faktiskt har tappat sina vapen. I mitt fall så tappar de allt utom sina vapen, vilket lägger på huvudvärken eftersom allt annat än removeAllWeapons verkar fungera.
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos
När jag har mina loadouts så har jag kört det på initPlayerLocal.sqf
Den laddar bara per spelar lokalt och stör inte andra. Så där kan man mixa med saker för spelaren specifikt och inte vara orolig för JIP eller flertal som loggar in..

i ett mission som jag gjort så har jag tex:

Kod Källa  

removeallweapons player;
removeAllAssignedItems player;
removebackpack player;
removeVest player;
removeUniform player;
removeHeadGear player;
player addWeapon "ItemMap";
player addWeapon "ItemCompass";
player addItem "NVGoggles";

if (typeof player == "jtf_rus_guer_leader") then {
player forceAddUniform "Niko_USA_Nomad";
player addVest "ARC_US_ATACS_W_Plate_Carrier_H";
player addHeadgear "ARC_Common_FG_Helmet_simple";
player addGoggles "PU_shemagh_TanCLR";
player addItem "FirstAidKit";
player addBackpack "B_Bergen_sgg";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "hlc_20rnd_762x51_b_fal";
player addMagazine "HandGrenade";
player addMagazine "HandGrenade";
player addWeapon "hlc_rifle_SLR";
player addPrimaryWeaponItem "hlc_muzzle_snds_fal";
player addPrimaryWeaponItem "hlc_optic_suit";
player addMagazine "16Rnd_9x21_Mag";
player addMagazine "16Rnd_9x21_Mag";
player addWeapon "hgun_Rook40_F";
player addHandgunItem "muzzle_snds_L"; };

if (typeof player == "jtf_rus_guer_medi") then {
player forceAddUniform "Niko_USA_R_AOR1";
player addVest "V_PlateCarrierIAGL_dgtl";
player addHeadgear "ARC_US_Tiger_Helmet_Light";
player addGoggles "Mask_M40_OD";
player addItem "FirstAidKit";
player addBackpack "ARC_US_Backpack_Carryall_ATACS_W";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "RH_30Rnd_556x45_M855A1";
player addMagazine "HandGrenade";
player addMagazine "HandGrenade";
player addWeapon "RH_M4_ris";
player addPrimaryWeaponItem "RH_saker";
player addPrimaryWeaponItem "RH_m4covers_s";
player addMagazine "16Rnd_9x21_Mag";
player addMagazine "16Rnd_9x21_Mag";
player addWeapon "hgun_Rook40_F";
player addHandgunItem "muzzle_snds_L"; };


Vilket gör du en koll på om det är X eller Y unit/classname. Är du som spelare tex en Rifleman så får du XXXXX gearloadout. Detta funkar perfekt med JIP, flera som loggar in osv.. har provat med runt 10-15 spelare under ett OP. Så testa det istället för att köra massa ifserver osv i init.sqf eller hänvisa ifrån den till andra sqf filer som kan fucka upp saker.. Jag har funnit det lättare att använda initPlayerLocal.sqf och initServer.sqf istället för init.sqf vilket jag aldrig använder numera. Men kolla på EventScripts som ZiP länka, det är därgenom jag ändrat på mycket jag gör vid scriptande start-saker..
Stay frosty !
Okej, jag testar att köra med din metod. Låter lovande! Smile
YouTube:
https://www.youtube.com/user/MasterMindEcho/videos