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...dInventory tror jag borde funka. Då får ni antingen definiera ett inventory i description.ext under cfgrespawninventory eller köra https://community...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.bi...espawning/

initplayerlocal.sqf
Källa  Kod
[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.

Källa  Kod
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.goo...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.)

Källa  Kod
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.

Jag kan inte hitta något i scriptet som kan orsaka detta, så det måste vara en bugg djupare ner i arma-koden. Det enda jag kan se som kan tänkas trigga felet är ace bleedout-fixen.

Den är nu tillbakarullad. Jag har dessutom tagit bort stödet på zsn_respawn_side som marker, vilket borde minska belastningen på servern en del. Se första posten.

EDIT: [s]Felet spårat till en trigger i mission-filen, alltså inget fel på respawn-scriptet i grundutförande[/s]. Jag har lagt in en ny ace bleedout-fix som jag är mycket mer nöjd med.

EDIT2: Uppdaterat igen för att jag inte vet skillnaden mellan eventhandlers och mpeventhandlers Facepalm
Redigerat av ZluskeN den 2017-03-19 23:54