Beiträge von Nexor

    Ist doch logisch warum es nicht funktioniert, mach die sscanf abfrage vor der abfrage ob der user gecufft ist den die variable aID ist auf 0 denn sie wird erst danach befüllt aber da die ID 0 nicht gecufft ist wird halt ausgegeben das er nicht gecufft ist

    Ja aber du willst doch von der Datenbank etwas :D num_rows2 wird bei diesem Code IMMER 1 sein da wenn es nicht 1 wäre garnicht soweit kommen würde da es ganz am anfang die Abfrage if(num_rows==1) gibt. Du frägst einfach nur 2mal ab wieviele Datensätze die Tabelle accounts oder wie auch immer du sie genannt hast hab bzw ob das eingegebene Passwort mit dem aus der datenbank übereinstimmt. also anstelle von der zweiten cache_get_data einfach eine neue Abfrage bei der du erneut die Datenbank ansprichst. Es kann sein das ich mit dem völlig falsch liege ich würde es so machen und bin mir dabei auch ziemlich sicher das es stimmt :D

    Du sprichst doch garkeine Datenbank an ? Du müsstest eine neue query erstellen mit der Abfrage die du haben willst bspw: SELECT * from SPAWNS
    Aber warum hast du da überhaupt eine forschleife drin ? Du Lässt den Spieler dann an jedem Spawn spawnen und am letzen in der Datenbank bleibt er dann

    new Float:FPosX,Float:FPosY,Float:FPosZ,Float:FPosRT,int,vir;
    new num_fields2,num_rows2;cache_get_data(num_rows2,num_fields2,dbhandle);
    if(!num_rows2)return 1;
    for(new i=0; i<num_rows2; i++)
    {FPosX = cache_get_field_content_float(i,"SpawnX",dbhandle);
    FPosY = cache_get_field_content_float(i,"SpawnY",dbhandle);
    FPosZ = cache_get_field_content_float(i,"SpawnZ",dbhandle);
    FPosRT = cache_get_field_content_float(i,"SpawnRT",dbhandle);
    int = cache_get_field_content_int(i,"SpawnInt",dbhandle);
    vir = cache_get_field_content_int(i,"SpawnVir",dbhandle);
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], FPosX,FPosY,FPosZ,FPosRT, 0, 0, 0, 0, 0, 0 );
    SetPlayerInterior(playerid,int);
    SetPlayerVirtualWorld(playerid,vir);
    SpawnPlayer(playerid);
    }


    Schätze mal du musst erst num_rows2 befüllen bevor du abfragen kannst ob was drin is :b also habs dir mal an die richtige Stelle gesetzt

    Hallo,
    erstmal möchte ich mich bedanken, ich finde das Programm mega!
    Aber noch eine kleine Bitte: Könntest du (zumindest in den Einstellungen einstellbar) das man wie beim Standartprogramm das man etwas bei der Suchfunktion sucht es komplett nach oben springt und von oben nach unten durchsucht, finde ich etwas praktischer. Wäre echt geil!


    Mit freundlichem Gruß
    Moritz

    Ist samp for you auch offline ? Komme nichtmehr auf die Seite drauf und mein Keybinder (in verbindung mit der Datenbank von Sampforyou) funktioniert nichtmehr.
    Könnte aber auch sein das es nur bei mir so ist....


    MFG
    Moritz

    Okay dann bin ich jetzt echt Ratlos :D wie gesagt hab mich damit schon länger nichtmehr beschäftigt :D speicher einfach dort auch die Playerid rein so wie beim Admin und dann frag dort wo du den Namen brauchst einfach den Namen ab und fertig :D


    versuchs mal so



    new Name[MAX_PLAYER_NAME];
    GetPlayerName(pID, Name, sizeof(Name));//ERRORS
    format(SpielerTimeBan[pID][pNameTBan], sizeof(SpielerTimeBan[pID][pNameTBan]), "%s", Name);

    Dies entspricht die Zeile des ersten Warning:


    CreateObject(8390, 1472.90002, -2540.19995, 31.9, 0, 0, 270);


    http://wiki.sa-mp.com/wiki/CreateObject


    schau dir mal diese Seite an und überprüf die "Argumente" sprich die Parameter ( die Sachen die in der Klammer setehen getrennt durch ein Komma ).
    Der Fehler kommt daher das die Funktion CreateObject 8 Parameter benötigt (welche sind auf der Seite zu entnehmen) und du hast nur 7 angegeben.


    Mit freundlichem Gruß
    Moritz


    Jeffry: Alles klar ich verwende eh eigendlich nur stocks da ich keine Lust hab forwards zu machen.:D

    also GetPlayerName(deineid,sizeof(indergrössevon),speichervariable);


    nein genau nicht so. Les dir http://wiki.sa-mp.com/wiki/GetPlayerName durch.


    und hier das beispielscript dazu


    public OnPlayerConnect(playerid)
    {
    // Get the name of the player that connected and display a join message to other players

    new name[MAX_PLAYER_NAME], string[24+MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));

    format(string, sizeof(string), "%s has joined the server.", name);
    SendClientMessageToAll(0xC4C4C4FF, string);

    return 1;
    }


    Hier kannst du sehen das es nicht id, sizeof, variable ist.

    upsala :D also zu Silbermond: ich weiß nicht wie rum die Parameter sind wie gesagt ich hab mich schon lange nichtmehr damit beschäftigt und wenn ichs mach dann mit meiner eingenen Funktion.


    /edit:


    hab mal nachgelesen
    http://wiki.sa-mp.com/wiki/GetPlayerName


    (playerid, const name[], len)
    also id, die variable in die es gespeichert werden soll, die länge der variable.


    Einen Fehler im Code finde ich so jetzt nicht. Also ich finde das die Zeile korrekt ist.

    Was ist der Unterschied zwischen stock und Public? Bzw. wozu ist was gut?


    Was sind denn jetzt genau Variabeln? (Bin mir nicht sicher ob ich die richtige Erklärung bekommen habe!)


    Ich denke einen großen unterschied gibt es nicht. Kleine Unterschiede schon


    Public:
    - muss geforwarded werden
    - wird auch wenn es nicht irgendwie aufgerufen wird auf Fehler überprüft


    stock:
    - wird nur auf Fehler überprüft wenn man es auch irgendwo aufruft


    andere Unterschiede hab ich noch nicht festgestellt. Bin für neues gerne offen :D


    /edit:
    Du hattest doch bestimmt Mathe in der Schule, da wurde doch in einer Gleichung Werte wie "x" "y" eingesetzt bzw versucht Rechnerisch herauszufinden gelle ? Kleines beispiel.


    10 = x + 6 |-6
    4 = x


    also muss für die Variable "x" der Wert "4" eingesetzt dann steht ja da 10 = 4 + 6
    (Mathenachhilfe kostet.... Nein Spaß :thumbup: )
    Im Script läuft das ähnlich ab. Du kannst in eine Variable einen bestimmten Wert schreiben und den dann beliebig oft im Script einsetzen (falls global) kleines Beispiel.


    new alter = 17;
    ocmd:test(playerid, params[])


    if(alter<18)
    {
    SendClientMessage(playerid, color, "Ich bin nicht volljährig");
    }
    else
    {
    SendClientMessage(playerid, color, "Ich bin volljährig");
    }


    ocmd:alter(playerid, params[])
    {
    new string[128];
    format(string,sizeof(string),"Ich bin %i Jahre alt/jung", alter);
    SendClientMessage(playerid, color, string);
    return 1;
    }


    Jetzt kannst du oben die Variable "alter" einfach auf 20 machen und dann steht bei /test dort das du volljährig bist und bei /alter das du 20 bist.


    Hoffe du hast es ein wenig verstanden. Bin nicht sehr gut im erklären, habs warscheinlich etwas umständlich gemacht...:D


    Alles klar, der Fehler heißt einfach das die variable "zeitdauer" nur erstellt evtl. befüllt wurde aber nirgends verwendet wird, das werden wir nun ändern. Du musst ja dein Enum auch noch befüllen.



    GetPlayerName(pID,tBan[pID][pNameTBan],sizeof(tBan[pID][pNameTBan]));
    tBan[pID][pvonAdmin] = playerid;
    tBan[pID][pTBanDauer] = zeitdauer;
    tBan[pID][pTBanGrund] = grund;

    das einfach über "CreateTBanAccount(pID);
    und unter new zeitdauer = Now() + dauer*60;


    Dürfte funktionieren


    /edit: Du musst schauen was du abspeichern willst, du hast oben im enum "pvonAdmin" als integer deklariert also musst du die id von dem Admin abspeichern, bei pNameTBan allerdings den Namen also ein string. Ich würde es einheitlich machen und das immer mit den ids musst du aber wissen, wenn du es mit den ids machst musst du halt vorher noch den Namen herrausfinden fillst (z.b. bei printf()) da wolltest du das der Name von dem Admin dort steht (%s) allerdings ist die Variable die dafür eingesetzt wird wie oben erwähnt ein integer somit wird es da zu fehlern kommen. Ich würde dir Raten um das ständinge new pName[MAX_PLAYER_NAME] GetPlayerName etc. zu vermeiden (ist denk ich auch auf dauer ressourcen sparend) eine Funktion zu erstellen.



    stock getPlayerName(playerid)
    {
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,sizeof(pName));
    return pName;
    }

    war schon lange nichtmehr an nem script dran aber ich bin mir ziemlich sicher das man zu einem Enum noch eine variable hinzufügen muss


    enum SpielerTimeBanned
    {
    pNameTBan[MAX_PLAYER_NAME],
    pTBanIP,
    pTBanGrund,
    pvonAdmin,
    pTBanDauer
    }


    new tBan[MAX_PLAYERS][SpielerTimeBanned];


    hätten wir geschafft und dann musst du unten das machen


    printf("[S-INFO] %s wurde von %s für %d verbannt. Grund: %s",tBan[pID][pNameTBan], tBan[pID][pvonAdmin], tBan[pID][pTBanDauer], tBan[pID][pTBanGrund]); //UND HIER INSGESAMT 10 Warnings!


    jetzt dürften schon weniger warnings kommen