Beiträge von Hagi

    Da bleibt eigentlich nur die Möglichkeit, dass das Auto in dem du dich befindest nicht als sapd car erstellt wurde.


    Mach den Code bitte mal so und poste was in die Log geprintet wird.



    printf("Eigenes Auto ID: %d",GetPlayerVehicleID(playerid));
    for(new i; i!=sizeof (sapdcars); i++)
    {
    printf("SAPD[%d]=%d",i,sapdcars[i]);
    if(GetPlayerVehicleID(playerid) == sapdcars[i])
    {
    if(GetPVarInt(playerid,"Fraktion")!=1)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,hellrot,"Du bist nicht beim SA-PD.");
    }
    }
    }

    Ich habs mit für die PS3 vorbestellt, ganz einfach aus dem Grund, dass ich keinen NASA PC für 2000 € besitze und es sonst eh nicht auf meinem PC laufen würde; Zumindest nicht mit guter Spielbarkeit (Ruckeln).


    Bei der PS3 ist die Grafik vllt, nicht ober mega hammer geil, was mir aber auch egal ist, da die Grafik gut genug sein wird. Und es wird mit Sicherheit besser laufen als auf meinem PC.

    Für alle gleichzeitig gibt es auch zwei Möglichkeiten.


    1:


    forward MotorLichttimer(playerid, Text:clickedid);
    public MotorLichttimer(playerid, Text:clickedid)
    {
    TextDrawHideForPlayer(playerid,MotorLicht);
    return 1;
    }
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i)) continue;
    SetTimerEx("MotorLichttimer",10000,0,"i",i);
    }


    Oder 2:


    forward MotorLichttimer( Text:clickedid);


    public MotorLichttimer(Text:clickedid)
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i)) continue;
    TextDrawHideForPlayer(i,MotorLicht);
    }
    return 1;
    }

    SetTimer("MotorLichttimer",10000,0);



    btw. clickedid kannst du auch rauswerfen wenn du es nicht verwendest.

    Du übergibst so keine Id, weshalb das nur für ID 0 ausgeführt wird. Entweder du sendest eine ID mit


    SetTimerEx("MotorLichttimer",10000,false,"i",id);


    Oder du machst es bei allen Spielern in der Funktion per for loop.


    public MotorLichttimer(Text:clickedid)
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i)) continue;
    TextDrawHideForPlayer(i,MotorLicht);
    }
    return 1;
    }


    Beim zweiten wird das dann für alle Spieler gleichzeitig disabled. Dann nur SetTimer verwenden. Brauchst dann auch keinen Parameter playerid mehr.
    Beim ersten wird es nur bei einem Spieler disabled

    Deine Tabelle könnte folgendermaßen aussehen


    Fahrzeuge = {TableRowID,Vehiclemodel,x,y,z,rotation,farbe1,farbe2,fraktion}


    Damit wäre deine Tabelle in allen drei Normalisierungen korrekt.


    TableRowID kannst du auf AutoIncrement setzen, da du die eigentlich nicht auslesen brauchst, sie aber als Primärschlüssel unabdingbar ist.


    Vehiclemodel,farbe1,farbe2 als Integer
    x,y,z,rotation als Float
    Fraktion als Varchar oder als Integer (je nachdem wie du das verwalten willst)


    Damit ist dann ein Fahrzeug in einem Tupel abgebildet

    Dann könnt ihr aber supcar nicht als Parameter für Destroy Vehicle nutzen.
    native IsValidVehicle(vehicleid);
    if(listitem == 0)
    {
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,Rot,"Du kannst kein Sup-Car spawnen, solange du in einem Auto sitzt!");
    new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid,x,y,z);
    Supcar[playerid] =CreateVehicle(556,x,y,z,a,0,1,-1);
    PutPlayerInVehicle(playerid,Supcar[playerid],0);
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if(IsValidVehicle(Supcar[playerid]) && vehicleid == Supcar[playerid])
    {
    DestroyVehicle(Supcar[playerid]);
    }
    return 1;
    }


    edit: ist natürlich CreateVehicle :D
    edit2: supcar variable vergessen die Deklaration rauszunehmen,da diese nicht mehr benötigt wurde

    es wird ja auch gar keine Datei erstellt, sondern nur versucht in eine zu schreiben und dein dini Int Set macht so auch kein Sinn:


    stock Tban(playerid,const string[],dauer,bannerid)
    {
    new timestamp,str[128],pfad[128];
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    new name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(bannerid,bannername,sizeof(bannername));
    format(str,sizeof(str),"AdmMsg: %s wurde von %s für %d Minuten gebannt",name,bannername,dauer);
    SendClientMessageToAll(ROT,str);
    format(str,sizeof(str),"Grund: %s",string);
    SendClientMessageToAll(ROT,str);
    new filestring[64];
    format(filestring,sizeof(filestring),"tbans\%s",name);
    if(!dini_Exists(filestring)
    {
    dini_Create(filestring);
    }
    dini_SetInt(filestring,"tbans",timestamp);
    Kick(playerid); // übern Timer machen oder von Hauke das kleine include nutzen
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    SpielerLaden(playerid);
    new string[300],string1[300],name[MAX_PLAYER_NAME],Spielerdatei[128],pfad[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(pfad,sizeof(pfad),"tbans\%s",name);
    new timestamp = gettime();
    new bisgebannt = dini_Int(pfad,"tbans");
    if(timestamp < bisgebannt) //wenn der gerade genommene Timestamp kleiner als bisgebannt ist, liegt das entbannungsdatum in der Zukunft.
    {
    new differenz = bisgebannt - timestamp; //wir subtrahieren bisgebannt von timestamp, wir erhalten also die Zeit in Sekunden wie lange der Spieler noch gebannt ist.
    new minuten = differenz / 60; //wir machen aus den Sekunden Minuten....
    new str[64]; //neuer String wird deklariert....
    format(str,sizeof(str),"Du bist noch %i Minuten gebannt!",minuten); //So bekommt der Spieler sogar noch angezeigt, wie langer er noch genau gebannt ist.
    SendClientMessage(playerid,ROT,str); //String wird dem Spieler ausgegeben
    Kick(playerid);//Kick erfolgt
    return 1;
    }
    format(Spielerdatei,sizeof(Spielerdatei),"/Test/%s.txt",name);
    if(dini_Exists(Spielerdatei))
    {
    format(string1,sizeof(string1),"{FAFAFA} Herzlich Willkommen zurück!\n Dein Benutzername: %s\n\nLogge dich nun mit deinen Daten(Passwort) ein!",name);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{DF7401}[SoA]: {FAFAFA}Login",string1,"Login","Abbrechen");
    }
    else
    {
    format(string,sizeof(string),"{FAFAFA} Herzlich Willkommen, Neuling %s!\n\n Damit du hier in der nächsten Zeit weiter hin spielen kannst,\n musst du dir als aller erstes ein Account anlegen!",name);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"{DF7401}[SoA]: {FAFAFA}Registrierung",string,"Register","Abbrechen");
    }
    return 1;
    }


    Dir fehlte erstens das erstellen der Datei und beim Connecten hast du den filestring nicht korrekt initialisiert, der war nämlich leer

    Gib uns mal bitte diemysql_SetInt Function.
    Wie siehts mit einer mysql_log aus? steht da irgendwas von Fehler mit Querys drin?

    Da führst du nach der if auch nur eine Methode aus. Ich meine, dass 1 die maximale Anzahl für den Compiler ist

    Das geht meiner Meinung nach nicht logisch in einer loop.


    for(new y = 0; y < sizeof(Feuerwehr); y++)
    {
    if(!IsValidVehicle(y))continue;//&& !IsValidVehicle(z))continue;
    GetVehiclePos(Feuerwehr[y],PX,PY,PZ);
    GetVehiclePos(Kreisbrandrat[y],PX,PY,PZ);
    if(IsPlayerInRangeOfPoint(playerid,10.0,PX,PY,PZ))
    {
    ShowPlayerDialog(playerid,DIALOG_EQUIP,DIALOG_STYLE_LIST,"Ausrüstung","Feuerlöscher\nKettensäge\nSchaufel\nNachtsichtgerät","Auswählen","Abbrechen");
    break;
    }
    else
    {
    continue;
    }
    }
    for(new y = 0; y < sizeof(Kreisbrandrat); y++)
    {
    if(!IsValidVehicle(y))continue;//&& !IsValidVehicle(z))continue;
    GetVehiclePos(Feuerwehr[y],PX,PY,PZ);
    GetVehiclePos(Kreisbrandrat[y],PX,PY,PZ);
    if(IsPlayerInRangeOfPoint(playerid,10.0,PX,PY,PZ))
    {
    ShowPlayerDialog(playerid,DIALOG_EQUIP,DIALOG_STYLE_LIST,"Ausrüstung","Feuerlöscher\nKettensäge\nSchaufel\nNachtsichtgerät","Auswählen","Abbrechen");
    break;
    }
    else
    {
    continue;
    }
    }

    Welche Positionen welches Autos möchtest du hiermit auslesen?


    GetVehiclePos(Vehicle[playerid], X, Y, Z);


    Die des Spielers (seines Autos) der den Command ausführt oder was?


    edit:


    Das hier ist übrigens logisch falsch.
    GetVehicleModel(playerid);
    Da müsste die VehicleID als Parameter angegeben werden. (Was sich jetzt wieder auf die Frage des Autos von oben bezieht)

    Was genau soll deine Abbruch Bedingung bei der for loop denn genau machen? Soll das eine Addition aus Feuerwehr und Kreisbrandrat sein oder was?


    btw. hör auf durch editen zu pushen oder vermerk was du editiert hast (Forenregeln)

    Du deklarierst Vehicle nicht als Array, benutzt es aber als eines.


    new Vehicle;
    Ganz normaler Integer
    Vehicle[playerid]
    Array


    Welches Auto willst du denn genau bei GetVehiclePos auslesen?

    Davon ausgehend, dass PlayerInfo[playerid][pReligon] als String deklariert ist, musst du format nutzen


    format(PlayerInfo[playerid][pReligon],sizeof(PlayerInfo[playerid][pReligon]),"Jewish");
    Oder du nutzt, wenn der String noch leer ist strcat


    strcat(PlayerInfo[playerid][pReligon],"Jewish");

    Mach des mal so


    if(IsPlayerConnected(pID) && !IsPlayerNPC(pID) && rank >= 0 && rank <= 5)//Die Error Zeile
    {
    format(string1, 128, "Admcmd: %s hat dich zum Admin Rang %i gemacht!", PlayerName(playerid), rank);
    format(string2, 128, "Du hast %s zum Admin Rang %i gemacht!", PlayerName(pID), rank);
    SendClientMessage(pID, Color_Admcmd, string1);
    SendClientMessage(playerid, Color_Info, string2);
    pData[playerid][pAdmin_Rank] = rank;
    }

    Es geht bei beiden, bei dini allerdings mehr schlecht als recht.


    Für dini benötigst du eine index file, in der alle Namen der anderen Spielerdateien gespeichert werden, da du sonst keinerlei Referenzen auf diese besitzt.


    Bei MYSQL ist es einfacher. Du liest einfach alle Tupel aus einer Tabelle aus. Im Grunde genommen recht es dort aus den Namen auszulesen, da dies in SAMP eigentlich immer der Primärschlüssel ist.


    SQL
    SELECT `Name` FROM Table


    DIese gehst du dann, je nach Plugin (BlueG oder Stricken) mit der jeweiligen Methode in einer while schleife durch


    Zitat von Housefrau

    while(mysql_retrieve_row()) //this will be running until all rows are processed
    {
    //you can use mysql_fetch_field and mysql_fetch_field_row here
    }