[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
  • Zitat

    Streamer Plugin: Warning: Include file version (0x275201) does not match plugin version (0x27201) (script might need to be recompiled with the latest include file)


    Lade dir die neuste Streamer Plugin Version herunter, füge die neuste Include zu deinen Includes hinzu, kompiliere den Code neu und füge das neue Plugin in den Plugins Ordner ein.
    http://forum.sa-mp.com/showthread.php?t=102865

  • Beitrag von [KoSoVa] ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Guten Morgen, undzwar wie kann ich das am besten umsetzen, und abfragen ob das Teammitglied in dem Fraktionsfahrzeug, welches gelöscht werden soll sitzt? damit diese, wo er drinne sitzt auch gelöscht wird?


    zzt habe ich den Befehl wie folgt:


    ocmd:fcloeschen(playerid,params[])
    {
    new vID;
    if(sscanf(params,"d",vID)) return SendClientMessage(playerid,0x00D2D2FF,"Info: /fcloeschen [Vehicle ID]");
    if(vID <= 0) return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
    for(new i=0; i<MAX_FRAC_VEHICLES_ALLOWED; i++)
    {
    if(FrakVeh[i][fc_vID] == vID)
    {
    FrakVeh[i][fc_modelID] = 0;
    FrakVeh[i][fc_x] = 0.0;
    FrakVeh[i][fc_y] = 0.0;
    FrakVeh[i][fc_z] = 0.0;
    FrakVeh[i][fc_r] = 0.0;
    FrakVeh[i][fc_color1] = 0;
    FrakVeh[i][fc_color2] = 0;
    FrakVeh[i][fc_frakID] = -1;
    new query[128];
    format(query, sizeof(query), "DELETE FROM `Frakcars` WHERE fcID = '%d'", i);
    mysql_tquery(DBHandle, query);
    DestroyVehicle(FrakVeh[i][fc_vID]);
    FrakVeh[i][fc_vID] = 0;
    return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug wurde erfolgreich aus der Datenbank gelöscht.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • ocmd:fcloeschen(playerid,params[])
    {
    new vID;
    if(sscanf(params,"d",vID)){
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, 0xFF0000FF, "Error: Du sitzt in keinem Fraktions-Fahrzeug. -> Wenn du ein be");
    vID = GetPlayerVehicleID(playerid);
    }
    if(vID <= 0) return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
    for(new i=0; i<MAX_FRAC_VEHICLES_ALLOWED; i++)
    {
    if(FrakVeh[i][fc_vID] == vID)
    {
    FrakVeh[i][fc_modelID] = 0;
    FrakVeh[i][fc_x] = 0.0;
    FrakVeh[i][fc_y] = 0.0;
    FrakVeh[i][fc_z] = 0.0;
    FrakVeh[i][fc_r] = 0.0;
    FrakVeh[i][fc_color1] = 0;
    FrakVeh[i][fc_color2] = 0;
    FrakVeh[i][fc_frakID] = -1;
    new query[128];
    format(query, sizeof(query), "DELETE FROM `Frakcars` WHERE fcID = '%d'", i);
    mysql_tquery(DBHandle, query);
    DestroyVehicle(FrakVeh[i][fc_vID]);
    FrakVeh[i][fc_vID] = 0;
    return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug wurde erfolgreich aus der Datenbank gelöscht.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
    }


    Frei ausm Kopf, sollte gehen glaube ich :D
    Denke den Code verstehst du, oder soll ich den noch erklären?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Halo, ich bearbeite zurzeit ein FilterScript (Login/Register) doch komme nicht klar das mit meiner MySQL Datenbank zu verbinden.
    Kann mir da jemand helfen? Habe meine kostenlose MySQL Datenbank bei db4free.net, und im FS habe ich das so eingetragen:


    #define Host "db4free.net"
    #define User "kakarott"
    #define DB "kakarott"
    #define Password "zensiert"


    Ist das so richtig? Ich habe beim registrieren diese beiden Namen benutzt, doch das FS funktioniert Ingame nicht. (0 Errors beim compilen)

  • Ciao,


    hab ein Problem mit meinem stock GetLaune.



    stock GetLaune(playerid)
    {
    new laune[15];
    if(PlayerInfo[playerid][pLaune] >= 90) laune = "froehlich";
    if(PlayerInfo[playerid][pLaune] >= 70) laune = "gut";
    if(PlayerInfo[playerid][pLaune] >= 50) laune = "gelangweilt";
    if(PlayerInfo[playerid][pLaune] >= 30) laune = "traurig";
    if(PlayerInfo[playerid][pLaune] >= 20) laune = "depremiert";
    if(PlayerInfo[playerid][pLaune] >= 8) laune = "depressiv";
    if(PlayerInfo[playerid][pLaune] <= 6) SetPlayerHealth(playerid, 0.0);
    return laune;
    }


    Immer wenn ich mir die Laune auslesen lasse wird depressiv angezeigt. Obwohl meine Laune bei z.B 70 % also gut ist.

  • Setz mal aber der ersten Abfrage jeweils ein else if, anstatt nur ein if.
    Halt so:
    if(....)
    else if(...)
    else if(...)
    else if(...)
    Schau dann mal, ob das dann funktioniert. Falls nicht, dann printe dir vor der ersten Abfrage mal pLaune.


    => EDIT:
    Vielleicht solltest du die Abfragen auch in diesem Format strukturieren:
    if(PlayerInfo[playerid][pLaune] >= 90) laune = "froehlich";
    else if(PlayerInfo[playerid][pLaune] >= 70 && PlayerInfo[playerid][pLaune] < 90) laune = "gut";
    Das dann halt bei jeder Abfrage mit den entsprechenden Werten.

  • Danke dir daran lag es! Ist mir gerade etwas peinlich das ich so ein Fehler gemacht hab :S .


    // Edit
    Jeffry:


    format(str, sizeof(str), "~b~~h~Hygiene: ~g~frisch gewaschen");
    Warum wird mir hier nicht die Grüne Farbe angezeigt. Es wird alles bis auf Grün angezeigt.

    5 Mal editiert, zuletzt von malE ()


  • if(PlayerInfo[playerid][pHygiene] >= 90) {
    //beduerfniss = "frisch gewaschen";
    format(str, sizeof(str), "~b~~h~Hygiene: ~g~frisch gewaschen");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 70) {
    //beduerfniss = "gut";
    format(str, sizeof(str), "~b~~h~Hygiene: ~g~gut");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 50) {
    //beduerfniss = "schwitzend";
    format(str, sizeof(str), "~b~~h~Hygiene: ~y~schwitzend");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 30) {
    //beduerfniss = "stinkt";
    format(str, sizeof(str), "~b~~h~Hygiene: ~y~stinkt");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 20) {
    //beduerfniss = "schlecht";
    format(str, sizeof(str), "~b~~h~Hygiene: ~r~schlecht");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] <= 13) {
    new Float:hp;
    GetPlayerHealth(playerid, hp);
    SetPlayerHealth(playerid, hp - 12.0);
    }



    LauneTD[3] = TextDrawCreate(502.333404, 123.199996, ""); //bsp. Hygiene: schwitzend
    TextDrawLetterSize(LauneTD[3], 0.327333, 1.139554);
    TextDrawAlignment(LauneTD[3], 1);
    TextDrawColor(LauneTD[3], -1);
    TextDrawSetShadow(LauneTD[3], 0);
    TextDrawSetOutline(LauneTD[3], 1);
    TextDrawBackgroundColor(LauneTD[3], 51);
    TextDrawFont(LauneTD[3], 3);
    TextDrawSetProportional(LauneTD[3], 1);
    TextDrawShowForPlayer(playerid, LauneTD[3]);


    // Edit
    Ich schicke dir alles was zum Code dazuzgehört als PN. Ich möchte ungern den ganzen Code veröffentlichen auch wenn es nicht viel ist.

    Einmal editiert, zuletzt von malE ()

  • Also bei mir klappt das Grün.


    Was mir aber an deinem Code in PN aufgefallen ist:
    SetTimerEx("Laune", 60000*2, true, "u",playerid);
    zu:
    SetTimerEx("Laune", 60000*2, true, "d",playerid);


    u existiert bei SetTimerEx nicht, das ist eine Erfindung von sscanf.


    Außerdem, wenn du den Timer bei OnPlayerConnect startest, dann startest du ihn jedes mal wieder, wenn ein neuer Spieler verbindet, so hast du irgendwann 10 Timer auf der gleichen ID laufen.
    Sinnvoll wäre ein Timer, der eine Schleife durch alle Spieler enthält.

  • Du meinst das ?


    Bei OnGameModeInit

    SetTimer("Laune", 60000*2, true);



    forward Laune(playerid);
    public Laune(playerid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) && PlayerInfo[i][pLoggedIn] != true)continue;
    if(PlayerInfo[playerid][pPremium] == 1) {
    PlayerInfo[i][pLaune] -= 2;
    PlayerInfo[i][pHygiene] -= 2;
    PlayerInfo[i][pHarndrang] -= 2;
    GetLaune(i);
    GameTextForPlayer(i, "~d~ Beduerfnisse ~d~", 3000, 4);
    return 1;
    }else {
    PlayerInfo[i][pLaune] -= 3;
    PlayerInfo[i][pHygiene] -= 3;
    PlayerInfo[i][pHarndrang] -= 3;
    GetLaune(i);
    GameTextForPlayer(i, "~d~ Beduerfnisse ~d~", 3000, 4);
    }
    return 1;
    }
    return 1;
    }

    Falls du es anders meinst. Wie?


    Das mit den Farben könnte auch an mein Interface Mod liegen.
    Ansonsten danke das du dir mal wieder die Zeit genommen hast.