[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
  • Mit der ersten Frage meinte ich eigentlich, das man dauerhaft Sprinten kann, ohne das man Pause machen muss.

    Dazu wäre mir nichts außer Mods bekannt.
    Edit: Ja, per Respawn würde es bedingt gehen, das sieht aber wahrscheinlich nicht so schön aus.
    Das würde ich dann eventuell per Befehl machen, sprich sowas wie /luft.



    Hast du da vielleicht ein kleinen Codeschnippel für mich wegen dem Dialog und den Text setzen.

    Kann ich dir heute Abend geben, wenn ich zu Hause bin.



    Für jeden Spieler einzeln - per Timer?

    Das.
    Zwischen 1 und 5 Minuten ist angebracht.


  • CMD:find(playerid, params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    if(!(Spieler[playerid][pJob] == 2))return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Detektiv.");
    new pID, string[128], Float:pos[3], ort[36];
    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_GREY, "Befehl: /find [Spieler]");
    if(pID == playerid)return SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber suchen.");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_GREY, ERROR_OFFLINE);
    if(IsPlayerNPC(pID))return 1;
    if(!(Spieler[pID][pLoggedIn]))return SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist nicht online.");
    GetPlayer2DZone(pID, ort, 36);
    if(pDetektivAbkling[playerid] > 0)
    {
    format(string, sizeof(string), "Mit deinem Skilllevel kannst du diesen Befehl nur alle %d Sekunden verwenden.", pDetektivAbkling[playerid]);
    SendClientMessage(playerid, COLOR_GREY, string);
    return 1;
    }
    if(GetPlayerInterior(pID) > 0)
    {
    GetPlayerPos(pID, pos[0], pos[1], pos[2]);
    SetPlayerCheckpointEx(playerid, pos[0], pos[1], pos[2], 3.0, CP_FIND, INVALID_CHECKPOINT_TYPE);
    format(string, sizeof(string), "Der Spieler befindet sich in Gebäudekomplex %d.%d", GetPlayerInterior(pID), GetPlayerVirtualWorld(pID));
    SendClientMessage(playerid, COLOR_GREEN, string);
    GivePlayerDeteSkill(playerid, 5);
    switch(Spieler[playerid][pDetektivSkill])
    {
    case 1: pDetektivAbkling[playerid] = 120;
    case 2: pDetektivAbkling[playerid] = 90;
    case 3: pDetektivAbkling[playerid] = 60;
    case 4: pDetektivAbkling[playerid] = 30;
    case 5: pDetektivAbkling[playerid] = 5;
    }
    }
    else if(GetPlayerInterior(pID) == 0)
    {
    GetPlayerPos(pID, pos[0], pos[1], pos[2]);
    SetPlayerCheckpointEx(playerid, pos[0], pos[1], pos[2], 3.0, CP_FIND, INVALID_CHECKPOINT_TYPE);
    format(string, sizeof(string), "Der Spieler befindet sich in %s", ort);
    SendClientMessage(playerid, COLOR_GREEN, string);
    GivePlayerDeteSkill(playerid, 5);
    switch(Spieler[playerid][pDetektivSkill])
    {
    case 1: pDetektivAbkling[playerid] = 120;
    case 2: pDetektivAbkling[playerid] = 90;
    case 3: pDetektivAbkling[playerid] = 60;
    case 4: pDetektivAbkling[playerid] = 30;
    case 5: pDetektivAbkling[playerid] = 5;
    }
    }
    return 1;
    }



    Hey ich habe eine frage wie mache ich für den Job Detektiv /showpos also das X möchte Y die pose von Z ziegen wie mach ich das

  • Habe es nun so aber es kommt jetze ( wenn ich kein Haus habe )Der Spieler hat bereits ein Haus.


    Code
    HatEinHaus(playerid)
    {
    	for(new i = 0; i < MAX_HOUSE; i++)
    	{
    	    if(hInfo[i][h_ID] == 0) continue;
    	    if(!strcmp(hInfo[i][h_besitzer], getPlayerName(playerid), true, 3)) return 1;
    	}
    	return 0;
    }

    Brauche immernoch Hilfe


  • AddPlayerClass(230,1392.0396,-1866.5282,13.3828,106.4665,0,0,0,0,0,0); // No DM 1
    AddPlayerClass(230,1558.8539,-1727.6683,13.3828,259.6646,0,0,0,0,0,0); // No DM 2



    Ich habe eine Frage ich wollte eine No DM Zone machen für die Stadthalle.
    Welche posen muss ich dafür nehmen das es rot auf der map angezeigt wird.


    Wen der Spieler in dem Bereich ist wen er geschalten wird kommt die Nachricht:


    *No-DM Zone* Du wurdest von %s in Commerce angegriffen (z.b 1 Schaden.)

  • if(x > 1392.0396 && x < 1558.8539 && y > -1866.5282 && y < -1727.6683 && z > 0 && z < 100){ //In Zone //Beachte, -1866 ist KLEINER als -1727}

    Unter was soll man das einfügen wen man Fragen darf.


    So wen ich jetzt mache



    format(string, sizeof(string),"*No-DM Zone* Du wurdest von %s in Commerce angegriffen (z.b 1 Schaden.)", GetName(playerid));
    SendClientMessage(playerid, COLOR_ANNOUNCE, string);


    Wie lass ich



    if(x > 1392.0396 && x < 1558.8539 && y > -1866.5282 && y < -1727.6683 && z > 0 && z < 100)
    {
    format(string, sizeof(string),"*No-DM Zone* Du wurdest von %s in Commerce angegriffen (z.b 1 Schaden.)", GetName(playerid));
    SendClientMessage(playerid, COLOR_ANNOUNCE, string);
    }



    Wie lasse ich den schaden auslesen?

  • Unter was soll man das einfügen wen man Fragen darf.

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



    Wie lasse ich den schaden auslesen?

    Der Parameter "amount" in OnPlayerTakeDamage gibt dir den Schaden mit.



    ==========================================

    Hast du da vielleicht ein kleinen Codeschnippel für mich wegen dem Dialog und den Text setzen.

    Hätte ich auch gern



    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Code dazu:


  • public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
    {
    if(Spieler[issuerid][pHitsound] == 1)
    {
    PlayerPlaySound(issuerid, 17802, 0.0, 0.0, 0.0);
    }
    if(x > 1392.0396 && x < 1558.8539 && y > -1866.5282 && y < -1727.6683 && z > 0 && z < 100)
    {
    format(string, sizeof(string),"*No-DM Zone* Du wurdest von %s in Commerce angegriffen (%.0f Schaden.)", GetName(playerid), amount);
    SendClientMessage(playerid, COLOR_ANNOUNCE, string);
    }
    return 1;
    }



    so?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • so?

    So:
    public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
    {
    if(issuerid != INVALID_PLAYER_ID)
    {
    if(Spieler[issuerid][pHitsound] == 1)
    {
    PlayerPlaySound(issuerid, 17802, 0.0, 0.0, 0.0);
    }
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    if(x > 1392.0396 && x < 1558.8539 && y > -1866.5282 && y < -1727.6683 && z > 0 && z < 100)
    {
    format(string, sizeof(string),"*No-DM Zone* Du wurdest von %s in Commerce angegriffen (%.0f Schaden.)", GetName(playerid), amount);
    SendClientMessage(playerid, COLOR_ANNOUNCE, string);
    }
    }
    return 1;
    }

  • Ja, das hab ich bereits rausgefunden.



    so aber jetzt hab ich ein Problem jetzt ist das viel zu groß... obwohl es eigentlich nur um die Stadthalle geht...



    Commerce = GangZoneCreate(1392.0396,1558.8539,-1866.5282,-1727.6683);




    AddPlayerClass(230,1392.0396,-1866.5282,13.3828,106.4665,0,0,0,0,0,0); // No DM 1 Ecke 1
    AddPlayerClass(230,1558.8539,-1727.6683,13.3828,259.6646,0,0,0,0,0,0); // No DM 2 Ecke 2


  • case DIALOG_TAXI:
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(strval(inputtext) < 1 || strval(inputtext) > 200)
    {
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), COLOR_HEX_WHITE"Du kannst nun den Preis festlegen, den die Fahrgäste jede 10 Sekunden bezahlen\nDer Preis muss mindestens 1$ und maximal 200$ sein.");
    ShowPlayerDialog(playerid, DIALOG_TAXI, DIALOG_STYLE_INPUT, "Taxi Company", DialogString, "Weiter", "Aussteigen");
    }
    return 1;
    }
    if(listitem == 1)
    {
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
    }



    Hey, ich hab noch eine frage


    Wen der Spieler sich jetzt reinsetzt und 200$ z.b angibt soll sich der3D Textlabel in:


    Taxi Company\n\nFahrer: %s/nKosten: %d


    Der Mindestpreis für Taxis liegt bei 1$ und max. 200$.


    -> Hat der Spieler ein Preis angegeben und er hat ein Fahrgast muss der Fahrgast das angegebene Geld am ende zahlen z.b 100$ wird das immer alle 10 Sekunden steigen auf 200 dann 300 usw
    -> Der Spieler muss nach dem aussteigen das geld was angerechnet wurde bezahlen (bekommt der Taxifahrer bar auf die hand) (Automatisch)
    -> Spieler sollte Gelbe Farbe bekommen. (Taxi Fahrer)
    -> Sollte der Spieler das Taxi verlassen hat der Spieler 2 Minuten Zeit das er wider ins Taxi steigt sonst respawnt es und er ist als Taxifahrer nicht mehr ihm Dienst. (Taxi Fahrer)
    -> Spieler erhält wider die weiße farbe (sobald der Dienst beendet ist) (Taxi Fahrer)

  • Und wo genau liegt dein Problem jetzt?

    "Wie man das erstellt also:"


    -> Preis eingeben das sich der Label updatet (Taxi Company\n\nFahrer: \nKosten:)
    -> Das der Taxifahrer Gelbe Farbe bekommt und auf der Map zusehn ist.
    -> Das der Kunde den angegeben Preis zahlen muss heißt Taxifahrer gab 100$ an erhöht sich alle 10 Sekunden so muss der Spieler beim aussteigen z.b 200 Zahlen weil die fahrt nur 10 Sekunden dauerte.
    -> Explodiert das Fahrzeug (Wird der Dienst beendet.
    -> Steigt er nach 2min nicht ein (Wird der Dienst beendet.