[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
  • Beitrag von Exqoolz ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hey,


    wieso kann ich trozdem auf die No DM Fraktionen Setzen?
    if(strcmp(cmd, "/contract", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du darfst das nicht!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
    return 1;
    }
    moneys = strval(tmp);
    if(moneys < 10000 || moneys > 100000) { SendClientMessage(playerid, COLOR_GREY, " Die Vertragssumme muß mindestens $10000-, aber nicht mehr als $100000 betragen!"); return 1; }
    if(PlayerInfo[playerid][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du mußt mindestens Level 3 haben um einen Vertrag zu erstellen.");
    return 1;
    }
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[giveplayerid][pMember] == 8 && PlayerInfo[playerid][pLeader] == 8)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
    return 1;
    }
    else if(PlayerInfo[giveplayerid][pLeader] == 8 && PlayerInfo[playerid][pMember] == 8)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
    return 1;
    }
    else if(PlayerInfo[giveplayerid][pMember] == 8|| PlayerInfo[giveplayerid][pLeader] == 8)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keinen Hitman unter Vertrag nehmen !");
    return 1;
    }
    else if(gTeam[giveplayerid] == 2 || IsACop(giveplayerid) || PlayerInfo[giveplayerid][pLeader] == 24 || PlayerInfo[giveplayerid][pMember] == 24)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keinen Beamten als Auftrag geben !");
    return 1;
    }
    else if(PlayerInfo[giveplayerid][pMember] == 4 || PlayerInfo[giveplayerid][pMember] == 9 || PlayerInfo[giveplayerid][pMember] == 10 || PlayerInfo[giveplayerid][pMember] == 11 || PlayerInfo[giveplayerid][pMember] == 24)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keine No - DM Fraktionen als Auftrag geben !");
    }
    else if(PlayerInfo[giveplayerid][pLeader] == 4 || PlayerInfo[giveplayerid][pLeader] == 9 || PlayerInfo[giveplayerid][pLeader] == 10 || PlayerInfo[giveplayerid][pLeader] == 11 || PlayerInfo[giveplayerid][pLeader] == 24)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keine No - DM Fraktionen als Auftrag geben !");
    }
    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber unter Vertrag nehmen!"); return 1; }
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    playermoney = GetPlayerMoney(playerid);
    if (moneys > 0 && playermoney >= moneys)
    {
    GivePlayerMoney(playerid, (0 - moneys));
    PlayerInfo[giveplayerid][pHeadValue]+=moneys;
    format(string, sizeof(string), "%s möchte das ein Hitman die Zielperson: %s für $%d tötet.",sendername, giveplayer, moneys);
    SendFamilyMessage(8, COLOR_YELLOW, string);
    format(string, sizeof(string), "* Du hast einem Hitman den Auftrag zur Beseitigung von %s für $%d erteilt.",giveplayer, moneys);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Falsche Angaben!");
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein Aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }

  • Jeffry: Danke
    und hast du eine Idee warum /healopfer nicht funktioniert.
    Er zeigt jedes mal die Letze Message mit dem Krankenwagen an.


    ocmd:healopfer(playerid, params[]) //heal
    {
    new id, string[120],preis;
    if(!IsPlayerInFrac(playerid,4))
    return SendClientMessage(playerid, COLOR_RED,"Du bist kein Mitglied des LiS Medical-Centers!");
    if(sscanf(params, "ud", id,preis))
    return SendClientMessage(playerid, COLOR_WHITE, "Befehl: /healopfer [Name/ID] [Preis]");
    if(playerid == id)
    return SendClientMessage(playerid,COLOR_RED,"Du kannst dich nicht selber heilen!");
    if(IsPlayerNPC(id))
    return SendClientMessage(playerid, COLOR_RED, "Du kannst keinen NPC/Bot heilen.");
    if(!IsPlayerInAnyVehicle(playerid))
    return SendClientMessage(playerid, COLOR_RED,"Du musst in einem Fahrzeug sein!");
    if(id == INVALID_PLAYER_ID)
    return SendClientMessage(playerid, COLOR_RED, "Dieser Spieler existiert nicht.");
    if(GetVehicleModel(GetPlayerVehicleID(playerid) == 416) || GetVehicleModel(GetPlayerVehicleID(playerid) == 417))
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid) == 416) || GetVehicleModel(GetPlayerVehicleID(playerid) == 417))
    {

    new Float:Leben;
    GetPlayerHealth(id,Leben);
    if(Leben > 99)
    return SendClientMessage(playerid,COLOR_RED,"Der Spieler hat schon maximales Leben!");
    if(preis < 1 || preis > 1499)
    {
    SendClientMessage(playerid, COLOR_GREEN, "Du kannst maximal 1500$ und minimal 1$ !");
    return 1;
    }
    if(GetPlayerVehicleID(id) == GetPlayerVehicleID(playerid))
    {
    if(HealOffer[id] == 999)
    {
    format(string, sizeof(string), "* Du hast %s angeboten Ihn für $%d zu heilen.", GetName(id),preis);
    SendClientMessage(playerid, COLOR_WHITE, string);
    format(string, sizeof(string), "* %s hat dir angeboten dich für $%d zu heilen, tippe /acceptheal um anzunehmen.", GetName(playerid),preis);
    SendClientMessage(id, COLOR_WHITE, string);
    HealOffer[id] = playerid;
    HealPrice[id] = preis;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Der Spieler hat schon Heilangebot erhalten!");
    return 1;
    }
    }
    else
    {
    return SendClientMessage(playerid, COLOR_RED,"Der angegebene Spieler muss im gleichen Rettungswagen wie du sitzen, damit du ihn heilen kannst!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED,"Der angegebene Spieler muss im gleichen Rettungswagen wie du sitzen, damit du ihn heilen kannst!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED,"Du musst in einem Rettungswagen sitzen um einen anderen heilen zu können!");
    return 1;
    }
    }

  • if(GetVehicleModel(GetPlayerVehicleID(playerid) == 416) || GetVehicleModel(GetPlayerVehicleID(playerid) == 417))
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid) == 416) || GetVehicleModel(GetPlayerVehicleID(playerid) == 417))
    {

    zu:
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 416 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 417)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 416 || GetVehicleModel(GetPlayerVehicleID(playerid)) == 417)
    {

    Warum eigentlich zwei mal? Eins davon kannst du weg machen.

  • Danke und die Letzte frage.
    Hast du eine Ahnung warum ich in der Zeile mit pMember und pLeader Errors bekomme


    ocmd:frakmats(playerid, params[])
    {
    new mats, frak, preis;
    if(PlayerInfo[playerid][pMember] = 5 || PlayerInfo[playerid][pMember] = 6 || PlayerInfo[playerid][pMember] = 13 || PlayerInfo[playerid][pMember] = 14 || PlayerInfo[playerid][pMember] = 15 || PlayerInfo[playerid][pMember] = 16 || PlayerInfo[playerid][pMember] = 17 || PlayerInfo[playerid][pMember] = 18 || PlayerInfo[playerid][pMember] = 19 || PlayerInfo[playerid][pMember] = 20 || PlayerInfo[playerid][pMember] = 23) return SendClientMessage(playerid,-1,"Du bist in keiner Gang"); //71389
    if(PlayerInfo[playerid][pLeader] = 5 || PlayerInfo[playerid][pLeader] = 6 || PlayerInfo[playerid][pLeader] = 13 || PlayerInfo[playerid][pLeader] = 14 || PlayerInfo[playerid][pLeader] = 15 || PlayerInfo[playerid][pLeader] = 16 || PlayerInfo[playerid][pLeader] = 17 || PlayerInfo[playerid][pLeader] = 18 || PlayerInfo[playerid][pLeader] = 19 || PlayerInfo[playerid][pLeader] = 20 || PlayerInfo[playerid][pLeader] = 23) return SendClientMessage(playerid,-1,"Du bist in keiner Gang");
    if(!IsPlayerInRangeOfPoint(playerid, 8.0, -1076.1724,-1154.8590,129.2188))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst hier keine Fraktions-Materialien kaufen!");
    return 1;
    }
    if(sscanf(params, "d", mats))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutzung: /frakmats [Anzahl]");
    SendClientMessage(playerid, COLOR_GRAD1, "*Du kannst maximal 500 Fraktions-Materialien mit dir nehmen.");
    SendClientMessage(playerid, COLOR_GRAD1, "*1 Fraktions-Material kostet 10$.");
    return 1;
    }
    if(mats < 0 || mats > 500)
    {
    SendClientMessage(playerid,COLOR_WHITE," Bitte nur Summen in Höhe von 1 bis 500!");
    return 1;
    }
    if(FrakMatsHolding[playerid] + mats > 500)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "So viele Fraktions-Materialien könntest du nicht mit dir tragen!");
    return 1;
    }
    preis = mats * 10;


    new fraktionsid = 0;
    if(PlayerInfo[playerid][pLeader] > 0) fraktionsid = PlayerInfo[playerid][pLeader] - 1;
    if(preis > FraktionsKasse[fraktionsid])
    {
    SendClientMessage(playerid, COLOR_GRAD1, "So viele Geld ist nicht auf der Fraktionskasse!");
    return 1;
    }
    // GivePlayerMoney(playerid, -preis);
    FraktionsKasse[fraktionsid] -= preis;
    FrakMatsHolding[playerid] += mats;
    format(ALLSTRING, sizeof(ALLSTRING), "*Du hast %d Fraktions-Materialien für %d$ gekauft. Bringe sie nun zur Fraktionskammer!", mats, preis);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, ALLSTRING);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Solltest du reloggen / sterben verlierst du die Materialien wieder!");
    SaveFraktionsKassen();
    return 1;
    }

  • Hö? :huh:
    Möglicherweise in einer Include versteckt, oder über Variablen zusammengebaut.
    Naja, du kannst es so blockieren: Erstelle dir einen Filterscript und schreibe bei OnPlayerCommandText das rein:
    if(!strcmp(cmdtext, "/deinemutterstincktecht", true)) return 1;
    Dann solltest du den Befehl nicht mehr verwenden können.


    @[LnD]JustMe.77: Dann wäre es wahrscheinlich gut, wenn du mal bei demjenigen nachfragst, der Zugriff auf den Code hat.

  • Beitrag von The Sensei ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ok, ich werd es per Filterskript machen.


    Weißt du wieso das Ordnungsamt Park system nicht funktioniert?


    if (strcmp("/opark", cmd, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
    {
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
    return 1;
    }
    //new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    //new trailercar = GetPlayerVehicleID(playerid);
    if(IsADtCar(trailercar))
    {
    new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    new Float:X,Float:Y,Float:Z;
    new Float:z_rot;
    GetVehiclePos(trailercar, X,Y,Z);
    GetVehicleZAngle(trailercar, z_rot);
    new carowner = GetDtCarOwner(trailercar);
    new slot = GetDtCarOwnerSlot(carowner,trailercar);
    PlayerCar[carowner][slot][CarPos_x] = X;
    PlayerCar[carowner][slot][CarPos_y] = Y;
    PlayerCar[carowner][slot][CarPos_z] = Z;
    PlayerCar[carowner][slot][CarArrest] = 1;
    PlayerCar[carowner][slot][CarRotate] = z_rot;
    new fkasse = 2000 + random(2999);
    FraktionsKasse[23] += fkasse;
    if(carowner != 555)
    {
    OnPlayerCarUpdate(carowner);
    SendClientMessage(carowner, COLOR_WHITE, " Ihr Fahrzeug wurde abgeschleppt, Fahren zu zur Ordnungsamt Base, um ihr auto wieder Freizukaufen.");
    PlayerInfo[carowner][pRest] = 1;
    SetTimerEx("PlayerCarSpawn",1000,0,"i",carowner);
    }
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
    }
    return 1;
    }

  • Spoiler anzeigen
    if (strcmp("/opark", cmd, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
    {
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
    return 1;
    }
    new trail_car = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    if(IsADtCar(trail_car))
    {
    new Float:X,Float:Y,Float:Z;
    new Float:z_rot;
    GetVehiclePos(trail_car, X,Y,Z);
    GetVehicleZAngle(trail_car, z_rot);
    new carowner = GetDtCarOwner(trail_car);
    printf("carowner: %d", carowner);
    new slot = GetDtCarOwnerSlot(carowner,trail_car);
    printf("slot: %d", slot);
    PlayerCar[carowner][slot][CarPos_x] = X;
    PlayerCar[carowner][slot][CarPos_y] = Y;
    PlayerCar[carowner][slot][CarPos_z] = Z;
    PlayerCar[carowner][slot][CarArrest] = 1;
    PlayerCar[carowner][slot][CarRotate] = z_rot;
    printf("Abgeschleppt");
    new fkasse = 2000 + random(2999);
    FraktionsKasse[23] += fkasse;
    if(carowner != 555)
    {
    OnPlayerCarUpdate(carowner);
    SendClientMessage(carowner, COLOR_WHITE, " Ihr Fahrzeug wurde abgeschleppt, Fahren zu zur Ordnungsamt Base, um ihr auto wieder Freizukaufen.");
    PlayerInfo[carowner][pRest] = 1;
    SetTimerEx("PlayerCarSpawn",1000,0,"i",carowner);
    }
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du hast kein oder kein erlaubtes Fahrzeug dabei!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
    }
    return 1;
    }

    Versuche es so. Wenn es nicht geht, poste was im Server Log und im Chat steht.



    _______________


    Versuchs mal so:


    Der Code den du da gepostet hast ist in mehreren Punkten fehlerhaft.



    Punkt 1:
    Die Punkte werden nicht richtig gesetzt (du fügst die Punkte an "string" an, anstatt an den "buffer"):
    new string[256] = "Das ist ein langer String, der ziemlich lang ist und keinen eigentlichen Sinn hat, sondern nur so lang ist, damit die Ausgabe getestet werden kann.";
    SendBigMessage(playerid, -1, string);

    Code
    [31/05/2015 02:45:15] Das ist ein langer String, der ziemlich lang ist und keinen eigentlichen Sinn hat, sondern nur so lang ist, damit die Ausgabe g
    [31/05/2015 02:45:15] etestet werden kann....


    Punkt 2:
    Du löschst den ausgegebenen Text immer aus dem "string". PAWN arbeitet mit Referenzen, bei in Parametern von Funktionen übergebenen Arrays. Somit löschst du den Inhalt, was zur Folge hat, dass der Text wird in einer Schleife, oder bei doppelter Verwendung über eine Variable nicht mehr gesendet.
    new string[256] = "Das ist ein langer String, der ziemlich lang ist und keinen eigentlichen Sinn hat, sondern nur so lang ist, damit die Ausgabe getestet werden kann.";
    SendBigMessage(playerid, -1, string); //sieht den Text
    SendBigMessage(player1, -1, string); //sieht den Text nicht

    Code
    [31/05/2015 02:46:05] Das ist ein langer String, der ziemlich lang ist und keinen eigentlichen Sinn hat, sondern nur so lang ist, damit die Ausgabe g
    [31/05/2015 02:46:05] etestet werden kann....


    Außerdem ist eine while-Schleife dafür eher angebracht.



    So muss die Funktion aussehen: ( TheOneBehindYou1:)
    stock SendBigMessage(playerid,color,string[]) //©Jeffry
    {
    if(strlen(string) < 128) return SendClientMessage(playerid,color,string);
    new buffer[131],tmp[1024];
    strcat(tmp, string);
    while(tmp[0] != EOS)
    {
    strmid(buffer,tmp,0,127);
    strdel(tmp,0,127);
    if(tmp[0] != EOS) strcat(buffer,"...");
    SendClientMessage(playerid,color,buffer);
    }
    return 1;
    }


    Code
    [31/05/2015 02:47:47] Das ist ein langer String, der ziemlich lang ist und keinen eigentlichen Sinn hat, sondern nur so lang ist, damit die Ausgabe g...
    [31/05/2015 02:47:47] etestet werden kann.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Ich finde den Fehler einfach nicht hilfe bittteee:


    script: http://pastebin.com/YxF9FJbT


    Error:



    Mein Server\filterscripts\jadmin3.pwn(2348 ) : error 027: invalid character constant
    Mein Server\filterscripts\jadmin3.pwn(2348 ) : error 027: invalid character constant
    Mein Server\filterscripts\jadmin3.pwn(2348 ) : warning 215: expression has no effect
    Mein Server\filterscripts\jadmin3.pwn(2348 ) : warning 215: expression has no effect
    Mein Server\filterscripts\jadmin3.pwn(2348 ) : warning 215: expression has no effect
    Mein Server\filterscripts\jadmin3.pwn(2348 ) : error 001: expected token: ";", but found ")"
    Mein Server\filterscripts\jadmin3.pwn(2348 ) : fatal error 107: too many error messages on one line