[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
  • Wie kann ich die Zeit auf dem Server einfrieren? Bei mir ist die Zeit auf dem Server immer die Zeit, die auch mein Computer anzeigt.


    Da wirst du wohl in Gamemode einen Code haben, der gettime nutzt um damit ein TextDraw zu aktualisieren und dir dort die Zeit anzuzeigen.
    Suche mal danach. Je nach dem wie der Code aufgebaut ist, ist es mehr oder weniger schwer die Zeit (temporär?) einzufrieren.

  • Moin :) ,


    Ich habe arbeite grad an einem Waffenkauf Dialog .... und ich habe das mit den Dialogen fertig etc, bloß wenn ich jetzt auf eine Waffe drücke, passiert nichts! Warum?


    Code:


    if(listitem == 0)//Pistoel - 9mm
    {
    if(GetPlayerMoney(playerid) >= 250)
    {
    GivePlayerWeapon(playerid, 22, 100);
    SendClientMessage(playerid,0xFF0000FF,"[INFO] {FFFFFF} Du hast dir eine 9mm Pistole gekauft!");
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"[FEHLER] {FFFFFF} Du hast nicht genügend Geld!");
    }
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Also als erstes läuft der Spieler auf einen PickUp zu.


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == ArmyPickUp)
    {
    ShowPlayerDialog(playerid,WAFFEN_USARMY,DIALOG_STYLE_LIST,"{FFFFFF}US-ARMY - {FF0000}Laden","{FFFFFF}Waffen kaufen\nPremium-System\nGun-Game beitreten","Auswählen","Abbrechen");
    }
    return 1;
    }


    Dann öffnet sich ein Dialog:
    Zuerst der:


    case WAFFEN_TERRORISTEN:
    {
    if(response)
    {
    if(listitem == 0)
    {
    ShowPlayerDialog(playerid,WAFFEN_MENUTERRORISTEN,DIALOG_STYLE_LIST,"{FFFFFF}TERRORISTEN - {FF0000}Waffenladen","{FFFFFF}Pistole(9mm) - $1500\nPistole(Schalldämpfer) - $\nDesert Eagle - $\nSchrotflinte - $\nAbgesägte Schrotflinte - $\nDoppelte Schrotflinte - $\nMicro SMG/Uzi - $\nMP5 - $\nAK-47 - $\nM4 - $\nTec-9 - $\nCountry Gewehr - $\nScharfschützengewehr - $\nRPG- $\nFlammenwerfer - $","Kaufen","Zurück");
    }
    else if(listitem == 1)
    {
    SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Derzeitig deaktiviert!");
    }
    else if(listitem == 2)
    {
    SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Derzeitig deaktiviert!");
    }
    }
    else
    {
    }
    }


    //und dann wenn der Spieler z.b.: Waffe 1 Anklickt , soll diese Funktion ausgerufen werden:



    case WAFFEN_MENUTERRORISTEN:
    {
    if(response)
    {
    if(listitem == 0)//Pistoel - 9mm
    {
    if(GetPlayerMoney(playerid) >= 250)
    {
    ShowPlayerDialog(playerid,WAFFEN_MENUTERRORISTEN,DIALOG_STYLE_LIST,"{FFFFFF}TERRORISTEN - {FF0000}Waffenladen","{FFFFFF}Pistole(9mm) - $1500\nPistole(Schalldämpfer) - $\nDesert Eagle - $\nSchrotflinte - $\nAbgesägte Schrotflinte - $\nDoppelte Schrotflinte - $\nMicro SMG/Uzi - $\nMP5 - $\nAK-47 - $\nM4 - $\nTec-9 - $\nCountry Gewehr - $\nScharfschützengewehr - $\nRPG- $\nFlammenwerfer - $","Kaufen","Zurück");
    GivePlayerWeapon(playerid, 22, 100);
    SendClientMessage(playerid,0xFF0000FF,"[INFO] {FFFFFF} Du hast dir eine 9mm Pistole gekauft!");
    }
    else
    {
    ShowPlayerDialog(playerid,WAFFEN_MENUTERRORISTEN,DIALOG_STYLE_LIST,"{FFFFFF}TERRORISTEN - {FF0000}Waffenladen","{FFFFFF}Pistole(9mm) - $1500\nPistole(Schalldämpfer) - $\nDesert Eagle - $\nSchrotflinte - $\nAbgesägte Schrotflinte - $\nDoppelte Schrotflinte - $\nMicro SMG/Uzi - $\nMP5 - $\nAK-47 - $\nM4 - $\nTec-9 - $\nCountry Gewehr - $\nScharfschützengewehr - $\nRPG- $\nFlammenwerfer - $","Kaufen","Zurück");
    SendClientMessage(playerid,0xFF0000FF,"[FEHLER] {FFFFFF} Du hast nicht genügend Geld!");
    }
    }



    }
    else
    {
    ShowPlayerDialog(playerid,WAFFEN_TERRORISTEN,DIALOG_STYLE_LIST,"{FFFFFF}TERRORISTEN - {FF0000}Laden","{FFFFFF}Waffen kaufen\nPremium-System\nGun-Game beitreten","Auswählen","Abbrechen");
    }
    }


    Habe es jetzt abgekürzt, habe eigentlich da noch über 14 Waffen stehen .

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • *Facepalm* ... danke dir :)


    //EDIT: Noch eine Frage: Warum wird das Geld dann nicht in der DatenBank gespeichert? Z.b.: Ein Spieler kauf eine Mp5, wird auch von der Geldanzeige weggezogen, dann aber bleibt trozdem in der Datenbank das vorherige Geld. Deswegen wird das Geld , wenn man stirbt , auch von letztes mal hingesetzt. Habe auch alles normalerweise abgespeichert mit "saveplayer(playerid);"... Hier nochmal die Listitem:



    if(listitem == 0)//Pistoel - 9mm
    {
    if(GetPlayerMoney(playerid) >= 250)
    {
    ShowPlayerDialog(playerid,WAFFEN_MENUTERRORISTEN,DIALOG_STYLE_LIST,"{FFFFFF}TERRORISTEN - {FF0000}Waffenladen","{FFFFFF}Pistole(9mm) - $250\nPistole(Schalldämpfer) - $250\nDesert Eagle - $1000\nSchrotflinte - $1500\nAbgesägte Schrotflinte - $4000\nDoppelte Schrotflinte - $3500\nMicro SMG/Uzi - $3500\nMP5 - $2000\nAK-47 - $5000\nM4 - $6000\nTec-9 - $3550\nCountry Gewehr - $3000\nScharfschützengewehr - $5000\nRPG- $10000\nFlammenwerfer - $7500","Kaufen","Zurück");
    GivePlayerWeapon(playerid, 22, 100);
    GivePlayerMoney(playerid, -250);
    SavePlayer(playerid);
    SendClientMessage(playerid,0xFF0000FF,"[INFO] {FFFFFF}Du hast dir eine {FF9100}9mm Pistole {FFFFFF}gekauft!");
    }
    else
    {
    ShowPlayerDialog(playerid,WAFFEN_MENUTERRORISTEN,DIALOG_STYLE_LIST,"{FFFFFF}TERRORISTEN - {FF0000}Waffenladen","{FFFFFF}Pistole(9mm) - $250\nPistole(Schalldämpfer) - $250\nDesert Eagle - $1000\nSchrotflinte - $1500\nAbgesägte Schrotflinte - $4000\nDoppelte Schrotflinte - $3500\nMicro SMG/Uzi - $3500\nMP5 - $2000\nAK-47 - $5000\nM4 - $6000\nTec-9 - $3550\nCountry Gewehr - $3000\nScharfschützengewehr - $5000\nRPG- $10000\nFlammenwerfer - $7500","Kaufen","Zurück");
    SendClientMessage(playerid,0xFF0000FF,"[FEHLER] {FFFFFF}Du hast nicht genügend Geld!");
    }
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

    Einmal editiert, zuletzt von [GeD]Max ()

  • Hier bitte:



    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
    {
    mysql_SetInt("user", "Score", SpielerInfo[playerid][pScore], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("user", "Alevel", SpielerInfo[playerid][pAlevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("user", "Member", SpielerInfo[playerid][pMember], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("user", "Leader", SpielerInfo[playerid][pLeader], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("user", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("user", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("user", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("user", "Banned", SpielerInfo[playerid][pBanned], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("user", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Bei deiner Pistole:
    GivePlayerMoney(playerid, -250);
    zu:
    GivePlayerMoney(playerid, -250);
    SpielerInfo[playerid][pGeld] -= 250;

    Alles klar danke geht nun wieder! :)



    //Edit:


    Ich habe jetzt vor einen MakeGunPickUp zu erstellen. Dies sollte so aussehen: Administrator gibt /Makegunpickup [WAFFENID] [MUNITION] ein. Z.b.: /makegunpickup 31 5000. So , dann soll ein Pickup erstellt werden mit dem PickUp ID als M4. Und wenn jetzt z.b.: /Makegunpickup 24 5000(Deagle, wenn ich mich nicht irre) dann soll ein Deagle PickUp erstellt werden. Wenn dann der Pickup erstellt wurde, kann man dann da hin gehen , und per "ENTER DRÜCKEN" das Objekt aufnehmen. Wie würde sowas aussehn? Bzw, ein Beispiel wäre cool.


    Jeffrey
    @Alleanderen :)

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

    Einmal editiert, zuletzt von [GeD]Max ()

  • Also gut, ich hab es versucht mir etwas anzuschauen , hat mir aber auch etwas geholfen. Jedoch komme ich nicht weiter...



    ocmd:makegunpickup(playerid,params[])
    {
    if(SpielerInfo[playerid][pAlevel] >= 3)
    {
    new waffe,ammo,Float:Px,Float:Py,Float:Pz,VW=GetPlayerVirtualWorld(playerid);
    if(sscanf(params,"ii",waffe,ammo))return SendClientMessage(playerid, 0xFF0000FF,"[FEHLER]{FFFFFF} /MakeGunPickUp [Waffen-ID] [Munition]");
    {
    GetPlayerPos(playerid, Px, Py, Pz);
    CreatePickup(waffe, 18, Px, Py, Pz , VW);
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Hallöle Community,


    nach langer Inaktivität bastel ich gerade ein wenig am Selfmade rum. Ich lese aus einer Datenbank die VehicleID aus. Diese wird wunderbar ausgegeben. Nun möchte ich die VehicleID über SetPVarInt speichern. Leider bekomme ich folgenden Fehler: error 035: argument type mismatch (argument 3)


    Ich komme leider momentan nicht auf die Lösung. Vielleicht weil es schon spät ist... Kann jemand helfen? Danke!



    if(response){
    new Query[256], Get[128];
    format(Query, sizeof(Query), "SELECT id FROM `vehicles` WHERE `plate` = '%s'", inputtext);
    mysql_query(Query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    if(strlen(Get) != 0){
    new string[128];
    SetPVarInt(playerid, "pKey1", Get); // Hier möchte ich die ausgelesene VehicleID speichern. Sie ist in der "Get" Variable abgelegt.
    format(string, 128, "[Info] Du nimmst Dir den Schlüssel für folgendes Fahrzeug: %s (%s)", inputtext, Get); // Hier wird die VehicleID noch schön ausgegeben...
    SendClientMessage(playerid, COLOR_GREY, string);
    }else{
    SendClientMessage(playerid, COLOR_GREY, "[Info] Der Schlüssel wurde nicht gefunden.");
    }
    }

    Trancebase, Dreamweaver und ab geht die Uzi.

  • Moin, mal ne kurze frage...
    Wie kann ich es machen das wen er gestorben ist für 2Min auf den Friedhof in LS komme mit der "Unsichtbaren Grenze ?!"


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(IsPlayerConnected(killerid) && killerid != playerid)
    {
    SendClientMessage(killerid,Rot, "Du hast ein Verbrechen begangen! (Mord) Reporter: Anonym");
    PlayerInfo[killerid][Verbrechen] += 1;
    SendClientMessage(playerid,Rot,"Du bist Gestorben! Grund: Unbekannt");
    PlayerInfo[playerid][Tode] += 1;
    GivePlayerMoney(playerid, 100);
    }
    PlayerInfo[playerid][InSkinChange] = false;
    PlayerInfo[playerid][Duty] = false;
    return 1;
    }

    ↓Das ist der Youtube Channel von mir und meinen Kollegen↓



    Sa-Mp Server [Im Aufbau/Beta]
    128.65.216.200:7777

  • Du setzt bei OnPlayerDeath eine Spielervariable auf 1, die heißt zum Beispiel pTod. Dann fragst du diese bei OnPlayerSpawn ab, wenn sie 1 ist, dann setzt du den Spieler mit SetPlayerPos zum Friedhof und setzt mit SetPlayerWorldBounds die unsichtbaren Grenzen. Gleichzeitig startest du einen SetTimerEx von 120000 ms. Wenn dieser dann aufgerufen wird, setzt du den Spieler wieder aus dem Friedhof raus, entfernst die Grenzen und setzt pTod wieder auf 0.



    Codebeispiel:
    Im enum:
    pTod,
    OnPlayerDeath:
    public OnPlayerDeath(playerid, killerid, reason)
    {
        if(IsPlayerConnected(killerid) && killerid != playerid)
        {
            SendClientMessage(killerid,Rot, "Du hast ein Verbrechen begangen! (Mord) Reporter: Anonym");
            PlayerInfo[killerid][Verbrechen] += 1;
            SendClientMessage(playerid,Rot,"Du bist Gestorben! Grund: Unbekannt");
            PlayerInfo[playerid][Tode] += 1;
            GivePlayerMoney(playerid, 100);
        }
        PlayerInfo[playerid][InSkinChange] = false;
        PlayerInfo[playerid][Duty] = false;
        if(PlayerInfo[playerid][pTod] == 0) PlayerInfo[playerid][pTod] = 1;
        return 1;
    }
    OnPlayerSpawn:
    if(PlayerInfo[playerid][pTod] == 1)
    {
        SetPlayerPos(playerid, /* Position */);
        SetPlayerWorldBounds(playerid, /* Poisitionen */);
        SetTimerEx("WegVonFriedhof", 120000, 0, "d", playerid);
        PlayerInfo[playerid][pTod] = 2; //Falls er auf dem Friedhof stirbt, dass der Timer nicht nochmal gestartet wird.
    }
    Das Timer-Callback:
    forward WegVonFriedhof(playerid);
    public WegVonFriedhof(playerid)
    {
        PlayerInfo[playerid][pTod] = 0;
        SetPlayerPos(playerid, /* Position */);
        SetPlayerWorldBounds(playerid, 99999.0, -99999.0, 99999.0, -99999.0);
        return 1;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Okay ich habe auch mal eine Frage weiß nicht genau ob sie hier hin gehört. :3
    Also bei mir speichert er die Userdaten nicht nachdem sich jemand registriert hat.
    Als Pfad hab ich "/Spieler/%s.txt" angegeben..
    Ich weiß ja nicht ob es hilfreich ist aber ich nutze Windows 8.

  • Das kann viele Gründe haben. Es kann ein Problem mit den Lese-/Schreibberechtigungen im Ordner sein, es kann aber auch einfach ein Problem in deinem Code sein.
    Das beste wird hier sein, wenn du einen neuen Thread erstellst, da das nicht unbedingt eine kleine Frage ist, das dient dann auch der Übersichtlichkeit. Dort postest du dann den dazugehörigen Code, also den mit dem du die Dateien erstellen lässt. Falls es eine Funktion ist (also z.B. ein stock) dann poste auch noch den Teil dazu, der die Funktion aufruft.