Beiträge von Traxter

    Guten Abend liebe Brotfischler,


    Eigentlich könnte ich das Teil auch gleich mit dem Vermerk "defekt" in den Showroom stellen aber naja :D. Mein Problem ist das der letzte Checkpoint nicht gesetzt wird und somit die Arbeit nicht beendet werden kann. Habe sogar noch einen command eingebaut um während der Fahrt zu checken ob auch alle checkpoints gezählt werden - werden ordnungsgemäss gezählt (zählt bis 9 ) aber eben der letzte Checkpoint (10) wird nicht gesetzt und somit kann die "Mission " nicht abgeschlossen werden. Wäre sehr dankbar wenn jemand den Fehler finden würde da ich jetzt schon seit 4 Stunden danach suche :(


    #define FARMER_RACE_POINTS 10


    new Float:farmercheckpoints[FARMER_RACE_POINTS][3] =
    {
    {-185.8091,-70.8083,3.1172}, // 1
    {-164.8686,-17.4206,3.1172}, // 2
    {-139.8285,46.8926,3.1172}, // 3
    {-160.3774,55.7224,3.1172}, // 4
    {-184.8810,65.9218,3.1172}, // 5
    {-220.7008,80.8315,3.1172}, // 6
    {-230.4765,58.4977,3.1172}, // 7
    {-245.2507,23.6662,3.1172}, // 8
    {-268.4869,-31.1149,3.1172}, // 9
    {-119.0461,147.0831,3.3763} // 10 letzter Punkt
    };


    enum Info
    {
    farmt,
    gefarmt,
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    if(GetVehicleModel(vehicleid) == 532)
    {
    if(pInfo[playerid][beruf] == JOB_FARMER)
    {
    SendClientMessage(playerid,COLOR_HELLGRUEN, "Fahre nun die Checkpoints ab um Hanf zu ernten");
    pInfo[playerid][farmt] = 1;
    SetPlayerRaceCheckpoint(playerid,0,farmercheckpoints[0][0],farmercheckpoints[0][1],farmercheckpoints[0][2],farmercheckpoints[1][0],farmercheckpoints[1][1],farmercheckpoints[1][2],3.0);
    }
    else
    {
    TogglePlayerControllable(playerid,1);
    SendClientMessage(playerid,COLOR_ROT, "Du bist kein Farmer !");
    }
    return 1;
    }



    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 532)
    {
    if(pInfo[playerid][farmt] == 1)
    {
    new lastfarmpoint = FARMER_RACE_POINTS;
    pInfo[playerid][gefarmt]++;
    if(pInfo[playerid][gefarmt] < lastfarmpoint)
    {
    DisablePlayerRaceCheckpoint(playerid);
    SetPlayerRaceCheckpoint(playerid,0,farmercheckpoints[pInfo[playerid][gefarmt]][0],farmercheckpoints[pInfo[playerid][gefarmt]][1],farmercheckpoints[pInfo[playerid][gefarmt]][2],farmercheckpoints[pInfo[playerid][gefarmt]+1][0],farmercheckpoints[pInfo[playerid][gefarmt]+1][1],farmercheckpoints[pInfo[playerid][gefarmt]+1][2],3.0);
    }
    if(pInfo[playerid][gefarmt] == lastfarmpoint)
    { //
    pInfo[playerid][farmt] = 0;
    pInfo[playerid][gefarmt] = 0;
    DisablePlayerRaceCheckpoint(playerid);
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_HELLGRUEN, "Du hast erstmal genug gefarmt, komme in 30 Minuten wieder.");
    }}}}
    return 1;
    }




    Mit freundlichen Grüßen


    Traxter

    Kenn ich, mein erstes und einziges Tut was ich aus dem gleiche Grund wie du gemacht habe, wurde von vorne bis hinten boykottiert. Seitdem lasse ich die Finger davon pö :D :whistling:



    Lieber erstmal ordentlich was lernen und dann wenn man genug weiß ein Tut machen damit keiner daran rummeckern kann ^^

    Super Tutorial, habe es bei mir sonst immer anders gemacht mit den Checkpoints aber mit der Mothode ist es wesentlich einfacher. Habe mich explizit ans Tut gehalten ausser das ich das ganze natürlich an meine pInfo angepasst habe.Alles sehr gut erklärt und funktioniert einwandfrei.



    10/10 Brotfischpunkte :thumbup:

    Wird häufig verwendet um zb die innenräume von Häusern mehrfach zu nutzen ohne das sich die Spieler darin Treffen.Die standard Virtual World in der man sich nach dem connect befindet ist immer 0 falls es im GM nicht anders festgelegt wird.



    SetPlayerVirtualWorld(playerid, 0); //1-2-3-4-5-6 u.s.w

    Habe nach deinem Beitrag nochmal ein bischen rumgeschaut da ich GetDriverID noch nie gesehen habe und bin bei wiki fündig geworden.


    stock GetDriverID(vehicleid)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == 2) return i;
    }
    return -1;
    }




    Mit der funktion werd ichs wohl hinbekommen mir selbst was zu basteln, oder ich nehm halt direkt deins - mal schauen.




    Tausend dank ! bfx ftw 8)

    GetPlayerVirtualWorld(playerid); ist auch ganz hilfreich.



    Mal ein kleines beispiel,


    Eingang A - SetPlayerVirtualWorld(playerid, 1);


    Eingang B - SetPlayerVirtualWorld(playerid, 2);


    Ausgang A -SetPlayerVirtualWorld(playerid, 0);


    Ausgang B - SetPlayerVirtualWorld(playerid, 0);



    Zusätzlich musst du noch bei den ausgängen mit "GetPlayerVirtualWorld(playerid);" abfragen in welcher Welt sich der Spieler gerade befindet damit er auch wieder vor dem richigen Eingang landet wenn er rausgeht.

    Tag zusammen,


    Und zwar würde ich gerne wissen wie man die Fahrerid ermitteln kann wenn man als Beifahrer in einem Fahrzeug sitzt.
    Habe die sufu benutzt und eine Lösung mit for schleife unter OnPlayerStateChange von bfx gefunden aber mich würde interessieren ob es nicht noch anders möglich ist ? Hoffe mir kann jemand weiterhelfen und vielen dank im vorraus :)




    Mit freundlichen Grüßen


    Traxter

    Das sind alles nur Autos, daher Boote,Bikes,Flugzeuge sind da nicht mit drin.



    Kannst du entweder noch ergänzen falls du nur einen schein für alles haben willst oder eben weitere Führerscheine + die dazugehörigen abfragen erstellen.

    new giveplayerid = strval(strget(cmdtext, 1)); // id des Spielers


    Was soll die Zeile bewirken? Das verstehe ich nicht ganz >.>

    Das ist der erste Wert nach dem /autoschein.
    Der command würde dann folgendermassen aussehen, wobei 1 die playerid darstellt.


    /autoschein 1




    EDIT: Danke das du mich darauf aufmerksam gemacht hast, es muss nämlich heissen ->


    autoschein[giveplayerid] = 1; //


    Da taucht das giveplayerid dann wieder auf^^

    Gern gemacht ;)



    Habe nochmal änderungen vorgenommen und etwas ergänzt, so müsste es jetzt einwandfrei laufen da bei der definierung des führerscheins vorher noch ein kleiner fehler war.




    Wegen der Scheinvergabe, kannst natürlich auch deine Methode nehmen - musst dann halt nur den code etwas abändern bezüglich des Scheins.

    1. Ganz oben,


    new autoschein[MAX_PLAYERS]; // Autoschein




    2. Unter public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)


    eine abfrage mit den model ids aller autos starten oder eben der die in deinem GM sind-in dem beispiel sind alle drin.
    if(GetVehicleModel(vehicleid) == 400 || GetVehicleModel(vehicleid) == 401 || GetVehicleModel(vehicleid) == 402 ||
    GetVehicleModel(vehicleid) == 403 || GetVehicleModel(vehicleid) == 404 || GetVehicleModel(vehicleid) == 405 ||
    GetVehicleModel(vehicleid) == 406 || GetVehicleModel(vehicleid) == 407 || GetVehicleModel(vehicleid) == 408 ||
    GetVehicleModel(vehicleid) == 409 || GetVehicleModel(vehicleid) == 410 || GetVehicleModel(vehicleid) == 411 ||
    GetVehicleModel(vehicleid) == 412 || GetVehicleModel(vehicleid) == 413 || GetVehicleModel(vehicleid) == 414 ||
    GetVehicleModel(vehicleid) == 415 || GetVehicleModel(vehicleid) == 416 || GetVehicleModel(vehicleid) == 418 ||
    GetVehicleModel(vehicleid) == 419 || GetVehicleModel(vehicleid) == 420 || GetVehicleModel(vehicleid) == 421 ||
    GetVehicleModel(vehicleid) == 422 || GetVehicleModel(vehicleid) == 423 || GetVehicleModel(vehicleid) == 424 ||
    GetVehicleModel(vehicleid) == 426 || GetVehicleModel(vehicleid) == 427 || GetVehicleModel(vehicleid) == 428 ||
    GetVehicleModel(vehicleid) == 429 || GetVehicleModel(vehicleid) == 431 || GetVehicleModel(vehicleid) == 432 ||
    GetVehicleModel(vehicleid) == 433 || GetVehicleModel(vehicleid) == 434 || GetVehicleModel(vehicleid) == 435 ||
    GetVehicleModel(vehicleid) == 436 || GetVehicleModel(vehicleid) == 437 || GetVehicleModel(vehicleid) == 438 ||
    GetVehicleModel(vehicleid) == 439 || GetVehicleModel(vehicleid) == 440 || GetVehicleModel(vehicleid) == 441 ||
    GetVehicleModel(vehicleid) == 442 || GetVehicleModel(vehicleid) == 443 || GetVehicleModel(vehicleid) == 444 ||
    GetVehicleModel(vehicleid) == 445 || GetVehicleModel(vehicleid) == 449 || GetVehicleModel(vehicleid) == 450 ||
    GetVehicleModel(vehicleid) == 451 || GetVehicleModel(vehicleid) == 455 || GetVehicleModel(vehicleid) == 456 ||
    GetVehicleModel(vehicleid) == 457 || GetVehicleModel(vehicleid) == 458 || GetVehicleModel(vehicleid) == 459 ||
    GetVehicleModel(vehicleid) == 366 || GetVehicleModel(vehicleid) == 470 || GetVehicleModel(vehicleid) == 474 ||
    GetVehicleModel(vehicleid) == 475 || GetVehicleModel(vehicleid) == 477 || GetVehicleModel(vehicleid) == 478 ||
    GetVehicleModel(vehicleid) == 479 || GetVehicleModel(vehicleid) == 480 || GetVehicleModel(vehicleid) == 482 ||
    GetVehicleModel(vehicleid) == 483 || GetVehicleModel(vehicleid) == 485 || GetVehicleModel(vehicleid) == 486 ||
    GetVehicleModel(vehicleid) == 489 || GetVehicleModel(vehicleid) == 490 || GetVehicleModel(vehicleid) == 491 ||
    GetVehicleModel(vehicleid) == 492 || GetVehicleModel(vehicleid) == 494 || GetVehicleModel(vehicleid) == 495||
    GetVehicleModel(vehicleid) == 496 || GetVehicleModel(vehicleid) == 498 || GetVehicleModel(vehicleid) == 499 ||
    GetVehicleModel(vehicleid) == 500 || GetVehicleModel(vehicleid) == 502 || GetVehicleModel(vehicleid) == 503 ||
    GetVehicleModel(vehicleid) == 504 || GetVehicleModel(vehicleid) == 505 || GetVehicleModel(vehicleid) == 506 ||
    GetVehicleModel(vehicleid) == 507 || GetVehicleModel(vehicleid) == 508 || GetVehicleModel(vehicleid) == 514 ||
    GetVehicleModel(vehicleid) == 515 || GetVehicleModel(vehicleid) == 516 || GetVehicleModel(vehicleid) == 517 ||
    GetVehicleModel(vehicleid) == 518 || GetVehicleModel(vehicleid) == 524 || GetVehicleModel(vehicleid) == 525 ||
    GetVehicleModel(vehicleid) == 526 || GetVehicleModel(vehicleid) == 527 || GetVehicleModel(vehicleid) == 528 ||
    GetVehicleModel(vehicleid) == 529 || GetVehicleModel(vehicleid) == 530 || GetVehicleModel(vehicleid) == 531 ||
    GetVehicleModel(vehicleid) == 532 || GetVehicleModel(vehicleid) == 533 || GetVehicleModel(vehicleid) == 534 ||
    GetVehicleModel(vehicleid) == 535 || GetVehicleModel(vehicleid) == 536 || GetVehicleModel(vehicleid) == 540 ||
    GetVehicleModel(vehicleid) == 541 || GetVehicleModel(vehicleid) == 542 || GetVehicleModel(vehicleid) == 543 ||
    GetVehicleModel(vehicleid) == 544 || GetVehicleModel(vehicleid) == 545 || GetVehicleModel(vehicleid) == 546 ||
    GetVehicleModel(vehicleid) == 547 || GetVehicleModel(vehicleid) == 549 || GetVehicleModel(vehicleid) == 550 ||
    GetVehicleModel(vehicleid) == 551 || GetVehicleModel(vehicleid) == 552 || GetVehicleModel(vehicleid) == 554 ||
    GetVehicleModel(vehicleid) == 555 || GetVehicleModel(vehicleid) == 556 || GetVehicleModel(vehicleid) == 557 ||
    GetVehicleModel(vehicleid) == 558 || GetVehicleModel(vehicleid) == 559 || GetVehicleModel(vehicleid) == 560 ||
    GetVehicleModel(vehicleid) == 561 || GetVehicleModel(vehicleid) == 562 || GetVehicleModel(vehicleid) == 564 ||
    GetVehicleModel(vehicleid) == 565 || GetVehicleModel(vehicleid) == 566 || GetVehicleModel(vehicleid) == 567 ||
    GetVehicleModel(vehicleid) == 568 || GetVehicleModel(vehicleid) == 571 || GetVehicleModel(vehicleid) == 572 ||
    GetVehicleModel(vehicleid) == 573 || GetVehicleModel(vehicleid) == 574 || GetVehicleModel(vehicleid) == 575 ||
    GetVehicleModel(vehicleid) == 576 || GetVehicleModel(vehicleid) == 578 || GetVehicleModel(vehicleid) == 679 ||
    GetVehicleModel(vehicleid) == 580 || GetVehicleModel(vehicleid) == 582 || GetVehicleModel(vehicleid) == 583 ||
    GetVehicleModel(vehicleid) == 585 || GetVehicleModel(vehicleid) == 587 || GetVehicleModel(vehicleid) == 588 ||
    GetVehicleModel(vehicleid) == 589 || GetVehicleModel(vehicleid) == 594 || GetVehicleModel(vehicleid) == 596 ||
    GetVehicleModel(vehicleid) == 597 || GetVehicleModel(vehicleid) == 598 || GetVehicleModel(vehicleid) == 599 ||
    GetVehicleModel(vehicleid) == 600 || GetVehicleModel(vehicleid) == 601 || GetVehicleModel(vehicleid) == 602 ||
    GetVehicleModel(vehicleid) == 603 || GetVehicleModel(vehicleid) == 604 || GetVehicleModel(vehicleid) == 605 ||
    GetVehicleModel(vehicleid) == 609)
    {
    if(autoschein[playerid] == 0) // wenn kein autoschein vorhanden ist dann ->
    {
    TogglePlayerControllable(playerid, 1); // Am einsteigen hindern
    SendClientMessage(playerid,0xFF0000AA, "Du besitzt keinen Autoschein !"); // Meldung an den Spieler
    }}




    3.Unter
    public OnPlayerCommandText(playerid, cmdtext[])


    einen autoschein vergeben.
    if(!strcmp(strget(cmdtext, 0), "/autoschein"))
    {
    new giveplayerid = strval(strget(cmdtext, 1)); // id des Spielers
    {
    autoschein[giveplayerid] = 1; // Autoschein auf 1 setzen
    }
    return 1;
    }


    4. Damit die scheinvergabe auch funktioniert musst du noch ganz untem im script strget definieren falls du es noch nicht hast.


    stock strget(strx[], pos, search = ' ') {
    new arg, ret[128], idxx;
    for (new i = 0; i < strlen(strx); i++) {
    if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
    arg++;
    if (arg == pos + 1){
    ret[i-idxx] = EOS;
    return ret;
    } else if (arg == pos)
    idxx= i+1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }