Beiträge von Goldkiller

    Du hast den Timer auf 60000ms gestellt.60000ms sind 60 Sekunden,60 Sekunden sind 1 Minuten.
    Du machst "adtimer=60;"
    Pro aufruf des Timers wird adtimer - 1 gerechnet. Heisst also der Timer muss die Funktion 60 mal aufrufen,bis adtimer gleich 0 ist.
    1 Minute * 60 ist 60 Minuten. So vielleicht ?

    Relevent ist ja sowieso nur dieser Teil:


    DestroyObject(sirene[vehicleid]);
    DestroyObject(sirene1[vehicleid]);
    DestroyObject(sirene2[vehicleid]);
    DestroyObject(sirene3[vehicleid]);
    UCL[vehicleid] = 0;//ist wegen der "if" Anfrage beim /command
    if (IsACopCar(vehicleid))
    {
    if(GetVehicleModel(vehicleid) == 411)
    {
    ifl1[GetPlayerVehicleID(vehicleid )] = CreateObject(19419,0,0,-1000,0,0,0,100);// Völliger Quatsch.
    // GetPlayerVehicleID(vehicleid ) ???
    // vehicleid ist sowieso nicht die playerid ,außerdem eh sinnlos beim Spawn ,da zu diesem Zeitpunkt eh noch Niemand im Wagen sitzen kann
    //
    // Auch in der nächsten Zeile bei "AttachObjectToVehicle"
    AttachObjectToVehicle(ifl1[GetPlayerVehicleID(vehicleid )],GetPlayerVehicleID(vehicleid ),-0.000000,-0.069999,0.659999,0.000000,0.000000,0.000000);
    }
    }
    return 1;

    Hast du eigentlich meinen Post zuende gelesen ?

    [...]
    Übrigens änderst du bei /advertise niemals den Wert von adtimer.Heisst also,er bleibt unverändert und somit auch bei 0 falls vorher keine Fehlermeldung kommt. Sollte die Werbung erfolgreich angenommen werden,solltest du dann also "adtimer = X;" setzen.

    Mehr Informationen als "Also der timer Funktioniert nicht oder so MAn kann soviel Werbung machen wei man will..." ?
    Welche Nachricht wird dir denn immer ausgegeben bei /advertise ?
    Übrigens änderst du bei /advertise niemals den Wert von adtimer.Heisst also,er bleibt unverändert und somit auch bei 0 falls vorher keine Fehlermeldung kommt. Sollte die Werbung erfolgreich angenommen werden,solltest du dann also "adtimer = X;" setzen.

    Wollte es eigentlich in den anderen Thread noch schreiben,aber per Edit hätte es sich wohl erledigt ( hast es jedenfalls so geschrieben :p ).
    Die Befehle die vorher bei OnPlayerCommandText waren tust du unter OnPlayerCommandPerformed(playerid, cmdtext[], success).


    public OnPlayerCommandPerformed(playerid, cmdtext[], success){
    if(success) return 1; // Wir brauchen keine Befehle,die bereits per ZCMD gefunden wurden hier vergleichen.
    // Hier deine Befehle
    printf("playerid: %d , cmdtext: '%s' , succes: %d",playerid,cmdtext,success ); // Zum testen für dich ;)
    }

    Sicherlich nicht durch das 3DLabel. Da ist bestimmt noch ein Pickup versteckt, dass in direkter nähe zu dem 3DLabel steht.
    Dann fängt man das Ereignis über OnPlayerPickUpPickup auf ;).

    Ja.Würde dir jetzt sowieso direkt lieber zu sscanf + ZCMD raten,da läuft es viel einfacher ab.
    Lass dir doch per Debugnachrichten noch mehr ausgeben.
    zB cmdtext , tmp , länge_von( tmp ) .


    Außerdem bezweifel ich,dass "printf("D 0");" wirklich kommt. Denn nach einem return wird die Funktion beendet, dass printf wäre nie aufgerufen worden. Zusätzlich hättest auch noch einen Warnung vom Compiler bekommen ;).

    Mal versucht das Ergebnis zu interpretieren ? Denn darum geht es eigentlich,ohne kommst auch nicht weit.
    Das bedeutet ja,dass er in diese Bedingung "if(!strlen(tmp))" wahr ist und sowieso durch das "return 1;" die Funktion beendet.

    Das du noch gar nichts hast,hättest du direkt am Anfang erwähnen sollen.
    Ich hab keine Ahnung,wie du die Produkte realisieren willst,kann dir daher auch keine Lösung anbieten die dir wahrscheinlich gefällt.


    #define MAX_PRODUCT_TYPES 5
    // zb
    // 5 unterschiedliche Güter
    // "Armor,Health,Fallschirm, Bier , Joint "


    enum {
    PRODUCT_ARMOR,
    PRODUCT_HEALTH,
    PRODUCT_FALLSCHIRM,
    PRODUCT_BIER,
    PRODUCT_JOIN
    }


    enum e_Shop {
    Float:S_fX,
    Float:S_fY,
    Float:S_fZ,
    S_sName[20],
    S_aiProdukt[ MAX_PRODUCT_TYPES ]
    }
    new Shop[ 10 ][e_Shop];


    // Shop[0][S_aiProdukt][PRODUCT_ARMOR] = 50 ; // 50 Einheiten von Armor

    So könnte man es machen.Gibt aber noch unendliche viele Andere Möglichkeiten.

    Nein,du hättest nur params in der sscanf Zeile mit cmdtext[10] ersetzen müssen und den Kopf durch "if(!strcmp(..)".



    if(!strcmp(cmdtext,"/makebizz")) {
    {
    if(PlayerInfo[playerid][pAdmin] >= 3)
    {
    new Float:x,Float:y,Float:z,preis,level,int,world;
    if(sscanf(params,"dddd",preis,level,int,world))return SendClientMessage(playerid,BLAU,"Benutze: /makebizz [PREIS] [LEVEL] [INT-NR] [WORLD]"); // hier params durch cmdtext[10].
    GetPlayerPos(playerid,x,y,z);
    CreateBizz(x,y,z,"Keiner",preis,level,int,world); //Mit Stock
    }
    return 1;
    }

    Wie du jetzt <Anzahl_Produke> ermittelst musst selber wissen, liegt ja eh kein Code vor :p.


    Du musst doch irgendwie ausrechnen können,wieviele Produkte bereits vorhanden sind. Irgendwelche Variablen musst du ja dafür haben,macht doch sonst gar keinen Sinn.


    Zitat

    Achso und wie kann ich das speichern, das die Produkte nach dem restart immer noch die gleiche anzahl haben?


    Mach lieber eins nach dem Anderen.Du weisst ja noch nicht mal "wieviele Produkte" du hast,wie willst die also speichern :P ?

    Wo liegt jetzt das Problem.
    Ist doch eine simple Abfrage ob 500 erreicht sind oder eben nicht.
    <Anzahl_Produke> < 500 ) { auffüllen lassen }
    <Anzahl_Produkte>-- // Beim kaufen
    Wie du jetzt <Anzahl_Produke> ermittelst musst selber wissen, liegt ja eh kein Code vor :p.