Beiträge von Jeffry

    Weiß du was, schick mir doch einfach mal deine TeamViewer Daten per PN wenn du eh grade da bist, dann schau ich es kurz an. Das wäre geschickter, vor allem weil du, wie ich sehe, nicht den benötigten Code gepostet hast.



    EDIT1:
    Wir sind dran. Es liegt, Stand jetzt, an dem doch etwas komischen Aufbau des gesamten Codes. Morgen geht's weiter.


    EDIT2:
    Erledigt.
    Der Fehler war, dass mehrmals SetPlayerPos vor TogglePlayerSpectating(playerid, false) verwendet wurde.

    Kein Problem. Was genau verstehst du an dem Code nicht?


    Zwecks den Klicks mit dem Feuerlöscher: Nutze dafür http://wiki.sa-mp.com/wiki/OnPlayerWeaponShot mit der ID des Feuerlöschers. Du kannst dann mit IsPlayerInDynamicCP abfragen, ob der Spieler im Checkpoint ist. Wenn ja, entfernst du das Objekt mit DestroyObject(feuerobj); (das habe ich dir oben noch als Variable hinzugefügt.

    Vl könnt ihr mir jetzt weiter helfen :D


    Da ich ja knapp zwei Wochen fort war frage ich erst nach, bevor ich mir die Mühe mache deinen Code zu studieren:
    Besteht das Problem noch, oder konntest du es bereits lösen?

    new feuerch;
    new feuerobj;
    public FeuerRandom()
    {
    new string[145];
    new rand = random(sizeof(FeuerPos));
    feuerobj = CreateObject(18691, FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2],0,0,0,100.0);
    //SendClientMessage(playerid, 0x00CDFFFF, "Du hast ein Zufallsfeuer erstellt!");
    format(string,sizeof(string),"HQ: An alle Einheiten ein Feuer ist ausgebrochen!...");
    SendFamilyMessage(13,COLOR_RED,string);
    feuerch = CreateDynamicCP(FeuerPos[rand][0],FeuerPos[rand][1],FeuerPos[rand][2],10.0,-1,-1,-1,40.0);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(Spieler[i][Team] == 13)
    {
    TogglePlayerDynamicCP(i,feuerch,1);
    }
    }
    return 1;
    }


    public OnPlayerEnterDynamicCP(playerid, checkpointid)
    {
    if(checkpointid == feuerch)
    {
    GameTextForPlayer(playerid, "~g~FEUER IN SICHT!!", 5000, 2);
    }
    return 1;
    }
    Für das Löschen kommt es darauf an, wie du das machen willst. Per Befehl, per Klick, ... .


    Für löschbares Feuer könntest du auch sowas hier verwenden: http://forum.sa-mp.com/showthread.php?t=226953
    Generell kannst du ja auch von dem Code abgucken, wie es dort gemacht ist, oder du erstellst das Feuer einfach damit.

    Deshalb habe ich in der o.g. Pastebin mal ein Teil meines Scriptes gezeigt, wo ich vermute, dass da eine Andminabfrage enthalten ist.


    Dort ist keine Admin-Abfrage vorhanden. ;)
    Poste am besten einen deiner Admin-Befehle, den kompletten Befehl. Sowas wie /ban oder so, dort befindet sich eine solche Abfrage dann.

    Am besten du verwendest erst mal das Streamer Plugin für deine Checkpoints, da du sonst nur einen Checkpoint pro Spieler im Code gespeichert haben kannst:
    http://forum.sa-mp.com/showthread.php?t=102865


    Dann erstellst du den Checkpoint mit CreateDynamicCP und zeigst ihn den Spielern mit TogglePlayerDynamicCP an.


    Und dann kannst du einfach in OnPlayerEnterDynamicCP abfragen, ob der Spieler den Checkpoint betreten hat.



    Probiere das mal aus, und wenn du nicht weiterkommen solltest, poste nochmal den Code wie du ihn dann hast.

    Willkommen auf Breadfish!
    Gewöhne dir bitte in Zukunft an, den Code richtig zu postenm und nicht alles in einer Zeile. Falls du es nicht hinbekommst, kannst du alternativ http://www.pastebin.com nutzen. :)


    Zitat

    Einzige warnung in der serverlog [13:37:45] [MySQL] Error (0): Failed to exeute query. Field 'level' doesn't have a default value.


    Heißt:


    Das Feld "level" in der Datenbank hat keinen Standard-Wert. Gehe in deine Datenbank und setzen den DEFAULT-Wert von level zu 0, dann sollte der Fehler weg sein.

    Pascal.: Du hast die Überprüfung der Stufe vergessen.


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    if(GetPVarInt(playerid,"Stufe") != 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    new string[150];
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    new vID = CreateVehicle(487,419.8472,2503.8560,17.8609,89.4706,1,1,-1);
    SetPVarInt(playerid,"Flugzeug",vID);
    SetPVarInt(playerid,"fCP",0); //Setzen Checkpoint 0 (es wird ab 0 angefangen zu zählen)
    SetPlayerRaceCheckpoint(playerid, 3,fsCP[0][fx],fsCP[0][fy],fsCP[0][fz], fsCP[1][fx],fsCP[1][fy],fsCP[1][fz], 10); //Hier wird der Checkpoint erstellt & der 2 Checkpoint auch
    TextDrawShowForPlayer(playerid, usebox3);
    TextDrawShowForPlayer(playerid, arz);
    TextDrawShowForPlayer(playerid, info1);
    format(string,150,"Fliege mit dem Maverick~n~erneut den Rundflug.");
    TextDrawSetString(info1,string);
    SetVehicleVirtualWorld(GetPVarInt(playerid,"Flugzeug"),GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,vID,0);
    SetPVarInt(playerid,"Stufe",1);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    }
    if(GetPVarInt(playerid,"Prufung") == 1)
    {
    if(GetPVarInt(playerid,"Stufe") == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    SetPVarInt(playerid, "fCP", 0);
    new string[128];
    format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
    SCM(playerid,COLOR_GRAU,string);
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
    SetPlayerVirtualWorld(playerid,0);
    SetPVarInt(playerid,"Prufung",0);
    SetPVarInt(playerid,"Flugschein",1);
    DisablePlayerRaceCheckpoint(playerid);
    SavePlayer(playerid);
    SetPVarInt(playerid,"Stufe",0);
    }
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    return 1;
    }
    return 1;
    }
    DisablePlayerRaceCheckpoint(playerid);
    return 1;
    }

    COMMAND:arepairtzelle(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
    if(Spieler[playerid][pAdminOnduty] == false)return SendClientMessage(playerid,GRAU,"Du bist nicht im Admindienst.");
    new string[145];
    format(string,sizeof(string),"** %s repariert alle Telefonzellen **",SpielerName(playerid));
    PlayerTalkPublic(playerid,MEFARBE,string,10);
    for(new i=0; i<sizeof(TeleZelleInfo); i++)
    {
    if(TeleZelleInfo[i][EGmBhRubbishObject] != -1)
    {
    TeleZelleInfo[i][EGmBhTstamp] = gettime() + ((random(10) + 10)*60);
    new oldtzellenhp = TeleZelleInfo[i][EGmBhHp];
    TeleZelleInfo[i][EGmBhHp] = 100;
    format(string,sizeof(string),"%s (ID:%i) hat eine Telefonzelle repariert. | Die Fraktion erhält %i$ vom Staat.",SpielerName(playerid),playerid,TeleZelleInfo[i][EGmBhHp]-oldtzellenhp); //Beachte, dass diese Nachricht noch nicht gesendet wird, es folgt kein SendClientMessage, oder ähnliches.
    DestroyDynamicObject(TeleZelleInfo[i][EGmBhRubbishObject]);
    TeleZelleInfo[i][EGmBhRubbishObject] = -1;
    }
    }
    return 1;
    }


    Je nach dem wie du dein System aufgebaut hast klappt das. Wenn nicht, poste bitte die "ReturnTelefonzellenID" Funktion.

    Steht das unter OnPlayerDeath?
    Wenn ja:


    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Du bist nun für 5 Minuten auf dem Friedhof weil ein Contract auf dich ausgesetzt war!");
    }


    Du solltest auch prüfen, ob du nicht zuvor die pHeadValue auf 0 gesetzt hast.

    Anscheinend schon, sonst würde der Fehler ja nicht kommen.
    Möglicherweise nutzt ein Filterscript oder eine Include diese Funktionen.