Beiträge von Goldkiller

    Nö.DCMD



    DCMD ist nur ein define.

    Du solltest dir vielleicht mal deinen Code anschauen und definitiv die Grundlagen lernen.


    else if(strcmp(key,"Schild",true)==0) { Carlist[playerid][Schild]=strval(ini_GetValue(Data)); }
    strval() hat da nichts zu suchen.Denn du willst nicht eine Zahl sondern einen String.

    Wenn überhaupt dann die letzte Methode.
    %i ist der Platzhalter für Integers, %s für Strings.
    format(var, 256, "Schild=%s\r\n", Carlist[playerid][Schild]); fwrite(CarFile, var);


    Wieso es nicht zu laden geht,weiss Ich nicht.Du hast ja nirgendwo gezeigt wie du den Kram aus der Datei ausließt.

    Sieht gar nicht gut aus,dein OnPlayerPickUpPickup :/.


    public OnPlayerPickUpPickup(playerid,pickupid)//wenn er ein pickup aufnimmt
    {
    if(pickupid == pickupZ[0]) {
    GivePlayerWeapon(playerid,24,100);//deagle - pickup (nummer 0)
    }
    else if(pickupid == pickupZ[1]) {
    GivePlayerWeapon (playerid,24,100); // m4 - pickup (nummer 1)
    }
    }

    Switch Statements kannst du dir hier anschauen,
    http://wiki.alliedmods.net/Pawn#Switch_Statements


    Allerdings ist hier ein switch gar nicht möglich ( wenn Ich mich richtig erinnere ).Du müsstest schon die normale if() Bedingung nutzen.


    Geht aber auch nicht.Paramter ist bei dir kein Array, würde als beim kompilieren einige Fehler geben :).

    Die Funktion nimmt auch an,eine Datei Namens "Teamchat.log" existiert bereits im scriptfiles Ordner.
    public Log(astr[])
    {
    new
    File:hFile,
    entry[256];
    format(entry, sizeof(entry), "%s\r\n",astr);
    if(!fexist("Teamchat.log")) { // Datei existiert nicht
    hFile = fopen("Teamchat.log",io_write); // Datei erstellen
    fclose(hFile); // Schließen
    return 0;
    }
    hFile = fopen("Teamchat.log", io_append);
    if(hFile) { // Datei wurde auch wirklich geöffnet
    fwrite(hFile, entry);
    fclose(hFile);
    return 1;
    }
    return 0;
    }


    //Edit : \r den Writer muss man auch an den Anfang der Zeile setzen :\

    Schau dir nochmal meinen Post an.


    Log(string[])

    Ein Paramter names string als Array


    Log("Teamchat.log", astr);
    Zwei Parameter. 2 Strings. In der Funktion ist schon standartmäßig die Datei Teamchat.log" als Log definiert.Daher nur


    Log(astr);

    new text[256];
    if(sscanf(params, "s[512]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /tc [Text]");

    Wenn text schon 256 Zellen brauch,dann sollte es beim sscanf als Array größe auch so angegeben werden,nicht 512.
    Außerdem kann mit dem SA:MP Chat maximal eine Zeichenkette von 128 übergeben werden.Ist also unnötiger dort irgendwelche Werte Höher als 128 zu nutzen.Lediglich für die Formatierung wäre es sinnvoll beim loggen.


    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(i,COLOR_TOMATO, astr);
    Log("Teamchat.log",astr); // Das hinzufügen...

    Das ist auch nicht so ganz richtig.
    Das Log() wird in der Schleife aufgerufen, es kann also öfters aufgerufen werden und somit in die Log gespamt werden.Auch soldest du format() nur einmalig vor dem Loop durchführen.Es ist doch immer der Gleiche String.


    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    //
    }
    Log(astr); // Das hinzufügen...

    Du weisst aber schon,dass
    Carlist[playerid][Schild]
    ein Array bzw String sein muss?


    Carlist[playerid][Schild][ SIZE ] musst genau so groß sein,wie das Array, das ihm zugewiesen wird.
    Angenommen es ist bei dir 10 Zellen groß, dann müsste der Code so aussehen:
    new sStr[10];
    format(sStr,sizeof(sStr),"%s",cmdtext[13]);
    SetVehicleNumberPlate(vehiclefid, sStr);
    Carlist[playerid][Schild] = sStr; // nicht cmdtext, denn damit wird es niemals funk. da die größe unbekannt ist
    SetVehicleToRespawn(vehiclefid);

    Farben, damit meinst du wohl Hexadezimale Werte.Die kannst du ganz normal in Variablen speichern.
    #include <a_samp>
    new
    color_red = 0xFF0000FF;
    main()
    {
    printf("color_red %d",color_red); // color_red -16776961
    }
    Wenn du sie in eine Datei schreiben willst, lass sie als Integer speichern und auch wieder auslesen.Das kannst du dann wieder ganz normal der Variable zuweisen.
    Am Beispiel von color_red wird dann -16776961 in die Datei geschrieben, denn hinter einem Integer verbirgt sich sichtbar immer nur der Dezimalwert.

    Das break ist auch falsch.Nach dem ersten durchlauf der Schleife wird sie durch das break beendet.Du hast das break im falschen Level, es müsste im folgenden Block sein:
    if(pickupid == WeapData[i][WepPickupID])
    {
    //
    break;
    }
    Bei dir ist es
    if(pickupid == WeapData[i][WepPickupID])
    {
    //
    }
    break;

    1. Benutzt einen ordentlichen Threadtitel
    2. Benutzt das pwn - Tag wenn du PAWN - Code anzeigen willst.
    3. Markier die Zeilen, damit man sieht, in welcher der Fehler ist!


    Nochmal so ein beknackter Threadtitel und du wirst verwarnt.

    Mh?
    Ich versteh dich jetzt nicht wirklich,muss aber auch zugeben GetVehicleParamsEx und SetVehicleParamsEx noch nie benutzt zu haben.Mir ging es lediglich um die Syntax.


    //Edit:

    Zitat

    //bonnet = false;unnötig
    //bonnet = true; unnötig


    Meinst wohl das. Ist ja eigentlich nur eine unnötige Verarbeitung.

    Grundlagen lernen.
    if(strcmp(cmdtext, "/motorhaube", true) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    if(bonnet == false)
    {
    SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_ON,boot,objective);
    //bonnet = true; unnötig
    SendClientMessage(playerid,0xFF0000,"Du hast die Motorhaube geöffnet!");
    }
    else
    {
    SetVehicleParamsEx(vid,engine,lights,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    //bonnet = false;unnötig
    SendClientMessage(playerid,0xFF0000,"Du hast die Motorhaube geschlossen!");
    }
    }
    return 1;
    }
    Müsste so sein,falls Ich den Code richtig verstanden habe.

    Wird es aber nicht. Wo kommt denn die Variable tmp her ? Setzt ja auch strok vorraus :-O!


    Eigentlich hättest für den behinderten Threadtitel schon eine Verwarnung verdient.