[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Beitrag von Corvus ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Dann ändere
    format(string2,sizeof(string2),"~r~Tank:%s %0.1f ", Tank, Gas[VID]);
    zu:
    format(string2,sizeof(string2),"~r~Tank:%s %0.1f ", Tank, Gas[VID]);
    printf("string2: %s", string2);
    printf("VID: %d, playerid: %d", VID, playerid);


    Was wird geprintet?

  • Ja, jetzt hast du den print nur bei deinem OnPlayerStateChange eingefügt.
    Du hast auch noch einen Timer, bei dem der Tankwert aktualisiert wird. Suche mal nach "~r~Tank:" (ohne die Anführungszeichen), dann siehst du wo das überall verwendet wird. Da muss es noch einen Timer geben, der den Wert aktualisiert, denn die Berechnung ist korrekt.

  • Hier:
    if(TakingLesson[i] == 2)
    {
    if(value > 75)
    {
    SendClientMessage(i,COLOR_LIGHTRED,"Du Fährst zu schnell, Fahr langsamer sonst fällst du durch die Prüfung");
    }
    if(value >= 100)
    {
    SendClientMessage(i,COLOR_KNALLROT,"Du hast die Prüfung nicht bestanden.");
    RemovePlayerFromVehicle(i);
    SetVehicleToRespawn(GetPlayerVehicleID(i));
    SetPlayerPos(i,1215.3406,-1821.1357,13.5950);
    CP[i] = 0;
    DisablePlayerCheckpoint(i);
    TakingLesson[i] = 0;
    }
    }
    if(IsABoat(VID) || IsAFahrrad(VID))
    {
    format(string2,sizeof(string2),"~r~KM/H:~g~ %d",value);
    format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
    TextDrawSetString(Tacho2[i], string);
    TextDrawSetString(Tacho4[i],string2);
    }
    else if(IsAPlane(VID))
    {
    new Float:cx,Float:cy,Float:cz;
    GetVehiclePos(VID,cx, cy, cz);
    format(string, sizeof(string), "%f",cz);
    format(string2,sizeof(string2),"~r~KM/H:~g~ %d",value);
    format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
    TextDrawSetString(Tacho2[i], string);
    TextDrawSetString(Tacho4[i],string2);
    }
    else
    {
    new Speed[20];
    new Float:leben;
    if(value >= 0 && value <= 75){Speed = "~g~";}
    if(value > 75){Speed = "~r~";}
    new Tank[20];
    if(Gas[VID] > 10 && Gas[VID] <= 20){Tank = "~y~";}
    if(Gas[VID] <= 10){Tank = "~r~";}
    if(Gas[VID] > 20){Tank = "~g~";}
    VehSpeed[VID] = value;
    GetVehicleHealth(VID,leben);
    format(string,sizeof(string),"~r~%s",VehNames[GetVehicleModel(VID)-400]);
    format(string1,sizeof(string1),"~r~KM/H:~g~ %d",value);
    format(string2,sizeof(string2),"~r~Tank:~g~ %s %d", Tank, Gas[VID]);
    format(string4,sizeof(string4),"~r~Zustand:~g~ %.1f",leben/10);
    TextDrawSetString(Tacho2[i], string);
    TextDrawSetString(Tacho3[i], string);
    TextDrawSetString(Tacho4[i],string1);
    TextDrawSetString(Tacho5[i],string4);
    TextDrawSetString(Tacho6[i],string2);
    }

    • Offizieller Beitrag

    Hi zusammen,
    sicherlich eine ziemlich dumme Frage, aber warum wird der Spieler nicht aus dem Fahrzeug gekickt, wenn er den rechten Dialogbutton drückt?


    case DIALOG_FAUTOHAUS:
    {
    if(response)
    {
    new id=GetPVarInt(playerid,"buyCarID");
    new fid=GetPVarInt(playerid,"Fraktion");
    new pr=GetPVarInt(playerid,"buyCarPreis");
    printf("1");
    if(GetPVarInt(playerid,"Money") < pr)
    {
    SCM(playerid,COLOR_GREY,"Du hast nicht genügend Geld.");
    RemovePlayerFromVehicle(playerid);
    printf("2");
    }
    else
    {
    printf("3");
    WithdrawPlayerMoney(playerid,pr);
    AddFrakCar(1708.1882,1286.8730,10.5252,359.1886,fid,id,FraktionsInfo[fid][f_Farbe],FraktionsInfo[fid][f_Farbe]);
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_YELLOW,"Du hast dieses Fahrzeug für deine Fraktion gekauft.");
    printf("4");
    }
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    }
    }


    Eine zweite Frage hätte ich auch noch:
    Ich überprüfe unter OnPlayerStateChange wenn ein Spieler ein Fahrzeug als Spieler betritt, ob er dieses Fahrzeug fahren darf (Job, Fraktion etc.). Wenn er es aber nicht darf, soll er rausgeworfen werden. Steigt der Spieler aber ein und fährt weiter, passiert nichts und er kann das Fahrzeug ohne Probleme fahren, bis er langsamer wird und/oder steht.


    Dazu auch nochmal den Code (Beispiel):
    if(IsAMedicCar(GetPlayerVehicleID(playerid)))
    {
    if(GetPVarInt(playerid,"Fraktion") != 2)
    {
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_GREY,"Du bist kein Sanitäter.");
    }
    }

  • Zu deine 2 Frage, probier es mal so.
    for(new i=0; i<sizeof(IsAMedicCar); i++)
    {
    if(GetPlayerVehicleID(playerid) == IsAMedicCar[i])
    {
    if(GetPVarInt(playerid,"Fraktion") != 2)
    {
    RemovePlayerFromVehicle(playerid);
    SCM(playerid,COLOR_GREY,"Du bist kein Sanitäter.");
    }
    }
    return 1;
    }

  • if(dialogid == DIALOG_COLOR)
    {
    if(response)
    {
    switch(listitem)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    GivePlayerMoney(playerid,-2500);
    GameTextForPlayer(playerid,"~r~KOSTEN: ~w~$2500",2500,3);
    case 0:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,3,3);
    return 1;
    }
    case 1:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,86,86);
    return 1;
    }
    case 2:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,106,106);
    return 1;
    }
    case 3:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,172,172);
    return 1;
    }
    case 4:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,6,6);
    return 1;
    }
    case 5:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,13,13);
    return 1;
    }
    case 6:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,0,0);
    return 1;
    }
    case 7:
    {
    SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    ChangeVehicleColor(vehicleid,1,1);
    return 1;
    }
    }
    }
    }


    Aufgrund diesem PAWN-Code spackt mein Compiler ab. Weiß jemand warum? Habe bereits einiges rumprobiert...

  • if(dialogid == DIALOG_COLOR)
    {
    if(!response) return 1;
    new vehicleid = GetPlayerVehicleID(playerid);
    GivePlayerMoney(playerid,-2500);
    GameTextForPlayer(playerid,"~r~KOSTEN: ~w~$2500",2500,3);
    switch(listitem)
    {
    case 0: ChangeVehicleColor(vehicleid,3,3);
    case 1: ChangeVehicleColor(vehicleid,86,86);
    case 2: ChangeVehicleColor(vehicleid,106,106);
    case 3: ChangeVehicleColor(vehicleid,172,172);
    case 4: ChangeVehicleColor(vehicleid,6,6);
    case 5: ChangeVehicleColor(vehicleid,13,13);
    case 6: ChangeVehicleColor(vehicleid,0,0);
    case 7: ChangeVehicleColor(vehicleid,1,1);
    }
    return SendClientMessage(playerid,COLOR_GREEN,"» Du hast dein Fahrzeug erfolgreich umgefärbt.");
    }


    Zwischen switch und case gehört nur switch und case ^^.
    Zudem ist diese Methode deutlich übersichtlicher :).


    L.G. :thumbup:

  • Warum wird KM und 0 Untereinander geschrieben:
    Tacho7[i] = TextDrawCreate(143.999969, 379.555419, "~w~ 0 Km");
    TextDrawLetterSize(Tacho7[i], 0.212666, 1.807404);
    TextDrawTextSize(Tacho7[i], 31.999998, 14.933333);
    TextDrawAlignment(Tacho7[i], 1);
    TextDrawColor(Tacho7[i], -1);
    TextDrawSetShadow(Tacho7[i], 0);
    TextDrawSetOutline(Tacho7[i], 1);
    TextDrawBackgroundColor(Tacho7[i], 51);
    TextDrawFont(Tacho7[i], 2);
    TextDrawSetProportional(Tacho7[i], 1);

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