[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
  • Benutze am besten einfache For-Schleife.
    http://wiki.sa-mp.com/wiki/For#for


    Solltest du damit nicht zurechtkommen Adde mich mal in Skype.
    Das kann man alles schlecht erklären, ohne endlos-lange Schreiben zu müssen ;)


    Danke für den Link, hab mir dazu aber noch ein anderes Tutorial durchgelesen und bin jetzt auf das gewünschte Ergebnis gekommen.


    Nebenbei könntest du mir eventuell auch bei einem anderen Problem weiterhelfen: Ich habe einen Arrestbefehl erstellt, d.h. man kann mit /arrest ID Zeit Grund einen Spieler für x Minuten einsperren. Der Befehl funktioniert wunderbar, allerdings möchte ich den entsprechenden Timer einbauen, damit der Spieler dann nach diesen x Minuten für die er eingesperrt wurde automatisch zu einer gewünschten Stelle teleportiert wurde.


    Der Befehl:
    ocmd:arrest(playerid, params[])
    {
    new Zeit, pID,string[128];
    new Grund;
    if(sscanf(params,"uds",pID,Zeit, Grund)) return SendClientMessage(playerid,ROT,"Benutze: /arrest ID Zeit Grund");
    if(IsPlayerConnected(pID))
    {
    if(IsPlayerInRangeOfPoint(playerid,10,257.4440,86.2518,1002.4453))
    {
    format(string,sizeof(string), "Verbrecher %s wurde von %s für %d Minuten wegen %s eingesperrt",SpielerName(pID),SpielerName(playerid),Zeit, Grund);
    SendClientMessageToAll(ROT,string);
    SetPlayerPos(pID,264.0817,77.4369,1001.0391);
    SetPlayerInterior(pID,6);
    SetPlayerFacingAngle(pID,273.6652);
    SetCameraBehindPlayer(pID);
    }
    else
    {
    SendClientMessage(playerid, ROT, "Du bist nicht am Arrest Point");
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Diesen Spieler gibt es nicht");
    }
    return 1;
    }


    mfg

  • Hey Leuts,


    wie kann ich bei meinem Haussystem abfragen, ob pID in der nähe von playerid ist, damit pID mit playerid in playerid's Haus kann?
    Ich glaub mal ihr habt es verstanden. ;)


    lg :thumbup:

    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

  • Er schreibt eine 0 in die SpielerDatei anstat eine 2.

    if(INI_Open(getINI(playerid)))
    {
    INI_WriteInt("Geschlecht",2);
    INI_Save();
    INI_Close();
    }

  • was hast du da vor zu versuchen?
    nein es geht nicht da du das Prinzip des Timers nicht verstehst

  • Hallo!


    Ist es möglich, den vorgegebenen Wert bei einer eNum zurückzuverfolgen:


    bsp:


    cData[vehicleid][cID]


    Ich möchte nun einen Befehl realisieren, der den Spieler in das Fahrzeug mit der angegebenen cID setzt und nicht einfach "von der vehicleid" ausgeht.


    Ich hoffe ihr versteht was ich damit meine.

  • Wieso krieg ich wenn ich mich einlogge 6 wanteds ?
    Befehl Su
    ocmd:su(playerid,params[])
    {
    if(!IstSpielerInFraktion(playerid, 1))return SendClientMessage(playerid,ROT,"Du bist nicht in der Frak LSPD");
    new pID,Sterne,Grund,Policetyp[MAX_PLAYER_NAME+1],Verhafteter[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, Policetyp, sizeof(Policetyp));
    GetPlayerName(playerid, Verhafteter, sizeof(Verhafteter));
    if(sscanf(params,"uis",pID,Sterne,Grund))return SendClientMessage(playerid,ROT,"USAGE: /su [PlayerID] [Wanteds] [Grund]");
    if(IsPlayerConnected(pID))return SendClientMessage(playerid, ROT, "INVALID PlayerID");
    GivePlayerWanted(playerid,Sterne);
    SendClientMessage(playerid,Blau,"Du hast %i bekommen Grund:%s",Sterne,Grund);
    SendPlayerMessageToPlayer(IstSpielerInFraktion(playerid, 1), Blau, "%s hat %s verhaftet Grund: &s Wanteds %i!",Policetyp,Verhafteter,Grund,Sterne);
    return 1;

    }


    Load Acc
    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, dini_Int(Spielerdatei, "Geld"));
    Spieler[playerid][Level]=dini_Int(Spielerdatei, "Level");
    Spieler[playerid][Skin]=dini_Int(Spielerdatei, "Skin");
    Spieler[playerid][Adminlevel]=dini_Int(Spielerdatei, "Adminlevel");
    Spieler[playerid][Fraktion]=dini_Int(Spielerdatei, "Fraktion");
    Spieler[playerid][Tode]=dini_Int(Spielerdatei, "Tode");
    Spieler[playerid][Morde]=dini_Int(Spielerdatei, "Morde");
    Spieler[playerid][Wanteds]=dini_Int(Spielerdatei, "Wanteds");
    Spieler[playerid][Leader]=dini_Int(Spielerdatei, "Leader");
    format(Spieler[playerid][Name], MAX_PLAYER_NAME, "%s",dini_Get(Spielerdatei, "Name"));
    SetPVarInt(playerid,"loggedin",1);
    SetPlayerWantedLevel(playerid,Wanteds);
    return 1;
    }
    uund stock GivePlayerWanted
    stock GivePlayerWanted(playerid,Float:WantedLevel)
    {
    new Float:wanted; GetPlayerHealth(playerid,wanted);
    SetPlayerHealth(playerid,wanted+WantedLevel);
    }

  • Ich möchte das der Spieler nicht in das Fahrzeug einsteigen kann wenn er nicht im Dienst ist, bekomme das aber leider nicht hin. (Er geht durch ein Pickup in den Dienst)


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(IsPlayerInVehicle(playerid,498))
    {
    if(Dienst2[playerid] == 0)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,GELB,"Du bist nicht im Dienst!");
    }


    else if(Dienst2[playerid] == 1)
    {
    SendClientMessage(playerid,ROT,"Fahre nun die Checkpoints ab");
    }
    }
    return 1;
    }


    Das Dienstpickup
    if(pickupid==dienstsps)
    {
    if(Dienst2[playerid] == 0)
    {
    new string[128];
    SetPlayerColor(playerid,GELB);
    format(string,sizeof(string),"PS HQ: %s hat den Dienst als Lieferant begonnen",SpielerName(playerid));
    SendClientMessageToAll(TUERKIS,string);
    Dienst2[playerid] = 1;
    }
    else if(Dienst2[playerid] ==1)
    {
    new string[128];
    SetPlayerColor(playerid,ROT);
    format(string,sizeof(string),"PS HQ: %s hat den Dienst als Lieferant beendet",SpielerName(playerid));
    SendClientMessageToAll(TUERKIS,string);
    Dienst2[playerid] = 0;
    }
    }


    mfg

  • Mostey
    Du kannst im OnPlayerEnterVehicle Calllback kein RemovePlayerFromVehicle bzw IsPlayerInVehicle verwenden, weil der Spieler ja noch nicht im Fahrzeug drinnen ist wenn das Callback aufgerufen wird.
    Setzt das unter OnPlayerStateChange rein und überprüfe ob newstate == PLAYER_STATE_DRIVER ist, dann sollte das klappen.

  • Hey Leuts,


    wie kann ich bei meinem Haussystem abfragen, ob pID in der nähe von playerid ist, damit pID mit playerid in playerid's Haus kann?
    Ich glaub mal ihr habt es verstanden. :P


    Sorry für Pushing aber es ist wichtig. :<


    lg :thumbup:

    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

  • Zeile (4416) : error 017: undefined symbol "MoneySpam"
    Zeile (4416) : warning 215: expression has no effect
    Zeile (4416) : error 001: expected token: ";", but found "]"
    Zeile (4416) : error 029: invalid expression, assumed zero
    Zeile (4416) : fatal error 107: too many error messages on one line


    Ist ein LoH Edit!
    Was muss ich machen, kriegs nich gefixxt!
    Wenn ich alles lösche bekomm ich 26 Klammerfehler!

  • "MoneySpam" deklarieren.

  • Die Position von playerid mithilfe von GetPlayerPos holen und anschließend mit IsPlayerInRangeOfPoint(pID.... abfragen ob er in der nähe ist.
    Umgekehrt geht das natürlich auch.


    Okay schon mal ein Anfang, vielen dank.
    Hab' es bisher nun so:

    ocmd:enter(playerid,params[])
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME], pID, Float:x,Float:y,Float:z;
    GetPlayerName(playerid,name,sizeof name);
    GetPlayerPos(playerid,x,y,z); // Ich denke mal
    if(IsPlayerInRangeOfPoint(pID,5,x,y,z); // nicht dass es so funktionieren würde, oder doch?
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)
    // Rest.

    Habs im Code erklärt.


    lg :thumbup:

    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

  • Das ist eine if Abfrage, also muss danach auch eine Anweisung kommen.



    if(IsPlayerInRangeOfPoint(pID, 5.0, x, y, z))
    {

    }



    Du musst die pID aber ja auch von irgendwo hernehmen, sonst hat sie den Wert 0

  • Wieso krieg ich wenn ich mich einlogge 6 wanteds ?
    Befehl Su


    ocmd:su(playerid,params[])
    {
    if(!IstSpielerInFraktion(playerid, 1))return SendClientMessage(playerid,ROT,"Du bist nicht in der Frak LSPD");
    new pID,Sterne,Grund,Policetyp[MAX_PLAYER_NAME+1],Verhafteter[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, Policetyp, sizeof(Policetyp));
    GetPlayerName(playerid, Verhafteter, sizeof(Verhafteter));
    if(sscanf(params,"uis",pID,Sterne,Grund))return SendClientMessage(playerid,ROT,"USAGE: /su [PlayerID] [Wanteds] [Grund]");
    if(IsPlayerConnected(pID))return SendClientMessage(playerid, ROT, "INVALID PlayerID");
    GivePlayerWanted(playerid,Sterne);
    SendClientMessage(playerid,Blau,"Du hast %i bekommen Grund:%s",Sterne,Grund);
    SendPlayerMessageToPlayer(IstSpielerInFraktion(playerid, 1), Blau, "%s hat %s verhaftet Grund: &s Wanteds %i!",Policetyp,Verhafteter,Grund,Sterne);
    return 1;

    }



    stock Load Acc


    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, dini_Int(Spielerdatei, "Geld"));
    Spieler[playerid][Level]=dini_Int(Spielerdatei, "Level");
    Spieler[playerid][Skin]=dini_Int(Spielerdatei, "Skin");
    Spieler[playerid][Adminlevel]=dini_Int(Spielerdatei, "Adminlevel");
    Spieler[playerid][Fraktion]=dini_Int(Spielerdatei, "Fraktion");
    Spieler[playerid][Tode]=dini_Int(Spielerdatei, "Tode");
    Spieler[playerid][Morde]=dini_Int(Spielerdatei, "Morde");
    Spieler[playerid][Wanteds]=dini_Int(Spielerdatei, "Wanteds");
    Spieler[playerid][Leader]=dini_Int(Spielerdatei, "Leader");
    format(Spieler[playerid][Name], MAX_PLAYER_NAME, "%s",dini_Get(Spielerdatei, "Name"));
    SetPVarInt(playerid,"loggedin",1);
    SetPlayerWantedLevel(playerid,Wanteds);
    return 1;
    }


    uund stock GivePlayerWanted


    stock GivePlayerWanted(playerid,Float:WantedLevel)
    {
    new Float:wanted; GetPlayerHealth(playerid,wanted);
    SetPlayerHealth(playerid,wanted+WantedLevel);
    }


    help pls :D