Werbungs anzeige im Textdraw

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
  • Hallo Leute,
    Ich habe mal probiert eine Befehl für Werbung zuschalten erstellt.
    jedoch kommen Errors im Wegen dem Timer, leider weiß ich nicht was Falsch ist.
    Hier ist mein Code vielleicht seht ihr die Fehler die ich gemacht habe und könnt mich diese wissen lassen :)


    Code:
    //-Werbungforward WerbungsTimer(playerid);
    //-Werbung
    new Text:Werbung;
    //-Werbung
    SetTimer("WerbungsTimer",30000,1);
    Werbung = TextDrawCreate(325.000000, 426.000000, "Werbung");
    TextDrawAlignment(Werbung, 2);
    TextDrawBackgroundColor(Werbung, 255);
    TextDrawFont(Werbung, 1);
    TextDrawLetterSize(Werbung, 0.470000, 0.899999);
    TextDrawColor(Werbung, 0xFFFFFFFF);
    TextDrawSetOutline(Werbung, 0);
    TextDrawSetProportional(Werbung, 1);
    TextDrawSetShadow(Werbung, 1);
    TextDrawUseBox(Werbung, 1);
    TextDrawBoxColor(Werbung, 101);
    TextDrawTextSize(Werbung, -115.000000, -291.000000);
    dcmd_ad(playerid,params[])
    {
    new string[256], textt[100], name[MAX_PLAYER_NAME];
    if(sscanf(params,"s[100]",textt))return SendClientMessage(playerid,HellBlau,"/ad [Text]");
    GetPlayerName(playerid,name,sizeof(name));
    if(WerbungsTimer == 0) //Zeile 3011
    {
    format(string,sizeof(string),"Werbung: %s, von %s",textt,name);
    TextDrawSetString(Werbung,string);
    TextDrawShowForAll(Werbung);
    SetTimer("werbung",300000,false);
    WerbungsTimer = 1; //Zeile 3017
    }
    else if(WerbungsTimer == 1) //Zeile 3019
    {
    SendClientMessage(playerid,Rot,"Es hat bereits jemand eine Werbung geschaltet. Warte bis zu 5 Minuten und probiere es erneut.");
    }
    return 1;
    }
    Das habe ich im moment alles drinne und das sind die Fehler:
    Bread.pwn(3011) : error 076: syntax error in the expression, or invalid function call
    Bread.pwn(3017) : error 076: syntax error in the expression, or invalid function call
    Bread.pwn(3017) : warning 215: expression has no effect
    Bread.pwn(3019) : error 076: syntax error in the expression, or invalid function call
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.


    MfG Flo


    Bitte um Hilfe

    ↓Das ist der Youtube Channel von mir und meinen Kollegen↓



    Sa-Mp Server [Im Aufbau/Beta]
    128.65.216.200:7777

    2 Mal editiert, zuletzt von EliteBread () aus folgendem Grund: 3xText

  • Du benutzt anscheinend für den Timer der Werbung und die Abfrage (ob die Werbung verfügbar ist) die selbe Variable. ;)


    Hier müsste der Fehler sein:


    SetTimer("WerbungsTimer",30000,1);


    anpassen zu:


    SetTimer("werbung2",30000,1);


    und dementsprechend auch den Public ändern.

  • Naja, ich weiß nicht wirklich was du mit den beiden Timern anstellen möchtest. Wenn du abfragen möchtest, ob die Werbungsanzeige wieder gefüllt werden kann, machst du das einfach mit einer Variable. Du brauchst dafür nicht die Timerzeit abfragen. Würde sogar weniger Ressourcen in Anspruch nehmen.


    Hab mir mal erlaubt deinen Code etwas abzuändern:


    oben im Script:
    new werbungavailable;
    forward WerbungsTimer();


    Befehl:
    dcmd_ad(playerid,params[])
    {
    new string[256], textt[100], name[MAX_PLAYER_NAME];
    if(sscanf(params,"s[100]",textt))return SendClientMessage(playerid,HellBlau,"/ad [Text]");
    GetPlayerName(playerid,name,sizeof(name));
    if(werbungavailable == 0) //Zeile 3011
    {
    format(string,sizeof(string),"Werbung: %s, von %s",textt,name);
    TextDrawSetString(Werbung,string);
    TextDrawShowForAll(Werbung);
    SetTimer("WerbungsTimer",300000,false);
    werbungavailable = 1;
    }
    else if(werbungavailable == 1)
    {
    SendClientMessage(playerid,Rot,"Es hat bereits jemand eine Werbung geschaltet. Warte bis zu 5 Minuten und probiere es erneut.");
    }
    return 1;
    }


    public WerbungsTimer()
    {
    werbungavailable = 0;
    return 1;
    }

  • Geht immer noch nicht habe das jetzt so.


    //-Werbung
    new Text:Werbung;
    new werbungavailable;
    forward WerbungsTimer();


    //Werbung
    Werbung = TextDrawCreate(325.000000, 427.000000, "Werbung");
    TextDrawAlignment(Werbung, 2);
    TextDrawBackgroundColor(Werbung, 255);
    TextDrawFont(Werbung, 1);
    TextDrawLetterSize(Werbung, 0.150000, 0.899999);
    TextDrawColor(Werbung, -1);
    TextDrawSetOutline(Werbung, 0);
    TextDrawSetProportional(Werbung, 1);
    TextDrawSetShadow(Werbung, 1);


    dcmd_ad(playerid,params[])
    {
    new string[256], textt[100], name[MAX_PLAYER_NAME];
    if(sscanf(params,"s[100]",textt))return SendClientMessage(playerid,HellBlau,"/ad [Text]");
    GetPlayerName(playerid,name,sizeof(name));
    if(werbungavailable == 0)
    {
    format(string,sizeof(string),"Werbung: %s, von %s",textt,name);
    TextDrawSetString(Werbung,string);
    TextDrawShowForAll(Werbung);
    SetTimer("WerbungsTimer",50000,false);
    werbungavailable = 1;
    }
    else if(werbungavailable == 1)
    {
    SendClientMessage(playerid,Rot,"Es hat bereits jemand eine Werbung geschaltet. Warte bis zu 1 Minuten und probiere es erneut.");
    }
    return 1;
    }


    public WerbungsTimer()
    {
    werbungavailable = 0;
    return 1;
    }

    ↓Das ist der Youtube Channel von mir und meinen Kollegen↓



    Sa-Mp Server [Im Aufbau/Beta]
    128.65.216.200:7777

  • Das hat dann aber nichts mit meiner Lösung für dein eigentliches Problem zutun.


    Hast du deinen Befehl so auch definiert?


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(ad,2,cmdtext);
    return 0;
    }


    Ansonsten kann ich dir bei dcmd nicht viel helfen, arbeite eigentlich nur mit ocmd. Konnte aber auf den ersten Blick keinen Fehler im eigentlichen Befehl feststellen. :huh:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich wollte das gerne so :)



    Ich wollte das Als Textdraw machen :)
    des wegen poste ich auch die ganze zeit die Textdraws mit.


    Code:
    //-Werbung
    new Text:Werbung;
    new werbungavailable;
    forward WerbungsTimer();
    dcmd_ad(playerid,params[])
    {
    new string[256], textt[100], name[MAX_PLAYER_NAME];
    if(sscanf(params,"s[100]",textt))return SendClientMessage(playerid,HellBlau,"/ad [Text]");
    GetPlayerName(playerid,name,sizeof(name));
    if(werbungavailable == 0)
    {
    format(string,256,"Werbung von %s:%s",name,textt);
    Werbung = CreatePlayerTextDraw(playerid,525.000000, 125.000000,string);
    Werbung = TextDrawCreate(325.000000, 427.000000, "Werbung");
    TextDrawAlignment(Werbung, 2);
    TextDrawBackgroundColor(Werbung, 255);
    TextDrawFont(Werbung, 1);
    TextDrawLetterSize(Werbung, 0.150000, 0.899999);
    TextDrawColor(Werbung, -1);
    TextDrawSetOutline(Werbung, 0);
    TextDrawSetProportional(Werbung, 1);
    TextDrawSetShadow(Werbung, 1);
    TextDrawShowForAll(Werbung);
    SetTimer("WerbungsTimer",50000,false);
    werbungavailable = 1;
    }
    else if(werbungavailable == 1)
    {
    SendClientMessage(playerid,Rot,"Es hat bereits jemand eine Werbung geschaltet. Warte bis zu 1 Minuten und probiere es erneut.");
    }
    return 1;
    }
    public WerbungsTimer()
    {
    werbungavailable = 0;
    return 1;
    }


    da kommt ein Fehler:


    Bread.pwn(3026) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.

    ↓Das ist der Youtube Channel von mir und meinen Kollegen↓



    Sa-Mp Server [Im Aufbau/Beta]
    128.65.216.200:7777

    3 Mal editiert, zuletzt von EliteBread () aus folgendem Grund: 3x Text

  • Warum PlayerTextDraw? Du machst die Werbung doch sowieso global für jeden sichtbar, da kannst du ja dann auch folgendes nutzen:


    Werbung = TextDrawCreate(525.000000, 125.000000," ");


    Die Warning kommt übrigens durch die Definierung des TextDraws oben im Script, wenn du die PlayerTextDraw Funktion nutzen möchtest, muss die Variable immer ein "PlayerText:" als Prefix haben.
    Lass es aber jetzt so wie es ist und nehme den berichtigten Code von mir.


    €: Du musst die TextDrawSetString Funktion noch zusätzlich nutzen. ;)

  • C:\Users\capco_000\Desktop\Alles Mögliche\Programme\Scripts\Selfmade Script\gamemodes\Bread.pwn(3020) : warning 204: symbol is assigned a value that is never used: "string"
    C:\Users\capco_000\Desktop\Alles Mögliche\Programme\Scripts\Selfmade Script\gamemodes\Bread.pwn(3050) : error 021: symbol already defined: "WerbungsTimer"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Das sind die Fehler :/
    ich habe das jetzt so weiß nicht genau ob du das so meinst.
    Ich probiere alles aber es geht einfach nicht :/


    dcmd_ad(playerid,params[])
    {
    new string[256], textt[100], name[MAX_PLAYER_NAME];
    if(sscanf(params,"s[100]",textt))return SendClientMessage(playerid,HellBlau,"/ad [Text]");
    GetPlayerName(playerid,name,sizeof(name));
    if(werbungavailable == 0)
    {
    Werbung = TextDrawCreate(325.000000, 427.000000," ");
    TextDrawAlignment(Werbung, 2);
    TextDrawBackgroundColor(Werbung, 255);
    TextDrawFont(Werbung, 1);
    TextDrawLetterSize(Werbung, 0.150000, 0.899999);
    TextDrawColor(Werbung, -1);
    TextDrawSetOutline(Werbung, 0);
    TextDrawSetProportional(Werbung, 1);
    TextDrawSetShadow(Werbung, 1);
    TextDrawShowForAll(Werbung);
    SetTimer("WerbungsTimer",50000,false);
    werbungavailable = 1;
    }
    else if(werbungavailable == 1)
    {
    SendClientMessage(playerid,Rot,"Es hat bereits jemand eine Werbung geschaltet. Warte bis zu 1 Minuten und probiere es erneut.");
    }
    return 1;
    }


    bitte um schnelle hilfe da ich es hasse wen eine sache nicht fertig ist :/

    ↓Das ist der Youtube Channel von mir und meinen Kollegen↓



    Sa-Mp Server [Im Aufbau/Beta]
    128.65.216.200:7777

    2 Mal editiert, zuletzt von EliteBread () aus folgendem Grund: 2xtext

  • unter OnGameModeInit:
    Werbung = TextDrawCreate(325.000000, 427.000000," ");
    TextDrawAlignment(Werbung, 2);
    TextDrawBackgroundColor(Werbung, 255);
    TextDrawFont(Werbung, 1);
    TextDrawLetterSize(Werbung, 0.150000, 0.899999);
    TextDrawColor(Werbung, -1);
    TextDrawSetOutline(Werbung, 0);
    TextDrawSetProportional(Werbung, 1);
    TextDrawSetShadow(Werbung, 1);


    dcmd_ad(playerid,params[])
    {
    new textt[100], name[MAX_PLAYER_NAME];
    if(sscanf(params,"s",textt))return SendClientMessage(playerid,HellBlau,"/ad [Text]");
    GetPlayerName(playerid,name,sizeof(name));
    if(werbungavailable == 0)
    {
    TextDrawShowForAll(Werbung);
    SetTimer("WerbungsTimer",50000,false);
    werbungavailable = 1;
    }
    else if(werbungavailable == 1)
    {
    SendClientMessage(playerid,Rot,"Es hat bereits jemand eine Werbung geschaltet. Warte bis zu 1 Minuten und probiere es erneut.");
    }
    return 1;
    }


    versuch es mal so und zeig mal Zeile 3020.