Szerző Téma: Ciklus nem működik? Nem tudom mi lehet rossz  (Megtekintve 1181 alkalommal)

Ciklus nem működik? Nem tudom mi lehet rossz
« Dátum: 2016. Április 05. - 20:59:42 »
0 Show voters
Sziasztok!
Másfél napja szenvedek egy goto paranccsal, aminek az egyik része nem működik. Már próbáltam elöltesztelős, hátultesztelős ciklussal sőt még végig is irogattam if-ekkel de sehogy sem akart működni.
Az lenne a lényege hogy ha gotozunk valakihez és a személy járműben van akkor dobjon be a kocsiba ha van üres seat.  Nem tudom mitől de csak a 0-ás (vezető) seatre képes bedobni, ezért úgy tippelem, hgy a ciklussal van valami gond. Az összes függvény egyesével kiíratva tökéletesen működik.
Ha tudtok valami megoldást segítsetek, fontos lenne, és kezd eléggé felb***ni :3
Itt a kód részlet:
 

if(IsPlayerInAnyVehicle(id)){
new kocsiid = GetPlayerVehicleID(id),MaxSzemely = GetMaxSeats(kocsiid), istaken=0, i=0;
        do{
                if(IsSeatTaken(kocsiid, i))
{
   istaken=1;
}
if(IsSeatTaken(kocsiid, i)==0)
{
   PutPlayerInVehicle(playerid, kocsiid, i);
   break;
}
i++;
}
while(i<MaxSzemely);
if(istaken==1)
{
SendClientMessage(playerid, COLOR_WARNING, \"(( Nem volt hely a kocsiban, ezért mellé teleportáltál! ))\");
                SetPlayerPos(playerid, Float:x+5, Float:y, Float:z);
SetPlayerFacingAngle(playerid, Float:Angle);
SetPlayerVirtualWorld(playerid, vw);
SetPlayerInterior(playerid, ii);
}
Uzenet(playerid, -1, \"Hozzá teleportáltál: %s! \", SpacedName(Neved(id)));
Uzenet(id, -1, \"%s %s hozzád teleportált!\", adminszint(playerid), SpacedName(Neved(playerid)));
}
else {
Uzenet(playerid, -1, \"Hozzá teleportáltál: %s! \", SpacedName(Neved(id)));
Uzenet(id, -1, \"%s %s hozzád teleportált!\", adminszint(playerid), SpacedName(Neved(playerid)));
SetPlayerPos(playerid, Float:x+5, Float:y, Float:z);
SetPlayerFacingAngle(playerid, Float:Angle);
SetPlayerVirtualWorld(playerid, vw);
SetPlayerInterior(playerid, ii);
}

 
Eléggé szarul, ocsmányul néz ki a kód, meg 1-2 megoldás benne, de mint mondtam már mindent próbáltam amit tudtam és utána megpróbáltam a legalapabb dolgokkal is, aztán azokból született pár hülyeség. Ezt nézzétek el :)
Előre is köszönöm a segítséget!

Ciklus nem működik? Nem tudom mi lehet rossz
« Válasz #1 Dátum: 2016. Április 08. - 17:45:20 »
0 Show voters
Valaki? :/

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Ciklus nem működik? Nem tudom mi lehet rossz
« Válasz #2 Dátum: 2016. Április 08. - 19:19:03 »
0 Show voters
if(IsPlayerInAnyVehicle(id))
{
new vehicleid=GetPlayerVehicleID(id),
maxseats=GetMaxSeats(vehicleid),
bool:isfull=true;
for(new seat=0; seat <= maxseats; seat++)
{
    if(!IsSeatTaken(vehicleid,seat)) continue;
    PutPlayerInVehicle(id,vehicleid,seat);
    isfull=false;
    break;
}
if(isfull)
{
        SendClientMessage(playerid, COLOR_WARNING, \"(( Nem volt hely a kocsiban, ezért mellé teleportáltál! ))\");
        // ...
}
else
{
     Uzenet(playerid, -1, \"Hozzá teleportáltál: %s! \", SpacedName(Neved(id)));
     // ...
}
}

 
Talán?
E: A hiba oka lehet az is hogy a GetMaxSeats nem vehicleid, hanem modelid alapján működik, így ilyenkor lehet hamis értéket kapsz és a ciklus erre nem válaszol.
 

new vehicleid=GetPlayerVehicleID(id),
    maxseats=GetMaxSeats(GetVehicleModel(vehicleid)),
    bool:isfull=true;
« Utoljára szerkesztve: 2016. Április 08. - 19:24:59 írta divkn »

Ciklus nem működik? Nem tudom mi lehet rossz
« Válasz #3 Dátum: 2016. Április 09. - 22:13:01 »
0 Show voters
Még rosszabb mint volt :/

Ciklus nem működik? Nem tudom mi lehet rossz
« Válasz #4 Dátum: 2016. Április 11. - 20:57:11 »
0 Show voters
if(IsPlayerInAnyVehicle(kihez))
{
new UlesCheck =  GetMaxSeats(GetPlayerVehicleID(kihez));
new bool:ules[ulesCheck];
for(new = p; p < MAX_PLAYERS;p++)
{
if(GetPlayerVehicleID(kihez) == GetPLayerVehicleID(p))
{
   for(new x = 0; x < UlesCheck;x++)
   {
      if(IsSeatTaken(GetPlayerVehicleID(p), x))
         ules
  • = true;

   }
}
}
for(new x = 0; x < UlesCheck;x++)
{
if(ules
  • == false)

{
   PutPlayerInVehicle(playerid, GetPlayerVehicleID(kihez), x);
            Uzenet(playerid, -1, \"Hozzá teleportáltál a járműbe: %s! \", SpacedName(Neved(kihez)));
            Uzenet(kihez, -1, \"%s %s hozzád teleportált a járműbe!\", adminszint(playerid), SpacedName(Neved(playerid)));
   break;
}
else
{
   SendClientMessage(playerid, COLOR_WARNING, \"(( Nem volt hely a kocsiban, ezért mellé teleportáltál! ))\");
   SetPlayerPos(playerid, Float:x+5, Float:y, Float:z);
            SetPlayerFacingAngle(playerid, Float:Angle);
            SetPlayerVirtualWorld(playerid, vw);
            SetPlayerInterior(playerid, ii);
            Uzenet(playerid, -1, \"Hozzá teleportáltál: %s! \", SpacedName(Neved(kihez)));
            Uzenet(kihez, -1, \"%s %s hozzád teleportált!\", adminszint(playerid), SpacedName(Neved(playerid)));
}
}
}
else
{
    Uzenet(playerid, -1, \"Hozzá teleportáltál: %s! \", SpacedName(Neved(kihez)));
    Uzenet(kihez, -1, \"%s %s hozzád teleportált!\", adminszint(playerid), SpacedName(Neved(playerid)));
    SetPlayerPos(playerid, Float:x+5, Float:y, Float:z);
    SetPlayerFacingAngle(playerid, Float:Angle);
    SetPlayerVirtualWorld(playerid, vw);
    SetPlayerInterior(playerid, ii);
}

 
Nem a legszebb megoldás de szerintem működik.
« Utoljára szerkesztve: 2016. Április 11. - 21:07:13 írta Brian Harris »

Ciklus nem működik? Nem tudom mi lehet rossz
« Válasz #5 Dátum: 2016. Április 12. - 19:35:09 »
0 Show voters
Nem jó az elején az UlesCheck-es dolog, akárhogy variáltam mindenhogy error.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal