Beiträge von Jeffry

    Kannst du bitte von nun an davon absehen, den gesamten Post (mit Code!) zu zitieren? Dafür wäre ich, und sicher auch viele andere, dir sehr dankbar. :)


    So, zurück zum Thema:
    Das
    for(new i=0; i<MAX_PLAYERS; i++)
    ist eine Schleife von 0 bis MAX_PLAYERS-1, wobei MAX_PLAYERS in der Include a_samp definiert ist (z.B. 500).
    i nimmt dabei bei jedem Durchlauf den nächsten Wert (++ = +1) an, also konkret 0,1,2,3,4,...498,499.


    Mehr dazu:
    http://wiki.sa-mp.com/wiki/Loops

    OnGameModeInit:
    SetTimer("PoliceNPCCheck", 500, 1);


    Unten im Code:
    forward PoliceNPCCheck();
    public PoliceNPCCheck()
    {
    new spName[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    GetPlayerName(i, spName, MAX_PLAYER_NAME);
    if(IsPlayerNPC(i) && !strcmp(spName, "NAME_DES_POLIZISTEN_HIER"))
    {
    GetPlayerPos(i, x, y, z);
    for(new j=0; j<MAX_PLAYERS; j++)
    {
    if(IsPlayerConnected(j) && j != i && IsPlayerInRangeOfPoint(j, 8.0, x, y, z))
    {
    SetPlayerChatBubble(i,"Guten Tag Sir.", WEISS, 100.0, 10000);
    return 1;
    }
    }
    return 1;
    }
    }
    return 1;
    }


    NAME_DES_POLIZISTEN_HIER logischerweise mit dem Spieler-Name des NPCs ersetzen.

    Dazu war ja der Link gedacht, aber gut...
    ocmd:carlock(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
    switch(doors)
    {
    case 0:
    {
    SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,1,bonnet,boot,objective);
    new string[144];
    format(string, sizeof(string), " Du hast soeben dein Fahrzeug (%s) {E10000}abgeschlossen", GetVehicleFriendlyName(GetPlayerVehicleID(playerid)));
    SendClientMessage(playerid,weiß, string);
    }
    case 1:
    {
    SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,0,bonnet,boot,objective);
    new string[144];
    format(string, sizeof(string), " Du hast soeben dein Fahrzeug (%s) {00FF00}aufgeschlossen", GetVehicleFriendlyName(GetPlayerVehicleID(playerid)));
    SendClientMessage(playerid,weiß, string);
    }
    }
    return 1;
    }


    GetVehicleFriendlyName: http://forum.sa-mp.com/showthread.php?t=106731

    ocmd:carlock(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
    switch(doors)
    {
    case 0:
    {
    SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,1,bonnet,boot,objective);
    SendClientMessage(playerid,weiß, " Du hast soeben dein Fahrzeug (Fahrzeugname) ~0xE10000FF~aufgeschlossen");
    }
    case 1:
    {
    SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,0,bonnet,boot,objective);
    SendClientMessage(playerid,weiß, " Du hast soeben dein Fahrzeug (Fahrzeugname) ~0x00FF00FF~abgeschlossen");
    }
    }
    return 1;
    }


    Dir Formatierung der Nachrichten bekommst selber hin, oder?
    http://wiki.sa-mp.com/wiki/Format_DE

    ocmd:glock(playerid,params[])
    {
    if(Spieler[playerid][GruppenID] == -1)return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist in keiner Gruppe!");
    new Float:xy,Float:yy,Float:zy;
    if(GetPlayerState(playerid)==PLAYER_STATE_ONFOOT)
    {
    for(new i=0;i<MAX_VEHICLES;i++)
    {
    for(new x=0;x<sizeof cInfo;x++)
    {
    GetVehiclePos(i,xy,yy,zy);
    if(IsPlayerInRangeOfPoint(playerid,3,xy,yy,zy))
    {
    if(i == cInfo[x][id_x] && Spieler[playerid][GruppenID] == cInfo[x][gowner])
    {
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(!doors)
    {
    SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
    return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~r~abgeschlossen",2000,4);
    }
    SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
    return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~g~aufgeschlossen",2000,4);
    }
    return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Das Fahrzeug gehört nicht deiner Gruppe!");
    }
    }
    }
    return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist in keiner Nähe vom Gruppenfahrzeug, oder sitzt in keinem!");
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(GetPlayerVehicleID(playerid) == cInfo[x][id_x] && Spieler[playerid][GruppenID] == cInfo[x][id_x])
    {
    GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
    if(!doors)
    {
    SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
    return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~r~abgeschlossen",2000,4);
    }
    SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
    return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~g~aufgeschlossen",2000,4);
    }
    return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Das Fahrzeug gehört nicht deiner Gruppe!");
    }
    return 1;
    }


    Sollte so passen.

    Lass es dir doch mal ausgeben:
    printf("MD5: %s", MD5_Hash(inputtext));
    printf("Input: %s", inputtext);
    printf("MySQL: %s", mysql_ReturnPasswort(SpielerName(playerid)));


    Vor die strcmp-Abfrage einfügen.


    Hast du das Passwort auch richtig in der Datenbank gespeichert, nicht dass du dich da vertippt hast, soll ja vorkommen.

    Das liegt an der Schleife.


    Die sollte so aussehen:
    for(new x;x<sizeof cInfo;x++)^
    {
    if(veh == cInfo[x][id_x] && cInfo[x][gowner] == Spieler[playerid][GruppenID])
    {
    format(query,200,"UPDATE gruppencars SET x='%f',y='%f',z='%f',r='%f' WHERE idd='%i'",Pos[0],Pos[1],Pos[2],Pos[3],cInfo[x][idd]);
    //hier muss natürlich noch mysql_query hin...
    printf("Veh: %d cInfo: %d",veh,cInfo[x][id_x]);
    return 1;
    }
    }
    return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist in keinem Gruppenfahrzeug!");


    Gewöhne dir bitte sofort wieder ab alles in eine Zeile zu schreiben, das zeugt nicht von Kompetenz, sondern ist einfach nur unübersichtlich.

    Achso, der gleiche Code, hättest das mal gleich gesagt. :D


    SetPlayerCheckpoint(playerid, RandomSpawn[rand][0],RandomSpawn[rand][1],RandomSpawn[rand][2], 5.0);


    Unter dem "createPlayerCar" einfügen.
    Dann hast du den Checkpoint dort wo das Auto ist (was du mit der Trucker Base meinst weiß ich nicht).

    Ok, füge bitte vor den beiden GiveMoney Folgendes ein und poste was geprintet wird:


    printf("%0.2f und %0.2f",_money,-_money);


    Damit wir erst mal wissen ob der Wert korrekt übergeben wird und nicht falsch berechnet wird.

    Zeig doch mal den Code mit den 10 und 13 Cents. Ich glaube das nicht so ganz, so stark ungenau sind die Floats auch nicht, das sind ja 30%. Die Abweichungen liegen eigentlich im Promille Bereich.


    Ich persönlich würde es nicht mit zwei Integers machen, nur so nebenbei.

    Zwei Variablen sind genauer als Floats, nur umständlicher beim Rechnen.
    Ein Float ist möglicherweise nicht so genau, außer du rundest es auf, dafür aber besser beim rechnen.


    Die Qual der Wahl liegt bei dir.

    if(dialogid == AUTO_FIND)
    {
    if(!response)return SendClientMessage(playerid,-1,"Suche wurde abgebrochen!");
    new veh, count = -1;
    for(new i; i != MAX_VEHICLES; ++i)
    {
    if(!sCarInfo[i][scName][0])continue;
    if(strcmp(PlayerName(playerid),sCarInfo[i][scName],false) == 0)
    {
    ++count;
    if(count == listitem)
    {
    veh = sCarInfo[i][real_vehicle_ID];
    break;
    }
    }
    }
    new Float:Pos[3];
    GetVehiclePos(veh,Pos[0],Pos[1],Pos[2]);
    format(string,sizeof(string),"Dir wurde ein Checkpoint gesetzt! (CarID: %i) - Mache wieder /carfind um den Checkpoint zu löschen!",veh);
    SendClientMessage(playerid,-1,string);
    return SetPlayerCheckpoint(playerid, Pos[0],Pos[1],Pos[2], 6);
    }
    So?

    Zitat

    [18:34:47] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM autos WHERE besitzer='0'", callback: "onPlayerCarLoad", format: "i"


    Du hast das Auto mit Besitzer = 1 angelegt in der Datenbank. Somit wird es nicht gefunden.




    EDIT:
    Code:
    public OnPasswortResponse(playerid)
    {
    new num_rows, num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Richtig
    sInfo[playerid][eingellogt]=1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][id] = cache_get_field_content_int(0,"id",dbhandle);
    sInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"adminlevel",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"geld",dbhandle));
    loadPlayerCars(playerid);
    }
    else
    {
    //Falsch
    SendClientMessage(playerid,rot,"Falsches Passwort!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gib bitte dein Passwort ein","Login","Abbrechen");
    }
    return 1;
    }


    So ist es richtig.