Beiträge von Jeffry

    Das Zeug ganz hinten an den strcat's ist falsch.
    stock CreateTables()
    {
    new query[1500];
    strcat(query,"CREATE TABLE IF NOT EXISTS `Accounts` (`ID` int(11) NOT NULL AUTO_INCREMENT, `pName` varchar(24), `pPasswort` varchar(24), `pAlter` int(2), `pGeburtsdatum` varchar(20), `pGeschlecht` int(2), `pAdminlevel` int(10), `pFraktion` int(11), `pFrakLeader` int(11),");
    strcat(query,"`pFrakRang` int(11), `pFrakSkin` int(11), `pFrakDuty` int(11), `pBanned` int(12), `pBargeld` int(11), `pKontoguthaben` int(11), `pLastLogin` varchar(60), `pRegDatum` varchar(60), `pWarns` int(3), `pLeben` float(10), PRIMARY KEY (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
    strcat(query,"CREATE TABLE IF NOT EXISTS `Banned` (`IP` varchar(16) NOT NULL, `Name` varchar(24) NOT NULL, `Grund` varchar(126) NOT NULL, `Admin` varchar(24) NOT NULL, `Zeit` int(25) NOT NULL, `Datum` date NOT NULL, `Uhrzeit` time NOT NULL, PRIMARY KEY (`IP`))");
    strcat(query,"CREATE TABLE IF NOT EXISTS `FraktionsVerwaltung` (`ID` int(11) NOT NULL AUTO_INCREMENT, `Leader` varchar(24), `Members` int(11), `Kasse` int(11), `Skins` int(11), `Gehalt` int(11), `FrakLimit` int(11), PRIMARY KEY (`ID`))");
    mysql_function_query(DBHandle,query,false,"","");
    strdel(query,0,sizeof(query));
    return 1;
    }

    wie frage ich ab ob irgend ein Spieler in einem Auto sitzt


    Nutze:
    stock IsAnyPlayerInVehicle(vehicleid)
    {
    for(new i=0; i<MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vehicleid) return 1;
    return 0;
    }


    Und dann:
    if(IsAnyPlayerInVehicle(vehicleid)) //Ein Spieler ist in der vehicleid



    Und wenn du abfragen willst, ob im ganzen Server niemand in irgendeinem Fahrzeug ist:
    stock IsAnyPlayerInAnyVehicle()
    {
    for(new i=0; i<MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) != 0) return 1;
    return 0;
    }


    if(IsAnyPlayerInAnyVehicle()) //Mindestens ein Spieler ist in einem Fahrzeug

    Für Befehle kannst du das nicht ganz so übernehmen. Warum? Du fragst ab, ob der Befehl "/me" ist (strcmp). Wenn du jetzt aber "/me Hallo" eingibst, ist das ja nicht mehr das Selbe wie "/me". Daher musst du dir Größe des zu prüfenden Strings angeben, und dann noch auf das Leerzeichen dazwischen prüfen.


    if(strcmp("/s",cmdtext,true,2) == 0)
    {
    if(!strlen(cmdtext[2])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /s [Text]");
    if(cmdtext[2] == ' ')
    {
    if(!strlen(cmdtext[3])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /s [Text]");
    new sendername[MAX_PLAYER_NAME],schreistring[145];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    format(schreistring, sizeof(schreistring),"%s schreit: %s",sendername,cmdtext[3]);
    SendMeSchrei(schreistring,playerid);
    return 1;
    }
    }


    if(strcmp("/me",cmdtext,true,3) == 0)
    {
    if(!strlen(cmdtext[3])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /me [Text]");
    if(cmdtext[3] == ' ')
    {
    if(!strlen(cmdtext[4])) return SendClientMessage(playerid, 0xFF0000FF, "Benutzung: /me [Text]");
    new sendername[MAX_PLAYER_NAME],mestring[145];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    format(mestring, sizeof(mestring),"**%s %s",sendername,cmdtext[4]);
    SendMeMe(mestring,playerid);
    return 1;
    }
    }


    Man könnte es natürlich auch mit einem Command Prozessor (dcmd, ocmd, ...) machen, das würde dann etwas schöner aussehen.

    Ahh, ich seh grade warum. Du hast überall X angegeben.
    Schreib es so:
    drogenpickup[playerid]=CreatePickup(19473,1,dInfo[playerid][dX],dInfo[playerid][dY],dInfo[playerid][dZ],GetPlayerVirtualWorld(playerid));

    Du hattest da Klammerfehler drin, außerdem haben die if's und else's in einem switch nichts zu suchen. ;)
    stock GetPlayerRangName(playerid)
    {
    new rName[32]="Stellv. Projektleiter";
    switch(sInfo[playerid][fraktion])
    {
    case 1:
    {
    switch(sInfo[playerid][rang])
    {
    case 0: rName="Praktikant des LSPD";
    case 1: rName="Azubi des LSPD";
    case 2: rName="Polizist I";
    case 3: rName="Polizist II";
    case 4: rName="Polizist III";
    case 5: rName="Co Leader des LSPD";
    case 6: rName="Leader des LSPD";
    }
    }
    case 2:
    {
    switch(sInfo[playerid][rang])
    {
    case 0: rName="Praktikant des SFPD";
    case 1: rName="Azubi des SFPD";
    case 2: rName="Polizist I";
    case 3: rName="Polizist II";
    case 4: rName="Polizist III";
    case 5: rName="Co Leader des SFPD";
    case 6: rName="Leader des SFPD";
    }
    }
    case 3:
    {
    switch(sInfo[playerid][rang])
    {
    case 0: rName=".";
    case 1: rName=".";
    case 2: rName=".";
    case 3: rName=".";
    case 4: rName=".";
    case 5: rName=".";
    case 6: rName=".";
    }
    }
    default: rName="ERROR";

    }
    return rName;
    }

    Wenn du es direkt drin haben willst, dann schreibe das Query so:
    format(query, sizeof(query), "INSERT INTO user (username, password, Level) VALUES ('%s','%s', '1')", Spielername(playerid), key);

    Wegen meinem Code nicht, nein. Der ist so konzipiert, dass du ihn nur einfügen musst.


    Zitat

    +Mein Level wird von InGame nicht Geschpeichert


    Welches der Level? Und wie vergibst du das Level?

    Also hast du es doch schon...


    Nutze diese Funktionen:
    stock GetFraktionsName(fid)
    {
    new name[32];
    switch(fid)
    {
    case 0: name = "Zivilist";
    case 1: name = "LSPD";
    case 2: name = "Grove";
    //...
    default: name = "Unbekannt";
    }
    return name;
    }


    Sowie:
    stock GetRangName(fid, rang)
    {
    new name[32];
    switch(fid)
    {
    case 0:
    {
    switch(rang)
    {
    case 0: name = "Anfänger";
    case 1: name = "Pro";
    //...
    default: name = "Kein Rang";
    }
    }
    case 1:
    {
    switch(rang)
    {
    case 0: name = "Streife";
    case 1: name = "Officer";
    //...
    default: name = "Kein Rang";
    }
    }
    //...
    default: name = "Kein Rang";
    }
    return name;
    }



    Verwenden kannst du es dann so:
    new string[145];
    format(string, sizeof(string), "Ich bin in Fraktion %s und habe den Rang %s.", GetFraktionsName(SpielerInfo[playerid][pFraktion]), GetRangName(SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pFRang]));
    SendClientMessage(playerid, 0xFF0000FF, string);



    Alternativ kann man es über ein Array machen, aber ich denke für den Anfang ist das hier übersichtlicher und für dich leichter zu verstehen.

    Hast du denn die Fraktionen und die Ränge bereits erstellt (nicht mit Namen, aber mit IDs, also Zahlen)?
    Du sagst ja, du speicherst und lädst es schon, also gehe ich mal von ja aus. Poste dann bitte mal den Code, mit dem du das machst.

    Erstelle im Pawno-Ordner eine Datei pawn.cfg und schreibe dort

    Zitat

    -d3

    rein. Dann speichere die Datei und kompiliere den Code.
    Dann geh nochmal in deinen Server und führe die Aktion aus, poste dann den Log nochmal.
    Wenn du mit der Nachricht etwas anfängst, die dir ausgegeben wird, kannst du auch gleich den entsprechenden Code dazu posten (Zeile steht da dabei).