Ich möchte einen Text time oder ähnliche machen wie und was muss amchen per Befehl
Beschreibung:
Text1: Hallo
nach 10sek.
Text2: Wie gehts
Ich möchte einen Text time oder ähnliche machen wie und was muss amchen per Befehl
Beschreibung:
Text1: Hallo
nach 10sek.
Text2: Wie gehts
also versteh ich du willst das der server erst schreibt hallo und nach 10 sekunden wie gehts? oder wie soll man das verstehen?
Wenn du jetzt so einen Werbungstext für alle meinst dann hier ein Beispiel
new gWerbungCount = 1;
public OnGameModeInit()
{
SetTimer("Werbung", 1800000, 1); //Alle 30Minuten ruft er eine Werbung auf
return 1;
}
public Werbung()
{
switch(gWerbungCount)
{
case 1: //Wenn die Definition 'gWerbungCount' den Wert 1 hat
{
gWerbungCount++; //Zählt eins rauf
//Werbungstexte...
SendClientMessageToAll(0xFFFFFF00, "Zivilist sein ist langweilig? Dann bewerbe dich in einer Fraktion!");
}
case 2: //Wenn die Definition 'gWerbungCount' den Wert 2 hat
{
gWerbungCount++; //Zählt eins rauf
//Werbungstexte...
SendClientMessageToAll(0xFFFFFF00, "Unsere IP lautet: xx.xx.xx.xx!");
}
default: //Wenn die Definition 'gWerbungCount' keine der aufgelisteten Werte hat!
{
gWerbungCount = 1; //Setzt Wert wieder auf 1...
//Werbungstexte...
SendClientMessageToAll(0xFFFFFF00, "Besucht uns auf unserer Webseite auch!");
}
}
}
//Wenn du mehr Texte einfügen willst, dann einfach weiterzählen, also:
// case 3:
// case 4:
// case 5:
// usw...
Hi Templer du hast was vergessen
forward Werbung ();
sonst haste blöden fehler
public function lacks forward declaration
Wenn du
public Werbung() nicht deklariest
Der Eugen
Nein Wie das mit den Tutorial von GF Da komtm ja erst der eine text dan ca. 30sek der 2text
Danke Eugen, einmal nicht aufgepasst
Nebenbei gemerkt, funktioniert meine Variante auch als Tut. Ich gebe dir bis morgen 8Uhr die Chance es selbst herauszufinden und dieses Thema zu schließen. Ansonsten wird es dir wer anderer, oder Ich, ab 8Uhr schreiben. Somit bitte ich dich Odin nicht hierher reinzuschauen sofern es doch jemand geschrieben hat.. Den du sollst Scripten können!
Ich möchte einen Text time oder ähnliche machen wie und was muss amchen per Befehl
Beschreibung:
Text1: Hallo
nach 10sek.
Text2: Wie gehts
wenn du jetz langsam keine genauen erklärungen gibst werd ich dat teil schließen lassen.... kann echt net angehen...
Erklärung(BEISPIEL)
Bei eingaben von /test Komt ein text und ca. 10sek. später soll slap 500meter kommen
übersetzt
er will was ähnliches wie das Tutorial von ein GF !
also das nach eine anzahl von sekunden die nächsten texte kommen !
Das soll aber kommen wen man ein Befehl wie /text eingibt
So Odin, da ich kb hab bis 8Uhr zu warten hier hasse deinen Code:
forward Werbung(playerid);
new gWerbungCount[MAX_PLAYERS];
new gWerbungTimer[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
gWerbungCount[playerid] = 0:
return 1;
}
public OnPlayerDisconnect(playerid)
{
if(gWerbungCount[playerid] != 0) KillTimer(gWerbungTimer[playerid]);
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/text", false))
{
if(!IsPlayerConnected(playerid)) return 1;
if(gWerbungCount[playerid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Du siehst dir gerade den Text an!");
gWerbungCount[playerid] = 1;
gWerbungTimer[playerid] = SetTimerEx("Werbung", 1000, 1, "d", playerid); //Jede Sekunde erscheint ein neuer Text!
return 1;
}
return 0;
}
public Werbung(playerid)
{
switch(gWerbungCount[playerid])
{
case 1: //Text #1
{
//Deine Texte für Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Text #2");
}
case 2: //Text#2
{
//Deine Texte für Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Text #2");
}
case 3: //Text#3
{
//Deine Texte für Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Text #3");
}
//Wenn du mehr Texte einfügen willst, dann einfach weiterzählen, also:
// case 4:
// case 5:
// case 6:
// case 7:
// usw...
default: //Letzer Text
{
gWerbungCount[playerid] = 0; //Setzt Wert wieder auf 0 und es wird kein Text mehr angezeigt...
//Dein letzter Text für den Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Letzter Text...");
}
}
gWerbungCount[playerid]++; //Zählt eins rauf
}
Hab die Definitionen von vorher gelassen, damit du siehst was anders is...
super arbeit von dir ,war zwar nicht meine Anfrage aber dennoch 10/ 10
werden wohl demnächst einen Templer Orden gründen lol
Der EUgen
if(!strcmp(cmdtext, "/text", false))
{
if(!IsPlayerConnected(playerid)) return 1;
if(gWerbungCount[playerid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Du siehst dir gerade den Text an!");
gWerbungCount[playerid] = 1;
gWerbungTimer[playerid] = SetTimerEx("Werbung", 1000, 1, "d", playerid); //Jede Sekunde erscheint ein neuer Text!
return 1;
}
Für Anjemanden senden z.b.
if(!strcmp(cmdtext, "/text [id]", false))
{
if(!IsPlayerConnected(zielid)) return 1;
if(gWerbungCount[zielid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Du must dir diesen Text lesen!");
gWerbungCount[ziehid] = 1;
gWerbungTimer[zielid] = SetTimerEx("Werbung", 1000, 1, "d", zielrid); //Jede Sekunde erscheint ein neuer Text!
return 1;
}
Oder lieg ich darin falsch?
Ne am besten so:
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(text, strlen("text"), cmdtext);
return 0;
}
dcmd_text(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return 1;
new zielid, string[128];
if(sscanf(params, "u", zielid)) return SendClientMessage(playerid, 0xFFFFFF00, "VERWENDUNG: /text [Spieler ID/Name]");
if(!IsPlayerConnected(zielid)) return SendClientMessage(playerid, 0xFFFFFF00, "Ungültige SpielerID!");
if(gWerbungCount[zielid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Spieler liest bereits Text!");
gWerbungCount[zielid] = 1;
gWerbungTimer[zielid] = SetTimerEx("Werbung", 1000, 1, "d", zielid); //Jede Sekunde erscheint ein neuer Text!
format(string, sizeof(string), "Du zeigst den Text für SpielerID %d!", zielid);
return SendClientMessage(playerid, 0xFFFFFF00, string");
}
Sollte dann stehen "undefined dcmd" oder sowas, dann das gaanz oben ins Script einfügen:
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Sollte ansonsten "undefined sscanf" oder sowas stehen, dann bitte auf folgenden Link gehen und den ganzen stock-Code in dein Script oben einfügen:
http://wiki.sa-mp.com/wiki/Sscanf
dcmd hab ich drin wen jetzt das was du honen rein machen kommt nix
Also der Startet das nicht
Versteh dich nicht..
Versteh dich nicht..
Hab was vergessen mit ein zufügen aber jetzt macht der eine entloseschleife die sich mehr mals Wiederhollt
Achja genau, dass hier fehlt..
unter default:
KillTimer(gWerbungTimer[playerid]);
DANKE DIR 10000x Danke!!!!
Nochmal zusammen fassung:
Ganz oben:
new gWerbungCount[MAX_PLAYERS];
new gWerbungTimer[MAX_PLAYERS];
Darunder:
forward Werbung(playerid);
Unter public OnPlayerConnect(playerid) (Wen Loginsystem vorhanden ist):
gWerbungCount[playerid] = 0:
Wenn nicht sollte das da stehen:
{
gWerbungCount[playerid] = 0:
return 1;
}
Unter public OnPlayerDisconnect(playerid) (selbe wie oben):
Wen login:
if(gWerbungCount[playerid] != 0) KillTimer(gWerbungTimer[playerid]);
Wen nicht
{
if(gWerbungCount[playerid] != 0) KillTimer(gWerbungTimer[playerid]);
}
unter: public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/text", false))
{
if(!IsPlayerConnected(playerid)) return 1;
if(gWerbungCount[playerid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Du siehst dir gerade den Text an!");
gWerbungCount[playerid] = 1;
gWerbungTimer[playerid] = SetTimerEx("Werbung", 1000, 1, "d", playerid); //Jede Sekunde erscheint ein neuer Text!
return 1;
}
return 0;
}
AM besten ganz unten am GM!!!
public Werbung(playerid)
{
switch(gWerbungCount[playerid])
{
case 1: //Text #1
{
//Deine Texte für Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Text #2");
}
case 2: //Text#2
{
//Deine Texte für Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Text #2");
}
case 3: //Text#3
{
//Deine Texte für Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Text #3");
}
//Wenn du mehr Texte einfügen willst, dann einfach weiterzählen, also:
// case 4:
// case 5:
// case 6:
// case 7:
// usw...
default: //Letzer Text
{
gWerbungCount[playerid] = 0; //Setzt Wert wieder auf 0 und es wird kein Text mehr angezeigt...
//Dein letzter Text für den Spieler
SendClientMessage(playerid, 0xFFFFFF00, "Letzter Text...");
KillTimer(gWerbungTimer[playerid]);
}
}
gWerbungCount[playerid]++; //Zählt eins rauf
}
Wen ihr jemand sogesagt das zeigen wollt müsst ihr Folgenes machen
{
if(!strcmp(cmdtext, "/text", false))
{
if(!IsPlayerConnected(playerid)) return 1;
if(gWerbungCount[playerid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Du siehst dir gerade den Text an!");
gWerbungCount[playerid] = 1;
gWerbungTimer[playerid] = SetTimerEx("Werbung", 1000, 1, "d", playerid); //Jede Sekunde erscheint ein neuer Text!
return 1;
}
return 0;
}
Rausnehmen und durch folgenes Ersetzen:
dcmd_tebet(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return 1;
new zielid, string[128];
if(sscanf(params, "u", zielid)) return SendClientMessage(playerid, 0xFFFFFF00, "VERWENDUNG: /gebet [Spieler ID/Name]");
if(!IsPlayerConnected(zielid)) return SendClientMessage(playerid, 0xFFFFFF00, "Ungültige SpielerID!");
if(ggebetCount[zielid] != 0) return SendClientMessage(playerid, 0xFFFFFF00, "Spieler liest bereits Text!");
ggebetCount[zielid] = 1;
ggebetTimer[zielid] = SetTimerEx("gebet", 1000, 1, "d", zielid); //Jede Sekunde erscheint ein neuer Text!
format(string, sizeof(string), "Du zeigst den Text für SpielerID %d!", zielid);
return SendClientMessage(playerid, 0xFFFFFF00, "Start");
}
Sollte irgenwas mit undefined dcmd Stehen Über den New bla bla.... Das einfügen
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Fertig