Dieser Code sendet genau das selbe aus und ist ressourcen schonender, da man nicht noch alles umschreibt und mehrfach speichern muss.
Les dir mal den Post Verlauf durch
Habe dazu ja schon was geschrieben ![]()
mfg. ![]()
Dieser Code sendet genau das selbe aus und ist ressourcen schonender, da man nicht noch alles umschreibt und mehrfach speichern muss.
Les dir mal den Post Verlauf durch
Habe dazu ja schon was geschrieben ![]()
mfg. ![]()
Kaliber, in der Zeile 'if(rows)', wo soll ich dort dann die Dialoge hinschreiben? Also wenn ein Account existiert soll sein Loginfenster kommen, wenn er ein Account hat, soll ein Registerfenster kommen
irgendwie blick ich grad nicht durch, was du gepostet hast.
Achso
Das wolltest du einfach nur...dann einfach so:
public SpielerVorhanden(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows) return ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_PASSWORD,"login",string,"Spielen"," ");
return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"regist",string,"Anmelden"," ");
}
mfg. ![]()
Alles anzeigenpublic SpielerVorhanden(playerid)
{
new num_rows, num_fields,string[256],string2[256],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
cache_get_data(num_rows, num_fields, dbhandle);
if(num_fields==0){
format(string,sizeof(string),"test",name);
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"regist",string,"Anmelden"," ");
}else{
format(string2,sizeof(string2),"test",name);
ShowPlayerDialog(playerid,DIALOG_EINLOGGEN,DIALOG_STYLE_PASSWORD,"login",string,"Spielen"," ");
}
return 1;
}
Schreib das mal so:
public SpielerVorhanden(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
//Wenn der Account existiert
new fetch[11],id;
cache_get_row(0, 0, fetch), id = strval(fetch);
//fetch holt den String aus dem cache und da id ein Integer ist, muss es dann nochmal umgewandelt werden.
//Du fragst ja nur die id ab in deinem Query, deshalb sind alle anderen Felder leer, wenn du mehr abfragen würdest, machst du das einfach so:
//cache_get_row(0, 1, fetch); hier hättest du dann den nächsten Eintrag
}
return 1;
}
mfg. ![]()
Also heißt das jetzt genau, dass was in dem listitem steht wird mit info[listitem] ausgegeben`?
Ja, genau so ist es ![]()
Allerdings hat mich BlackAce gerade darüber aufgeklärt, dass inputtext...schon diese Information enthält...jedoch kann man damit ja aber auch noch mehr machen, die davor und dahinter abfragen und bei ner MSGBox den String rausholen, wenn man ihn braucht...
Mhm...ich lass es einfach mal drinnen ![]()
mfg. ![]()
Das klappt soweit, aber wie kann ich es am besten wieder abfragen unter OnDialogResponse?
Ich hab dir dazu mal ein Include geschrieben: [ INCLUDE ] Dialog Erweiterung
mfg. ![]()
Guten Abend liebe Breadfisher,
ich habe in den letzten Tagen einige Threads gelesen, dass sie den Text den sie eingeben auch beim Callback wieder abrufen wollen. Dies war leider nicht möglich, bis jetzt ![]()
Ich habe mir mal kurz die Zeit genommen und ein Include geschrieben, der das macht.
1. Wie nutze ich sie und was bringt sie jetzt genau?
Also, ich verdeutliche das mal alles an einem Beispiel:
//Irgendwo rufen wir einen Dialog auf...
ShowPlayerDialog(playerid,0,DIALOG_STYLE_LIST,"Test","Peter\nHans","Bestätigen","");
//Und dann fragen wir ab:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[], info[][]) //info[][] ist mein Zusatz-Parameter diesen nicht vergessen! Darüber werden die Sachen übergeben!
{
if(dialogid==0) {
printf("%s",info[listitem]); //Zum Beispiel so, wenn wir jetzt Peter angeklickt hätten, würde hier Peter stehen, wenn wir Hans angeklickt hätten, halt Hans
}
return 1;
}
2. Source-Code:
Source-Code: Pastebin
Direkter-Download: Mediafire
3. Schlusswort:
Ich würde mich über eine kleine Rückmeldung freuen ![]()
mfg.
#define OnDuty
#define IsACop
#define IsPlayerConnected
#define cmd
Nette Idee, aber so funktioniert das nicht ![]()
Schließlich definierst du hier nur einen Begriff, jedoch ohne Wert...bzw ohne Anweisung, IsACop, weiß doch jetzt gar nicht, was er tun soll ![]()
Du musst dir die Funktionen suchen, die du verwenden willst oder selbst schreiben und lösch das bitte alles...macht alles keinen Sinn! ![]()
mfg. ![]()
a meckert der Compiler doch bestimmt, du kannst doch keinen Codeblock ohne Kontrollstruktur einfügen.
Doch kann man ![]()
//Ob
test();
//oder
{
test();
}
//oder
{
{
test();
}
}
Das macht alles keinen Unterschied ![]()
mfg. ![]()
Ich kenne es nur so indem man den String noch in Klammern packt.
Es geht beides, macht keinen Unterschied ![]()
mfg. ![]()
Ah habs auch gesehen, jetzt kommt noch folgendes:
Schreib das mal so:
if(listitem == 0) {
new string[128],dini[15 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME],Float:health;
GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(dini,sizeof dini,"/Accounts/%s.ini",name),GetPlayerHealth(playerid, health);
format(string,sizeof string,"Name: %s\nGeld: %d\nLeben: %f\nScore: %d\nAdminlevel: %d\nWarns: %d", name, GetPlayerMoney(playerid), health, GetPlayerScore(playerid), dini_Int(dini,"Admin"), dini_Int(dini,"Warns"));
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Statistiken",string,"Bestätigen","");
}
mfg. ![]()
Findet ihr es echt lustig, Leute auf eurer Hompage bloß zustellen?
Wenn ihr sowas machen wollt, macht es wenigstens anonym, sprich zensiert die Namen, aber sowas ist einfach nur arm!
mfg. ![]()
fprintf(
stdout,
"int Wert1 hat folgenden Wert: %s\n",
Wert1
);
Wert1 ist kein String, in fprintf nutzt du %s, aber das geht ja nicht, da Wert1 ein Integer ist, also ändere es mal auf %i oder %d ![]()
mfg. ![]()
Schreib den Code mal so:
public minute() {
new i,string[64];
for(; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i) || !GetPVarInt(i,"loggedin"))continue;
SetPVarInt(i,"Paytime",GetPVarInt(i,"Paytime")+1);
if(GetPVarInt(i,"Paytime")==60) {
new paydaygeld;
switch(GetPVarInt(i,"Fraktionsrang")) {
case 0:paydaygeld = 750; //zivi
case 1:paydaygeld = 1500;// pd
case 2:paydaygeld = 1000;// gang 1
case 3:paydaygeld = 2000;// medic
case 4:paydaygeld = 1000;// gang 2
case 5:paydaygeld = 1000;// gang 3
}
//was alle 60 minuten ausgeführt werden soll
SetPVarInt(i,"Paytime",0), format(string,64,"Payday. Du erhältst %d$.",paydaygeld),SendClientMessage(i,BLAU,string);
GivePlayerMoney(i,paydaygeld), SetPlayerScore(i,GetPlayerScore(i)+1);
}
}
return 1;
}
mfg. ![]()
Zudem wird in C# die "Zugriffsattribute" nicht nach einem Doppelpunkt geschrieben.
In C++ verwendet man -> und in C# . ![]()
So kann man das eigentlich ziemlich schnell sehen ![]()
Weiß jemand, wo der Fehler liegt?
Du solltest nochmal alle deine Projekte löschen und dann ein neues erstellen...da sind die Klassen durcheinander gekommen...und der namespace ![]()
mfg. ![]()
2x #pragma once...fail ![]()
Ja, denke schon. Einfach in der include umändern
Also im streamer include.
Nanana
So läuft das nicht, da dann nicht mehr das Plugin auf die Funktion zugreifen kann ![]()
mfg. ![]()
sql_user und sql_data steht beides samp drinne
Kannst du nicht mehr lesen? ![]()
#define sql_host "127.0.0.1"#define sql_user "root"#define sql_pass ""#define sql_data "samp"
sql_user = "root"
sql_data = "samp"
mfg. ![]()
[18:41:08] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp' localhost (using password: YES)
Tausche mal den User mit dem Datenbank namen...das ist momentan verdreht ![]()
Du versucht dich momentan als User "samp" anzumelden ![]()
mfg. ![]()