Beiträge von Jeffry

    Zitat

    [19:52:38] CMySQLHandler::FetchField(Geld) - You cannot call this function now. (Reason: Fields/Rows are empty.)


    Der Fehler ist hier:
    format(query,sizeof(query),"SELECT * FROM accounts WHERE `Name`='%s", SpielerName(playerid));
    Da fehlt ein ' nach %s.


    format(query,sizeof(query),"SELECT * FROM accounts WHERE `Name`='%s'", SpielerName(playerid));

    Dieser Teil berechnet den nächsten Flughafen:
    new Float:d = 2000000000.0, id = -1;
    for(new i=0; i<MAX_FLUGHAEFEN; i++)
    {
    new Float:tmp = GetPlayerDistanceFromPoint(playerid, Checkpoints[i][x],Checkpoints[i][y],Checkpoints[i][z]);
    if(tmp < d) d = tmp, id = i;
    }
    if(id == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Kein Flughafen gefunden.");


    Aber Achtung: Wenn du an dem Flughafen-CP dir den nächsten zeigen lässt, ist das logischerweise der selbe Flughafen.
    Willst du es so machen, dass dann der nächste Flughafen, der nicht der Flughafen ist auf dem man sich gerade befindet ist?


    Mit dem Geld am 2. CP:
    Spieler-Variable bei /work auf 0 setzen, und nach dem ersten CP auf 1 setzen, Geld nur geben wenn der Wert nicht 0 ist.

    Mach mal den debug modus an und poste was er dir ausgibt. Hast du alles richtig geschrieben?


    (Möglicherweise benutzt du ein anderes Plugin, versuch mal: mysql_fetch_field_row("Geld", data); wobei ich das nicht glaube, aber ein Versuch ist es dennoch wert.)

    #include <a_samp>


    entweder ganz als ersten über die <streamer> include, oder du schreibst es als erste Zeile in die streamer.inc.
    Sollte beides gehen, wobei letzteres meines Wissens nach besser ist, da lege ich mich aber nicht fest.


    EDIT:
    Wenn das auch nicht geht, dann hast du deine a_samp.inc vermacht.

    if(!ispassenger)
    {
    for(new i=0;i<sizeof(lspdcars);i++)
    {
    if(vehicleid == lspdcars[i])
    {
    if(Spieler[playerid][Team] == 1)
    {
    RemovePlayerFromVehicle(playerid);
    FreezePlayer(playerid);
    UnfreezePlayer(playerid);
    }
    else SendClientMessage(playerid, 0xFFF000FF,"Du kannst das Fahrzeug mit {FF0A00}/motor {FFF000}starten. Die Scheinwerfer können mit {FF0A00}/licht {FFF000}angeschaltet werden");
    }
    }


    Wenn das nicht das gewünschte Ergebnis hat, wer darf den einsteigen und wer darf losfahren?

    if (strcmp("/exit",cmdtext, true, 10) == 0)
    {
    if(IstInDM[playerid] != 1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nicht in DM.");
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,-2720.4309,-317.9237,7.8438);
    IstInDM[playerid] = 0;
    return 1;
    }


    xPatrick: Der Code wird so nicht funktionieren, du wirst immer wenn du einen anderen Command außer /exit und /dmarena eingibst die Meldung "Du bist nicht im DM Gebiet" bekommen, und in einer DM Arena kann kein Command mehr benutzt werden, also auch nicht /exit.

    Oben im Code:
    new IstInDM[MAX_PLAYERS];


    Wo er ins DM geht:
    IstInDm[playerid] = 1;


    Wo er es verlässt, bzw. wo er rausfliegt oder den Server verlässt:
    IstInDM[playerid] = 0;


    Abfrage:
    if(IstInDM[playerid] == 1) //in DM = Ja

    MisterDubstepHD:
    dcmd_go(playerid, params[])
    {
    new pid, Float:x, Float:y, Float:z;
    if(sscanf(params,"ufff",pid,x,y,z)) //fff anstatt ddd, Semikolon entfernt, Float:'s entfernt
    {
    SendClientMessage(playerid,hellrot,"Benutze: /go <Spieler-ID>");
    }
    if(IstSpielerAdmin(playerid, 2))
    {
    if(pid == INVALID_PLAYER_ID)
    {
    SendClientMessage(playerid,sonderrot,"FEHLER: Ungültige Spieler-ID");
    }
    else
    {
    GetPlayerPos(pid,x,y,z);
    SetPlayerPos(playerid,x+2,y,z);
    new string[100]; //Semikolon gefehlt
    format(string,sizeof(string),"ACHTUNG: Administrator %s hat sich zu dir teleportiert!",playerid);
    SendClientMessage(pid,sonderrot,string);
    new string2[100]; //Semikolon gefehlt
    format(string2,sizeof(string2),"ACHTUNG: Du hast dich zu %s teleportiert!",pid);
    SendClientMessage(playerid,sonderrot,string2);
    }
    }
    else
    {
    SendClientMessage(playerid,sonderrot,"FEHLER: Du hast nicht genügend Rechte dafür!");
    }
    return 1;
    }

    Hab mir mal 15 Minuten Zeit genommen:
    #include <a_samp>


    #define MAX_FLUGHAEFEN 2
    new Dodo[MAX_FLUGHAEFEN];
    new Shamal[MAX_FLUGHAEFEN];
    new Nevada[MAX_FLUGHAEFEN];


    enum Check
    {
    Float:x,
    Float:y,
    Float:z,
    Float:size
    };
    //Die Flughäfen
    new Float:Checkpoints[2][Check] = {
    {1576.9788,1391.3984,10.8483, 10.0},
    {-1364.0537,-215.1572,14.1484, 10.0}
    };


    public OnFilterScriptInit()
    {
    Dodo[0]=1;
    Dodo[1]=0;
    Shamal[0] = 0;
    Shamal[1] = 1;
    Nevada[0] = 1;
    Nevada[1] = 1;
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/work", true))
    {
    new Float:d = 2000000000.0, id = -1;
    for(new i=0; i<MAX_FLUGHAEFEN; i++)
    {
    new Float:tmp = GetPlayerDistanceFromPoint(playerid, Checkpoints[i][x],Checkpoints[i][y],Checkpoints[i][z]);
    if(tmp < d) d = tmp, id = i;
    }
    if(id == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Kein Flughafen gefunden.");
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,Checkpoints[id][x],Checkpoints[id][y],Checkpoints[id][z],Checkpoints[id][size]);
    new str[144];
    format(str, sizeof(str), "Info: Flughafen %d wird angezeigt. Erlaubte Flugzeuge:", id);
    SendClientMessage(playerid, 0x00FFFFFF, str);
    if(Dodo[id] == 1) format(str, sizeof(str), "Dodo", str);
    if(Shamal[id] == 1) format(str, sizeof(str), "%s, Shamal", str);
    if(Nevada[id] == 1) format(str, sizeof(str), "%s, Nevada", str);
    return SendClientMessage(playerid, 0x00FFFFFF, str);
    }
    return 0;
    }


    Falls was am Code unklar ist, frag einfach, ansonsten hoffe ich mal, dass du das verstehst, ist ja nicht so schwer.
    Wenn was nicht tut, erklär bitte was nicht funktioniert.

    Ich wollte mal fragen, ob man die Schrift vom TextDraw Fett schreiben lassen kann, außer das Font 3.


    Nein, außer du schaust bei den fonts nach.


    Doch, kann man. Wie?
    http://wiki.sa-mp.com/wiki/TextDrawSetOutline
    http://wiki.sa-mp.com/wiki/TextDrawBackgroundColor


    Wird die Backgroundcolor gleich der Schriftfarbe gesetzt und die Outline >=1 setzt (ich denke 1 reicht schon), dann kann man das als fett-geschrieben durchgehen lassen.
    Probiers mal aus ;)

    Dann warte bis dein Kollege aus'm Urlaub wieder da ist, ruf ihn an oder schreib ihm eine Mail.


    Er wird ja nicht grade im afrikanischen Dschungel Urlaub machen, ansonsten musste halt warten. Was du mit der .amx alleine willst verstehe ich sowieso nicht. Du weißt ja nicht mal welche Pfade für Dateien benutzt werden, wie eine möglich vorhandene Datenbank heißt, welches Passwort sie braucht und welche Files für den Server benötigt werden, plugins, configs etc.
    Und er wird dir sicher nicht "euren" (??) Server als .amx Datei geschickt haben. Eine .amx datei ist kein Server, sondern nur das, was der Server braucht um zu wissen was er tun soll, grob gesagt.
    Außerdem lädst du ja sogar noch die standard Filterscripts in deinem Server, wo liegt denn da der Sinn?
    Ohne etwas zu behaupten, aber deine Geschichte mit dem Kollegen hört sich doch etwas abenteuerlich an.

    Voll verbuggt und alles auf English kann vlt jemand helfen? wäre nice wenn jemand für mich ein Filterscript erstellt.. dann versteh ich das schon aber auf Deutsch :D


    1.) Genau dieser Code läuft seit über einem Jahr unverändert auf meinem Server so, da sind mit Sicherheit keine Bugs drin, sonst hätte es schon jemand entdeckt, das kannst du mir glauben.
    2.) Das es auf Englisch ist sollte doch nicht das Problem sein, den Code hast du ja schon, am Übersetzen sollte es wohl nicht scheitern, zudem dass ja eh kaum Texte ausgegeben werden.


    Ich will sie mit /pickupgun aufheben was passiert es steht auf English da das es aufgenommen wurde aber die Waffe auf dem Boden verschwindet und ich hab nix in der Hand...


    Interessanterweise gibt es diesem Befehl nicht mal in meinem FS, also kann auch nicht da stehen dass die Waffe aufgenommen wurde. :huh:


    Ansonsten, du kannst dir ja auch die benötigten Teile (...praktisch alles) rausziehen und "selbst" schreiben, mir egal.
    Aber wie gesagt, der Code ist ohne (bekannte) Fehler und ist Plug&Play Ready. Runterladen, einfügen, fertig.

    (Antwort auf Anfrage per PN)


    Zwecks den Checkpoints:
    Diese fallen bei maps innerhalb der Karte auf die Meeresoberfläche runter. Wenn du das umgehen willst, dann setze deine Maps außerhalb von der Karte hin (so ab ±3500), dann werden sie angezeigt. Das gilt auch für Racecheckpoints.


    Zwecks nächstem Flughafen:
    Distanz zwischen zwei Punkten berechnen: http://wiki.sa-mp.com/wiki/GetPlayerDistanceFromPoint
    Durch die Flughäfen loopen und die kleinste Flughafen ID nehmen.


    Zwecks der Kompatibilität:
    Am besten du machst einen Array für jedes Flugzeug: FlugzeugName[MAX_FLUGHÄFEN];
    Und dann sagst du 1 = erlaubt, und 0 = nicht erlaubt, also: FlugzeugName[5] = 1; <= für Flughafen ID 5 wäre dieses Flugzeug kompatibel.
    Dann einfach abfragen, ob 1 oder 0, und dann anzeigen oder nicht.
    Den Code musst du aber selber machen, bei Problemen kannst du ja fragen, aber es sollten eigentlich keine Probleme auftauchen, das ist relativ simpel.

    Also entweder du gibst im Code eine default-value an (z.B.) 0, oder du definierst diese in phpMyAdmin direkt (wenn du NaviCat benutzt weiß ich nicht wie es da geht, aber wohl ähnlich).
    Das ganze sähe so, oder ähnlich aus:


    Die Standard musst du ändern, am besten zu 0.