Beiträge von Hagi

    Ein Screen sagt jetzt wenig aus, aber auf so ein kleines Gelände hunderte Objecte zu klatschen kommt auch nicht gut.
    Also ich finde das mit den wenigen Objecten schon viel besser als die alte Ruine vorher. Jedoch fehlt noch irgentetwas kleines, was dem ganzen noch eine besondere Note verleihen würde.


    Also V2 wird bestimmt nocht besser. Aber erstmal: Sehr schön.

    Also du sagtst, der Label wird nicht erstellt aber du willst ihn löschen?


    Nebenbei funktioniert das dann immer nur für einen Spieler. Wenn mehrere Spieler sterben wirds durcheinander kommen.


    Also so:



    public OnPlayerDeath(playerid, killerid, reason)
    {
    SetPVarInt(playerid,"TP",CreatePickup.....);
    new string[128],Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);

    format(string, sizeof(string), "%s", SpielerName(playerid));
    SetPVarInt(playerid,"TL",Create3DTextLabel(string,0x0A0A0AFF,x,y,z,40.0,0));
    SetTimerEx("tot",10000,false,"i",playerid);
    }


    public tot(playerid)
    {


    DestroyPickup(GetPVarInt(playerid,"TP"));
    Delete3DTextLabel(GetPVarInt(playerid,"TL"));
    }

    format liefert auch keinen Error wenns die falsche Variablenart ist.
    Das Problem liegt daran, dass wir nur immer Bruchstücke des Code, z.B. des Commands erhalten und so nicht schließen können wie genau (result) im Zusammenhang zu sehen ist.
    Also bitte Poste mal den kompletten Command.

    Ausgehend von deiner letzten Lösung kann es nur zwei Fehlerquellen geben.



    if(PlayerInfo[playerid][pMember] == 6 || PlayerInfo[playerid][pLeader] == 6)
    if (PlayerToPoint(3.0,playerid,2597.7322,1900.3004,11.0312))


    Entweder du bist einfach nicht in der Fraktion, zumindest nicht in der Variable oder die Koordinaten stimmen nicht.
    Mach mal das hier in den Code:


    if(strcmp(cmdtext, "/enter", true) == 0)
    {
    // dann das hier hinzufügen
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    printf("X: %f, Y: %f, Z: %f || Fraktion: %d | %d",x,y,z,PlayerInfo[playerid][pMember],PlayerInfo[playerid][pLeader);


    Dann kannste sehen mit welchen Werten die Funktion tatsächlich arbeitet.

    if(playercp == sizeof(FSCheckpoints))
    {
    FSCP[playerid][pmi_bAktiv]=false;


    new Float:ch;
    GetVehicleHealth(vehicleid,ch);
    if(ch >= 500.0)
    {
    SendClientMessage(playerid, COLOR_GREEN, "Super du hast deinen Motorradschein Geschafft");
    SetPVarInt(playerid,"Motorradschein",1);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, "Du hast deinen Motorradschein nicht bestanden");
    }
    }


    Einfach ne Abfrage auf die VehicleHealth reinmachen

    Du fährst schon alle ab, nur halt immer den gleichen, da immer der gleiche Checkpoint erstellt wird, wenn du noch nicht alle erreicht hast:


    SetPlayerCheckpoint(playerid,FSCheckpoints[0][M_fX],FSCheckpoints[0][M_fY],FSCheckpoints[0][M_fZ],FSCheckpoints[0][M_fRad]);
    Die Null im ersten Index bedeutet, dass der erste Checkpoint erstellt wird.


    Ändere die Zeile wie folgt:


    SetPlayerCheckpoint(playerid,FSCheckpoints[FSCP[playerid][pmi_Checkpoint]][M_fX],FSCheckpoints[FSCP[playerid][pmi_Checkpoint]][M_fY],FSCheckpoints[FSCP[playerid][pmi_Checkpoint]][M_fZ],FSCheckpoints[FSCP[playerid][pmi_Checkpoint]][M_fRad]);

    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    SetVehicleToRespawn(vehicleid);
    return 1;
    }


    Einfach beim Aussteigen (OnPlayerExitVehicle ; alt. OnPlayerStateChange) das Car auf Respawn setzen.

    Hattest eine Klammer an der falschen Stelle, sodass deine Abfragen durcheinander kamen.



    if(strcmp(cmdtext,"/dienst",true) ==0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 1.0, 255.0078, 77.1921, 1003.6406))
    {
    if(gTeam[playerid] == TEAM_POLIZEI)
    {
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    GivePlayerWeapon(playerid, 3, 1);
    GivePlayerWeapon(playerid, 24, 99999);
    GivePlayerWeapon(playerid, 27, 99999);
    GivePlayerWeapon(playerid, 31, 99999);
    GivePlayerWeapon(playerid, 41, 99999);
    SendClientMessage(playerid, LILA, ".:: Du bist nun im Dienst ::.");
    }
    else
    {
    SendClientMessage(playerid, GRAU, ".:: Das kann nur die Polizei ::.");
    }
    }
    else
    {
    SendClientMessage(playerid, GRAU, ".:: Du bist nicht an der Umkleidekabine ::.");
    }
    return 1;
    }

    Ich denke mal das soll so sein oder ?


    public log(logtext[])
    {
    new File:logfile=fopen("/logs.txt", io_append);
    new hour, minute, second, string[800];


    gettime(hour, minute, second);
    format(string, sizeof(string), "[%d:%d]%s\n", hour, minute, logtext);
    fwrite(logfile, string);
    fclose(logfile);
    }

    Haste denn was am GameMode geändet ?
    Immerhin vergeht ja bis über ne Stunde bis der Server crasht oder aus geht


    Zitat

    [03:14:19] Number of vehicle models: 48
    [04:10:36] --- Server Shutting Down.


    Dann würde es nahe liegen, wenn irgentwas im Script das auslöst.

    Also das Wiki sagt uns folgendes: Limits
    Text I/O 128 cells (512 bytes)


    Also kann der Text 128 Zellen (gleich 512 bytes) enthalte.


    edit: ASCII nutzt 7 Bit strukturen, welche jeweils zwei Werte (1 u 0) annehmen können. 2^7 = 128.

    Haste auch die Variable unter OnPlayerConnect auf -1 gesetzt ?


    SetPVarInt(playerid,"CAR",-1);



    Ansonsten wird nichts passieren wenn man den Dialog aufruft.


    Thoretisch dürfte das aber nichts mit dem anzeigend es Dialogs machen, da OnDialogResponse erst aufgerufen wird wenn ein Butteon gedrückt wird

    Zitat

    This callback is called when a player presses any of the buttons on the dialog created using ShowPlayerDialog.


    Sicher, dass du an der Art wie du den Dialog aufrufst nichts verändert hast ?

    Ja das tut sie.


    Wenn du immer nur ein Auto pro spieler machen willst, dann weis die Carid doch einer variable zu:



    // OnPlayerConnect


    SetPVarInt(playerid,"CAR",-1);


    // Dialog Response


    if(dialogid == vehicle)
    {
    if(GetPVarInt(playerid,"CAR") != -1)
    {
    if(response)
    {
    if(listitem == 0) //Super GT
    {
    new Float:x, Float:y, Float:z,Float:rot;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid,rotz);
    SetPVarInt(playerid,"CAR",AddStaticVehicleEx(506,x,y,z,rot,0,0,-1));
    }
    if(listitem == 1) //
    {
    // hab noch nicht weiter gemacht!
    }
    }
    }
    }


    //OnPlayerExitVehicle


    DestroyVehicle(GetPVarInt(playerid,"CAR"));
    SetPVarInt(playerid,"CAR",-1);

    Hab bis heute morgen noch die aktuellste Version des 3. Firefox genutzt. Jedoch habe ich mir dann doch endlich Firefox 4 geholt, weil man ja nix großartiges negatives gehört hat. Man weiß ja nie, wie sich neue Versionen verhalten.