Beiträge von Jeffry

    Teste es mal auf einem leeren Server, ich habe es einfach so getestet:

    Spoiler anzeigen
    #include <a_samp>
    #include <streamer>

    Spoiler anzeigen
    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }

    Spoiler anzeigen
    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(61,2094.7571,-2360.3594,13.8497,172.5058,0,0,0,0,0,0);
    CreateDynamicObject(11008, 2107.68848, -2348.51685, 19.49200, 0.00000, 0.00000, -90.00000,-1,-1,-1,300.0);
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 2094.7571,-2360.3594,13.8497);
    SetPlayerFacingAngle(playerid, 172.5058);
    SetPlayerCameraPos(playerid, 2093.974609, -2366.308105, 13.8497);
    SetPlayerCameraLookAt(playerid, 2094.7571,-2360.3594,13.8497);
    Streamer_UpdateEx(playerid,2107.68848, -2348.51685, 19.49200);
    return 1;
    }

    Da ging es einwandfrei.


    Möglicherweise hast du zu viele Objekte bereits geladen, schau mal bei F5 nach.

    Dann hast du bestimmt noch irgendwo einen Fehler drin, der die Variable nicht zurücksetzt oder überschreibt.
    Schreibe es so, das verhindert dann die Probleme:
    if(strcmp("/carinfo", cmd, true) == 0)
    {
    new TurStatus[90],Cars = 0,str9[1000],str[258],str8[258],Var = 0,status[50];
    for(new h = 0; h < MaxVeh[playerid]; h++)
    {
    printf("h: %d / playerid: %d / Typ: %d", h, playerid, Carlist[playerid][h][Carid]);
    if(Carlist[playerid][h][Carid] != -1)
    {
    new Float:x, Float:y, Float:z;
    GetVehiclePos(Carlist[playerid][h][Carid], x, y, z);
    printf("Pos: %f / %f / %f | Model: %d", x, y, z, GetVehicleModel(Carlist[playerid][h][Carid]));
    if(x == 0.0 && y == 0.0 && z == 0.0) continue;
    if(Carlist[playerid][h][Lock] == 0)
    {
    TurStatus = "{21DD00}Aufgeschlossen";
    }
    else
    {
    TurStatus = "{FF0000}Abgeschlossen";
    }
    if(Motorschaden[Carlist[playerid][h][Carid]] != 0)
    {
    status = "{FF0000}Motorschaden";
    Var = 1;
    }
    if(Var == 0)
    {
    if(CarAbgeschleppt[Carlist[playerid][h][Carid]] == 1)
    {
    status = "{FF0000}Abgeschleppt";
    }
    else
    {
    status = "{21DD00}Fahrtüchtig";
    }
    }
    format(str8,sizeof(str8),"{FFFFFF}Slot: %d | Fahrzeugname: %s | Fahrzeugtür: %s{FFFFFF} | Fahrzeugstatus: %s\n",h,Kaufliste[Carlist[playerid][h][Typ]][Name],TurStatus,status);
    printf("str8: %s", str8);
    strcat(str9, str8);
    Cars++;
    }
    }
    format(str,sizeof(str),"Du hast %d Fahrzeuge.",Cars);
    ShowPlayerDialog(playerid,542,DIALOG_STYLE_MSGBOX,str,str9,"Bestätigen","");
    return 1;
    }

    sowas eingefügt werden muss für pHP da es ja ein 3dlabel ist aber wie mache ich das dann .. :(


    Du machst einen Timer (OnPlayerTakeDamage ist schlecht, da es dann 0 ist, bis du einen Schaden bekommst) von einer Sekunde bei OnGameModeInit:
    SetTimer("updateTimer", 1000, 1);


    Das Label erstellst du als Array unter den Includes:
    new Text3D:label[MAX_PLAYERS];


    Und das schreibst du ganz unten in den Gamemode.
    forward updateTimer();
    public updateTimer()
    {
    new str[128];
    new name[MAX_PLAYER_NAME], Float:pHP;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
    GetPlayerName(i, name, sizeof(name));
    GetPlayerHealth(i,pHP);
    format(str, sizeof(str), "%s (%d)\n%0.2f", name, i, pHP);
    Update3DTextLabelText(label[i],0xFFFFFFFF,str);
    }
    return 1;
    }


    Außerdem musst du "label" zu "label[playerid]" bei OnPlayerConnect ändern, und das Label auch bei OnPlayerDisconnect wieder löschen.

    Schreibe den Befehl mal so, und poste dann was geprintet wird:
    if(strcmp("/carinfo", cmd, true) == 0)
    {
    new TurStatus[90],Cars = 0,str9[1000],str[258],str8[258],Var = 0,status[50];
    for(new h = 0; h < MaxVeh[playerid]; h++)
    {
    printf("h: %d / playerid: %d / Typ: %d", h, playerid, Carlist[playerid][h][Carid]);
    if(Carlist[playerid][h][Carid] != -1)
    {
    new Float:x, Float:y, Float:z;
    GetVehiclePos(Carlist[playerid][h][Carid], x, y, z);
    printf("Pos: %f / %f / %f | Model: %d", x, y, z, GetVehicleModel(Carlist[playerid][h][Carid]));
    if(Carlist[playerid][h][Lock] == 0)
    {
    TurStatus = "{21DD00}Aufgeschlossen";
    }
    else
    {
    TurStatus = "{FF0000}Abgeschlossen";
    }
    if(Motorschaden[Carlist[playerid][h][Carid]] != 0)
    {
    status = "{FF0000}Motorschaden";
    Var = 1;
    }
    if(Var == 0)
    {
    if(CarAbgeschleppt[Carlist[playerid][h][Carid]] == 1)
    {
    status = "{FF0000}Abgeschleppt";
    }
    else
    {
    status = "{21DD00}Fahrtüchtig";
    }
    }
    format(str8,sizeof(str8),"{FFFFFF}Slot: %d | Fahrzeugname: %s | Fahrzeugtür: %s{FFFFFF} | Fahrzeugstatus: %s\n",h,Kaufliste[Carlist[playerid][h][Typ]][Name],TurStatus,status);
    printf("str8: %s", str8);
    strcat(str9, str8);
    Cars++;
    }
    }
    format(str,sizeof(str),"Du hast %d Fahrzeuge.",Cars);
    ShowPlayerDialog(playerid,542,DIALOG_STYLE_MSGBOX,str,str9,"Bestätigen","");
    return 1;
    }


    Schaue ggf. mal an der Position die geprintet wird (wenn es nicht 0/0/0 ist) nach, ob das Fahrzeug dort steht. Wenn es dort steht, ist es auch geladen worden.

    Dann initialisierst du die Variable nicht richtig.
    Ändere bei PlayerCarConnect(playerid):
    format(string, sizeof(string), "cars/%dAutoNR%d.ini", PlayerInfo[playerid][pSQLID], h);


    zu:
    Carlist[playerid][h][Carid] = -1;
    format(string, sizeof(string), "cars/%dAutoNR%d.ini", PlayerInfo[playerid][pSQLID], h);



    Außerdem erstellst du bei deinem /findcar gar keinen Checkpoint. ;)

    Das passt eigentlich.
    Naja, mit manchmal fange ich halt nichts an. Was durchaus sein könnte ist, dass du das Limit der Objekte überschritten hast, und deshalb die Objekte nicht erstellt werden.


    Wenn es nicht klappt, kommen die Meldungen im Chat trotzdem, und nur die Objekte sind nicht da?

    Nimm den root Benutzer ohne Passwort:


    #define db_host "localhost" //Oder 127.0.0.01
    #define db_user "root"
    #define db_db "sampserver"
    #define db_pass ""


    Das ist in 99% aller Fälle standardmäßig so eingestellt.
    Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
    Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.

    Nicht ganz so, bei OnPlayerDeath macht die Abfrage keinen Sinn.



    Dort wo du in die Arena gehst:
    SetPVarInt(playerid, "inArena", 1);


    Dort wo du sie verlässt:
    SetPVarInt(playerid, "inArena", 0);


    Bei OnPlayerSpawn(!):
    if(GetPVarInt(playerid, "inArena") == 1)
    {
    //SetPlayerPos... in Arena setzen
    }
    else
    {
    //Normaler Spawn
    }

    Setze ganz unten bei OnPlayerSpawn:
    SetPlayerVirtualWorld(playerid, 0);


    Möglicherweise musst du da noch eine Bedingung hinzufügen, falls es irgendwann notwendig ist, dass man in einer anderen virtuellen Welt spawnt.


    Oder du suchst, wo die virtuelle Welt auf nicht 0 gesetzt wird und entfernst das.

    Das dürfte dann so klappen:
    ocmd:tblist(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    if(pInfo[playerid][pFraktion] <1)return SCM(playerid,COLOR_GRAU,"Du bist in keiner Fraktion!");
    if(pInfo[playerid][pFraktion] !=5)return SCM(playerid,COLOR_GRAU,"Du bist kein Trucker!");
    if(pInfo[playerid][pProdukte] <60)return SCM(playerid,COLOR_GRAU,"Du hast weniger als 60 Produkte, kauf erst welche.");
    new index,string[145];
    SCM(playerid,COLOR_GELB,"__________| Aufträge |__________");
    for(new i=0; i<sizeof(bsInfo); i++)
    {
    if(bsInfo[i][b_tauftrag] == 0)continue;
    index++;
    format(string,sizeof(string)," %i: Das Business (%i) braucht einen Lieferanten",index,bsInfo[i][db_id]);
    SendClientMessage(playerid,COLOR_GRAU,string);
    }
    if(index == 0) SCM(playerid,COLOR_GRAU,"Keine Aufträge Vorhanden.");
    return 1;
    }