[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

  • ocmd:freefromcar(playerid, params[]) {
    if(GetPVarInt(playerid, "Fraktion") != 4) return SCM(playerid, COLOR_RED, "Du bist kein Wheelman");
    new pID;
    if(sscanf(params, "u", pID)) return SCM(playerid, COLOR_RED, "Verwendung: {ffffff}/freefromcar [ID]");
    new Float:x, Float:y, Float:z;
    GetPlayerPos(pID, x, y, z);
    if(!IsPlayerInAnyVehicle(pID)) return SCM(playerid, COLOR_RED, "Der Spieler ist nicht in einem Auto");
    if(!IsPlayerInRangeOfPoint(playerid, 9.0, x, y, z)) return SCM(playerid, COLOR_RED, "Der Rauszuziehende ist nicht in deiner Nähe");
    new s[128];
    format(s, sizeof(s), "Jemand versucht %s aus einem Auto zu ziehen", GetName(pID));
    for(new i=0;i<MAX_PLAYERS;i++) {
    if(IsPlayerInRangeOfPoint(i, 15.0, x, y, z)){
    SCM(i, COLOR_ME, s);
    }
    }
    SetTimerEx("WHOnPlayerTie", 5000, false, "ii", playerid, pID);
    return 1;
    }


    forward WHOnPlayerTie(playerid, pID);
    public WHOnPlayerTie(playerid, pID){
    new car = GetPlayerVehicleID(playerid);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(pID, x, y, z);
    if(!IsPlayerInRangeOfPoint(playerid, 9.0, x, y, z)) return SCM(playerid, COLOR_RED, "Der Rauszuziehende ist nicht in deiner Nähe");
    RemovePlayerFromVehicle(pID);
    PutPlayerInVehicle(pID, car, 1);
    return 1;
    }


    Ich bin aus meiner Sicht im Auto aber der WH sieht, dass ich noch im CopCar bin



  • 1. Das.


    2.



    ocmd:cuff(playerid, params[]) {
    if(!IsACop(playerid)) return SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist.");
    new pID;
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid, COLOR_RED, "Verwendung: {ffffff}/cuff [ID]");
    new pid_car = GetPlayerVehicleID(pID), player_car = GetPlayerVehicleID(playerid), Float:X, Float:Y, Float:Z;
    GetPlayerPos(pID, X, Y, Z);
    if(pid_car == player_car || IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z)) {
    SetPlayerSpecialAction(pID, 24);
    TogglePlayerControllable(pID, false);
    } else {
    new s[128];
    format(s, sizeof(s), "%s ist nicht in deiner Nähe", GetName(pID));
    SendClientMessage(playerid, COLOR_RED, s);
    }
    return 1;
    }


    Der Cop kann aus 100 Metern Entfernung /cuff benutzen, dasselbe bei /uncuff

    • Offizieller Beitrag

    Zum 1. Das ist ein SAMP Bug, einfach das Fahrzeug davor löschen, neu erstellen und Person rein setzen. (Bin mir nicht sicher ob das auch funktioniert)


    Zum 2.:
    if((IsPlayerInAnyVehicle(playerid) && IsPlayerInAnyVehicle(pID) && pid_car == player_car) || IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z)) {

  • Hallo,
    ich habe ein Problem mit ein MoveObject. :x
    Wie viele wissen, bin ich voll der PAWNO Newbie. Naja, wie dem auch sei. Ich erzähl mal mein Problem.


    Ich möchte das eine Zoll Schranke hochgeht beim Befehl "/zoll"! Ich möchte das so haben, dass sich die Schranke langsam hochgeht und nicht ruckartig.
    Hier mal das ganze Code-Geschnipsel


    zoll1 = CreateObject(968, 1729.86, 440.44, 30.65, 2.00, -90.00, 342.75);


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/zoll", true))
    {
    if(IsPlayerInRangeOfPoint(playerid, 1729.86, 440.44, 30.65))
    MoveObject(zoll1, 1729.86, 440.44, 30.65, 0.02);
    SendClientMessage(playerid, 0xFFFF00FF,"Die Schranke schließt sich automatisch. Gute Weiterfahrt!");
    SetTimer("close", 5000.0);
    GivePlayerMoney(playerid, -50);
    }


    return 1; }


    Hab natürlich alles angegeben mit new zoll1;


    Hab übrigens noch 3 Warnungen:


    C:\Users\marti_000\Desktop\Samp0.3zServer\gamemodes\bare.pwn(1190) : warning 202: number of arguments does not match definition
    C:\Users\marti_000\Desktop\Samp0.3zServer\gamemodes\bare.pwn(1193) : warning 213: tag mismatch
    C:\Users\marti_000\Desktop\Samp0.3zServer\gamemodes\bare.pwn(1193) : warning 202: number of arguments does not match definition



    Danke im vorraus ^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Martey:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/zoll", true))
    {
    if(IsPlayerInRangeOfPoint(playerid, 10.0, 1729.86, 440.44, 30.65))
    MoveObject(zoll1, 1729.86, 440.44, 30.65, 0.02);
    SendClientMessage(playerid, 0xFFFF00FF,"Die Schranke schließt sich automatisch. Gute Weiterfahrt!");
    SetTimer("close", 5000, 0);
    GivePlayerMoney(playerid, -50);
    }
    return 1;
    }

  • public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/zoll", true)) { if(IsPlayerInRangeOfPoint(playerid, 10.0, 1729.86, 440.44, 30.65)) MoveObject(zoll1, 1729.86, 440.44, 30.65, 0.02); SendClientMessage(playerid, 0xFFFF00FF,"Die Schranke schließt sich automatisch. Gute Weiterfahrt!"); SetTimer("close", 5000, 0); GivePlayerMoney(playerid, -50); } return 1; }



    Dankeschön, habe keine Warnungen mehr. Die Schranke hat sich geöffnet, aber ruckartig und dann noch schief :pinch: :wacko:
    Was ist jetzt falsch?


    Hier nochmal die Schranke:


    Schranke ist zu: zoll1 = CreateObject(968, 1729.86, 440.44, 30.65, 2.00, -90.00, 342.75);
    Schranke soll durch "/zoll" geöffnet werden (Also, Schranke offen): CreateObject(968, 1729.86, 440.44, 30.65, 0.00, 0.00, 342.75);

  • Hallo liebe Community,


    ich bin dabei einen Befehl zu scripten, der es (im Moment noch) allen Spielern erlaubt, vor anderen Spielern eine Straßensperre an der Brücke von Los Santos und Flint County zu erstellen. Das sieht dann im Idealfall ungefähr so aus:



    Mit dem Befehl /roadblock [ID] kann man vier Polizeifahrzeuge spawnen lassen, die eine Straßensperre bilden. Hierbei gibt man bei [ID] die ID des Spielers ein, bei dem eine Straßensperre erstellt werden soll. Diesem Spieler habe ich die Variable wantedplayerid zugeordnet. Wenn die wantedplayerid mindestens 250 Einheiten von der Brückenmitte entfernt ist, kann die Straßensperre erstellt werden. Dies hat den Grund, um vorzubeugen, dass die wantedplayerid ungewarnt in eine vor einer Sekunde direkt vor ihm erstellte Straßensperre hineinfährt ohne eine Chance zu haben vorher auszuweichen oder Ähnliches. Außerdem muss der Jäger sich ebenfalls in der Nähe der wantedplayerid befinden, um zu bestätigen, dass man diesen Spieler auch wirklich verfolgt. Es ist noch nicht ganz fertig, denn es liegt hier ein Fehler vor, obwohl keine Errors beim Kompilieren angezeigt werden. Hier ein kleines Video bezüglich meines Problems:


    https://www.youtube.com/watch?v=_tHUrYXCJyg&feature=youtu.be


    Falls man den Chat aufgrund der niedrigen Auflösung nicht lesen kann:
    Befinde ich mich an der Brücke LS - Flint County, kann ich mir keine Straßensperre erstellen, da ich zu nah dran bin.
    Befinde ich mich weiter entfernt, funktioniert dies jedoch.
    Gebe ich eine ID ein, die offline ist, dann wird in jedem Fall eine Straßensperre erstellt. ( /roadblock 3 )


    IsPlayerConnected(wantedplayerid) sagt aus, dass die wantedplayerid online sein muss. Demzufolge sollte keine Straßensperre erstellt werden, wenn sie offline ist, da alle 3 Bedingungen erfüllt werden müssen.
    Die 3 Bedingungen: if (IsPlayerInRangeOfPoint(wantedplayerid,250,52.2971,-1534.7878,4.7385) && IsPlayerConnected(wantedplayerid) && IsPlayerInRangeOfPoint(playerid,-250,xwpid,ywpid,zwpid))


    Vielleicht habe ich gerade einen Brainf*** und ich blick' da nicht mehr richtig durch.


    Ich habe keine Ahnung woran es liegen könnte, deshalb hier der ganze Code:


    ocmd:roadblock(playerid,params[])
    {
    new wantedplayerid, Float:xwpid, Float:ywpid, Float:zwpid;
    GetPlayerPos(wantedplayerid,xwpid,ywpid,zwpid);
    if(sscanf(params,"i",wantedplayerid)) return SendClientMessage(playerid,COLOR_WHITE,""), SendClientMessage(playerid,COLOR_WHITE,"Du kannst einem Spieler eine Straßensperre an der Brücke von Los Santos und Flint County erstellen."), SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /roadblock [ID]");
    if (IsPlayerInRangeOfPoint(wantedplayerid,250,52.2971,-1534.7878,4.7385) && IsPlayerConnected(wantedplayerid) && IsPlayerInRangeOfPoint(playerid,-250,xwpid,ywpid,zwpid)) return SendClientMessage(playerid,COLOR_WHITE,""), SendClientMessage(playerid,COLOR_RED,"Straßensperre fehlgeschlagen! Der Spieler wäre zu nah an der Straßensperre oder du bist zu weit entfernt vom Spieler.");
    SendClientMessage(playerid,COLOR_WHITE,""), SendClientMessage(playerid,COLOR_YELLOW,"Es wurde eine Straßensperre an der Brücke von Los Santos und Flint County errichtet.");
    CreateVehicle(596,51.4780,-1540.6693,4.6917,172.2895,0,1,0); // 1
    CreateVehicle(596,52.2971,-1534.7878,4.7385,352.3497,0,1,0); // 2
    CreateVehicle(596,53.1344,-1528.8831,4.6971,171.5437,0,1,0); // 3
    CreateVehicle(596,53.9985,-1523.2626,4.5887,352.5575,0,1,0); // 4
    return 1;
    }
    Ich wäre über jede hilfreiche Antwort sehr dankbar. :)


    Mit freundlichen Grüßen,
    Crusard


  • Was?


    Du fragst ab, ob der eigene Spieler an seiner eigenen Position -250 ist?! 8|


    Was soll dieser Schwachsinn? ^^


    Ich frage ab, ob man sich im Radius von 250 Einheiten der Koordinaten der wantedplayerid befindet. Wenn es +250 ist, dann muss der Spieler 250 Einheiten Abstand haben, aber das erfüllt nicht den Zweck. Wenn ich ein Experte wie ihr wäre, dann würde ich hier erst nicht fragen, also ganz cool bleiben. :)



    Mach das "GetPlayerPos.." unter dem "if (sscanf.."..
    Ansonsten ist wantedpayerid immer 0!


    Okay, mach ich danke. Wie kann ich der wantedplayerid den Wert zuordnen, den ich bei /roadblock [ID] geschrieben habe?


    Mit freundlichen Grüßen,
    Crusard

    Einmal editiert, zuletzt von Crusard ()

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