-
Van egy forciklus, pontosabban:
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i, 5, x[playerid], y[playerid], z[playerid]))
{
if(i != playerid)
{
GetPlayerPos(i, x2, y2, z2);
PlayerPlaySound(i, 1159, x, y, z);
SetPlayerHealth(i, health-10);
}
}
else if(IsPlayerInRangeOfPoint(i, 10, x[playerid], y[playerid], z[playerid]))
{
if(i != playerid)
{
GetPlayerPos(i, x2, y2, z2);
PlayerPlaySound(i, 1159, x, y, z);
}
}
}
Nos, ez az lenne, hogy egy játékos messzebbrõl meg tudja sebezni a körülötte lévõ játékosokat, de ezzel az a baj, hogy az életükbõl nem 10 megy le, hanem mindig változó, de nem tudom miért. A másik hiba vele, hogy mondjuk van player1 és player2. Ha player1 megsebzi vele player2-õt, és player1 újra sebezni akar, akkor csak akkor megy player2-nek az élete, ha már player2 is vitt le utána player1-nek. Vagyis ha player1 2-ször akar sebezni player2-nek, elõször meg kell várni, hogy player2 is sebezzen player1-nek, különben player1 hiába sebez player2-nek, nem megy le az élete. Kicsit bonyolultnak hangzik tudom.:P De légyszives valaki segítsen.
-
Vegul is nem ertem.Egy kicsit tul bonyolitottad a magyarazatot.Pill el olvasom meg parszor xD
-
Akkor röviden: elõszöris a támadott játékosnak nem 10 élete megy le, hanem mindig randomban megy kb 10 és 80 közt..
A másik: Ha egy játékos kettõször akar valakit megtámadni ezzel, csak elsõnek fogja megsebezni, mert valamiért csak akkor tudja másodszor sebezni, ha már az a játékos is sebzett rá, akit meg akart sebezni. Bocsi, de ennél érthetõbben nem megy.
-
Kezdem erteni,viszont tul keves az info a code-ban amit le irtal.
-
Hát mi kéne még? Kb ennyi az egész.
-
Ha valakinek 10 élet pontot akarsz levenni, akkor tudni is kellene mennyi élet pontja van.
GetPlayerHealth(playerid, health);
SetPlayerHealth(playerid, health);
És elõ is fordulhat hogy ez az egésznek a hiba forrása.
Gondolom meghatároztad a Float:health értékét 100-ra, vagy a kód elõtt ez szerepel GetPlayerHealth(playerid, health);
Így az elsõ játékos életéhez viszonyítva kerül levonásra mindenkinek.
Így ha levesz 10-et belõle akkor már csak 90 lesz, így a továbbiakban nem tud levenni tovább más játékosoknak.
Próbaként:
GetPlayerHealth(i, health);
SetPlayerHealth(i, health - 10);
-
Köszi, Zsolesszka, az volt a baj, hogy a playerid életét kértem le.:D Köszi, megy a +, zárok.
-
Van egy forciklus, pontosabban:
for(new i; i < MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i, 5, x[playerid], y[playerid], z[playerid]))
{
if(i != playerid)
{
GetPlayerPos(i, x2, y2, z2);
PlayerPlaySound(i, 1159, x, y, z);
SetPlayerHealth(i, health-10);
}
}
else if(IsPlayerInRangeOfPoint(i, 10, x[playerid], y[playerid], z[playerid]))
{
if(i != playerid)
{
GetPlayerPos(i, x2, y2, z2);
PlayerPlaySound(i, 1159, x, y, z);
}
}
}
Nos, ez az lenne, hogy egy játékos messzebbrõl meg tudja sebezni a körülötte lévõ játékosokat, de ezzel az a baj, hogy az életükbõl nem 10 megy le, hanem mindig változó, de nem tudom miért. A másik hiba vele, hogy mondjuk van player1 és player2. Ha player1 megsebzi vele player2-õt, és player1 újra sebezni akar, akkor csak akkor megy player2-nek az élete, ha már player2 is vitt le utána player1-nek. Vagyis ha player1 2-ször akar sebezni player2-nek, elõször meg kell várni, hogy player2 is sebezzen player1-nek, különben player1 hiába sebez player2-nek, nem megy le az élete. Kicsit bonyolultnak hangzik tudom.:P De légyszives valaki segítsen.
-
Vegul is nem ertem.Egy kicsit tul bonyolitottad a magyarazatot.Pill el olvasom meg parszor xD
-
Akkor röviden: elõszöris a támadott játékosnak nem 10 élete megy le, hanem mindig randomban megy kb 10 és 80 közt..
A másik: Ha egy játékos kettõször akar valakit megtámadni ezzel, csak elsõnek fogja megsebezni, mert valamiért csak akkor tudja másodszor sebezni, ha már az a játékos is sebzett rá, akit meg akart sebezni. Bocsi, de ennél érthetõbben nem megy.
-
Kezdem erteni,viszont tul keves az info a code-ban amit le irtal.
-
Hát mi kéne még? Kb ennyi az egész.
-
Ha valakinek 10 élet pontot akarsz levenni, akkor tudni is kellene mennyi élet pontja van.
GetPlayerHealth(playerid, health);
SetPlayerHealth(playerid, health);
És elõ is fordulhat hogy ez az egésznek a hiba forrása.
Gondolom meghatároztad a Float:health értékét 100-ra, vagy a kód elõtt ez szerepel GetPlayerHealth(playerid, health);
Így az elsõ játékos életéhez viszonyítva kerül levonásra mindenkinek.
Így ha levesz 10-et belõle akkor már csak 90 lesz, így a továbbiakban nem tud levenni tovább más játékosoknak.
Próbaként:
GetPlayerHealth(i, health);
SetPlayerHealth(i, health - 10);
-
Köszi, Zsolesszka, az volt a baj, hogy a playerid életét kértem le.:D Köszi, megy a +, zárok.