Hallo liebe Community,
ich stelle euch mal gerade die Frage ob es die Funktion Attach3DTextLabelToObject gibt ? Ich bräuchte sowas in der Art..
Hallo liebe Community,
ich stelle euch mal gerade die Frage ob es die Funktion Attach3DTextLabelToObject gibt ? Ich bräuchte sowas in der Art..
Schönen Heiligabend liebe Community,
ich würde gerne wissen wie ich abfragen kann ob ein Spieler eine Taste 3 Sekundenlang drückt ?
Du machst aber nicht auf dir selbst ein Contract, oder?
Da war der Fehler
Ja es kommt der untere DIALOG..
Alles anzeigenMach es so wie ich es geschrieben habe
Es funktioniert, glaub mir
ShowPlayerDialog(playerid,DIALOG_CONTRACT,DIALOG_STYLE_INPUT,"Contract",string,"absenden","abbrechen");
return 1;
}
}
return ShowPlayerDialog(playerid,DIALOG_CONTRACT,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen");
new namestr[24];
for(new i=0; i<GetMaxPlayers();i++)
{
GetPlayerName(i, namestr, sizeof(namestr));
if(i==playerid || !IsPlayerConnected(i)) continue;
if(strcmp(inputtext,namestr,false) == 0)
{
format(string,sizeof(string),"Du möchtest auf {FFAA00}%s{FEFEFE} ein Kopfgeld aussetzen.\nBitte gib das Kopfgeld für den Spieler an!",inputtext);
ShowPlayerDialog(playerid,DIALOG_CONTRACT1,DIALOG_STYLE_INPUT,"Contract",string,"absenden","abbrechen");
format(Spieler[playerid][ContractSpieler],24,inputtext);
return 1;
}
}
return ShowPlayerDialog(playerid,DIALOG_CONTRACT,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen");
So funktioniert es auch nicht -.-
4/10 .. du hättest die überflüssigen Callbacks alle rausschmeißen können
Alles anzeigenBevor das mit dem break noch zu viele Probleme aufwirft, schreibe ich das Problem eben um:
new namestr[25], merk;
merk=-1;
for(new i=0; i<GetMaxPlayres();i++){
GetPlayerName(i, namestr, sizeof(namestr));
if(i==playerid || !IsPlayerConnected(i)) continue;
if(strcmp(inputtext,namestr,true) == 0) { merk=i; break; }
iff(i==GetMaxPlayers() && !IsPlayerConnected(i)) { ShowPlayerDialog(playerid,DIALOG_PERSON,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen"); }
}
..
//ShowPlayerDialog..
//if(merk!=-1) //Show (alt.)
das "merk=i;" kann man natürlich direkt mit ShowPlayerDialog ersetzen
Der Rest sollte wohl kein Problem sein
Codebreak break breaks out of a loop, ending it prematurely: for (new a = 0; a < 10; a++) { if (a == 5) break; } This loop will go 6 times but code after the break will only be executed 5 times.
Wir müssen den Dialog aus der Schleife rausziehen, sonst bricht er dort ab.
Auch mit dem Code kann ich jeden Spieler eingeben ..
Break beendet nur die Schleife, danach macht er weiter.
Also er zeigt dir wahrscheinlich KURZ den Dialog "Du möchtest auf ..." an, aber DIREKT danach zeigt er dir an, dass der Spieler nicht online ist.
Das "return" da unten wird IMMER nach der Schleife ausgeführt.
Nein es kommt direkt die Meldung das der Spieler nicht online ist.
Groß- und Kleinschreibung habe ich mit dem Ignore-Case hinfällig gemacht. Genau um diese Fehlerquelle auszumerzen.
Eine Idee hätte ich noch.
So banal es klingen mag: Wo hast du den Code eingefügt.
Und nicht zu vergessen: Hast du deine DialogIDs richtig definiert (bzw. abgefragt) ? Ist eine häufige Fehlerursache.
Hier jetzt mal mein code:
if(dialogid==DIALOG_CONTRACT)
{
if(response)
{
new namestr[24];
for(new i=0; i<GetMaxPlayers();i++)
{
GetPlayerName(i, namestr, sizeof(namestr));
if(i==playerid || !IsPlayerConnected(i)) continue;
if(strcmp(inputtext,namestr,true) == 0)
{
format(string,sizeof(string),"Du möchtest auf {FFAA00}%s{FEFEFE} ein Kopfgeld aussetzen.\nBitte gib das Kopfgeld für den Spieler an!",inputtext);
ShowPlayerDialog(playerid,DIALOG_CONTRACT1,DIALOG_STYLE_INPUT,"Contract",string,"absenden","abbrechen");
format(Spieler[playerid][ContractSpieler],24,inputtext);
break;
}
}
return ShowPlayerDialog(playerid,DIALOG_CONTRACT,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen");
//for(new i; i<MAX_PLAYERS; i++) { if(strcmp(inputtext,SpielerName(i),false))return ShowPlayerDialog(playerid,DIALOG_CONTRACT,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Zielperson ein","absenden","abbrechen"); }
}
}
if(dialogid==DIALOG_CONTRACT1)
{
if(response)
{
new a = playerid;
format(string,sizeof(string),"Das Kopfgeld muss höher als 50$ und niedriger als 1000$ sein!\nDu möchtest auf {FFAA00}%s{FEFEFE} ein Kopfgeld aussetzen.\nBitte gib das Kopfgeld für den Spieler an!",inputtext);
if(strval(inputtext) < 50 || strval(inputtext) > 1000)return ShowPlayerDialog(playerid,DIALOG_CONTRACT1,DIALOG_STYLE_INPUT,"Contract",string,"absenden","abbrechen");
format(string,sizeof(string),"INSERT INTO `contracts` (`auftraggeber`,`zielperson`,`kopfgeld`) VALUES ('%s','%s','%d')",SpielerName(playerid),Spieler[playerid][ContractSpieler],strval(inputtext));
mysql_query(string);
format(Auftrag[a][geber],24,SpielerName(playerid));
format(Auftrag[a][ziel],24,Spieler[playerid][ContractSpieler]);
Auftrag[a][kopfgeld] = strval(inputtext);
for(new i; i<MAX_PLAYERS; i++)
{
if(SpielerInfo[i][Fraktion] == 12)
{
SendClientMessage(playerid,Gelb,"Es ist ein neuer Auftrag eingegangen!");
return 1;
}
}
}
}
Schreib die strcmp abfrage vor dem return mal so.
if(strcmp(inputtext,SpielerName(i),false)!=0)
Als du den Namen eingegeben hast. Hast du auch die Groß&Kleinschreibung beachtet?
Ja Klar ..
BSN Tankestelle [Textur] ~ by JT
Cooler Typ!
Es ist trotzdem unter Mapping Base & gemappt wurde hier nichts.
Naja also ich finde das ist jetzt nichts besonderes.. es wurde meiner meinung nach nichts gemappt sondern eher einfach nur eine
Textur drauf geballert Ich weiß auch nicht ob man das wirklich Mapping nennen kann ..
4/10
Alles anzeigenNatürlich!
Ich habe lediglich noch eingefügt, dass die Spieler, die nicht online sind (und der spieler selbst), übersprungen werden.
Anbei habe ich noch eine kleine Änderung vorgenommen:
for(new i=0; i<GetMaxPlayres();i++){
if(i==playerid || !IsPlayerConnected(i)) continue;
if(strcmp(inputtext,SpielerName(i),true) == 0){
//Dein Code..
break;
return 1;
}
}
return ShowPlayerDialog(playerid,DIALOG_PERSON,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen"); }
Auf die Gefahr hin, dass dein String (SpielerName) falsch abgefragt wird, hier nochmal direkt deklariert:
new namestr[25];
for(new i=0; i<GetMaxPlayres();i++){
GetPlayerName(i, namestr, sizeof(namestr));
if(i==playerid || !IsPlayerConnected(i)) continue;
if(strcmp(inputtext,namestr,true) == 0){
//Dein Code..
break;
return 1;
}
}
return ShowPlayerDialog(playerid,DIALOG_PERSON,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen"); }
Schreib die strcmp abfrage vor dem return mal so.
if(strcmp(inputtext,SpielerName(i),false)!=0)
Funktioniert leider beides nicht
Eigentlich ist der Code nicht anders als meiner, ich frage lediglich ab ob der inputtext ein Name von einem Spieler ist ..
Dann änderst du die sachen halt
Dann ist das der gleiche Code wie ich oben hatte und funktioniert auch nicht
Alles anzeigen
for(new i; i<MAX_PLAYERS;i++){
if(!strcmp(inputtext,SpielerName(i),false)){
//Bla bla
return 1;
}
}
return ShowPlayerDialog(playerid,DIALOG_PERSON,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen"); }
So kann ich auf jeden ein Kopfgeld setzten, selbst wenn er nicht Online ist
Mach mal n ! bei der abfrage.
Ändert nichts an der Sache
Guten Morgen liebe Community,
ich möchte gerne überprüfen, ob es den Spielernamen den ein Spieler in einem Dialog eingibt auf dem Server gibt.. aber ich bekomme jedes mal
die Meldung das der Spieler nicht online sei ?..
for(new i; i<MAX_PLAYERS;i++) { if(strcmp(inputtext,SpielerName(i),false))return ShowPlayerDialog(playerid,DIALOG_PERSON,DIALOG_STYLE_INPUT,"Contract","Der Spieler ist nicht Online!\nGib den Namen der Person ein","absenden","abbrechen"); }
Wo liegt hier bitte der Fehler ?
Mir persöhnlich gefällt das Rot im Wappen nicht