[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
  • Wird wenn ich z.b 17 Häuser erstellt habe und haus 15 Lösche wird dann 16 auf 15 verschoben und 17 auf 16 ?

    Nein. Warum sollte das so sein? Dann würden sich die IDs ja ständig verschieben.
    In dem Fall kannst du das AUTO_INCREMENT auch weg lassen, und die ID komplett über den Code steuern (immer eine freie ID nehmen).



    Hast du vielleicht ne Idee wie ich abfragen kann, ob der Spieler vor einem Objekt steht und dieses anschießt ? Entsprechend, festerstellte Objekte von SAMP.

    https://wiki.sa-mp.com/wiki/OnPlayerWeaponShot

  • Du musst hittype verwenden. Hier die verschiedene Hittypes

    Code
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    	if(hittype == BULLET_HIT_TYPE_OBJECT && weaponid == 41){
    	    // Spieler schießt auf ein Objekt
    	}
        return 1;
    }
  • Danke, jedoch bleibt es ohne Erfolg.

    So mal probieren:


    C
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
        if(hittype == BULLET_HIT_TYPE_NONE && weaponid == 41){
            if(IsPlayerInRangeOfPoint(playerid,8.0,fX,fY,fZ))
            {
                 //Dann befindet sich das Ziel des Schusses in direkter Nähe (8.0 SA Einheiten)
            }
        }
        return 1;
    }

    PS: Ist kein Objekt, da die SA Map quasi als "NONE" Type ist...selbst erstellte Objekte ist der Typ Object.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()

  • So mal probieren:

    C
    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
        if(hittype == BULLET_HIT_TYPE_NONE && weaponid == 41){
            if(IsPlayerInRangeOfPoint(playerid,8.0,fX,fY,fZ))
            {
                 //Dann befindet sich das Ziel des Schusses in direkter Nähe (8.0 SA Einheiten)
            }
        }
        return 1;
    }

    PS: Ist kein Objekt, da die SA Map quasi als "NONE" Type ist...selbst erstellte Objekte ist der Typ Object.

    Danke, leider bleibt es ohne Erfolg.

  • Danke, leider bleibt es ohne Erfolg.

    Ja weil ein Spray...keine Schusswaffe ist...


    Das triggerst du mit OnPlayerKeyStateChange...


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von Pytroxis ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Hat sich erledigt ().
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(sInfo[i][sADuty])
    {
    format(string, sizeof(string),"%s%s\n",string, sInfo[i][sName]);
    admins = string;
    admin = 1;
    }
    else
    {
    format(string, sizeof(string),"%s%s\n",string, sInfo[i][sName]);
    adminsoff = string;
    adminoff = 1;
    }
    zu:
    if(sInfo[i][sADuty])
    {
    format(admins, sizeof(admins),"%s%s\n",admins, sInfo[i][sName]);
    admin = 1;
    }
    else
    {
    format(adminsoff, sizeof(adminsoff),"%s%s\n",adminsoff, sInfo[i][sName]);
    adminoff = 1;
    }


    Beachte, dass es auch noch die Möglichkeit gibt, dass alle Admins off-Duty sind, und die Möglichkeit, das gar kein Admin online ist.

  • Moin habe ein Problem. Wenn ich auf meinen Server joine bekomme ich einen hwdbann.


    @Jeffry

  • Ja weil ein Spray...keine Schusswaffe ist...
    Das triggerst du mit OnPlayerKeyStateChange...



    Geht das gleiche auch mit Objekten ?


  • new zeit = gettime()+tage*60*60*24;
    pInfo[pID][pDonate] = zeit;



    "zeit = 1471988506 Tage."


    Wie verwende ich diese Funktion? t.t

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Geht das gleiche auch mit Objekten ?

    Willst du etwa eine Wand ansprayen?


    Dann kannst du das nicht dynamisch machen (außer über enorm viel Aufwand und externe Plugins).


    Am einfachsten ist es schon fixe positionen zu nehmen, checken ob er davor steht und in die Richtung sprayt, was du oben wie gezeigt machen kannst und dann einfach ein Objekt z.B. grove Street etc erstellen.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Huhu, Will ein Healpickup für einen Admin ab Rang 3 machen.
    Das habe ich unter Onplayerpickuppickup.

    Code
    if(pickupid == HealPickup)
    	{
    	    if(HealPickup == 1)
    	    {
    	        SetPlayerHealth(playerid, 100);
    	        return 1;
    	    }
    	}

    Nur weiß ich leider nicht wie ich den Befehl gestalten soll. Der admin soll /eventpickup eingeben. Dann soll das Herz Pickup dort spawnen wo der Admin steht. Und jeder User kann durch das Pickup laufen und kriegt 100 HP. Jedoch sollte der Admin es mit /destroyeventpickup destroyen Können.



    Kann mir jemand den Befehl kurz machen? Ich kriegs nicht hin :d


    @Jeffry

  • Ungetested @Carl Ohaia



    new HealPickup;



    CMD:eventpickup(playerid,params[])
    {
    if(IsPlayerAdmin(playerid)) //Deine Admin Variable
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    HealPickup = CreateDynamicPickup(1240, 1, x, y, z, -1,-1,-1, 100.0);
    SendClientMessage(playerid, -1, "Eventpickup {00FF00}erfolgreich{FFFFFF} erstellt");
    }
    return 1;
    }



    CMD:destroyeventpickup(playerid,params[])
    {
    if(IsPlayerAdmin(playerid)) //Deine Admin Variable
    {
    DestroyDynamicPickup(HealPickup);
    SendClientMessage(playerid, -1, "Eventpickup {00FF00}erfolgreich {FFFFFF}gelöscht.");
    }
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Ungetested @Carl Ohaia


    new HealPickup;CMD:eventpickup(playerid,params[]){ if(IsPlayerAdmin(playerid)) //Deine Admin Variable { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); HealPickup = CreateDynamicPickup(1240, 1, x, y, z, -1,-1,-1, 100.0); SendClientMessage(playerid, -1, "Eventpickup {00FF00}erfolgreich{FFFFFF} erstellt"); } return 1;}CMD:destroyeventpickup(playerid,params[]){ if(IsPlayerAdmin(playerid)) //Deine Admin Variable { DestroyDynamicPickup(HealPickup); SendClientMessage(playerid, -1, "Eventpickup {00FF00}erfolgreich {FFFFFF}gelöscht."); } return 1;}

    Kannst du mir das in strcmp umschreiben?^^ Ich kenn mich damit nicht aus :D

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