Probs mit OnPlayerEnterVehicle !! Bitte Helft mir!!

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 habe schon seit ein paar Tagen ein Problem...


    Wenn ich in meinem Code :

    Code
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    	if(IsPlayerInAnyVehicle(playerid))
    	{
        	if(IsPlayerInVehicle(playerid, 515), SendClientMessage(playerid,0x00FF00AA," Du bist in einem Truck..."))
    		return 1;
    	}
    	return 0;
    }


    Der sollte eigentlich funzen da es beim Compilen keine Probs gibt..
    Also ich möchte gerne das man sich ein bisschen geld nebenbei verdienen kann,
    und deswegen hab ich einen Truckplatz errichted und wenn man in einen Truck einsteigt soll stehen :
    Drücke /truckstarten um den Truck zu starten und die CP'S abzufahren...


    Ja und wenn er aber in ein Car mit der ID 515 einsteigt
    kommt nix...


    Noch besser wärs sogar das man Autos bezeichnet, sodass wenn ein Player in einen anderen Truck
    einsteigt nix kjommt aber wenn er z.B. in den Truck mit dem Namen ,,Jobtruck''
    einsteigt das dann ein GameText kommt : "Trcuker Mission starten ~n~ ~g~ /truckstarten


    ICH BITTE UM HILFE...!


    Hier mein ganzer Kleiner Filterscript:



    Bitte um Hilfe
    MfG Bene

    Zitat

    (PlAyMe) : hey aRmiin,sag mahl, wAs get heutE?
    (Armin) : Du in die Schule,hoff ich doch

  • Ich würde es generell nicht unter dem Callback OnPlayerEnterVehicle sondern unter OnPlayerStateChange machen.


    Dann müsstest du einfach alles unter OnPlayerEnterVehicle entfernen und das folgende unter dem Callback/public OnPlayerStateChange machen:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER) // überprüft, ob er gerade als Fahrer im Fahzeug ist bzw. eingestiegen ist.
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 515) // überprüfe, ob er in einem Fahrzeug mit Modell ID 515 sitzt
    {
    return SendClientMessage(playerid,0x00FF00AA," Du bist in einem Truck...")
    }
    }
    return 1;
    }


    hoffe konnte helfen.


    MFG luckyguy

  • Hey danke es funzt :D ich seh schon du bist echt hilfsbereit xD


    du hast nur 1 '';'' vergessen aber sonst is alles klar thx


    MfG Bene ;)


    //EDIT: und die GameTexts einfach einfügen?? meinst du es funzt auch, denn ich hab schon einen Befehl für JEDES Car drin das man /start machen muss das es sich nicht mit dem freezen vom andern cmd verträgt??

    Zitat

    (PlAyMe) : hey aRmiin,sag mahl, wAs get heutE?
    (Armin) : Du in die Schule,hoff ich doch

  • ^^ jeder macht Fehler, hab da wohl ein ";" übersehen

    Genau, einfach die GameTexte unter

    Zitat

    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)

    einfügen, aber Achtung, wenn du z. B. mehrere Sachen unter dieser Abfrage machen willst, dann aufgepasst:
    dann nicht so:
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
    {
    return SendClientMessage(playerid,FARBE,"blalba");
    GameTextForPlayer(playerid,"blablabla",Zeit,Style);
    }
    sondern:
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
    {
    SendClientMessage(playerid,FARBE,"blalba");
    GameTextForPlayer(playerid,"blablabla",Zeit,Style);
    return 1;
    }


    Also in jedem Fahrzeug in dem du einsteigst und die ModelID 515 ist, wird diese Meldung geschickt.

    Zitat

    muss das es sich nicht mit dem freezen vom andern cmd verträgt??

    Das kapier ich nicht, was du damit meinst bzw. sagen willst ^^


    MFG luckyguy


    P. S. hoffe konnte helfen ^^

  • Kann man iwi das soo machen das man z.B. wie bei TimerToren


    Code
    new Truck1;


    Dann bei OnFilterscriptInit :

    Code
    Truck1 = CreateVehicle(515, xPOS,yPOS,zPOS,ROTx....usw)


    hat und dann unten bei :



    Es so macht das wenn man in einen Normalen Truck mit der ID 515 einsteigt nix kommt aber wenn
    man in den ''Truck1'' einsteigt was kommt wie z.B. :



    Ich brauch schonwieder hilfe... :S


    MfG Bene

    Zitat

    (PlAyMe) : hey aRmiin,sag mahl, wAs get heutE?
    (Armin) : Du in die Schule,hoff ich doch

  • Also gar nicht so schwer, würde ich mal jetzt behaupten.


    Oben im Script wo die andern "new"s sind, machst du folgendes:
    #define MAX_TRUCKS 20 // Die Zahl 20 ändern in die Anzahl Trucks die du hast.
    new Truck[MAX_TRUCKS];


    Und bei den forwards folgendes:
    forward IstTruck(carid);


    Dann unter OnFilterScriptInit:
    public OnFilterScriptInit()
    {
    Truck[0] = AddStaticVehicleEx(Model,x,y,z,Facing Angle,Farbe 1,Farbe 2,-1);
    Truck[1] = AddStaticVehicleEx(Model,x,y,z,Facing Angle,Farbe 1,Farbe 2,-1);
    Truck[2] = AddStaticVehicleEx(Model,x,y,z,Facing Angle,Farbe 1,Farbe 2,-1);
    Truck[3] = AddStaticVehicleEx(Model,x,y,z,Facing Angle,Farbe 1,Farbe 2,-1);
    Truck[4] = AddStaticVehicleEx(Model,x,y,z,Facing Angle,Farbe 1,Farbe 2,-1);
    Truck[5] = AddStaticVehicleEx(Model,x,y,z,Facing Angle,Farbe 1,Farbe 2,-1);
    // und so weiter ...
    }


    Danach unter OnPlayerStateChange:
    if(IstTruck(GetPlayerVehicleID(playerid)))
    {
    new string[50];
    format(string, sizeof(string), "~g~ 1500$ mieten ~n~ ~r~ /automieten");
    GameTextForPlayer(playerid, string, 15000, 3);
    }


    Und nun zum neuen Public/Callback.


    Ganz unten im Script kommt dann dieser Callback für die Trucks:
    public IstTruck(carid)
    {
    for(new i = 0; i<sizeof(Truck); i++)
    {
    if(carid == Truck[i]) { return 1; }
    }
    return 0;
    }


    hoffe konnte helfen.


    MFG luckyguy

  • Hey lucky,
    das mit dem freezen war so gemeint :


    Wenn ich in ein Car einsteige, dann kommt Bitte mach /start um das Auto zu starten...
    willst du das nicht, musst du /exit zu machen ums auto zu verlassen also kommt im GM
    unter OnPlayerEnterVehicle das:


    TogglePlayerControllable(playerid,0);


    ja und dann is man gefreezt...
    Jetz zu den bezeihneten Cars :


    Ichj hjätte halt gerne das nicht bei jedem Truck das kommt sondern nur in
    dem den ich danjn z..B. Truck1 benenne...


    Thx Bene

    Zitat

    (PlAyMe) : hey aRmiin,sag mahl, wAs get heutE?
    (Armin) : Du in die Schule,hoff ich doch

  • Dass kommt auch nicht unter OnPlayerEnterVehicle, sondern OnPlayerStateChange..
    if(IstTruck(GetPlayerVehicleID(playerid)))
    {
    new string[50];
    format(string, sizeof(string), "~g~ 1500$ mieten ~n~ ~r~ /automieten");
    GameTextForPlayer(playerid, string, 15000, 3);
    ToggePlayerControllable(playerid,0);
    }


    Zitat

    Jetz zu den bezeihneten Cars :


    Ichj hjätte halt gerne das nicht bei jedem Truck das kommt sondern nur in
    dem den ich danjn z..B. Truck1 benenne...

    Das wird hier gemacht:

    Aber wenn du z. B. i-wo es so verwendest:
    if(IsPlayerInAnyVehicle(playerid) && IstTruck(GetPlayerVehicleID(playerid)))
    dann fragst du ab, ob er in einer der bei OnFilterScriptInit definierten Trucks ist.


    Und der Befehl /exit:
    if(!strcmp("/exit",cmdtext,true))
    {
    if(IsPlayerInAnyVehicle(playerid) && IstTruck(GetPlayerVehicleID(playerid)))
    {
    ToggelPlayerControllable(playerid,1);
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    else
    {
    return SendClientMessage(playerid,0x00FF00AA,"Du bist nicht in einem Fahrzeug, wo man diesen Befehl brauchen kann!");
    }
    }


    hoffe konnte helfen


    MFG luckyguy

  • //EDIT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>WIIIIIIICCCHHHHHHHTTTTIIIIIGGGGGGGG<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Soo jetz hab ichs soo :



    ich hab die Hälfte der Errors gelöst :

    Code
    C:\Dokumente und Einstellungen\admin\Desktop\********\Trucksjob.pwn(25) : warning 201: redefinition of constant/macro (symbol "MAX_TRUCKS")
    C:\Dokumente und Einstellungen\admin\Desktop\********\Trucksjob.pwn(107) : error 032: array index out of bounds (variable "Truck")
    C:\Dokumente und Einstellungen\admin\Desktop\********\Trucksjob.pwn(178) : error 004: function "IstTruck" is not implemented
    C:\Dokumente und Einstellungen\admin\Desktop\********\Trucksjob.pwn(185) : error 029: invalid expression, assumed zero
    C:\Dokumente und Einstellungen\admin\Desktop\********\Trucksjob.pwn(185) : error 004: function "IstTruck" is not implemented
    C:\Dokumente und Einstellungen\admin\Desktop\********\Trucksjob.pwn(189) : error 017: undefined symbol "carid"
    C:\Dokumente und Einstellungen\admin\Desktop\********\Trucksjob.pwn(194) : error 030: compound statement not closed at the end of file (started at line 178)
    Pawn compiler 3.2.3664  Copyright (c) 1997-2006, ITB CompuPhase
    6 Errors.
    Zitat

    (PlAyMe) : hey aRmiin,sag mahl, wAs get heutE?
    (Armin) : Du in die Schule,hoff ich doch

    Einmal editiert, zuletzt von [Scripter]Bene ()

  • // Es fängt bei 0 an und dann ist es in diesem Fall 5+1 = 6, also MAX_TRUCKS 6
    Truck[0] = AddStaticVehicleEx(515, 2116.2180175781, -2130.5354003906, 14.786533355713, 270.27026367188,1,1,-1);
    Truck[1] = AddStaticVehicleEx(515, 2116.2514648438, -2137.1696777344, 14.786533355713, 270.26916503906,1,1,-1);
    Truck[2] = AddStaticVehicleEx(515, 2115.7746582031, -2144.8937988281, 14.786533355713, 270.26916503906,1,1,-1);
    Truck[3] = AddStaticVehicleEx(515, 2154.3937988281, -2141.2763671875, 14.700595855713, 49.848876953125,1,1,-1);
    Truck[4] = AddStaticVehicleEx(515, 2150.6372070313, -2145.8793945313, 14.700595855713, 49.844970703125,1,1,-1);
    Truck[5] = AddStaticVehicleEx(515, 2145.048828125, -2151.0864257813, 14.700595855713, 9.9649658203125,1,1,-1);

    und ich würde es nacheinandermachen, also das #define MAX_TRUCKS und new Truck nicht voneinander trennen:


    #define MAX_TRUCKS 6
    new Truck[MAX_TRUCKS];


    hoffe es geht jetzt


    MFG luckyguy

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen