Beiträge von Jeffry

    schreibe es mal so


    Der Code wird so nicht funktionieren. Da fehlt das Array für die Spieler, und man kann das auch nicht unter OnGameModeInit erstellen, da gibt es ja keine playerid.


    Mache es so:
    Unter den Includes:
    new PlayerBar:barid[MAX_PLAYERS];


    Dann unter OnPlayerConnect:
    barid[playerid] = CreatePlayerProgressBar(playerid, 700.0, 500.0, 55.5, 3.2, 0xFF4800FF);


    Bei OnPlayerStateChange:
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new veh = GetPlayerVehicleID(playerid);
    SetPlayerProgressBarMaxValue(playerid, barid[playerid], /*Hier der MAX-TANK von veh*/);
    ShowPlayerProgressBar(playerid, barid[playerid]);
    }
    else
    {
    HidePlayerProgressBar(playerid, barid[playerid]);
    }


    Und bei OnPlayerDisconnect:
    DestroyPlayerProgressBar(playerid, barid[playerid]);

    Ob ein Spieler gespawnt ist und ob er das erste mal spawnt ist ein Unterschied ;)
    Deshalb, wenn du zum Beispiel in einem Befehl abfragen willst, ob der Spieler gespawnt ist, oder momentan tot ist, dann kannst du GetPlayerState nutzen. Aber ist ja kein Problem, deshalb kann man ja nachfragen.

    Dann musst du es so machen:
    Unter den Includes:
    new fName[5][16];



    Bei OnGameModeInit:
    fName[0] = "LSPD";
    fName[1] = "Zivilist";
    //...



    Und dann so:
    format(string, sizeof(string),"Du hast %s zum Leader der Fraktion %s gemacht!", sName, fName[frakid]);
    SendClientMessage(playerid, 0xFFFFFFFF, string);

    if(wantedlabel[playerid][i] == -1)
    zu:
    if(wantedlabel[playerid][i] == PlayerText3D:-1)


    Beachte aber, dass du bei OnGameModeInit alle Werte auf -1 setzen musst:
    for(new i = 0; i < MAX_PLAYERS; i++) for(new j = 0; j < MAX_PLAYERS; j++) wantedlabel[i][j] = PlayerText3D:-1;

    Scheint mir als willst du vierdimensionale Arrays anlegen, das geht nicht.
    Nutze im enum anstatt
    pcKeys_giver[MAX_PLAYER_NAME],
    Das
    pcKeys_giver1[MAX_PLAYER_NAME],
    //...


    (Bei deinem enum fehlt die vierte Dimension, deshalb speichert er nur den ersten Buchstaben, eine vierte Dimension könnte es aber auch nicht geben, daher einzelne Arrays. )


    Edit:
    Oder lagere die Namen im ein separates zweidimensionales Array aus, wenn du per Index auf den Namen zugreifen willst.

    Dann kannst du diese Funktion nutzen:
    stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(strfind(l_name,l_PlayerName,true)!=-1) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }


    Dazu dann:
    aList[playerid][i] = mid;
    zu:
    aList[playerid][i] = ReturnPlayerID(sautor);
    Ich nutze dieses, da ich keinen Sinn in "mid" erkennen kann (strval vom Query?).


    Und dann kannst du beim Dialog dann die ID so auslesen:
    new pID = aList[playerid][listitem];
    if(IsPlayerConnected(pID))
    {
    //...
    }

    mysql_function_query(MySqlConnection,"SELECT * FROM accounts WHERE",true,"OnQueryFinish","siii","SELECT * FROM accounts WHERE",_SQL_HAUSTIME_CHECK,haus+1,MySqlConnection);
    zu:
    mysql_function_query(MySqlConnection,"SELECT * FROM accounts",true,"OnQueryFinish","siii","SELECT * FROM accounts",_SQL_HAUSTIME_CHECK,haus+1,MySqlConnection);


    Insofern dort alle Häuser selektiert werden sollen.

    Unendlich groß geht nicht, da der Compiler den Speicher reservieren muss, und du hast ja keine unendlichen Ressourcen zur Verfügung.
    Wenn du diese Nachricht bekommen solltest, dann schaue wo du Speicher einsparen kannst, und/oder setze das hier unter den Includes hin:
    #pragma dynamic 10000


    Die Zahl kannst du auch größer machen, aber unendlich geht da auch nicht, auch dort ist irgendwann Schluss, also nicht übertreiben und für einen String der maximal 10 Zeichen lang wird 500 Zeichen reservieren.

    Versuche es so:
    ShowStats(playerid,targetid)
    {
    new sex[30],spawn[30],nextlevelcost,nextlevel;
    if(sInfo[playerid][gender] == 1) sex = "männlich";
    else if(sInfo[playerid][gender] == 2) sex = "weiblich";
    if(sInfo[playerid][spawnpoint] == SPAWN_LS) spawn="LS";
    else if(sInfo[playerid][spawnpoint] == SPAWN_SF) spawn="SF";
    nextlevel = sInfo[playerid][level]*4+8;
    nextlevelcost = sInfo[playerid][level]*25000;
    new ddays=0,dhours=0,dminutes=0,idays=0,ihours=0,iminutes=0;
    if(sInfo[playerid][donatortime] > 0)
    {
    new timenow=gettime();
    new dresttime=sInfo[playerid][donatortime]-timenow;
    ddays = dresttime/86400;
    dhours = (dresttime-ddays*86400)/3600;
    dminutes = (dresttime-(ddays*86400+dhours*3600))/60;
    }
    if(sInfo[playerid][invitesperre] > 0)
    {
    new timenow=gettime();
    new iresttime=sInfo[playerid][invitesperre]-timenow;
    idays = iresttime/86400;
    ihours = (iresttime-idays*86400)/3600;
    iminutes = (iresttime-(idays*86400+ihours*3600))/60;
    }
    new orgname[64];
    format(orgname,sizeof(orgname),"Keine Organisation");
    for(new i=0;i<sizeof(orgInfo);i++)
    {
    if(sInfo[playerid][orgid] != orgInfo[i][org_id]) continue;
    orgname = orgInfo[i][org_name];
    }
    new caption[50],string[1024],fID=sInfo[playerid][fraktion];
    format(caption,sizeof(caption),"Statistiken von %s",getPlayerName(playerid));
    format(string,sizeof(string),"[Account]\nLevel:[%i] Geschlecht:[%s] Alter:[%i] Spawnenergie:[%i] Geld:[$%s($+%s)] Tel.:[%i]",sInfo[playerid][level],sex,sInfo[playerid][older],sInfo[playerid][spawnhealth],GetPoint(sInfo[playerid][money]),GetPoint(sInfo[playerid][bank]),sInfo[playerid][number]);
    format(string,sizeof(string),"%s\nAccounttyp:[%s] Ehe:[%s] Spielzeit:[%s] Spawn:[%s] Respekt:[%i/%i] NextLevel:[%s$] Eventitems:[%i]",string,GetAccountTypeName(playerid),sInfo[playerid][ehe],GetPoint(sInfo[playerid][spielstunden]),spawn,sInfo[playerid][respekt],nextlevel,GetPoint(nextlevelcost),sInfo[playerid][eventitems]);
    if(sInfo[playerid][donator] == 1 && sInfo[playerid][invitesperre] > 0) format(string,sizeof(string),"%s\nVerwarnungen:[%i/3] Donator-Restzeit:[%i Tage, %i Stunden %i Minuten] Invitesperre:[%i Tage, %i Stunden %i Minuten] Minuten seit Payday:[%i]",string,sInfo[playerid][warns],ddays,dhours,dminutes,idays,ihours,iminutes,sInfo[playerid][paydaytime]);
    else if(sInfo[playerid][donator] == 0 && sInfo[playerid][invitesperre] == 0) format(string,sizeof(string),"%s\nVerwarnungen:[%i/3] Invitesperre:[Keine Invitesperre] Minuten seit Payday:[%d]",string,sInfo[playerid][warns],sInfo[playerid][paydaytime]);
    else if(sInfo[playerid][donator] == 1 && sInfo[playerid][invitesperre] == 0) format(string,sizeof(string),"%s\nVerwarnungen:[%i/3] Donator-Restzeit:[%i Tage, %i Stunden %i Minuten] Invitesperre:[Keine Invitesperre] Minuten seit Payday:[%i]",string,sInfo[playerid][warns],ddays,dhours,dminutes,sInfo[playerid][paydaytime]);
    else if(sInfo[playerid][donator] == 0 && sInfo[playerid][invitesperre] > 0) format(string,sizeof(string),"%s\nVerwarnungen:[%i/3] Invitesperre:[%i Tage, %i Stunden %i Minuten] Minuten seit Payday:[%i]",string,sInfo[playerid][warns],idays,ihours,iminutes,sInfo[playerid][paydaytime]);
    format(string,sizeof(string),"%s\n\n[Beruf]Team:[%s] Organisation:[%s] Rank:[%s] Job:[%s]",string,fInfo[fID][f_name],orgname,GetPlayerRankName(playerid),GetPlayerJobName(playerid));
    format(string, sizeof(string),"%s\n\n[Besitz]Materialien:[%i(+%i)] Drogen:[%ig(+%ig)] HackingCodes:[%i(+%i)/100] illegale Fische:[%i(+%i)]",string,sInfo[playerid][mats],sInfo[playerid][savemats],sInfo[playerid][drogen],sInfo[playerid][savedrogen],sInfo[playerid][codes],sInfo[playerid][savecodes],sInfo[playerid][fische],sInfo[playerid][savefische]);
    ShowPlayerDialog(targetid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,caption,string,"Schließen","");
    return 1;
    }


    Nutze diese Art von String-Verkettung auch in Zukunft, anstatt mehrere kleine Strings zu einem großen String zusammenzufügen.

    Die Datei wird in der while Schleife geschlossen, sprich es kann nur ein Fahrzeug gelesen werden.
    Versuche es so:
    stock LoadPlayerVehicle(playerid)
    {
    new readline[256];
    GetPlayerName(playerid,readline,MAX_PLAYER_NAME);
    format(readline,sizeof(readline),"gFahrzeuge/%s.car",readline);
    if(fexist(readline))
    {
    new File:csfile=fopen(readline,io_read);
    while(fread(csfile,readline))
    {
    new lpvid = -1;
    if(!strcmp(readline,"[0]",false,3)) lpvid=0;
    else if(!strcmp(readline,"[1]",false,3)) lpvid=1;
    else if(!strcmp(readline,"[2]",false,3)) lpvid=2;
    else if(!strcmp(readline,"[3]",false,3)) lpvid=3;
    else if(!strcmp(readline,"[4]",false,3)) lpvid=4;
    if(lpvid == -1) continue;
    PlayerVehicle[playerid][lpvid][pvModel]=strval(strpart(readline,1));
    PlayerVehicle[playerid][lpvid][pvX]=floatstr(strpart(readline,2));
    PlayerVehicle[playerid][lpvid][pvY]=floatstr(strpart(readline,3));
    PlayerVehicle[playerid][lpvid][pvZ]=floatstr(strpart(readline,4));
    PlayerVehicle[playerid][lpvid][pvA]=floatstr(strpart(readline,5));
    PlayerVehicle[playerid][lpvid][pvColor1]=strval(strpart(readline,6));
    PlayerVehicle[playerid][lpvid][pvColor2]=strval(strpart(readline,7));
    PlayerVehicle[playerid][lpvid][pvPaintjob]=strval(strpart(readline,8));
    PlayerVehicle[playerid][lpvid][pvID]=CreateVehicle(PlayerVehicle[playerid][lpvid][pvModel],PlayerVehicle[playerid][lpvid][pvX],PlayerVehicle[playerid][lpvid][pvY],PlayerVehicle[playerid][lpvid][pvZ],PlayerVehicle[playerid][lpvid][pvA],PlayerVehicle[playerid][lpvid][pvColor1],PlayerVehicle[playerid][lpvid][pvColor2],30);
    ChangeVehiclePaintjob(PlayerVehicle[playerid][lpvid][pvID],PlayerVehicle[playerid][lpvid][pvPaintjob]);
    for(new i=0;i<13;i++)
    {
    PlayerVehicle[playerid][lpvid][pvModSlot][i]=strval(strpart(readline,i+9));
    if(PlayerVehicle[playerid][lpvid][pvModSlot][i]!=-1) AddVehicleComponent(PlayerVehicle[playerid][lpvid][pvID],PlayerVehicle[playerid][lpvid][pvModSlot][i]);
    }
    }
    fclose(csfile);
    }
    return 1;
    }

    Sorry, hatte mich verschrieben.
    Tabellenname: tb_outstanding
    Datenbankname: dbdb_ (müsste existieren)


    Die Spalten siehst du in dem Query das ausgeführt wird, poste es gegebenenfalls.