[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hab da noch mal ne Frage, wie entfernt man den "standard" Kontent?


    Geld für Stunts, Interrior Eingänge ausm Singleplayer etc.

    DisableInteriorEnterExits(); // Entfernung der Interior-Ein,-Ausagänge
    EnableStuntBonusForAll(0); // Entfernung des Stuntbonus


    Beides unter OnGameModeInit

    KleineHilfe 2.0

  • Hey ich habe ein Problem
    Undzwar wenn sich Spieler aufm Server ein haus kaufen und dort spawnen wollen geben sie /spawnchange ein.
    Dann sollten sie NORMAL in ihrem Haus SPAWNEN.Aber sie spawnen am Strand HausID 0
    if(strcmp("/spawnchange", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pPhousekey] != -1)
    {
    if(PlayerInfo[playerid][pSpawn] == 1)
    {
    SendClientMessage(playerid, COLOR_GREEN, " Beim nächsten Mal spawnst du am normalen Platz!");
    PlayerInfo[playerid][pSpawn] = 0;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, " Beim nächsten Mal spawnst du an deinem eigenen/gemieteten Haus!");
    PlayerInfo[playerid][pSpawn] = 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, " Du hast kein Haus / Wohnung!");
    return 1;
    }
    }
    return 1;
    }
    Spawnchange befehl






    Und wenn ich allgemein Spawne Sterbe ich auch andere spieler...
    OnPlayerSpawn
    public OnPlayerSpawn(playerid)
    {
    L_AntiWeaponHack(playerid);
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    //Server Bots
    new plrIP[16];
    GetPlayerIp(playerid, plrIP, sizeof(plrIP));
    if(strcmp(plrIP, "80.82.222.105", true) == 0)
    {
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new string[123];
    format(string, sizeof(string), "UPDATE `users` SET `Status`='1' WHERE `Name`='%s'", sendername);
    self_mysql_queryEx(string);
    format(string, sizeof(string), "UPDATE `users` SET `Legende`='1' WHERE SQLid = '%d'", PlayerInfo[playerid][pSQLID]);
    self_mysql_queryEx(string);
    new Level = random(20) + 1;
    SetPlayerSkin(playerid, 1);
    SetPlayerScore(playerid, Level);
    PlayerInfo[playerid][pLevel] = Level;
    PlayerInfo[playerid][pSex] = 1;
    SetCameraBehindPlayer(playerid);
    PlayerInfo[playerid][pTut] = 1;
    StopAudioStreamForPlayer(playerid);
    PlayerInfo[playerid][pNummer] = 56854;
    PlayerInfo[playerid][pPhousekey] = -1;
    PlayerInfo[playerid][pBizKey] = -1;
    PlayerInfo[playerid][pBank] = 103456;
    GivePlayerMoneys(playerid, 5211);
    PlayerInfo[playerid][pCrimes] = 3;
    PlayerInfo[playerid][pArrested] = 0;
    PlayerInfo[playerid][pArrestTime] = 0;
    PlayerInfo[playerid][pKills] = 21;
    PlayerInfo[playerid][psKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    PlayerInfo[playerid][pMember] = -1;
    PlayerInfo[playerid][pLeader] = -1;
    /*Scheine*/
    PlayerInfo[playerid][pGunLic] = 1;
    PlayerInfo[playerid][pFlyLic] = 1;
    PlayerInfo[playerid][pCarLic] = 1;
    PlayerInfo[playerid][pBikeLic] = 1;
    gPlayerLogged[playerid] = 1;
    }

  • Zuerst bei diesem
    Befehlif(strcmp("/rentroom", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerName(playerid, playername, sizeof(playername));
    for(new h = 0; h < sizeof(HouseInfo); h++)
    {
    if(PlayerToPoint(2.0, playerid, HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]) && HouseInfo[h][hOwned] == 1 && HouseInfo[h][hRentabil] == 1)
    {
    if(PlayerInfo[playerid][pPhousekey] != -1 && strcmp(playername, HouseInfo[PlayerInfo[playerid][pPhousekey]][hOwner], true) == 0)
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du besitzt bereits ein Haus, benutze /sellhouse um das Haus zu verkaufen und dich hier einmieten zu können.");
    return 1;
    }
    if(PlayerInfo[playerid][pPhotelkey] != -1)
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Du bist noch in einem Hotel angemeldet, benutze /abmelden.");
    return 1;
    }
    if(PlayerInfo[playerid][pCash] > HouseInfo[h][hRent])
    {
    PlayerInfo[playerid][pPhousekey] = h;
    GivePlayerMoneys(playerid,-HouseInfo[h][hRent]);
    HouseInfo[h][hKasse] += HouseInfo[h][hRent];
    PlayerPlayMusic(playerid);
    SetPlayerInterior(playerid,HouseInfo[h][hInt]);
    SetPlayerPos(playerid,HouseInfo[h][hExitx],HouseInfo[h][hExity],HouseInfo[h][hExitz]);
    new h2 = h + 300;
    SetPlayerVirtualWorld(playerid,h2);
    GameTextForPlayer(playerid, "~w~Willkommen Zuhause~n~Du kannst das Haus jederzeit mit /exit verlassen", 5000, 3);
    PlayerInfo[playerid][pLocal] = h+300;
    SendClientMessage(playerid, COLOR_WHITE, "Gratulation, du bist nun in deinem gemieteten Haus.");
    SendClientMessage(playerid, COLOR_WHITE, "Benutze /help um die neuen Befehle zu sehen.");
    PlayerInfo[playerid][pSpawn] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " So viel Geld hast du nicht !");
    return 1;
    }
    }
    }
    }
    return 1;
    }
    if(strcmp("/spawnchange", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pPhousekey] != -1)
    {
    if(PlayerInfo[playerid][pSpawn] == 1)
    {
    SendClientMessage(playerid, COLOR_GREEN, " Beim nächsten Mal spawnst du am normalen Platz!");
    PlayerInfo[playerid][pSpawn] = 0;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, " Beim nächsten Mal spawnst du an deinem eigenen/gemieteten Haus!");
    PlayerInfo[playerid][pSpawn] = 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREEN, " Du hast kein Haus / Wohnung!");
    return 1;
    }
    }
    return 1;
    }
    @YaBroo

  • Wie sollte ich das am besten anstellen? Hab noch nie mehrere strings in einer Zeile benutzt.

    stringtotal[1024];
    string1,[256],string2[256],string3[256],string4[256];
    format(stringtotal,1024,%s%s%s%s,string1,string2,string3,string4);

    Bitte sowas nicht machen, das ist extrem speicher-verschwendend und dazu ziemlich unübersichtlich.


    Da in Queries meistens Platzhalter benötigt werden fällt strcat weg, mit format macht man es am besten so:

    new query[1024];
    format(query,sizeof(query),"UPDATE tabelle ");
    format(query,sizeof(query),"%s SET spalte = '%d', ", query, 1);
    format(query,sizeof(query),"%s spalte2 = '%d', ", query, 2);
    format(query,sizeof(query),"%s spalte3 = '%d' ", query, 3);
    format(query,sizeof(query),"%s WHERE id = '%d'", query, 1337);

  • Sonst mach doch einfach, falls es eine bestimmte Wand ist, if(PlayerIsInRangeOfPoint(playerid, radius, x, y, z);


    Edit: Nochmal ne Frage von mir: Wie verknüpft man Objekte mit Spielern und Fahrzeugen richtig? Das hab ich ein mal versucht ging aber irgendwie schief.


    (AttachObjectToPlayer oder sowas :P)


    Habe nämlich vor Sirenen an Fahrzeugen wie Sultan, Infernus und so weiter anzubauen, damit sie als "undercover" Fahrzeuge verwendet werden können so wie man es Deutschland oder Amerika kennt.
    Per Befehl abbaubar und anbaubar

    SA:MP in 2020?

  • @Der Lümmel:
    Naja das ist nicht so einfach, such ma nach 'SAMP Pathfinder', sowas gibts eig nur für FCNPC bzw NPC Implementationen ^^ Das nennt man Pathfinding, dazu kannst du das ColAndreas Plugin oder das Cimulator Plugin nutzen, würde ich auf die schnelle so sagen, da du dazu die SanAndreadMap brauchst, die aktuelle Position und die Position vor dir, mit der du checkst ob es ein Objekt aus SanAndreas gibt. Falls es von dir erstellt wurde, speichere alle Objekte in nem Array und frage die Position ab oder nutze direkt ein StreamerPlugin.

  • Hi, weiß jemand warum mein Timer nicht so funktioniert wie gewollt? (Screen im Anhang)




    Timer in OnGameModeInit SetTimer("UpdateRoundTime", 800, true);


    Das Problem ist das manchmal der Timer nicht mehr runtergezählt wird, sondern hochgezählt wird und das Format ändert sich auch. Standart soll es so sein 9:58.