Visa ämne
Anrop » ArmA 3 » Editing
 Skriv ut ämne
ZluskeN's Wave Respawn
Grymt jobbat!
Uppdaterad version stresstestad på servern och fungerar som det ska, första posten uppdaterad.
Två frågor:

1) Vilken utrustning börjar man med när man respawnat? Är det beroende på default config på den unit man är?

2) Funkar detta att kombinera med ACE Revive?
Jag testade själv istället och kan nu besvara mina egna frågor...

1) Man respawnar med default config för den unit man är. Dvs om man placerar ut en vanlig civil och ger honom ett vapen i editorn, så kommer han att respawna utan vapen, eftersom det är den unitens default config.

2) Det verkar gå att kombinera med ACE Revive, i alla fall när jag testar på lokal server, okänt hur det blir på dedicated.
Följdfråga där då: hur gå till väga för att man inte ska respawna med skrotgare?
https://community.bistudio.com/wiki/B...dInventory tror jag borde funka. Då får ni antingen definiera ett inventory i description.ext under cfgrespawninventory eller köra https://community.bistudio.com/wiki/B...eInventory under spelets gång. Heads up på att BIS_fnc_saveInventory inte längre kan anropas i onplayerkilled.sqf.

Vad ACE anbelangar så borde det inte bli några konflikter. Man respawnar ju faktiskt omedelbart, precis som vanlig base respawn, mitt script kastar bara ut dig ur din kropp ett tag.
Det bästa är nog att spara undan all inventory för enheten när missionet startas och sedan återställa vid wave respawn
https://forums.bistudio.com/topic/191...espawning/

initplayerlocal.sqf
Kod Källa  

[player, [missionNamespace, "inventory_var"]] call BIS_fnc_saveInventory;
player addMPEventHandler ["MPRespawn", {[player, [missionNamespace, "inventory_var"]] call BIS_fnc_loadInventory;}];
Jag insåg plötsligt att slutet "all players killed" inte kommer att fungera med det här scriptet. En situation som kan uppstå är att alla blir fast i spectator när antalet spawn waves tar slut.
Jag har lagt till några rader som skapar en extra trigger som avslutar uppdraget om det känner av att alla spelare från en viss sida är i vänteläge.

En känd feature är att det sannolikt kommer returnera mission fail för alla i PvP. Rekommenderar att man byter ut 'EveryoneLost' mot 'SideScore' om man gör ett PvP-uppdrag.
Jag skulle kunna lägga till en PvP true/false-variabel i första raden om det är något folk gärna vill använda i framtiden.
Implementerat

Jag upptäckte också att bohemia verkar ha lite svårt att bestämma sig för vad de ska kalla indep-sidan i koden (ibland guer, ibland guerrila (sic) ibland resistance, ibland independent).
Jag tror att jag har lyckats sätta rätt namn på rätt ställen nu. Passade dessutom på att optimera scriptet lite grann, det kan nu köras enbart på servern mha initserver.sqf vilket friar upp init.sqf till annat. Jag väntar med att uppdatera första posten tills det är testat.

Citera

Kod Källa  

Kod borttagen, se nyare version nedan

Redigerat av ZluskeN den 2017-02-27 13:21
Den fördefinerade variabeln resistance ger strängvärdet "GUER"

Den fördefinerade variabeln independent ger strängvärdet "GUER", den är mappad till resistance

Så länge du använder någon av de två variablerna blir allt bra Smile
Du har inte möjlighet att sätta upp ett exempel uppdrags templet. För oss som är tekniskt obegåvade Wink gillar de här starkt, blir respawn lite mer kontrollerat och viktigt samt gör att man får en vettig förstärknings funktion.
Zlusken: tror du att det funkar att flytta respawnpunkten under uppdraget med t ex setMarkerPos?
Grip: Lite osäker på hur man gör mission-templates, men ska se om jag kan slänga ihop nånting. Om någon vet bättre hur det funkar får ni gärna hjälpa till.
På sikt har jag planer på att göra det som en modul i stället, så man slipper rota i mission-mappen.

Alekanderu: Ja, setmarkerpos ska absolut funka.
Zlusken tänkt dig ett demo uppdrag med bara vanilla innehåll. Och inget annat än dina respawn script uppsatta så dom funkar. Så kan man titta var man ska lägga var för att få de fungera.
Fixade precis just ett sånt Smile

https://drive.google.com/open?id=0B77...nFYaF9LemM

Exemplet är konfat för en (väldigt) rudimentär PvP-match mellan OPFOR och BLUFOR på Stratis med olika presets, plus ett simpelt Coop-uppdrag för INDEP på andra sidan ön.

Det innehåller dessutom en nyare version av scriptet med lite nya features:

