Hilfe! Bekomme 1000 Nachrichten!

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
  • Hallo,
    ich will ein eigenes Car System erstellen und wenn man jetzt in ein kaufbares Car einsteigt erscheint ein Dialog ob man das Car kaufen will. Aber wenn ich jetzt 'Kaufen' drücke, dann bekomme ich 1000 Nachrichten: "Herzlichen Glückwunsch zu deinem neuen Fahrzeug!" Und mir wird der Geldbetrag 1000 Mal abgezogen. Helft mir pls!
    Mein Code:
    if(dialogid == VehDiag)
    {
    new name[24];
    if(response == 1)
    {
    for(new i = 1; i<MAX_AUTOS; i++)
    {
    format(path, sizeof(path), "/Fahrzeuge/car_%d.ini", i);
    if(!fexist(path))
    {
    GetPlayerName(playerid, name, sizeof name);
    dini_Create(path);
    dini_IntSet(path,"model", Car[i][model]);
    dini_FloatSet(path,"x", Car[i][x]);
    dini_FloatSet(path,"y", Car[i][y]);
    dini_FloatSet(path,"z", Car[i][z]);
    dini_FloatSet(path,"a", Car[i][a]);
    dini_Set(path, "key", Car[i][key]);
    GivePlayerMoney(playerid, -preis);
    CreateVehicle(modell, 1143.2175,-930.6667,43.1487,182.9721, -1,-1,-1);
    SendClientMessage(playerid, 0x00F20FF0, "Herzlichen Glückwunsch zu deinem neuen Fahrzeug!");
    RemovePlayerFromVehicle(playerid);
    }

    }

    }
    if(response == 0)
    {
    RemovePlayerFromVehicle(playerid);
    }
    }


    LG
    V1rus


    // Edit: Sorry, dass es so blöd eingerückt ist, aber der Editor eben...

  • Das liegt an der for(new schleife ;) .
    In dem berreich dieser schleife darf nichts mit ausser i, oder wieder die schleifen variable heisst hin.
    Und deine SendClientMessage hat playerid dranstehen ;).
    Da musst du die klammer frueher zu machen, und meinentwegen einen String definineren fuer die message, und die message hinter der schleife ausfuehren.
    Ausserdem zieht dir das Geld genau 499 mal ab, wenn du 500 Slot hast ;) .
    Nicht gleich 1000 mal xD.

  • Ja das mit der for Schleife ist mir klar, aber in dem Car System von BlackFox ist das auch so gemacht.
    Der Code:
    for(new i = 1;i<MAX_AUTOS;i++)
    {
    format(sform,sizeof sform,"autos/%d_auto.ini", i);
    if(!fexist(sform))
    {
    new preis_veh;
    for(new a = 0;a<sizeof(ShowCars);a++)
    {
    if(ShowCars[a][v_id] == GetPlayerVehicleID(playerid))
    {
    preis_veh = ShowCars[a][preis];
    }
    }
    if(GetPlayerMoney(playerid) < preis_veh)
    {
    TogglePlayerControllable(playerid,1);
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_WARN,"Du hast zu wenig Geld!");
    }
    new Float:bx,Float:by,Float:bz,Float:ba,found = 0;
    for(new j = 0;j<sizeof(show_ausgang_range);j++)
    {
    if(IsPlayerInRangeOfPoint(playerid,20.0,show_ausgang_range[j][0],show_ausgang_range[j][1],show_ausgang_range[j][2]))
    {
    if(!found)
    {
    bx = Fahrzeug_Spawn[j][0];
    by = Fahrzeug_Spawn[j][1];
    bz = Fahrzeug_Spawn[j][2];
    ba = Fahrzeug_Spawn[j][3];
    found = 1;
    }
    }
    }
    if(!found)
    {
    TogglePlayerControllable(playerid,1);
    RemovePlayerFromVehicle(playerid);
    return SendClientMessage(playerid,COLOR_WARN,"Dieses Auto ist zu weit vom Händler entfernt!");
    }
    dini_Create(sform);
    dini_IntSet(sform,"model",GetVehicleModel(GetPlayerVehicleID(playerid)));
    dini_FloatSet(sform,"x",bx);
    dini_FloatSet(sform,"y",by);
    dini_FloatSet(sform,"z",bz);
    dini_FloatSet(sform,"a",ba);
    dini_IntSet(sform,"key",i);
    dini_IntSet(sform,"farbe1",-1);
    dini_IntSet(sform,"farbe2",-1);
    dini_IntSet(sform, "islocked", 1);
    dini_Set(sform,"nummernschild", NummernSchild);
    PlayerAuto[i][vmodel] = GetVehicleModel(GetPlayerVehicleID(playerid));
    PlayerAuto[i][v_xc] = (bx);
    PlayerAuto[i][v_yc] = (by);
    PlayerAuto[i][v_zc] = (bz);
    PlayerAuto[i][v_ac] = (ba);
    PlayerAuto[i][n_xx] = (bx);
    PlayerAuto[i][n_yy] = (by);
    PlayerAuto[i][n_zz] = (bz);
    PlayerAuto[i][n_aa] = (ba);
    PlayerAuto[i][vfarbe1] = -1;
    PlayerAuto[i][vfarbe2] = -1;
    PlayerAuto[i][id_x] = CreateVehicle(PlayerAuto[i][vmodel],PlayerAuto[i][v_xc],PlayerAuto[i][v_yc],PlayerAuto[i][v_zc],PlayerAuto[i][v_ac],PlayerAuto[i][vfarbe1],PlayerAuto[i][vfarbe2],1200000);
    strmid(PlayerAuto[i][vkey],Spielername(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    dini_Set(sform,"key",PlayerAuto[i][vkey]);
    GivePlayerMoney(playerid,-preis_veh);
    PlayerAuto[i][preisx] = preis_veh/2;
    SendClientMessage(playerid,COLOR_GRUEN,"Glückwunsch zum neuen Auto!");
    TogglePlayerControllable(playerid,1);
    SetVehicleParamsForPlayer(i, playerid, 0,1);
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
    Hier ist SendClientMessage auch in der for Schleife, aber die Nachricht kommt nur 1 Mal ?( ?(

  • Nein die sind in der Schleife^^ Gug nochmal genau hin sieht nur schei*** aus wegen dem schei** Editor.

  • Ja GTA haengt sich dann auf weil es anscheinend keine500 cars auf einem Fleck anzeigen kann und ich muss gta beenden. auch werden 1000 datein im ordner scriptfiles 1000 dateien erstellt.

  • @ [XGF]Cedii wenn in einer Schleife der Wert angegeben wird, dass er bis 500 Zählen soll, dann ist die Zahl 500 inkludiert. Beim Array ist es eine Außnahme, weil 0 auch als Zahl gezählt wird, was dem Array eigentlich egal ist und einfach zu einer Zahl zählt.


    Nun zur Lösung. Die Sachen was mir nicht gefallen haben bzw. gefehlt haben wurden mit // kommentiert ^^.


    if(dialogid == VehDiag)
    {
    new name[24];
    if(response == 1)
    {
    for(new i = 1; i<MAX_AUTOS; i++)
    {
    format(path, sizeof(path), "/Fahrzeuge/car_%d.ini", i);
    if(!fexist(path))
    {
    GetPlayerName(playerid, name, sizeof name);
    dini_Create(path);
    dini_IntSet(path,"model", Car[i][model]);
    dini_FloatSet(path,"x", Car[i][x]);
    dini_FloatSet(path,"y", Car[i][y]);
    dini_FloatSet(path,"z", Car[i][z]);
    dini_FloatSet(path,"a", Car[i][a]);
    dini_Set(path, "key", Car[i][key]);
    GivePlayerMoney(playerid, -preis);
    CreateVehicle(modell, 1143.2175,-930.6667,43.1487,182.9721, -1,-1,-1);
    SendClientMessage(playerid, 0x00F20FF0, "Herzlichen Glückwunsch zu deinem neuen Fahrzeug!");
    RemovePlayerFromVehicle(playerid);
    return 1; //Das return fehlt hier in diesem Fall, damit der Code beendet / abgebrochen wird.
    }

    }
    //Hier sollte noch was gescriptet werden, was geschieht, wenn alle FahrzeugSlots verbraucht sind ^^.
    //Bedeutet halt soviel wie, wennn die Schleife durchgegangen ist und jeder Slot ein Auto besitzt,
    //arbeitet der Computer hier weiter, weil das return nur in Frage kommt, wenn ein Freier Slot verfügbar war.
    }
    if(response == 0) RemovePlayerFromVehicle(playerid); //Eine Zeile ist hübscher ^^
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!