GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: siklosikrisz - 2014. december 06. - 14:07:22

Cím: Foglalt koordináta.
Írta: siklosikrisz - 2014. december 06. - 14:07:22
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?
Cím: Foglalt koordináta.
Írta: Tomasz - 2014. december 07. - 09:07:25
A slot változót globálisan hozd létre és jó lesz.
Cím: Foglalt koordináta.
Írta: siklosikrisz - 2014. december 07. - 13:55:44
Az hogyan oldaná meg a problémámat?:o
Cím: Foglalt koordináta.
Írta: Dfoglalo - 2014. december 07. - 13:58:54
Ú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.
Cím: Foglalt koordináta.
Írta: siklosikrisz - 2014. december 07. - 14:10:23
\"Most már értem.,,
Kissé figyelmetlen voltam.><