- Man kan nu använda ett fordon som zsn_respawn_side. Finns det plats i fordonet kommer den nya gruppen flyttas i som cargo, finns det inte plats spawnar de invid fordonet.

- Två nya parametrar:
- Radio (true/false) för att ge nya grupper radio (eller inte).
- PvP (true/false) ser till att rätt sida vinner om den andra sidan får slut på spawns och blir dödade. Om false kommer spelarsidan alltid få game over-slut om alla dör och antalet vågor når noll.

- Scriptet kommer nu att returnera korrekta felmeddelanden om man matar in fel typ av värde [Side, Number, Number, Boolean, Boolean]
Notera att size (Spelare per våg) numera kommer före count (antal vågor)

Nu finns det default-värden, så man måste inte mata in alla parametrar för att använda scriptet. Default-värdena är:
- WEST (Blufor),
- 4 (Spelare per spawn-wave),
- -1 (Oändligt med waves)
- TRUE (Den nya vågen utrustas med en radio)
- FALSE (Inte pvp, alltså Coop. När alla dör är det game over)

Om det är de här inställningarna du tänker köra med behöver du inte mata in några parametrar alls (Se indep-exemplet). Fråga på om något verkar svårbegripligt.
Ovanstående post uppdaterad.
Redigerat av ZluskeN den 2017-01-29 17:03
Ny version igen.

- Nu med kommentarer! (Några i alla fall)
- Det uppdagades på en bro för lite att spectating inte fungerar om man kör med ace bleedout. Jag tror mig ha listat ut varför och det borde inte hända längre. (Behöver testas)
- onplayerkilled.sqf eliminerad från scriptet. Nu behövs bara initplayerlocal.sqf och initserver.sqf. (De borde i teorin kunna slås ihop och köras i init.sqf, men hur bra det funkar låter jag vara osagt.)
- Nu kommer den med högst grad vara den som blir chef i den nya gruppen (och får en radio). Innan var det i stort sett random. Har två personer samma grad blir den med högst score chef. (Som vi alla vet är det den viktigaste ledarskapskvalifikationen)
- En helt orelaterad feature är att man nu kommer att starta med "magasin ur", då jag har ledsnat på vådaskott i spawn. Laddning sker på gruppchefen order "Ladda!". (Det är två rader kod i initplayerlocal.sqf och går att plocka bort utan problem.)

Kod Källa  

Kod Borttagen, se första posten

Redigerat av ZluskeN den 2017-03-12 23:08
Det uppstod problem på OP Avenger. Samtliga spelare kastades slumpmässigt in i spectator, jag måste utgå ifrån att det hände när en spelare dog.

Det visar sig att MPeventhandlers exekveras på alla klienter, vilket är anledningen, scriptet använder nu eventhandlern "Respawn" i stället, vilket dessutom har fördelen att det är kompatibelt med ACE bleedout. Scriptet är nu testat och bekräftat MP-kompatibelt.

En lustig bugg vi stötte på var att spelare ibland hamnar i andra spelares kropp vid respawn. De styr sig själva, men ser ur någon annans ögon :S Behöver testas mer för att se hur ofta det förekommer och vad som orsakar det. Antagligen något som händer i BIS_fnc_EGSpectator när terminate-kommandot skickas till flera klienter samtidigt.
Redigerat av ZluskeN den 2017-03-30 23:45
Ny uppdatering:

- Nu kan man inte längre kan specca sig själv när man är "död"
- Nu visas en hint när man dör som förklarar vad som pågår, så att spelare inte tror att spelet är över och disconnectar
- Koden är nu kommenterad så att op-skapare har lite med koll på vad scriptet gör
- Lite optimeringar i koden som förmodligen ingen någonsin kommer märka
- Demouppdrag uppdaterat och länkat i första posten

Se första posten och fråga om något är otydligt
Bump!

Vi fick problem med TFAR-Dev i går, folk skickades in i spectator-chatten och blev inte utsläppta.

[player, false] remoteExec ["TFAR_fnc_forceSpectator"];

Skickar tillbaka dem dit de ska.
Det kan vara idé att vara uppmärksam på detta i framtida OP med TFAR-Dev, även utan mitt script. Jag är inte säker på vad som orsakar det.
Scriptet är också tweakat lite här och där för en smidigare upplevelse.

Finns nu på Github!
https://github.com/ZluskeN/ZSN_wavere...le.Stratis
Redigerat av ZluskeN den 2017-07-03 09:19
Uppdatering:

- Spectating funkar nu med task force radio så att spectators kan höra spelare och prata med varandra,

- Den nyspawnade gruppen får en hint med en tilldelad anropssignal och info om vem som är gruppchef.

En mindre grej är att spelbar AI kan ställa till det lite om en spelare disconnectar, därför rekommenderar jag DisabledAI = 1; i description.ext