Beiträge von Winnetou

    Und wieso dann 4Variablen? x,y und z sind schon klar, aber w? Oder eist das einfach eine Vereinfachung für den Programmierer, weil w die Rotation in die Richtung ist in die das Fahrzeug fährt?

    Was bringt die neue Velocity-Fkt. für vorteile im Vergleich zur alten?
    Und wieso gibt es in der RotationQuart-Fkt. 4 Variablen? Es gibt doch nur 3 Dimensionen

    Was bringen die? die gibt es doch schon

    Was bringt die neue Velocity-Fkt. für vorteile im Vergleich zur alten?
    Und wieso gibt es in der RotationQuart-Fkt. 4 Variablen? Es gibt doch nur 3 Dimensionen

    Ich habe das jetzt mal getestet, aber wenn ich 11 nehme wird das letzte Hintergrund-Textdraw nicht angezeigt, Textdraw[0] wird immer noch nicht angezeigt und der Server schmiert weiterhin ab

    new Text:Textdraw[12];
    new Text:Autoname[MAX_PLAYERS];
    new Text:Speed1[MAX_PLAYERS];
    new Text:Speed2[MAX_PLAYERS];
    new Text:Tankinhalt[MAX_PLAYERS];
    new Text:Kilometer[MAX_PLAYERS];


    Und das GetVehicleName ist nicht aus den Useful Functions, kann aber trotzdem falsch sein, da ich es selbst geschrieben habe:
    stock GetVehicleName(vehicleid)
    {
    new model=612;
    model=GetVehicleModel(vehicleid);
    return Autonamen[model - 400];
    }
    und oben im Script aus dem Debug-FS:
    new Autonamen[212][] = { // Vehicle Names - Betamaster
    {"Landstalker"},
    {"Bravura"},
    {"Buffalo"},
    {"Linerunner"},
    {"Perrenial"},
    {"Sentinel"},
    [...]
    {"Luggage Trailer A"}, //bagboxa
    {"Luggage Trailer B"}, //bagboxb
    {"Stair Trailer"}, //tugstair
    {"Boxville"},
    {"Farm Plow"}, //farmtr1
    {"Utility Trailer"} //utiltr1
    };

    Komischerweise geht jetzt überhaupt nichts mehr:

    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER) {
    new i=0;
    for(; i<12; i++) {
    TextDrawShowForPlayer(playerid,Textdraw[i]);
    }


    [...]


    }

    if(newstate != PLAYER_STATE_DRIVER) {
    new i=0;
    for(; i<12; i++) {
    TextDrawHideForPlayer(playerid,Textdraw[i]);
    }
    TextDrawDestroy(Autoname[playerid]);
    TextDrawDestroy(Speed1[playerid]);
    TextDrawDestroy(Speed2[playerid]);
    TextDrawDestroy(Tankinhalt[playerid]);
    TextDrawDestroy(Kilometer[playerid]);
    }
    return 1;
    }


    public AmaturenUpdate()
    {
    new i;
    for(; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER) {
    TextDrawDestroy(Autoname[i]);
    TextDrawDestroy(Speed1[i]);
    TextDrawDestroy(Speed2[i]);
    TextDrawDestroy(Tankinhalt[i]);
    TextDrawDestroy(Kilometer[i]);

    new output[64], Float:kommazahl;
    //print("test1")
    //Autoname
    format(output,sizeof(output),"%s",GetVehicleName(GetPlayerVehicleID(i)));


    [...]
    //print("test2")
    //Speed
    format(output,sizeof(output),"%d km/h",ErmittleGeschwindigkeit(i,true));


    [...]

    //Speedbalken
    kommazahl=524+ErmittleGeschwindigkeit(i,true)/3.06122;


    [...]


    //Tankzeiger
    kommazahl=524+Tankmenge[GetPlayerVehicleID(i)]/1.020408;


    [...]

    //Kilometer
    kilometercount[GetPlayerVehicleID(i)] += ErmittleGeschwindigkeit(i,true)/(60*60*0.5);
    format(output,sizeof(output),"%.1f km",kilometercount[GetPlayerVehicleID(i)]);


    [...]

    TextDrawShowForPlayer(i,Autoname[i]);
    TextDrawShowForPlayer(i,Speed1[i]);
    TextDrawShowForPlayer(i,Speed2[i]);
    TextDrawShowForPlayer(i,Tankinhalt[i]);
    TextDrawShowForPlayer(i,Kilometer[i]);
    }
    }
    }


    Das "[...]" bedeutet, dass an der Stelle im Script die ganzen TextDrawCreate usw. stehen (ich habe die mal der Übersicht halber weggelassen, da dort kein Fehler vorhanden ist).
    Wenn man in ein Fahrzeug einsteigt, werden die Hintergrundtextdraws alle angezeigt, bis auf das erste (Textdraw[0]). Die Variablen Textdraws werden überhaupt nicht angezeigt und der Server schmiert ab. Ich habe das auch mal mit print("test1") und print("test2") versucht und komischerweise werden die Variablen dann angezeigt, aber falsch. Beim Autonamen stand dann einfach "Ö". Wo ist jetzt das Problem? Ich sitze da jetzt schon seit mehreren Wochen dran, aber es funktioniert einfach nicht. Oder liegt das am Code von GetVehicleName??

    Guck doch mal auf das Datum vom Beitrag vorher...
    Glaubst du jemand (mit wenigen Ausnahmen) würde dieses Thema noch lesen wenn es auf Seite 10 stünde?


    Viel wichtiger ist mir jetzt meine Frage zum Speedometer weil das mit den Sitzen hat sich geklärt


    Edit: Liegt das vielleicht daran, dass die Textdraws beim einsteigen zerstört werden obwohl die gar nicht vorhanden sind?
    Edit2: Es ist immer die höchste ID, die die Textdraws sieht, der Rest sieht nur den Hintergrund und nicht die sich verändernden Textdraws

    Auf irgendeinem Server habe ich schon gesehen, dass zum Beispiel Marquis 5 Sitzplätze oder Stehplätze hatte
    Edit: Kann auch mal bitte jemand auf meine erste Frage mit den Textdraws eingehen?
    Edit2: Komischerweise geht das mit den Textdraws wenn man zum ersten mal in ein Auto einsteigt und dann ein anderer Spieler in ein Auto steigt. Aber wenn man dann aussteigt und wieder einsteigt geht es nicht mehr
    Edit3: Hat niemand eine Idee?

    und wie soll man das dann im Boot machen, dass man den spieler sieht?


    kann auch mal jemand auf meine erste Frage eingehen?
    Beim ersten "[...]" stehen die ganzen TextdrawCreate...

    Hi,
    ich habe mir einen Tacho mit Tankanzeige usw. gebaut, aber es gibt Probleme damit:
    der Tacho funktioniert nur einwandfrei, wenn nur ein Spieler im Auto sitzt, sobald ein weiterer dazu kommt funktioniert er mal und mal nicht (Timer wiederholt sich jede halbe Sekunde)
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER) {
    new i=0;
    for(; i<12; i++) {
    TextDrawShowForPlayer(playerid,Textdraw[i]);
    }
    }
    if(newstate != PLAYER_STATE_DRIVER) {
    new i=0;
    for(; i<12; i++) {
    TextDrawHideForPlayer(playerid,Textdraw[i]);
    }
    TextDrawDestroy(Autoname[playerid]);
    TextDrawDestroy(Speed1[playerid]);
    TextDrawDestroy(Speed2[playerid]);
    TextDrawDestroy(Kraftstoff[playerid]);
    TextDrawDestroy(Tankvoll[playerid]);
    TextDrawDestroy(Tankinhalt[playerid]);
    TextDrawDestroy(Kilometer[playerid]);
    }
    return 1;
    }


    public AmaturenUpdate()
    {
    new i;
    for(; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER) {
    //Auto
    TextDrawDestroy(Autoname[i]);
    TextDrawDestroy(Speed1[i]);
    TextDrawDestroy(Speed2[i]);
    TextDrawDestroy(Kraftstoff[i]);
    TextDrawDestroy(Tankvoll[i]);
    TextDrawDestroy(Tankinhalt[i]);
    TextDrawDestroy(Kilometer[i]);

    [...]

    TextDrawShowForPlayer(i,Autoname[i]);
    TextDrawShowForPlayer(i,Speed1[i]);
    TextDrawShowForPlayer(i,Speed2[i]);
    TextDrawShowForPlayer(i,Kraftstoff[i]);
    TextDrawShowForPlayer(i,Tankvoll[i]);
    TextDrawShowForPlayer(i,Tankinhalt[i]);
    TextDrawShowForPlayer(i,Kilometer[i]);
    }
    }
    }
    [...]


    2. Wie fügt man weitere Sitzplätze für Fahrzeuge hinzu?
    Beispiel: Bei Booten wie Squalo oder Marquis sollen die Beifahrersitze benutzbar sein und die Stretch soll auch 2 weitere Sitzplätze haben. Wie mache ich das?

    Das Textdraw "Autoname" wird nicht angezeigt wenn man im Auto ist
    Woran liegt das?
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER) {
    new i=0;
    for(; i<12; i++) {
    TextDrawShowForPlayer(playerid,Textdraw[i]);
    }
    }
    if(newstate != PLAYER_STATE_DRIVER) {
    new i=0;
    for(; i<12; i++) {
    TextDrawHideForPlayer(playerid,Textdraw[i]);
    TextDrawDestroy(Autoname[i]);
    TextDrawDestroy(Speed1[i]);
    }
    }
    return 1;
    }


    public AmaturenUpdate()
    {
    new i;
    for(; i<MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(IsPlayerInAnyVehicle(i)) {
    //Auto
    TextDrawDestroy(Autoname[i]);
    Autoname[i] = TextDrawCreate(550.000000, 369.000000, GetVehicleName(GetPlayerVehicleID(i))); //Variable
    TextDrawBackgroundColor(Autoname[i], 255);
    TextDrawFont(Autoname[i], 1);
    TextDrawLetterSize(Autoname[i], 0.260000, 0.699999);
    TextDrawColor(Autoname[i], -572662273);
    TextDrawSetOutline(Autoname[i], 0);
    TextDrawSetProportional(Autoname[i], 1);
    TextDrawSetShadow(Autoname[i], 1);
    TextDrawShowForPlayer(i,Autoname[i]);
    [...]

    Man busted sich jetzt immer noch selbst
    Ich habe das jetzt so:
    dcmd_bust(playerid,params[]) {
    #pragma unused params
    if(IsPlayerPolizei(playerid)) {
    new
    cplayerid,
    Float:x,Float:y,Float:z;
    cplayerid=GetClosestPlayer(playerid);
    GetPlayerPos(cplayerid,x,y,z);
    if(IsPlayerInRangeOfPoint(playerid,5.0,x,y,z)) {
    if(controll) {
    TogglePlayerControllable2(cplayerid,0);
    controll = false;
    }
    else {
    TogglePlayerControllable2(cplayerid,1);
    controll = true;
    }
    }
    }
    else SendClientMessage(playerid, COLOR_LIGHTBLUE, "/bust: Du bist kein Polizist");
    return 1;
    }


    und so:
    stock GetClosestPlayer(playerid) //By Slick (edited by Gabriel "Larcius" Cordes)
    {
    if(IsPlayerConnected(playerid))
    {
    new closestplayer=0;
    new Float:closestdist=10000.0;
    for(new playerid2=0; playerid2<MAX_PLAYERS; playerid2++)
    {
    if(playerid == playerid2) continue;
    new Float:dist = GetDistanceBetweenPlayers(playerid,playerid2);
    if ((dist < closestdist))
    {
    closestdist = dist;
    closestplayer = playerid;
    }
    }
    return closestplayer;
    }
    return -1;
    }


    Edit: Wo ist jetzt der Fehler, oder ist die Fkt. technisch nicht möglich?

    Wie soll man "▄" mit der Tastatur im Editor eingeben?
    "|" habe ich schon getestet: es wird nur °°° angezeigt
    Ich habs auch schon mit großen i (IIIIIIIIIIIII) getestet aber die bekommt man nicht nah genug zusammen