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 ?
Beiträge von Goldkiller
-
-
60000 ms ( 60 Sekunden -> 1Min , SetTimer() ) * 60 Aufrufe bis wieder neue Werbung erlaubt ist, sind 60 Minuten.
-
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. -
Da würd ich mir lieber einen Anderen keyBinder suchen.Der verbraucht viel zu viel Speicher für so ein kleines Programm.
-
Da war wohl ein Profi am Werk.
Wo hast du denn den KeyBinder her ? Link wäre nett ;). -
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. -
Mal mit debuggen probiert ?
http://bit.ly/jA1HGa
Geht viel schneller als hier jetzt wild rumzuraten wo der Fehler liegen könnte. -
Zitat
http://wiki.sa-mp.com/wiki/SetVehicleParamsForPlayer
Note: From 0.3 you will have to re-apply this function when OnVehicleStreamIn is called!
Hast auch das bedacht ? -
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;
} -
Die sollen ungültige Werte darstellen,mehr nicht.
-
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.ZitatAchso 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 ? -
Du musst es natürlich auch unter OnPlayerCommandText haben und "ocmd:makebizz(playerid,params[])" ändern.
if(!strcmp(cmdtext,"/makebizz")) {
//usw
}Zeig am besten mal wie es bei dir aktuell aussieht.
-
Da ist doch ein Beispiel 0o.
Was verstehst du denn daran nicht,musst mal etwas genauer werden.
Der Text "/makebizz" hat 9 Zeichen, dazu kommt noch ein Leerzeichen.Macht also 10.
Also nehmen wir den cmdtext ab der 10 Stelle anstatt params. -
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.