[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
  • Hey,
    ich habe ein Problem bei meinem Clansystem.
    Und zwar möchte ich das mir ein Dialog angezeigt wird indem ich meinen Clantag eingeben kann
    Vorher habe ich allerdings einen Dialog wo ich den namen eintragen muss


    Weshalb ich abfrage ob es den Namen bereits gibt
    Es gibt ihn nicht aber mir wird der Dialog nicht gezeigt


    case DIALOG_CLAN_N:
    {
    new i = cErstellen[playerid];
    print("1");
    if(response == 0)
    {
    print("2");
    for(new c; c != _:Clan_Info; ++c)ClanInfo[i][Clan_Info:c]= 0;
    cErstellen[playerid] = 0;
    SendClientMessage(playerid,WEISS,"Du hast die Clangründung abgebrochen.");
    return 1;
    }
    else
    {
    print("3");
    if(strlen(inputtext) < 4 || strlen(inputtext) > 20)return ShowPlayerDialog(playerid,DIALOG_CLAN_N,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERTAG"{FFFFFF}: Clan [Name]","Wie möchtest du deinen Clan nennen?\nGebe bitte deinen gewünschten Clan Namen ein: \n\nDer Name muss zwischen 4 und 20 Buchstaben haben.","Weiter","Abbrechen");
    print("4");
    if(IsNumeric(inputtext))return ShowPlayerDialog(playerid,DIALOG_CLAN_N,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERTAG"{FFFFFF}: Clan [Name]","Wie möchtest du deinen Clan nennen?\nGebe bitte deinen gewünschten Clan Namen ein: \n\nDer Name darf keine Zahlen beinhalten","Weiter","Abbrechen");
    print("5");
    for(new c=1; i<MAX_CLANS;c++)
    {
    print("6");
    if(ClanInfo[code=c][cErstellt] != 0 && cErstellen[playerid] != i)//continue;
    {
    print("7");
    if(strcmp(ClanInfo[code=c][cName],inputtext,true) == 0)
    {
    print("8");
    return ShowPlayerDialog(playerid,DIALOG_CLAN_N,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERTAG"{FFFFFF}: Clan [Name]","Wie möchtest du deinen Clan nennen?\nDen Clan Namen gibt es bereits bitte wähle einen anderen.\n \nGebe bitte deinen gewünschten Clan Namen ein:","Weiter","Abbrechen");
    }
    }
    print("9");
    }
    print("10");
    format(ClanInfo[i][cName],35,"%s",inputtext);
    ShowPlayerDialog(playerid,DIALOG_CLAN_T,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERTAG"{FFFFFF}: Clan [Tag]","Was soll dein Clan-Tag sein?\n Gebe bitte deinen gewünschtes Clan-Tag ein:","Gründen","Abbrechen");
    return 1;
    }
    }


    In den ServerLogs stehen die Zahlen 34569
    Die 6 u. 9 stehen 50 mal drinnen da es 50 Clan's geben kann

  • Warum kommt eine Zahl nac hdem ersten Update welche sehr Lange ist:
    format(string2,sizeof(string2),"~r~Tank:~g~ %0.1f ", Tank, Gas[VID]);
    Gas[veh] -= vehgas[GetVehicleModel(veh)-400];
    new Float:vehgas[212] =
    {
    0.75,
    0.75,
    0.6,
    2.5,
    0.3,
    0.3,
    5.3,
    2.5,
    1.8,
    1.1,
    0.4,
    2.1, //Infernus
    0.6,
    0.4,
    0.3,
    1.4,
    0.8,
    15.1,
    0.9,
    0.7,
    0.4, //Taxi
    0.3,
    0.9,
    1.2,
    2.5,
    150.1,
    1.2,
    2.4,
    2.3,
    1.2,
    14.6,
    1.6,
    25.1, //rhino
    4.9,
    2.1,
    1.1,
    1.1,
    1.7,
    1.1,
    1.1,
    1.1,
    1.1, //RC Bandit
    1.1,
    2.5,
    7.1,
    1.1,
    15.1,
    15.1,
    0.3,
    0.5,
    1.1,
    2.5,
    7.4,

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • So:
    new Float:vehgas[212] =
    {
    0.75,
    0.75,
    0.6,
    2.5,
    0.3,
    0.3,
    5.3,
    2.5,
    1.8,
    1.1,
    0.4,
    2.1, //Infernus
    0.6,
    0.4,
    0.3,
    1.4,
    0.8,
    15.1,
    0.9,
    0.7,


    [pwn]for(new veh = 0; veh < MAX_VEHICLES; veh++)
    {
    if(MotorSystemMotor[veh] == true)
    {
    if(Gas[veh] > 0)
    {
    static tmpGas[MAX_VEHICLES];
    tmpGas[veh]++;
    if(tmpGas[veh] >= 16) //Hier einstellen. Je höher desto langsamer
    {
    if(IsAPlane(veh) || IsABoat(veh) || IsAFahrrad(veh))
    {
    Gas[veh] += 2;
    }
    Gas[veh] -= vehgas[GetVehicleModel(veh)-400];
    tmpGas[veh] = 0;
    }
    }
    else
    {
    ForAllPlayers(i)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerState(i) == 2)
    {
    if(GetPlayerVehicleID(i) == veh)
    {
    SendClientMessage(i, COLOR_YELLOW, "Boardcomputer: Tank leer, der Motor ist abgestorben.");
    }
    }
    }
    }
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(veh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
    MotorSystemMotor[veh] = false;
    }
    }
    }
    return 1;
    }[/pwn]

  • Nein, das zu der Zeile:
    format(string2,sizeof(string2),"~r~Tank:~g~ %0.1f ", Gas[VID]);
    bzw, falls du es geändert hast eben zu der neuen Version.
    Wie du auf "Tank" kommst, und wie "Gas" deklariert ist, so wie das aussieht ist das nämlich ein Integer. Das muss auch ein Float sein.

  • So:
    if(newstate == PLAYER_STATE_DRIVER){
    gLastCar[playerid] = GetPlayerVehicleID(playerid);
    new veh = GetPlayerVehicleID(playerid);
    new VID = GetPlayerVehicleID(playerid);
    new value,
    Float:xX,
    Float:yY,
    Float:zZ,
    Float:X,
    Float:Y,
    Float:Z;
    GetVehiclePos(VID, xX, yY, zZ);
    GetVehicleVelocity(VID, X, Y, Z);
    value = floatround(floatsqroot((X*X) + (Y*Y) + (Z*Z)) * 100 * 1.40);
    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~ %0.1f ", Tank, Gas[VID]);
    format(string4,sizeof(string4),"~r~Zustand:~g~ %",leben/10);
    format(string3,sizeof(string3),"~r~Kilometer:~g~ %d Km",floatround(Kilometer[veh]));
    TextDrawSetString(Tacho3[playerid], string);
    TextDrawSetString(Tacho4[playerid],string1);
    TextDrawSetString(Tacho6[playerid],string2);
    TextDrawSetString(Tacho5[playerid],string4);
    TextDrawSetString(Tacho7[playerid],string3);
    TextDrawShowForPlayer(playerid, Tacho[playerid]);
    TextDrawShowForPlayer(playerid, Tacho1[playerid]);
    TextDrawShowForPlayer(playerid, Tacho2[playerid]);
    TextDrawShowForPlayer(playerid, Tacho3[playerid]);
    TextDrawShowForPlayer(playerid, Tacho4[playerid]);
    TextDrawShowForPlayer(playerid, Tacho5[playerid]);
    TextDrawShowForPlayer(playerid,Tacho6[playerid]);
    TextDrawShowForPlayer(playerid, Tacho7[playerid]);
    TextDrawShowForPlayer(playerid, Tacho9[playerid]);
    new newcar = GetPlayerVehicleID(playerid);


    new Gas[MAX_VEHICLES];

  • Ändere mal:
    Gas[veh] -= vehgas[GetVehicleModel(veh)-400];
    zu:
    Gas[veh] = Gas[veh] - vehgas[GetVehicleModel(veh)-400];
    printf("Gas: %0.1f", Gas[veh]);


    Was wird geprintet? Oder geht es schon?
    Ist "Gas" und "vehgas" beides ein Float jetzt?


    PS: Sowas ist nächstes mal ein neuer Thread, da das keine kleine Scripting Frage ist.

  • Also so wie das aussieht weist du der Gas Variable doch irgendwo noch einen Integer zu.
    Denn bei dem anderen Fahrzeug geht es ja, oder warum kommt der print 2x?


    Ändere den print mal zu:
    printf("Gas: %0.1f | playerid: %d | veh: %d", Gas[veh],playerid,veh);


    Dann prüfe mal, ob du nicht irgendwo der Gas Variable doch noch einen Integer zuweist.
    Wenn du das gemacht hast, und die Änderungen hast, poste den Log nochmal, außer es geht dann.

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