[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

  • public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == bsnenter)
    {
    SetPlayerPos(playerid,365.4714,-73.2430,1001.5078);
    SetPlayerInterior(playerid,10);
    GameTextForPlayer(playerid, "Burger Shot North",3000,4);
    }
    if(pickupid == bsnexit)
    {
    SetPlayerPos(playerid,1199.4618,-920.8215,43.1059);
    SetPlayerFacingAngle(playerid,185.7090);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    }
    }
    return 1;
    }



    sonst müsstest du mit case 1: oder case:2 arbeiten


    /EDIT:


    hab probleme, alle Cars im Server zu zerstören, außer die in denen jemand drinnen sitzt


    Einmal editiert, zuletzt von !ULLLIIK ()

  • Here, for you.


    ocmd:zerstoeren(playerid,params[])
    {
    if(Adminabfrage)
    {
    for(new veh=0; veh<MAX_VEHICLES; veh++)
    {
    if(GetVehicleDriver(veh) == -1)
    {
    DestroyVehicle(veh);
    }
    }
    }
    else return SendClientMessage(playerid,COLOR_RED," Du bist kein Admin...");
    return 1;
    }

  • Hab mal wieder nen Problem:


    Hab einen Befehl erstellt, bei dem in einem Auto mit ID 405 bei Eingabe von "/Transporter" ein Auftrag gestartet wird. Sitze ich in dem Auto und gebe den Befehl ein passiert jedoch nichts. Die anderen Aktionen aus dem FS funktionieren, zB. beim Eintritt in das Auto kommt ne Message mit dem Auftrag und startet man den nicht, wird man nach 10s rausgeworfen, etc. also der FS funktioniert, nur beim "/Transporter"-Befehl sitzt der Wurm, aber wo?


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);


    if (strcmp("/Transporter", cmdtext, true, 10) == 0)
    if(IsPlayerInRangeOfPoint(playerid,20.0,1183.7532,-1229.4167,18.4297))
    {
    if(model == 405)
    {
    SendClientMessage(playerid,dunkelgrau, "|--Du hast den Auftrag angenommen.");
    SendClientMessage(playerid, weiß, "|--Begib dich zu der Garage deines Komplizen.");
    SendClientMessage(playerid, weiß, "|--Er wird deinen Wagen für den Auftrag modifizieren.");
    SetPlayerCheckpoint(playerid,2505.6121,-1695.0114,13.5581,5.0);
    Checkpoint[playerid] = 1;
    Tmission[playerid] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"**Du sitzt nicht im Fahrzeug für die Transporter-Mission.");
    }
    }
    return 1;
    }

  • Ist es möglich Abzufragen welchen Trailer man am Truck hat? Und wenn ja, wie?

  • Wozu das
    if(IsPlayerInRangeOfPoint(playerid,20.0,1183.7532,-1229.4167,18.4297))

  • Ob der Spieler 20 Fuß/Meter inerhalb der angebenen Coordinaten ist

  • Hab einen Befehl erstellt, bei dem in einem Auto mit ID 405 bei Eingabe von "/Transporter" ein Auftrag gestartet wird.


    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);
    if(model == 405)
    {


    Du hast anstatt der vehicleid die modelID mit 405 verglichen. Bei ModelID 405 sind alle Sentinel betroffen.
    BTW. ich wuerde auch eine Nachricht geben, wenn sich der Spieler nicht in der angegebenen Range befindet, ansonsten ist es doch ein wenig komisch fuer den Nutzer gar keine Antwort auf einen Befehl zu bekommen.


    @Tommy
    auf minimap spieler anzeigen
    ShowPlayerMarkers(1); bzw. ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);


    HEiTZER
    IsTrailerAttachedToVehicle(vehicleid); - um ueberhaupt festzustellen, ob ein Trailer an dem Vehicle ist.
    GetVehicleTrailer(vehicleid); - um die TrailerID von dem Vehicle zu bekommen.

  • Ich hänge grad hierbei Fest:


    für ein gangwar system im GF möchte ich das Die Anzahl der Zonen in der "Stuff.ini" Gespiechert wird, das klappt auch, nur weiß ich nun nicht wie ich die Globale Variable unter Gamemodeinit erstelle.
    new GW_Zones[GangWarZones][GW_zones_e];
    new GW_Zone[GangWarZones];
    new GangWarZones; // wird durch "LoadStuff" gesetzt


    wie muss ich das umschreiben, das ich die Variable "GangWarZones" erst unter GameModeInit definieren kann, sie aber für alle aneren Global bleibt (schwer zu erklären)

    Ich helfe gerne, aber nur wenn die andere Person wenigstens versucht es zu schaffen.
    Solange sie nicht so dreist sind und mich beim Zocken zuspammen.

  • SBIKA:


    Die Funktion mit der ModelID funktioniert bei Abfrage, ob der Spieler im Sentinel sitzt aber auch, d.h. wenn ich einsteige haut er mir auch die Message raus:
    public OnPlayerEnterVehicle(playerid, vehicleid)
    {
    new model = GetVehicleModel(vehicleid);
    if(model == 405)
    if(Tmission[playerid] == 0)
    {
    SendClientMessage(playerid,dunkelgrau,"|--Dies ist das Fahrzeug für die Transporter-Mission(benutze es mit /Transporter).");
    SendClientMessage(playerid,rot,"**Du hast 10 Sekunden die Mission zu starten, sonst wirst du aus dem Fahrzeug entfernt.");
    SetTimerEx("RemovePlayer",10000,0,"i",playerid);
    }
    return 1;
    }


    und jetzt sagt mir aber mal, wieso der hierbei nichts macht(nichtmal die Nachricht schickt, dass ich nicht an der richtigen Position stehe):


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new model = GetVehicleModel(vehicleid);


    if (strcmp("/Transporter", cmdtext, true, 10) == 0)
    if(IsPlayerInRangeOfPoint(playerid,10.0,1183.7532,-1229.4167,18.4297))
    {
    if(model == 405)
    {
    SendClientMessage(playerid,dunkelgrau, "|--Du hast den Auftrag angenommen.");
    SendClientMessage(playerid, weiß, "|--Begib dich zu der Garage deines Komplizen.");
    SendClientMessage(playerid, weiß, "|--Er wird deinen Wagen für den Auftrag modifizieren.");
    SetPlayerCheckpoint(playerid,2505.6121,-1695.0114,13.5581,5.0);
    Checkpoint[playerid] = 1;
    Tmission[playerid] = 1;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"**Du sitzt nicht im Fahrzeug für die Transporter-Mission.");
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"**Du befindest dich nicht am richtigen Ort.");
    }
    return 1;


    Wie gesagt, es passiert einfach NICHTS! 8|

  • Gibt es eine Funktion mit der ich herausfinden kann wieviel Meter ein Spieler entfernt ist ? (für /find)
    oder kann mir jemand erklären wie ich das mache ? :thumbup:


    2.
    Wie kann ich herausfinden wo ein Spieler ist z.B : Peshing Square, Santa Maria usw


    /edit 2 Hinzugefügt

    Einmal editiert, zuletzt von Tommyx3 ()

  • Hab auch ein Problem



    // Ich will mich Ingame Admin machen können
    // Irgendwie klappt das ned XD ned auslachen bitte
    CMD:makeadmin(playerid, params[])
    {
    Spieler_D[playerid][AdminLevel] == 5;
    SendClientMessage(playerid, COLOR_WHITE, "Du bist nun Lvl 5");
    }
    // Edit erledigt

    ZIELE:
    -Beiträge ohne Verwarnung/Warnung
    NICHT GESCHAFT :thumbup:

  • Könnt ihr mir sagen was dadran falsch ist?


    #define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    forward level();


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    level(); // Lässt das Level erscheinen.
    return 1;
    }



    public level()
    new level = GetPlayerScore(playerid);
    new string[2];
    {
    format(string, sizeof string, "Level:%s", level);
    TextDrawHideForAll(level);
    level = TextDrawCreate(20,110,string);
    TextDrawLetterSize(level, 0.6, 1.8);
    TextDrawFont(level, 3);
    TextDrawSetOutline(level, 2);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }



    #endif


    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(25) : error 003: declaration of a local variable must appear in a compound block
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(27) : error 055: start of function body without function header
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(34) : error 010: invalid function or declaration
    C:\Users\xxx\Desktop\samp03csvr_R2-2_win32\filterscripts\Level.pwn(44) : warning 203: symbol is never used: "string"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.

  • #define FILTERSCRIPT


    #include


    #if defined FILTERSCRIPT


    forward level1(playerid);
    new Text:level2;
    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    level1(playerid); // Lässt das Level erscheinen.
    return 1;
    }



    public level1(playerid)
    {
    new level = GetPlayerScore(playerid);
    new string[256];
    format(string, sizeof(string), "Level: %d", level);
    level2 = TextDrawCreate(20,110, string);
    TextDrawLetterSize(level2, 0.6, 1.8);
    TextDrawFont(level2, 3);
    TextDrawSetOutline(level2, 2);
    return 0;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }



    #endif



    mfg. :thumbup:</a_samp>

    Einmal editiert, zuletzt von Hisara ()


  • public OnPlayerSpawn(playerid)
    {
    level(playerid); // braucht einen parameter
    return 1;
    }


    public level( playerid ) // war kein parameter uebergeben - 'playerid' ist keine globale variable
    {
    new level = GetPlayerScore(playerid); // variablen definitionen gehoeren entweder in eine globale oder eine locale ebene, nicht irgendwo dazwischen..
    new string[10]; // war zu klein um ueberhaupt 'Level:' abzuspeichern
    format(string, sizeof string, "Level:%i", level); // %s ist fuer text-strings - %i fuer nummern
    //TextDrawHideForAll(level); // was soll das werden? level ist kein Textdraw..
    level = TextDrawCreate(20,110,string); // jetzt ist level ein textdraw
    TextDrawLetterSize(level, 0.6, 1.8);
    TextDrawFont(level, 3);
    TextDrawSetOutline(level, 2);
    return 1;
    }
    Grundlagen bezueglich funktions und variablendefinition nochmal durchlesen wuerde ich vorschlagen.

  • Auch wenn Hisara es schon gepostet hat... Ich war schon fertig mit schreiben als ich das gesehen hab deshalb poste ich es trotzdem, als erklärung ^^
    #define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    forward level(playerid);


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    level(playerid); // Lässt das Level erscheinen.
    /* Du möchtest ja das level von dem angegeben spiler verwenden, also geben wir den parameter "playerid" mit dazu. */
    return 1;
    }



    public level(playerid)
    /* nach dem Public kommt direkt die klammer, und erst dann kannst du variablen mit new erstellen */
    {
    new level = GetPlayerScore(playerid);
    new string[10];
    /* ein string mit der länge von 2 ist mit sicherheit zu klein, dur brauch ja allein schon für das wort "Level" 5 zeichen. Also:
    Level = 5 zeichen
    : = 1 Zeichen
    Die zahl (ich geh jetzt mal davon aus dass das level nicht höher als 999 sein wird) also nochmal 3 zeichen.
    Macht 5+1+3+1 = 10*/
    format(string, sizeof string, "Level:%d", level);
    /* die variable "level" ist ein integer, also eine zahl. Und für zahlen wird %d oder %i benutzt. %s ist für strings, also zeichenketten.*/
    new Text:leveltext;
    /* du hast der variable "level" schon den Score zugewiesen, also musst du für den/das Textdraw eine andere bzw neue variable nehmen. Und bei textDraw muss der
    Text: -tag davon sein.*/
    TextDrawHideForAll(leveltext);
    leveltext = TextDrawCreate(20,110,string);
    TextDrawLetterSize(leveltext, 0.6, 1.8);
    TextDrawFont(leveltext, 3);
    TextDrawSetOutline(leveltext, 2);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }



    #endif

    The fact is, I am right. And if you think I'm wrong, you are wrong.