Beiträge von Jeffry

    Einen Skript der auf MySQL basiert ohne ein MySQL Plugin zu betreiben ist keine so gute Idee, ebenso wie ohne Datenbank. Das wird nicht funktionieren. Du musst eine Datenbank erstellen und diese über ein MySQL Plugin an das Skript anbinden.
    Schaue dir gegebenenfalls die Installationsanleitung des Gamemodes an von dem der das veröffentlicht hat. Alternativ schlage ich dir vor deinen Server selbst zu programmieren.

    ForAllPlayers(i)
    {
    GetPlayerName(i,botname,sizeof(botname));
    if(!strcmp(botname,"Intro_BMX",true))
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(i,x,y,z);
    new Float:cx,Float:cy,Float:cz;
    GetPlayerCameraPos(playerid,cx,cy,cz);
    InterpolateCameraPos(playerid,cx,cy,cz,x+1,y,z,14010,CAMERA_MOVE);
    InterpolateCameraLookAt(playerid,cx,cy,cz,x+1,y,z,14010, CAMERA_MOVE);
    }
    }


    Ich habe mich etwas falsch ausgedrückt. So war das gemeint.

    Dann hast du diese Variablen nicht zu Floats gemacht.
    User[i][Hitrate] = User[i][Hits] / User[i][Shots] * 100;


    Mach das zu
    User[i][Hitrate] = User[i][Hits] * 100 / User[i][Shots];


    Dann klappt die Rechnung.

    Nein, es muss hittype sein.


    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    User[playerid][Shots] ++;
    if(hittype == BULLET_HIT_TYPE_PLAYER){
    User[playerid][Hits] ++;
    }
    return 1;
    }
    So musst es machen.



    Und bei dem Textdraw solltest du beachten, dass die Shots nicht 0 sind, du darfst nicht durch 0 teilen. Am besten du setzt es dem Spieler schon auf 1 wenn er sich registriert, eben bevor er das erste mal das Textdraw sieht.

    Wenn du Integers miteinander teilst musst du, bzw kannst du, nicht mehr runden, die Nachkommastellen werden abgeschnitten.


    Du musst playerid verwenden, das ist die ID des Spielers der schießt.

    Die neuste Version die es zur Zeit gibt ist die 0.3z R3.
    http://files.sa-mp.com/samp03z_svr_R3_win32.zip


    Im Thread vom Plugin steht, dass nur 0.3z und 0.3z R1-2 unterstützt werden.
    Probiere entweder eine dieser Versionen oder die neuste.


    Hast du die Scripts auch neu kompiliert? Und wenn du es bei einer Hosting Gesellschaft laufen hast, hast du auf dem vHost auch die Server Version geändert?

    new carid = CreateVehicle(car, X,Y,Z, 0.0, color1, color2, 60000);



    zu:
    new carid = CreateVehicle(car, X,Y,Z, 0.0, color1, color2, 60000);
    LinkVehicleToInterior(carid, GetPlayerInterior(playerid));

    Nimm den "root" Benutzer ohne Passwort. Localhost solltest du nehmen, wenn die Datenbank auf dem gleichen Server liegt:


    #define MYSQL_HOST "127.0.0.1"
    #define MYSQL_USER "root"
    #define MYSQL_PASS ""
    #define MYSQL_DATA "DATENBANKNAME"


    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.

    Ändere das mal zu
    if(PlayerInfo[i][pMember] > 0) fraktion = PlayerInfo[i][pMember];
    if(PlayerInfo[i][pLeader] > 0) fraktion = PlayerInfo[i][pLeader];


    Das war vor ein paar Wochen schonmal der Fehler. Vielleicht dieses mal wieder.

    Lass es mal so laufen und sage uns dann, was im server_log geprintet wird.
    ocmd:makeadmin(playerid,params[])
    {
    if(!isAdmin(playerid,3500))return SendClientMessage(playerid,COLOR_WHITE,"Dir ist es nicht erlaubt, diesen Befehl zu benutzen");
    new pID,a_level;
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /makeadmin [Player ID] [Admin Level]");
    printf("1: pID: %d / level: %d",pID,a_level);
    sInfo[pID][alevel]=a_level;
    printf("2");
    GMRSavePlayer(pID);
    printf("ENDE");
    SendClientMessage(pID,COLOR_WHITE,"test.");
    SendClientMessage(playerid,COLOR_WHITE,"test.");
    return 1;
    }


    GMRSavePlayer(playerid)
    {
    printf("4: playerid: %d", playerid);
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,geld
    printf("5");
    new query[228];
    printf("6");
    format(query,sizeof(query),"UPDATE user SET='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][id]);
    printf("7");
    print(query);
    mysql_function_query(gmr,query,false,"","");
    printf("8");
    return 1;
    }


    EDIT:
    Und
    format(query,sizeof(query),"UPDATE user SET='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][id]);


    zu:
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][id]);


    EDIT2: Ansonsten mal den MySQL Debug anschalten.