[HELP] /ad an einer bestimmten Position! Wie?

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
  • Hey Community!
    Heute möchte ich einen /ad Befehl in mein Script einbauen. Dieser sollte nur an einer bestimmten Position funktionieren!
    Wie mache ich das?



    Hier der Befehl:
    if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pMuted] == 1)
    {
    SendClientMessage(playerid, TEAM_CYAN_COLOR, "You cannot speak, you have been silenced");
    return 1;
    }
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht eingeloggt !");
    return 1;
    }
    if(PlayerInfo[playerid][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du brauchst Level 3 um Werbung zu machen.");
    return 1;
    }
    if((noad) && PlayerInfo[playerid][pAdmin] < 1331)
    {
    SendClientMessage(playerid, COLOR_GRAD2, " (/ad)vertisement ist deaktiviert !");
    return 1;
    }
    if(SBizzInfo[7][sbProducts] <= 0)
    {
    GameTextForPlayer(playerid, "~r~Ausverkauft", 5000, 1);
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: (/ad)vertise [advert text]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), "Du musst %d Sekunden warten, um eine Werbung zu schreiben !", (addtimer/1000));
    SendClientMessage(playerid, COLOR_GRAD2, string);
    return 1;


    }
    new payout = idx * 25;
    if(PlayerMoney[playerid] < payout)
    {
    format(string, sizeof(string), "* Du hast %d Worte benutzt und zahlst $%d. Du hast nicht genug.", offset, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }


    PlayerMoney[playerid] = PlayerMoney[playerid] -= payout;
    SBizzInfo[7][sbTill] += payout;
    SBizzInfo[7][sbProducts] -= 5;
    ExtortionSBiz(7, payout);
    format(string, sizeof(string), "Werbung: %s, Kontakt: %s Ph: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR,string);
    format(string, sizeof(string), "~r~Gezahlt $%d~n~~w~Nachricht beinhaltet: %d Worte", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    return 1;
    }


    Registrieren, Bestellen, Produkt kostenlos bekommen!

  • Kannst du aus dem LoH Script enthnehmen.


    IsPlayerInRangeOfPoint...

  • if(IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))


    einbauen so kannst du abfragen ob er an der Position ist.
    du willst mehrere Posis? kein problem:


    if(IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z) || IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))

  • if(IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))


    einbauen so kannst du abfragen ob er an der Position ist.
    du willst mehrere Posis? kein problem:


    if(IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z) || IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))


    Danke ;) Das mit den mehreren Positionen, wäre meine nächste Frage gewesen. ;D


    Registrieren, Bestellen, Produkt kostenlos bekommen!

  • Man kanns auch kürzer machen und Zeilen sparen:



    if(!IsPlayerInRangeOfPoint(playerid, RADI, X,Y,Z)return SendClientMessage(playerid, COLOR_WHITE, "Nicht am AD Punkt");
    else if(!IsPlayerInRangeOfPoint(playerid, RADI, X,Y,Z)return SendClientMessage(playerid, COLOR_WHITE, "Nicht am AD Punkt");


    ;)


    //Edit


    Kein " gemacht am ende vom ersten SendClientMessage


    //Edit


    Beim zweiten SendClientMessage ebenso.. :pinch: