Sziasztok!
Szeretném megoldani,hogy ha valaki beír egy parancsot,akkor az illetőt elteleportálja \"A1 koordinátára,,.
Azonban ha valaki utána beírja szintén ugyan azt a parancsot,akkor őt már az \"A2 koordinátára,, teleportálja el.
Tehát ne egymásra teleportálódjanak,hanem mindig egy másik megadott koordinátára.
CMD:dm(playerid,params[])
{
if(IsPlayerInDM[playerid] == false)
{
IsPlayerInDM[playerid] = true;
}
else
{
SendClientMessage(playerid,-1,\"Már csatlakoztál a DM-be!\");
}
new slot = 0;
switch(slot)
{
case 0:
{
SetPlayerPos(playerid,A1);
slot ++;
}
case 1:
{
SetPlayerPos(playerid,A2);
slot ++;
}
case 2:
{
SetPlayerPos(playerid,A3);
slot ++;
}
case 3:
{
SetPlayerPos(playerid,A4);
slot ++;
}
case 4:
{
SendClientMessage(playerid,-1,\"Nincs több hely!\");
}
}
return 1;
}
Így próbáltam megoldani,viszont ha valaki elhagyja a DM-et,akkor az ő helye üres lesz,és oda már nem tudnak akkor belépni.
Kivéve ha kilépésnél levonok egyet a változó értékéből..
Viszont akkor meg az a probléma áll fenn,hogy ha már négyen vannak bent,és a második kilép,akkor a változó értéke így 3-lesz és akkor ha ismét belép valaki,akkor a 3. helyen már ketten lesznek.
Hogy lehetne megoldani,hogy mindig az üres helyre tegye a játékost?
Úgy, hogy akkor nem nulláznád - valójában nem törölnéd és újra létrehoznád 0-s kezdőértékkel - a slot változót... Ilyen alap dolgokat tudnod kéne, ha nem is programozásból, de magyarból, hogy lokális és globális. Ráadásul elég sok ideje foglalkozol már ezzel ahhoz, hogy ezt tudd... Ha ennyire nem érted:
new slot = 0;
CMD:dm(playerid,params[])
{
if(IsPlayerInDM[playerid] == false)
{
IsPlayerInDM[playerid] = true;
}
else
{
SendClientMessage(playerid,-1,\"Már csatlakoztál a DM-be!\");
}
switch(slot)
{
// ...
A kód elrendezésével pedig szerintem kezdj valamit, mert ez szerintem így eléggé össze-vissza van.