-
Hello
Ez elég bonyolult hiba lenne..
Íme:
forward SettingPlayerTeam(killerid);
public SettingPlayerTeam(killerid)
{
for(new playerid; playerid < 200; playerid++)
SetPlayerTeam(playerid, gTeam[playerid]);
return 1;
}
if (strcmp(\"/gangwar\", cmdtext, true) == 0)
{
SetTimerEx(\"SettingPlayerTeam\",10,1,\"i\",playerid);
return 1;
}
Ez ugye az amikor az azonos csapatba lévõ játékosok egymást lövik és nem megy az életük
De ha kilépek akkor se megy az élete a játékosnak
Vmi megoldás?
Elõre is kösz
-
Gyors segítség, Készpénzben
ChuckNorris: Te tényleg kiszámíthatatlan vagy,valamikor segítesz,valamikor meg bunkóskodsz,komolyan nemértelek....
FlatMaN: Mikor voltam kiszámítható? xD
-
:mistrust: ennél értelmesebbet nem találtál?.......
-
killtimer?
-
public SettingPlayerTeam(killerid)
{
for(new playerid; playerid < 200; playerid++)
SetPlayerTeam(playerid, gTeam[playerid]);
return 1;
}
[/quote]
Ez a kód már maga alapvetõen hibás. A killerid-t ugyanis sehol sem használod.
És miért kell századmásodpercenként/függvényhívás beállítani a játékosok csapatát ugyanarra, ami már amúgy is a csapatuk? Ennek azt kellene eredményeznie, hogy nem tudják lelõni egymást?
Kowalski
-
Azt szeretnéd, hogy a paranccsal minden játékos csapata át legyen állítva a gTeam változó értékére? Csak mert nem írtál semmi egyebet...
if (!strcmp(\"/gangwar\", cmdtext, true))
{
for(new i; i < szerver_slotok_szama; i++) if(IsPlayerConnected(i)) SetPlayerTeam(i, gTeam);
return 1;
}
-
Azt akarom, hogy az azonos csapatba lévõ játékosok egymást lövik akkor ne menjen az életük.
De ez mükõdik is, csak ezt a halhatatlanságot nem lehet megszünteti(se killtimerrel)
-
Milyen halhatatlanságot?
-
hát mikor kilépsz a gangwarból akkor lövöd a másik játékost és nem megy az élete
Vagyis azt kéne megoldani hogy menjen az élete
for(new playerid; playerid < 200; playerid++) SetPlayerTeam(playerid, gTeam[playerid]);
Ennek az ellentetje
-
hát mikor kilépsz a gangwarból akkor lövöd a másik játékost és nem megy az élete
Vagyis azt kéne megoldani hogy menjen az élete
for(new playerid; playerid < 200; playerid++) SetPlayerTeam(playerid, gTeam[playerid]);
Ennek az ellentetje
Most munkaidõm van, de 5kor végzek és utána megcsinálom. Úgy megfelel?
Kowalski
-
Persze..
És köszönöm
-
De most az az egy játékos lépjen ki, vagy mindenki?
-
Nos, leírom mégegyszer egy picit érthetõbben
Van egy gangwar mode és a team kill ellen azt kéne csinálni hogy ha azonos csapatba(gTeam) lévõ játékosok lövik egymást akkor ne menjen az életük
És ha vki beírja pl. /exitdm akkor utána normálisan menni fog le az élete
-
forward AntiTeamKill();
new bool:gPlayerImmunity[MAX_PLAYERS];
public AntiTeamKill() { for (new i = 0; i < MAX_PLAYERS; i++) if (IsPlayerConnected(i) && gPlayerImmunity) SetPlayerTeam(i, gPlayerTeam); return 1; }
stock ToggleFriendlyFire(playerid, bool:toggle) { gPlayerImmunity[playerid] = !toggle; }
Hirtelen ezt dobtam össze. A ToggleFriendlyFire(playerid, true) engedélyezi, hogy lelõjjék a csapattársai. Szóval mikor háború lesz, akkor a lényeg, hogy kikapcsold a résztvevõknek így: ToggleFriendlyFire(playerid, false)
A játékmód elindításakor pedig hívd meg a SetTimer függvényt az alábbi módon:
SetTimer(\"AntiTeamKill\", 10, 1);
Nem teszteltem semmit, szóval nem garantált a siker. (Ja és az OnPlayerDisconnect-nél is engedélyezd, hogy lõhessék.)
Kowalski
-
De és ha kikapcsolom akkor lõhetik egymást a csapat társaK?
-
De és ha kikapcsolom akkor lõhetik egymást a csapat társaK?
Hát elméletileg. Akinek kikapcsoltad, arra nem lesz hatással a szkript, tehát õ is lõheti a csapattársát, meg a csapattársai is lõhetik õt.
De azt javaslom, hogy teszteld le és utána ha nem jó akkor oszd meg a tapasztalataid.
Kowalski
-
És hogy lehet kikapcsolni hogy ne legyen örök élete a játékosnak?
-
A ToggleFriendlyFire(playerid, true) engedélyezi, hogy lelõjjék a csapattársai.
Kowalski
-
De ez gTeam-al megy?
-
igen...
KowaZ