Script Probleme mit leerem Autositz

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey,


    Ich will das man in ein Auto gesetzt wird auf einen leeren Platz, aber es funktioniert nicht wie gewünscht:




    stock GetVehicleFreeSeat(vehicleid)
    {
    new platz[5];
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i,vehicleid))continue;
    for(new x=0; x<GetVehicleMaxSeats(vehicleid); x++)
    {
    platz[GetPlayerVehicleSeat(i)] = 1;//-1
    }
    }
    if(!platz[0] && platz[0] <= GetVehicleMaxSeats(vehicleid))return 0;
    else if(!platz[1] && platz[1] <= GetVehicleMaxSeats(vehicleid))return 1;
    else if(!platz[2] && platz[2] <= GetVehicleMaxSeats(vehicleid))return 2;
    else if(!platz[3] && platz[3] <= GetVehicleMaxSeats(vehicleid))return 3;
    else if(!platz[4] && platz[4] <= GetVehicleMaxSeats(vehicleid))return 4;
    return -1;
    }







    stock GetVehicleMaxSeats(vehicleid)
    {
    // return 5 = Mehr als 4 Sitze!
    new modelid;
    modelid = GetVehicleModel(vehicleid);
    if(modelid == 400)
    {
    return 3;
    }
    if(modelid == 401)
    {
    return 1;
    }
    if(modelid == 402)
    {
    return 1;
    }
    if(modelid == 403)
    {
    return 1;
    }
    if(modelid == 404)
    {
    return 3;
    }
    if(modelid == 405)
    {
    return 3;
    }
    if(modelid == 406)
    {
    return 0;
    }
    if(modelid == 407)
    {
    return 1;
    }
    if(modelid == 408)
    {
    return 1;
    }
    if(modelid == 409)
    {
    return 3;
    }
    if(modelid == 410)
    {
    return 1;
    }
    if(modelid == 411)
    {
    return 1;
    }
    if(modelid == 412)
    {
    return 1;
    }
    if(modelid == 413)
    {
    return 3;
    }
    if(modelid == 414)
    {
    return 1;
    }
    if(modelid == 415)
    {
    return 1;
    }
    if(modelid == 416)
    {
    return 3;
    }
    if(modelid == 417)
    {
    return 1;
    }
    if(modelid == 418)
    {
    return 3;
    }
    if(modelid == 419)
    {
    return 1;
    }
    if(modelid == 420)
    {
    return 3;
    }
    if(modelid == 421)
    {
    return 3;
    }
    if(modelid == 422)
    {
    return 1;
    }
    if(modelid == 423)
    {
    return 1;
    }
    if(modelid == 424)
    {
    return 1;
    }
    if(modelid == 425)
    {
    return 0;
    }
    if(modelid == 426)
    {
    return 3;
    }
    if(modelid == 427)
    {
    return 3;
    }
    if(modelid == 428)
    {
    return 3;
    }
    if(modelid == 429)
    {
    return 1;
    }
    if(modelid == 430)
    {
    return 0;
    }
    if(modelid == 431)
    {
    return 4;
    }
    if(modelid == 432)
    {
    return 0;
    }
    if(modelid == 433)
    {
    return 1;
    }
    if(modelid == 434)
    {
    return 1;
    }
    if(modelid == 435)
    {
    return -1;
    }
    if(modelid == 436)
    {
    return 1;
    }
    if(modelid == 437)
    {
    return 4;
    }
    if(modelid == 438)
    {
    return 3;
    }
    if(modelid == 439)
    {
    return 1;
    }
    if(modelid == 440)
    {
    return 3;
    }
    if(modelid == 441)
    {
    return -1;
    }
    if(modelid == 442)
    {
    return 1;
    }
    if(modelid == 443)
    {
    return 1;
    }
    if(modelid == 444)
    {
    return 1;
    }
    if(modelid == 445)
    {
    return 3;
    }
    if(modelid == 446)
    {
    return 0;
    }
    if(modelid == 447)
    {
    return 1;
    }
    if(modelid == 448)
    {
    return 1;
    }
    if(modelid == 449)
    {
    return 3;
    }
    if(modelid == 450)
    {
    return -1;
    }
    if(modelid == 451)
    {
    return 1;
    }
    if(modelid == 452)
    {
    return 0;
    }
    if(modelid == 453)
    {
    return 0;
    }
    if(modelid == 454)
    {
    return 1;
    }
    if(modelid == 455)
    {
    return 1;
    }
    if(modelid == 456)
    {
    return 1;
    }
    if(modelid == 457)
    {
    return 1;
    }
    if(modelid == 458)
    {
    return 3;
    }
    if(modelid == 459)
    {
    return 3;
    }
    if(modelid == 460)
    {
    return 1;
    }
    if(modelid == 461)
    {
    return 1;
    }
    if(modelid == 462)
    {
    return 1;
    }
    if(modelid == 463)
    {
    return 1;
    }
    if(modelid == 464)
    {
    return -1;
    }
    if(modelid == 465)
    {
    return -1;
    }
    if(modelid == 466)
    {
    return 3;
    }
    if(modelid == 467)
    {
    return 3;
    }
    if(modelid == 468)
    {
    return 1;
    }
    if(modelid == 469)
    {
    return 1;
    }
    if(modelid == 470)
    {
    return 3;
    }
    if(modelid == 471)
    {
    return 1;
    }
    if(modelid == 472)
    {
    return 0;
    }
    if(modelid == 473)
    {
    return 0;
    }
    if(modelid == 474)
    {
    return 1;
    }
    if(modelid == 475)
    {
    return 1;
    }
    if(modelid == 476)
    {
    return 0;
    }
    if(modelid == 477)
    {
    return 1;
    }
    if(modelid == 478)
    {
    return 1;
    }
    if(modelid == 479)
    {
    return 3;
    }
    if(modelid == 480)
    {
    return 1;
    }
    if(modelid == 481)
    {
    return 0;
    }
    if(modelid == 482)
    {
    return 2;
    }
    if(modelid == 483)
    {
    return 3;
    }
    if(modelid == 484)
    {
    return 0;
    }
    if(modelid == 485)
    {
    return 0;
    }
    if(modelid == 486)
    {
    return 0;
    }
    if(modelid == 487)
    {
    return 3;
    }
    if(modelid == 488)
    {
    return 1;
    }
    if(modelid == 489)
    {
    return 1;
    }
    if(modelid == 490)
    {
    return 3;
    }
    if(modelid == 491)
    {
    return 1;
    }
    if(modelid == 492)
    {
    return 3;
    }
    if(modelid == 493)
    {
    return 0;
    }
    if(modelid == 494)
    {
    return 1;
    }
    if(modelid == 495)
    {
    return 1;
    }
    if(modelid == 496)
    {
    return 1;
    }
    if(modelid == 497)
    {
    return 3;
    }
    if(modelid == 498)
    {
    return 3;
    }
    if(modelid == 499)
    {
    return 1;
    }
    if(modelid == 500)
    {
    return 1;
    }
    if(modelid == 501)
    {
    return -1;
    }
    if(modelid == 502)
    {
    return 1;
    }
    if(modelid == 503)
    {
    return 1;
    }
    if(modelid == 504)
    {
    return 1;
    }
    if(modelid == 505)
    {
    return 1;
    }
    if(modelid == 506)
    {
    return 1;
    }
    if(modelid == 507)
    {
    return 3;
    }
    if(modelid == 508)
    {
    return 1;
    }
    if(modelid == 509)
    {
    return 0;
    }
    if(modelid == 510)
    {
    return 0;
    }
    if(modelid == 511)
    {
    return 1;
    }
    if(modelid == 512)
    {
    return 0;
    }
    if(modelid == 513)
    {
    return 0;
    }
    if(modelid == 514)
    {
    return 1;
    }
    if(modelid == 515)
    {
    return 1;
    }
    if(modelid == 516)
    {
    return 3;
    }
    if(modelid == 517)
    {
    return 1;
    }
    if(modelid == 518)
    {
    return 1;
    }
    if(modelid == 519)
    {
    return 0;
    }
    if(modelid == 520)
    {
    return 0;
    }
    if(modelid == 521)
    {
    return 1;
    }
    if(modelid == 522)
    {
    return 1;
    }
    if(modelid == 523)
    {
    return 1;
    }
    if(modelid == 524)
    {
    return 1;
    }
    if(modelid == 525)
    {
    return 1;
    }
    if(modelid == 526)
    {
    return 1;
    }
    if(modelid == 527)
    {
    return 1;
    }
    if(modelid == 528)
    {
    return 1;
    }
    if(modelid == 529)
    {
    return 3;
    }
    if(modelid == 530)
    {
    return 0;
    }
    if(modelid == 531)
    {
    return 0;
    }
    if(modelid == 532)
    {
    return 0;
    }
    if(modelid == 533)
    {
    return 1;
    }
    if(modelid == 534)
    {
    return 1;
    }
    if(modelid == 535)
    {
    return 1;
    }
    if(modelid == 536)
    {
    return 1;
    }
    if(modelid == 537)
    {
    return 1;
    }
    if(modelid == 538)
    {
    return 1;
    }
    if(modelid == 539)
    {
    return 0;
    }
    if(modelid == 540)
    {
    return 3;
    }
    if(modelid == 541)
    {
    return 1;
    }
    if(modelid == 542)
    {
    return 1;
    }
    if(modelid == 543)
    {
    return 1;
    }
    if(modelid == 544)
    {
    return 1;
    }
    if(modelid == 545)
    {
    return 1;
    }
    if(modelid == 546)
    {
    return 3;
    }
    if(modelid == 547)
    {
    return 3;
    }
    if(modelid == 548)
    {
    return 1;
    }
    if(modelid == 549)
    {
    return 1;
    }
    if(modelid == 550)
    {
    return 3;
    }
    if(modelid == 551)
    {
    return 3;
    }
    if(modelid == 552)
    {
    return 1;
    }
    if(modelid == 553)
    {
    return 0;
    }
    if(modelid == 554)
    {
    return 1;
    }
    if(modelid == 555)
    {
    return 1;
    }
    if(modelid == 556)
    {
    return 1;
    }
    if(modelid == 557)
    {
    return 1;
    }
    if(modelid == 558)
    {
    return 1;
    }
    if(modelid == 559)
    {
    return 1;
    }
    if(modelid == 560)
    {
    return 3;
    }
    if(modelid == 561)
    {
    return 3;
    }
    if(modelid == 562)
    {
    return 1;
    }
    if(modelid == 563)
    {
    return 1;
    }
    if(modelid == 564)
    {
    return -1;
    }
    if(modelid == 565)
    {
    return 1;
    }
    if(modelid == 566)
    {
    return 3;
    }
    if(modelid == 567)
    {
    return 3;
    }
    if(modelid == 568)
    {
    return 0;
    }
    if(modelid == 569)
    {
    return -1;
    }
    if(modelid == 570)
    {
    return -1;
    }
    if(modelid == 571)
    {
    return 0;
    }
    if(modelid == 572)
    {
    return 0;
    }
    if(modelid == 573)
    {
    return 1;
    }
    if(modelid == 574)
    {
    return 0;
    }
    if(modelid == 575)
    {
    return 1;
    }
    if(modelid == 576)
    {
    return 1;
    }
    if(modelid == 577)
    {
    return 4;
    }
    if(modelid == 578)
    {
    return 1;
    }
    if(modelid == 579)
    {
    return 3;
    }
    if(modelid == 580)
    {
    return 3;
    }
    if(modelid == 581)
    {
    return 1;
    }
    if(modelid == 582)
    {
    return 3;
    }
    if(modelid == 583)
    {
    return 0;
    }
    if(modelid == 584)
    {
    return -1;
    }
    if(modelid == 585)
    {
    return 3;
    }
    if(modelid == 586)
    {
    return 1;
    }
    if(modelid == 587)
    {
    return 1;
    }
    if(modelid == 588)
    {
    return 1;
    }
    if(modelid == 589)
    {
    return 1;
    }
    if(modelid == 590)
    {
    return -1;
    }
    if(modelid == 591)
    {
    return -1;
    }
    if(modelid == 592)
    {
    return 4;
    }
    if(modelid == 593)
    {
    return 1;
    }
    if(modelid == 594)
    {
    return -1;
    }
    if(modelid == 595)
    {
    return 0;
    }
    if(modelid == 596)
    {
    return 3;
    }
    if(modelid == 597)
    {
    return 3;
    }
    if(modelid == 598)
    {
    return 3;
    }
    if(modelid == 599)
    {
    return 1;
    }
    if(modelid == 600)
    {
    return 1;
    }
    if(modelid == 601)
    {
    return 1;
    }
    if(modelid == 602)
    {
    return 1;
    }
    if(modelid == 603)
    {
    return 1;
    }
    if(modelid == 604)
    {
    return 3;
    }
    if(modelid == 605)
    {
    return 1;
    }
    if(modelid == 606)
    {
    return -1;
    }
    if(modelid == 607)
    {
    return -1;
    }
    if(modelid == 608)
    {
    return -1;
    }
    if(modelid == 609)
    {
    return 3;
    }
    if(modelid == 610)
    {
    return -1;
    }
    if(modelid == 611)
    {
    return -1;
    }
    return -1;
    }









    Aber es funktioniert nicht
    Könntet ihr mir helfen?


    Thx,

  • Übrigens:
    Anstatt den hunderten von if's kannst du auch einen switch nehmen.


    Besser noch, wäre es mit Bitshifting:


    stock GetVehicleSeatCount(model) {
    static const scMaxPassengers[] = {
    0x10331113, 0x11311131, 0x11331313, 0x80133301, 0x1381F110, 0x10311103, 0x10001F10, 0x11113311, 0x13113311,
    0x31101100, 0x30001301, 0x11031311, 0x11111331, 0x10013111, 0x01131100, 0x11111110, 0x11100031, 0x11130221,
    0x33113311, 0x11111101, 0x33101133, 0x101001F0, 0x03133111, 0xFF11113F, 0x13330111, 0xFF131111, 0x0000FF3F
    };
    if (400 <= model <= 611) {
    model -= 400;
    model = (scMaxPassengers[model >>> 3] >>> ((model & 7) << 2)) & 0xF;
    return (model == 15) ? -1 : model;
    }
    return -1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Mit dem switch ist mir auch bewusst geworden, nachdem ich alle Zeilen fertig gescriptet hab ^^


    Haha! Du bist gut. :D
    Ist relativ egal, das nimmt sich in der Performance kaum was, aber irgendwann kannst es ja mal umschreiben zu case's, wenn dir langweilig ist.


    stock GetVehicleFreeSeat(vehicleid)
    {
    new platz[5];
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i,vehicleid))continue;
    platz[GetPlayerVehicleSeat(i)] = 1;
    }
    if(!platz[0] && 0 <= GetVehicleMaxSeats(vehicleid))return 0;
    else if(!platz[1] && 1 <= GetVehicleMaxSeats(vehicleid))return 1;
    else if(!platz[2] && 2 <= GetVehicleMaxSeats(vehicleid))return 2;
    else if(!platz[3] && 3 <= GetVehicleMaxSeats(vehicleid))return 3;
    else if(!platz[4] && 4 <= GetVehicleMaxSeats(vehicleid))return 4;
    return -1;
    }


    Versuche es mal so.

  • Debugge es mal:
    stock GetVehicleFreeSeat(vehicleid)
    {
    printf("vehicleid: %d", vehicleid);
    new platz[5];
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i,vehicleid))continue;
    platz[GetPlayerVehicleSeat(i)] = 1;
    printf("platz: %d ist belegt (von ID: %d) | max: %d", GetPlayerVehicleSeat(i), i, GetVehicleMaxSeats(vehicleid));
    }
    if(!platz[0] && 0 <= GetVehicleMaxSeats(vehicleid))print("return 0"), return 0;
    else if(!platz[1] && 1 <= GetVehicleMaxSeats(vehicleid))print("return 1"), return 1;
    else if(!platz[2] && 2 <= GetVehicleMaxSeats(vehicleid))print("return 2"), return 2;
    else if(!platz[3] && 3 <= GetVehicleMaxSeats(vehicleid))print("return 3"), return 3;
    else if(!platz[4] && 4 <= GetVehicleMaxSeats(vehicleid))print("return 4"), return 4;
    return -1;
    }


    Was steht dann im Log?