Beiträge von Jeffry

    Mach bitte die -1 weg bei mysql_insert_id

    Nein, da er beim SELECT Query ein +1 hat. Da die AUTO_INCREMENTS meistens bei 1 anfangen, muss man es so machen, um im Array bei 0 anfangen zu können. Das ist schon richtig.



    Logs geben noch immer nichts aus

    Versuche es so:
    ocmd:createcardealer(playerid,params[])
    {
    printf("Befehl eingegeben (%d)", pInfo[playerid][pAdmin]);
    new name[32],price,level,Float:xPos[3];
    if(pInfo[playerid][pAdmin] != 5)return 1;
    if(sscanf(params,"dds[32]",price,level,name))return SendClientMessage(playerid,COLOR_GREY,"Benutze: /createcardealer [Preis] [Level] [Name]");
    printf("Passt.");
    for(new i;i<MAX_AUTOHAUS;i++)
    {
    if(AHInfo[i][zCreated])continue;
    new str[256];
    GetPlayerPos(playerid,xPos[0],xPos[1],xPos[2]);
    format(str,sizeof str,"INSERT INTO `Cardealers` (`Owner`, `PosX`, `PosY`, `PosZ`, `Name`, `Price`, `Level`, `LPosX`, `LPosY`, `LPosZ`) VALUES ('Niemand', '%f', '%f', '%f', '%s', '%d', '%d', '%f', '%f', '%f')",xPos[0],xPos[1],xPos[2],name,price,level,xPos[0],xPos[1],xPos[2]);
    print(str);
    mysql_query(str);
    return LoadCarDealer(mysql_insert_id()-1);
    }
    return 1;
    }


    Du musst den Server neu starten und den Befehl eingeben.

    NPCs laufen/fahren einen aufgezeichneten Record ab, deren Position kann eigentlich nicht mit SetPlayerPos verändert werden.
    Wenn du aber ganz auf Nummer Sicher gehen willst, dann mache es so:
    forward PaintBallTimer();
    public PaintBallTimer()
    {
    gamestartet = 1;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
    if(playerready[i] == 0) continue;
    playerready[i] = 0;
    SetPlayerPos(i, 3780,-2663,8);
    }
    return 1;
    }


    Prinzipiell ist der Code aber sonst soweit richtig.
    Wenn es bei dir trotzdem nicht geht, poste bitte deine Version von Befehl und Timer nochmal komplett hier, und beschreibe ganz genau was du und der andere Spieler Schritt für Schritt machen.

    Du hattest bei OnPlayerDeath ein return 1 wo es nicht hingehört, da hättest du eigentliche eine Warnung haben müssen (Unreachable Code).
    Mache es so:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid != INVALID_PLAYER_ID)
    {
    if(gTeam[killerid] != Team_LSPD && gTeam[killerid] != Team_LVPD)
    {
    SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid)+1);
    SendClientMessage(killerid, 0xFFFF00FF, "Du hast jemanden erfolgreich umgebracht");
    GivePlayerMoney(killerid, 2000);
    }
    }
    if(GetPlayerWantedLevel(playerid) > 0)
    {
    pJailTime[playerid] = GetPlayerWantedLevel(playerid) * 10;
    SetPlayerWantedLevel(playerid,0);
    SetPlayerPos(playerid,1742.9695,535.2896,27.1266);
    }
    return 1;
    }


    Dann erstelle bei OnGameModeInit einen Timer:
    SetTimer("CheckJail", 850, true);


    Und ganz unten im Gamemode:
    forward CheckJail(); //Wird jede Sekunde aufgerufen
    public CheckJail()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
    if(pJailTime[i] > 0)
    {
    pJailTime[i]--;
    }
    else if(pJailTime[i] == 0)
    {
    //Spieler aus dem Jail lassen.
    pJailTime[i] = -1;
    //SetPlayerPos(i, x, y, z); //Koordinaten hier einfügen.
    }
    }
    return 1;
    }


    ----


    Das Textdraw kannst du mit einem Textdraw Editor erstellen:
    http://forum.sa-mp.com/showthread.php?t=406833

    Hö?

    :lach:



    Ich würde gerne die Pay'n'Spray Shops so scripten, dass sich die VehicleColor nicht ändert, wie kann ich abfragen ob ein Spieler in einem Shop drinnen ist?

    Dazu kann dir diese Include helfen:
    http://forum.sa-mp.com/showthread.php?t=360865


    Gegebenenfalls musst du das etwas abändern, damit du das y_hooks nicht brauchst.


    Dann musst du die Farbe wieder zurück setzen, zu der, die das Fahrzeug zuvor hatte.
    Das kannst du hiermit abfragen: http://forum.sa-mp.com/showthread.php?t=176496

    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid != INVALID_PLAYER_ID)
    {
    if(gTeam[killerid] != Team_LSPD && gTeam[killerid] != Team_LVPD)
    {
    SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid)+1);
    SendClientMessage(killerid, 0xFFFF00FF, "Du hast jemanden erfolgreich umgebracht");
    GivePlayerMoney(killerid, 2000);
    }
    }
    return 1;
    }


    Zwecks der Zahl:
    Da musst du ein Textdraw an die entsprechende Stelle setzen, das die Zahl des Wanted Levels beinhaltet (mit TextDrawSetString updaten).

    Ach du hast die Variable auch umbenannt.
    So:
    ocmd:untie(playerid, params[])
    {
    new pID, string[70];
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid, -1, "Tippe: /untie [Spielername / ID]");
    if(!IsTied[pID]) return SendClientMessage(playerid, -1, "Dieser Spieler ist nicht Gefesselt.");
    if(IsPlayerInAnyVehicle(pID)) return SendClientMessage(playerid, -1, "Du kannst diesen Spieler nicht Entfesseln.");
    TogglePlayerControllable(pID, true);
    format(string, sizeof(string), "* Du hast den Spieler %s befreit.", returnName(pID));
    SendClientMessage(playerid, -1, string);
    format(string, sizeof(string), "* Du wurdest von den Spieler %s entfesselt.", returnName(playerid));
    SendClientMessage(pID, -1, string);
    IsTied[pID] = false;
    return 1;
    }

    Mache es so:
    public OnUserCheck(playerid)
    {
    new string[265];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    if(cache_get_row_count() == 0)
    {
    format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden","");
    }
    else
    {
    new query[256];
    mysql_format(handle,query,sizeof(query),"SELECT Registrierung FROM Accounts WHERE Name = '%e'",playername);
    mysql_pquery(handle,query,"OnUserCheck2", "d", playerid);
    }
    return 1;
    }


    forward OnUserCheck2(playerid);
    public OnUserCheck2(playerid)
    {
    if(cache_get_row_count() == 0) pInfo[playerid][pRegStep] = cache_get_field_content_int(0, "Registrierung", handle);
    else pInfo[playerid][pRegStep] = 0;
    if(pInfo[playerid][pRegStep] == 4)
    {
    format(string,sizeof(string),"Willkommen zurück, {0174DF}%s\n{FFFFFF}Dieser Nutzername ist bereits vergeben. Bitte gebe dein Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG"{FFFFFF} Login",string,"Login","");
    }
    else
    {
    mysql_format(handle,query,sizeof(query),"DELETE FROM Accounts WHERE Name='%e'",playername);
    mysql_pquery(handle,query);
    format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden","");
    }
    return 1;
    }