Od jakiegoś czasu zajmuję się modem, którego głównym zamysłem jest gra podobna do tego co oferuje mod Cooperation, jednak na nowych, zaprojektowanych przeze mnie mapach i skupiająca się raczej na pokonaniu wspólnymi siłami potężnego komputerowego przeciwnika. Pisząc misję napotkałem dziwny błąd, który występuje tylko w grze wieloosobowej, mianowicie funkcja AddCom multiplikuje się przez ilość żywych graczy obecnych w grze. Najlepszym przykładem jest rozkaz budowy pojazdów fabryce, w edytorze działa jak powinien ale na multi polecenie wykona się tyle razy ilu graczy jest w grze. Podobnie wygląda wytyczanie ścieżek - jednostki wykonują pętlę. Dotyczy to tylko tej funkcji, samo Com działa jak powinno. Wiem, że jestem w stanie to obejść nieco zmieniając kod, zastanawiam się tylko czy spotkał się ktoś z czymś podobnym i ewentualnie znalazł przyczynę/rozwiązanie problemu?
Mam steamową wersję OW spatchowaną do 3.0.7.211, problem występował też w wersji, która obecnie jest na steamie (2.0.6.143).
Problem z AddCom w grze Multiplayer
-
- Soldier level 0
- Posts: 3
- Joined: Sat May 05, 2018 3:08 pm
- Serpent
- Soldier level 10
- Posts: 4169
- Joined: Tue Jul 07, 2009 9:13 pm
- Location: Polska - EuroStan ZSRE
- Contact:
Re: Problem z AddCom w grze Multiplayer
Pokaż swój kod.
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
-
- Soldier level 0
- Posts: 3
- Joined: Sat May 05, 2018 3:08 pm
Re: Problem z AddCom w grze Multiplayer
Poniżej dwa najważniejsze fragmenty kodu, w załączniku cały kod. Od paru dni próbuje dojść co może powodować tą multiplikację, ale nie mam pojęcia.
Spoiler:
Spoiler:
- Attachments
-
- kod.zip
- (7.74 KiB) Downloaded 281 times
- Serpent
- Soldier level 10
- Posts: 4169
- Joined: Tue Jul 07, 2009 9:13 pm
- Location: Polska - EuroStan ZSRE
- Contact:
Re: Problem z AddCom w grze Multiplayer
Problem leży w tym bloku every - za dużo tam chaosu. Komendy wait pomieszane z komendami na podłączanie pojazdów i to wszystko w zapętlonym every. Każda czynność powinna być w miarę możliwości oddzielona. Przykładowo: budowę pojazdów realizuje dany fragment kodu, a podłączanie pojazdów inny. Ogółem "wait" w multiplayer to nie jest dobry pomysł.
Przykład że every działa prawidłowo w multi (za każdym razem co 12 minut budowane jest veh_counter pojazdów - bez względu na to ile graczy jest w grze):
Przykład że every działa prawidłowo w multi (za każdym razem co 12 minut budowane jest veh_counter pojazdów - bez względu na to ile graczy jest w grze):
Code: Select all
Every 12$00 trigger FilterAllUnits([[f_side, bot_side], [f_btype, b_factory]]) do
var i, tmp, p;
begin
enable;
tmp := queue_codes[rng];
p := 1;
for i = 1 to veh_counter do
begin
AddComConstruct(FilterAllUnits([[f_side, bot_side], [f_btype, b_factory]])[1],
to_produce[tmp mod 10][1],
to_produce[tmp mod 10][2],
to_produce[tmp mod 10][3],
to_produce[tmp mod 10][4]
);
tmp := tmp / 10;
p := p + 1;
if p > 5 then
begin
p := 1;
tmp := queue_codes[rng];
end;
end;
rng := rng + 1;
if rng > queue_codes then
rng := 1;
End;
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
-
- Soldier level 0
- Posts: 3
- Joined: Sat May 05, 2018 3:08 pm
Re: Problem z AddCom w grze Multiplayer
Ach, rozumiem. Dzięki. Uporządkuje ten kod i mam nadzieję, że będzie śmigać.