Siehe meinen letzten Post, hast Du scheinabr übersehen.
Und unterlass bitte die Vollzitate, das Scrollen verlängert sich dadurch immens. ^^^
wie mach ich das ?
Wo muss ich dies hintuhen ?
Soll ich denn public Werbung entfernen ?
Siehe meinen letzten Post, hast Du scheinabr übersehen.
Und unterlass bitte die Vollzitate, das Scrollen verlängert sich dadurch immens. ^^^
wie mach ich das ?
Wo muss ich dies hintuhen ?
Soll ich denn public Werbung entfernen ?
Alles anzeigenCMD:werbung(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pTot] == 1)return SendClientMessage(playerid,COLOR_GREY,"Mann kann im Krankenhaus keine Werbung schreiben.");
if(Spieler[playerid][pLevel] <= 3)return SendClientMessage(playerid, COLOR_GREY, "Du brauchst Level 3 oder höher um Werbung schreiben zu können.");
new string[256],text[144];
if(sscanf(params,"s[256]",text))return SendClientMessage(playerid,COLOR_GREY,"Benutze /werbung [Nachricht]");
new payout = strlen(text) * 9;
if(Spieler[playerid][pMoney] <= payout)
{
format(string, sizeof(string), "Du besitzt nicht genügend Geld (%d$), um die Werbung schalten zu können.",payout);
SendClientMessage(playerid, COLOR_GREY, string);
return 1;
}
if(WerbungZeit > 0)
{
format(string, sizeof(string), "Bitte warte noch %d Sekunden für die Nächste Werbung!", WerbungZeit);
SendClientMessage(playerid, COLOR_GREY, string);
return 1;
}
else
{
WerbungZeit = 1;
SetTimer("Werbung", 60000, 0);
GiveMoney(playerid,-payout);
format(string, sizeof(string), "|Werbung| %s, Absender: %s, Handy(Nr.%d)",text,GetName(playerid),Spieler[playerid][pNumber]);
SendClientMessageToAll(COLOR_GREEN, string);
format(string, sizeof(string), "Werbung erfolgreich abgesendet.~n~Zahlung: ~r~-%d$",payout);
GameTextForPlayer(playerid, string, 11000, 5);
}
return 1;
}
Möchtest du, dass man alle 60 Sekunden nur eine Werbung schalten kann?
Dann musst du das so machen, und im Callback "Werbung" "WerbungZeit" einfach auf 0 setzen.
geht immer noch nicht.
public
public Werbung(playerid)
{
if(WerbungZeit == 60)
{
WerbungZeit --;
}
if(WerbungZeit == 0)
{
WerbungZeit = 0;
}
return 1;
}
Alles anzeigenCMD:werbung(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pTot] == 1)return SendClientMessage(playerid,COLOR_GREY,"Mann kann im Krankenhaus keine Werbung schreiben.");#
if(Spieler[playerid][pLevel] < 0)return SendClientMessage(playerid, COLOR_GREY, "Du brauchst Level 3 oder höher um Werbung schreiben zu können.");
new string[144],text[100];
if(sscanf(params,"s[100]",text))return SendClientMessage(playerid,COLOR_GREY,"Benutze /werbung [Nachricht]");
new payout = strlen(text) * 7;
if(Spieler[playerid][pMoney] < payout)
{
format(string,sizeof string,"Du besitzt nicht genügend geld (%d$), um die Werbung schalten zu können.",payout);
return SendClientMessage(playerid,COLOR_GREY,string);
}
GiveMoney(playerid,-payout);
format(string,sizeof string,"|Werbung| %s, Absender: %s, Handy(Nr.%d)",text,GetName(playerid),Spieler[playerid][pNumber]);
return SendClientMessageToAll(COLOR_GREEN,string);
}
Schreibe das so. Das sollte so auch dann eigentlich klappen.
Außerdem hast du pro Buchstaben 40€ genommen, obwohl du nur 7 wolltest, oder?
So nun geht die Zahlung.
Aber meine 60 Sekunden Timer werden nicht gezählt.
Ich kann durchgehend Werbung schreiben anstadt nach jede Werbung 60 Sek warten.
Code.
CMD:werbung(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pTot] == 1)return SendClientMessage(playerid,COLOR_GREY,"Mann kann im Krankenhaus keine Werbung schreiben.");
if(Spieler[playerid][pLevel] <= 3)return SendClientMessage(playerid, COLOR_GREY, "Du brauchst Level 3 oder höher um Werbung schreiben zu können.");
new string[256],text[144];
if(sscanf(params,"s[256]",text))return SendClientMessage(playerid,COLOR_GREY,"Benutze /werbung [Nachricht]");
new payout = strlen(text) * 9;
if(Spieler[playerid][pMoney] <= payout) {
format(string, sizeof(string), "Du besitzt nicht genügend Geld (%d$), um die Werbung schalten zu können.",payout);
SendClientMessage(playerid, COLOR_GREY, string);
return 1;
}
if(WerbungZeit < 0) {
format(string, sizeof(string), "Bitte warte noch %d Sekunden für die Nächste Werbung!", WerbungZeit);
SendClientMessage(playerid, COLOR_GREY, string);
SetPVarInt(playerid,"adtimer",1);
WerbungZeit = 60;
SetTimer("Werbung", 60000, 0);
return 1;
}
else{
GiveMoney(playerid,-payout);
format(string, sizeof(string), "|Werbung| %s, Absender: %s, Handy(Nr.%d)",text,GetName(playerid),Spieler[playerid][pNumber]);
SendClientMessageToAll(COLOR_GREEN, string);
format(string, sizeof(string), "Werbung erfolgreich abgesendet.~n~Zahlung: ~r~-%d$",payout);
GameTextForPlayer(playerid, string, 11000, 5);
}
return 1;
}
Alles anzeigennew string[256],text;
ändern in:
new string[256],text[144];
Du hast text als Integer deklariert, da die Funktion strval() aber einen String ( Char Array ) erwartet, erscheint eben der Error.
Außerdem muss jede Zeichenkette als String definiert werden.
128 = max. Anzahl an Zeichen
Da man im Chat eh nur 144 Zeichen verwenden kann, macht mehr keinen Sinn umd belastet den Speicher unnoetig.
Auch sollte man eher die Funktion strlen() anstatt strval() verwenden, da du die Länge der Zeichenkette und nicht die konvertierte Version von string zu int haben willst.
Jetzt kommt nichts mehr das Er mir Geld abzieht oder das er pro Buchstabe 7$ nimmt.
new payout = strval(text) * 40;
C:\Users\Large City\gamemodes\MySelfmade.pwn(2473) : error 035: argument type mismatch (argument 1)
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Guten abend,
Und zwar weiss ich nicht wie die Werbung schreiben soll, wovon ich auch keine ahnung habe wie ich dies mache.
Ich möchte gerne pro Buchstabe was er schreib , 7$ kostest d.h. 10 Buchstaben = 70$.
Ich hoffe es könnte mir jemand helfen.
Code:
CMD:werbung(playerid,params[])
{
if(!IsLoggedIn(playerid))return 1;
if(Spieler[playerid][pTot] == 1)return SendClientMessage(playerid,COLOR_GREY,"Mann kann im Krankenhaus keine Werbung schreiben.");
if(Spieler[playerid][pLevel] < 0)return SendClientMessage(playerid, COLOR_GREY, "Du brauchst Level 3 oder höher um Werbung schreiben zu können.");
new string[256],text;
if(sscanf(params,"s[256]",text))return SendClientMessage(playerid,COLOR_GREY,"Benutze /werbung [Nachricht]");
new payout = text * 40;
if(Spieler[playerid][pMoney] < payout)
{
format(string, sizeof(string), "Du besitzt nicht genügend Geld (%d$), um die Werbung schalten zu können.",payout);
SendClientMessage(playerid, COLOR_GREY, string);
return 1;
}
GiveMoney(playerid,-payout);
format(string, sizeof(string), "|Werbung| %s, Absender: %s, Handy(Nr.%d)",text,GetName(playerid),Spieler[playerid][pNumber]);
SendClientMessageToAll(COLOR_GREEN, string);
return 1;
}
Danke für deine Hilfe.
Automatisch kicken, nehme ich an, oder?
Da wäre die Abfrage
if(stunde == 6 && minute >= 45)
genau,
und mann kann dann nicht vor 07Uhr den Server betretten/coneccten ?
Ja.
Es gibt ja nur Uhrzeiten zwischen 0 und 23 Uhr, sprich wenn die Stunde kleiner 8 ist liegt die Zeit zwischen 0:00:00 und 7:59:59.
Habe noch eine Frage, und wie mach ich das nun das der Server von 06:45 - 07:00 Uhr nicht erreichbar ist ?
Das kein Spieler dadrauf Connecten kann ?
if(stunde < 8)
Reicht schon.
Danke für deine schnelle Antwort.
d.H jetzt
if(stunde < 00 || stunde < 08)
Also if(stunde < 8) reicht schon das ich mich zwischen 00 Uhr & 08 Uhr nicht Registrieren kann ?
Guten Abend Com,
Und zwar bekomme ich dies nicht hin das es von 0:00 bis 08:00Uhr die Registration geschlossen ist.
Es wird jedes mal eingezeigt das ich mich Registrieren kana.
Code:
gettime(stunde);
if(stunde < 00 || stunde > 08)
{
new string[140];
strdel(DialogString, 0, sizeof(DialogString));
format(string, sizeof(string), "Die Registration ist von 0:00 bis 08:00 Uhr geschlossen.\nFalls du bereits einen Account besitzt, kannst du dich dennoch einloggen.");
strcat(DialogString, string);
ShowPlayerDialog(playerid, DIALOG_ServerRestarting, DIALOG_STYLE_MSGBOX, "Registration geschlossen", DialogString, "Schließen", "");
KickEx(playerid);
}
else{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""SERVER_NAME" Register", "{FFFFFF}Willkommen auf "SERVER_NAME"\n\nEs wurde kein Account unter diesem Namen gefunden, gib dein Passwort niemals weiter.\nAuch nicht an Supporter, Du kannst dich nun Registrieren.\nBitte gib nun dein Passwort ein:", "Register", "Abbrechen");
}
Alles anzeigenLiebe Community,
Ich habe eine Frage, ich habe einen Uhrzeit-Filterscript drin, doch wenn es 21:00 Uhr ist, ist es immer noch nicht dunkel.
Meine Frage ist, wie kann ich einstellen das es ab z.b. 21:00 Uhr stockduster ist?
Vielleicht nützliche Zeilen:
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid, Time), TextDrawShowForPlayer(playerid, Date);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(playerid, Time), TextDrawHideForPlayer(playerid, Date);
return 1;
}
public settime(playerid)
{
new string[256],year,month,day,hours,minutes,seconds;
getdate(year, month, day), gettime(hours, minutes, seconds);
format(string, sizeof string, "%d/%s%d/%s%d", day, ((month < 10) ? ("0") : ("")), month, (year < 10) ? ("0") : (""), year);
TextDrawSetString(Date, string);
format(string, sizeof string, "%s%d:%s%d:%s%d", (hours < 10) ? ("0") : (""), hours, (minutes < 10) ? ("0") : (""), minutes, (seconds < 10) ? ("0") : (""), seconds);
TextDrawSetString(Time, string);
}
Ich hoffe ihr könnt mir helfen
MfG
James.Spader.
Füg das mal unter OnGameModeIninit ein.
gettime(hours, minutes, seconds);
SetWorldTime(hours);
Alles anzeigenHallo com ich wollte gerade min /stats befehl ausbauen und dann kommt jetze sowas
Name:Banger
Alter: 15
Geschlecht: (steht nichts stand vorher aber Männlich oder weißblich je nach dem )
Level: 2 ( und da müsste level rot sein ist aber nicht das l ist weiß und evel ist nur rot )
==========[Job/Fraktion]==========
Neben Job (steht nichts und das n ist weiß und eben Job ist rot ? )
Fraktion:- (ist ein minus und
Rang: 6 (ist das Ra weiß und ng ist rot wie es eig sein sollte
==========[Finanzen]==========
Geld:8100550 (ist die 81 rot und der rest ist weiß sollte eig weiß sein
ocmd:stats(playerid,params[])
{
new string[500],stext[50];
if(sInfo[playerid][geschlecht] == 1) {stext="Männlich";}
else if(sInfo[playerid][geschlecht] == 2) {stext="Weiblich";}
if(sInfo[playerid][pjob] == 0) {stext="Arbeitslos";}
else if(sInfo[playerid][pjob] == 1) {stext="Straßenreiniger";}
else if(sInfo[playerid][pjob] == 2) {stext="Müllmann";}
else if(sInfo[playerid][pjob] == 3) {stext="Pizzaboy";}
if(sInfo[playerid][fraktion] == 0) {stext="Zivilist";}
else if(sInfo[playerid][fraktion] == 1) {stext="LSPD";}
else if(sInfo[playerid][fraktion] == 2) {stext="FBI";}
else if(sInfo[playerid][fraktion] == 3) {stext="Medic";}
else if(sInfo[playerid][fraktion] == 4) {stext="Oamt";}
else if(sInfo[playerid][fraktion] == 5) {stext="News Reporter";}
else if(sInfo[playerid][fraktion] == 6) {stext="Fahrschule";}
else if(sInfo[playerid][fraktion] == 7) {stext="Groove Street";}
else if(sInfo[playerid][fraktion] == 8) {stext="Ballas";}
else if(sInfo[playerid][fraktion] == 9) {stext="Los Santos Vagos";}
else if(sInfo[playerid][fraktion] == 10) {stext="Varrios Los Aztecas";}
else if(sInfo[playerid][fraktion] == 11) {stext="S.F Rifa";}
else if(sInfo[playerid][fraktion] == 12) {stext="Lacosa Nostra";}
else if(sInfo[playerid][fraktion] == 13) {stext="Yakuza";}
else if(sInfo[playerid][fraktion] == 14) {stext="Russen Mafia";}
else if(sInfo[playerid][fraktion] == 15) {stext="Hitman Agency";}
format(string,sizeof(string),"{FF0000}==========[Spieler]==========\n\nName:{FFFFFF} %s\n{FF0000}Alter:{FFFFFF}%i\n{FF0000}Geschlecht:{FFFFFF}%s\n{FF0000}Level:{FFFFFF} %i\n{FF0000}==========[Job/Fraktion]==========\n\n{FF0000}Neben Job:{FFFFFF}%s\n{FF0000}Fraktion/Gang:{FFFFFF}%s\n{FF0000}Rang:{FFFFFF}%i\n{FF0000}==========[Finanzen]==========\n\n\n{FF0000}Geld:{FFFFFF} %i",
getPlayerName(playerid),sInfo[playerid][palter],sInfo[playerid][geschlecht],GetPlayerScore(playerid),sInfo[playerid][pjob],sInfo[playerid][fraktion],sInfo[playerid][rang],GetPlayerMoney(playerid));
ShowPlayerDialog(playerid,DIALOG_STATS, DIALOG_STYLE_MSGBOX,"Deine Stats",string,"Okey","");
printf("Der Spieler %s zeigt sich seine Stats)",getPlayerName(playerid));
return 1;
}
Was funktioniert denn nicht so ganz ?
Sag die Fehler bitte deutlicher.
Das wird nichts bringen dnn wie du auf dem Screen siehst ist die 'Class Selection' nicht da.
Das heißt sie wurde wahrscheinlich mit einem SpawnPlayer(); übersprungen.
Sie/Er hat "SetSpawnInfo" drinne und mann könnte dies mit "PVar" alles erstellen.
Naja hat sich aber schon erledigt
Wo hast Du TextDrawShow drinne ?
Wie du das machst hab ich dir so eben erklärt.
Wenn du daraus nicht genug lernst, solltest du es wohl mit anderen Funktionen probieren.
Und wenn du schon so kommst und sagst, du hast keine Lust mehr, dann wird das ganze auch nichts.
SA-MP Server bestehen nicht aus "Ich mach jetzt ein Projekt, welches dann auch ohne Probleme fertig wird. Breadfish weiß eh alles, von daher wird das kein Problem für mich."
(-:
So habe es nun hinbekommen
Aber es wird nur bei der Playerid 0 angezeigt bei 1,2,3,4 nicht.
Code:
forward WantedShow();
public WantedShow()
{
for(new i=0; i<MAX_PLAYERS+1; i++)
{
if(Spieler[i][pWanteds] < 1)
{
new string[128];
format(string,sizeof(string),"Gesuchter Täter\nWantedlevel: %d",Spieler[i][pWanteds]);
WantedLabel[i] = Create3DTextLabel(string,COLOR_YELLOW,30.0,40.0,50.0,MAX_STREAM_NAME_DISTANCE,0,1);
Attach3DTextLabelToPlayer(WantedLabel[i],i,0.0,0.0,-0.2);
}
else
{
Delete3DTextLabel(WantedLabel[i]);
}
}
return 1;
}
Alles anzeigenAm 'bugfreiesten' ging es bei mir folgendermaßen immer.
Beim Connecten erstellst du für den Spieler das Label, also bspw.
variablexyz[playerid] = Create3DTextLabel([..]);
und hängst es anschließend an den Spieler:
Attach3DTextLabelToPlayer([..]);
Beim Create3DTextLabel fügst du in die Text-Zeile ein Leerzeichen. Sprich, eigentlich wird ja immer ein Text angezeigt, du fügst da einfach nur ein Leerzeichen hin.
Beim Disconnecten musst du den 3DText auch wieder löschen. Solltest du hoffentlich wissen, wie.
Sobald du den 3DText nun verwenden willst, musst du in die Funktion gehen, und den 3DText nur Updaten. Das war's.
Dann kannst du sobald die Wanteds alle weg sind zB einfach wieder den 3DText Updaten, und dort wie beim Createn ein 'Leerzeichen' reinhängen.
Dann muss nicht alles Created, Attached, Geupdated, und gelöscht werden, sondern Created, Attached, beliebig oft geupdated und am Disconnect gelöscht werden.
Sollte man verstehen.
Fragen? Frag einfach.
Danke für deine Hilfe.
Aber wie mach ich das nun ?
Ich habe auf das System langsam keine lust mehr.
Soviel ausprobiert und nichts ging.
Lass mir die IP zukommen & wir können das ganze schnell testen.
Habe es nun mit einen gestest, die WantedLabel geht trozdem nicht
Alles anzeigenWürde gerne helfen, blicke aber nicht durch was hier alles geschrieben wird.
Im Grunde genommen müsstest du einfach beim Connecten einen 3DText, mit einer Variable, für den Spieler erstellen, mit:
http://wiki.sa-mp.com/wiki/3dtextlabel
Diesen musst du dann mit an den Spieler attachen, mit:
http://wiki.sa-mp.com/wiki/Attach3DTextLabelToPlayer
Sofern der Spieler Wanteds kriegt, müsstest du dann den 3DText updaten lassen mit:
http://wiki.sa-mp.com/wiki/UpdatePlayer3DTextLabelText
Beachte auch das du den 3DText, sofern er an dir selber attached ist, nicht selber siehst!
So, müsste eig.. jetzt klappen. Würde einer Testen kommen ? :3