Also wird mit text für %s mehr Namen anzeigen möglich, habe ich das richtig verstanden?
Und wie sieht es mit meiner Möglichkeit aus hinter den Namen die ID von denjenigen noch anzeigen zu lassen?
Beiträge von KazutoSensei
-
-
format(text,sizeof(text),"%s\n%s",text, name); //Name anpassen
Wieso ist das erste %s text, text wird doch dort definiert?
pName(i) wäre es dann.SoR Mirco, okay danke, also könnte ich diese auch verwenden gut zu wissen, muss es aber eine Abfrage sein und nicht im pName?
-
format(text,sizeof(text),"%s",pName(SpielerInfo[i][Adminlevel]>0));
Sollte dann auch gehen, denn auch ohne >0 hat er meinen Namen schonmal angezeigt.
Nur zeigt er auch 2 oder mehr Admins denn an?Adminname = ID
Adminname2 = ID2 usw.Ist das auch möglich?
-
if(SpielerInfo[i][Adminlevel] == 0)continue;
Würde er nicht bei
if(SpielerInfo[i][Adminlevel] == 0)continue;
Auch Adminlevel 0 mit anzeigen? -
ocmd:admins(playerid,params[])
{
new text[128];
for(new i=0; i<GetMaxPlayers(); i++)
{
format(text,sizeof(text),"%s",pName(SpielerInfo[i][Adminlevel]));
ShowPlayerDialog(playerid,DIALOG_SHOWADMINS,DIALOG_STYLE_MSGBOX,"Alle verfügbaren Admins",text,"Fertig","");
}
return 1;
}
Würde er jeden weiteren Admin dann auch anzeigen?
Und gibt es ne Möglichkeit es so zu machen?Adminname = ID
Adminname2 = ID2 usw.PS: Ich weiß ich melde mich oft und ich probiere auch viel selbst, komme aber nie an Ziel und Copy & Paste ist falsch, ich will ja lernen und selber schreiben.
-
SetPlayerScore(playerid,SpielerInfo[playerid][sLevel] ++);
Danke das funktioniert, nur noch Bugs beheben ^^.
Ehm ich werde dir per PN noch eine Frage stellen.LG
-
SpielerInfo[playerid][sLevel] += 1;
Klappt ebenfalls nicht, er zieht Geld ab und die EXP scheint er auf Null zu setzen, was eig auch noch anders werden soll.
Doch das Level bleibt unverändert.LG
-
Ich möchte bei meinen /buylevel Befehl , dass er nach dem Kauf um 1 Level aufsteigt.
Das ist mein Code.ocmd:buylevel(playerid,params[])
{
new string[128];
format(string,sizeof(string),"Level: %i\nEXP: %i/%i\nGeld: %i$/%i$",SpielerInfo[playerid][sLevel],SpielerInfo[playerid][EXP],LevelEXP(playerid),GetPlayerMoney(playerid),LevelGD(playerid));
ShowPlayerDialog(playerid,DIALOG_BUYLEVEL,DIALOG_STYLE_MSGBOX,"Mein Level",string,"Kaufen","Abbrechen");
return 1;
}
Und hier habe ich halt das versucht, was aber nicht klappt -> SetPlayerScore(playerid,SpielerInfo[playerid][sLevel]+1);
if(dialogid==DIALOG_BUYLEVEL)
{
if(response)
{
if(SpielerInfo[playerid][EXP]>=LevelEXP(playerid))
{
if(GetPlayerMoney(playerid)<LevelGD(playerid)) return SendClientMessage(playerid,Grey,"Du hast nicht genügend Geld vorhanden.");
{
SetPlayerScore(playerid,SpielerInfo[playerid][sLevel]+1);
GivePlayerMoney(playerid,-LevelGD(playerid));
SpielerInfo[playerid][EXP]=0;
}
}
}
else
{}
return 1;
}
stock LevelGD(playerid)
{
new LGD;
if(GetPlayerScore(playerid) == 1) LGD = 8000;
if(GetPlayerScore(playerid) == 2) LGD = 12000;
if(GetPlayerScore(playerid) == 3) LGD = 16000;
if(GetPlayerScore(playerid) == 4) LGD = 20000;
if(GetPlayerScore(playerid) == 5) LGD = 24000;
if(GetPlayerScore(playerid) == 6) LGD = 28000;
if(GetPlayerScore(playerid) == 7) LGD = 32000;
if(GetPlayerScore(playerid) == 8) LGD = 36000;
if(GetPlayerScore(playerid) == 9) LGD = 40000;
if(GetPlayerScore(playerid) == 10) LGD = 44000;
if(GetPlayerScore(playerid) == 11) LGD = 60000;
if(GetPlayerScore(playerid) == 12) LGD = 64000;
if(GetPlayerScore(playerid) == 13) LGD = 68000;
if(GetPlayerScore(playerid) == 14) LGD = 72000;
if(GetPlayerScore(playerid) == 15) LGD = 76000;
if(GetPlayerScore(playerid) == 16) LGD = 80000;
if(GetPlayerScore(playerid) == 17) LGD = 84000;
if(GetPlayerScore(playerid) == 18) LGD = 88000;
if(GetPlayerScore(playerid) == 19) LGD = 92000;
if(GetPlayerScore(playerid) == 20) LGD = 96000;
if(GetPlayerScore(playerid) == 21) LGD = 100000;
if(GetPlayerScore(playerid) == 22) LGD = 104000;
if(GetPlayerScore(playerid) == 23) LGD = 108000;
if(GetPlayerScore(playerid) == 24) LGD = 112000;
if(GetPlayerScore(playerid) == 25) LGD = 118000;
if(GetPlayerScore(playerid) == 26) LGD = 122000;
if(GetPlayerScore(playerid) == 27) LGD = 126000;
if(GetPlayerScore(playerid) == 28) LGD = 130000;
if(GetPlayerScore(playerid) == 29) LGD = 134000;
if(GetPlayerScore(playerid) == 30) LGD = 138000;
return LGD;
}stock LevelEXP(playerid)
{
new LEXP;
if(GetPlayerScore(playerid) == 1) LEXP = 1000;
if(GetPlayerScore(playerid) == 2) LEXP = 2000;
if(GetPlayerScore(playerid) == 3) LEXP = 4000;
if(GetPlayerScore(playerid) == 4) LEXP = 8000;
if(GetPlayerScore(playerid) == 5) LEXP = 12000;
if(GetPlayerScore(playerid) == 6) LEXP = 16000;
if(GetPlayerScore(playerid) == 7) LEXP = 20000;
if(GetPlayerScore(playerid) == 8) LEXP = 24000;
if(GetPlayerScore(playerid) == 9) LEXP = 28000;
if(GetPlayerScore(playerid) == 10) LEXP = 32000;
if(GetPlayerScore(playerid) == 11) LEXP = 36000;
if(GetPlayerScore(playerid) == 12) LEXP = 40000;
if(GetPlayerScore(playerid) == 13) LEXP = 44000;
if(GetPlayerScore(playerid) == 14) LEXP = 48000;
if(GetPlayerScore(playerid) == 15) LEXP = 52000;
if(GetPlayerScore(playerid) == 16) LEXP = 56000;
if(GetPlayerScore(playerid) == 17) LEXP = 60000;
if(GetPlayerScore(playerid) == 18) LEXP = 64000;
if(GetPlayerScore(playerid) == 19) LEXP = 68000;
if(GetPlayerScore(playerid) == 20) LEXP = 72000;
if(GetPlayerScore(playerid) == 21) LEXP = 76000;
if(GetPlayerScore(playerid) == 22) LEXP = 80000;
if(GetPlayerScore(playerid) == 23) LEXP = 84000;
if(GetPlayerScore(playerid) == 24) LEXP = 88000;
if(GetPlayerScore(playerid) == 25) LEXP = 92000;
if(GetPlayerScore(playerid) == 26) LEXP = 96000;
if(GetPlayerScore(playerid) == 27) LEXP = 100000;
if(GetPlayerScore(playerid) == 28) LEXP = 104000;
if(GetPlayerScore(playerid) == 29) LEXP = 108000;
if(GetPlayerScore(playerid) == 30) LEXP = 112000;
return LEXP;
}
MfG Tiger -
Schau mal auf meinem Profil, hab dazu ein Script geschrieben.
MfGDanke für den Tipp, werde mir manches angucken, doch muss ich anmerken dass ich mit OCMD schreibe und Dialoge nicht per enum definiere ^^.
Aber trotzdem danke. Weitere Tipps/Ratschläge?MfG Tiger
-
Ich möchte nen /freunde Befehl machen, wo man nach der Eingabe sieht,
welche Freunde Online sind, denn man vorher eine Anfrage geschickt und akzeptiert hat.
Sollte dies der Fall sein und der Freund ist Online, so soll dort der Name und Online stehen, sollte
er Offline sein, dann der Name und dann Offline. Man soll maximal 25 eintragen können.Das ganze soll mit einen Dialog gemacht sein.
Meine eigene Überlegung war mit switch & case, was ich aber denke ausschließen kann.
Dann dachte ich an eine Schleife, doch da wusste ich dann nicht weiter,Mein Anfang sieht wie folgt aus...
ocmd:freunde(playerid,params[])
{
new string[256];
format(string,sizeof(string),"%s: %s\n%s: %s");
ShowPlayerDialog(playerid,DIALOG_FRIENDSLIST,DIALOG_STYLE_MSGBOX,"|_____Meine Freundesliste_____|",string,"Fertig","");
return 1;
}Ich bitte um eure Hilfe.Mit freundlichen Grüßen
Panzerkampfwagen Tiger -
ocmd:pay(playerid,params[])
{
new pID, pay, string[128], string2[128];
if(sscanf(params,"ui",pID,pay)) return SendClientMessage(playerid,Grey,"Nutze: /pay [Spieler/ID][Betrag]");
if(pay<1||pay>50000) return SendClientMessage(playerid,Grey,"Du kannst nur bis 1 Million $ zahlen!");
{
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,Grey,"Dieser Spieler ist nicht Online.");
{
if(GetPlayerMoney(playerid)<pay) return SendClientMessage(playerid,Grey,"Du hast nicht genügend Geld vorhanden.");
{
if(pID==playerid) return SendClientMessage(playerid,Grey,"Du kannst dir nicht selber Geld zahlen.");
{
GivePlayerMoney(pID,pay);
GivePlayerMoney(playerid,-pay);
format(string,sizeof(string),"Spieler %s hat dir %i$ bezahlt.",pName(playerid),pay);
SendClientMessage(pID,LightYellow,string);
format(string2,sizeof(string2),"Du hast dem Spieler %s %i$ gezahlt.",pName(pID),pay);
SendClientMessage(playerid,LightYellow,string2);
return 1; // hier hin was vorher unten war
}
}
}
}
return 1; // <- dieses return nach oben
}Danach hat es geklappt -
Es lag am return, danke Leute.
Kann geclosed werden.LG
-
Pinguin Dev, ich sehe kein unterschied, außer das die Klammern weg sind.
Und was ist mit der Überprüfung dass man nicht an sich selber zahlen kann? -
Asso, also muss ich folgendes ersetzen mit dem alten?
if(GetPlayerMoney(playerid)>pay) return SendclientMessage(playerid,grey,"Du hast nicht genügend Geld.");
LG -
Frage ich nicht mit
if(GetPlayerMoney(playerid)<pay) return SendClientMessage(playerid,Grey,"Du hast nicht genügend Geld vorhanden.");
Ob er genügend Geld hat?LG
-
Bin vorher auf Enter gekommen, sry.
ZitatIch kann trotzdem zahlen wenn ich im Minus bin und an mich selbst.
LG
-
ocmd:pay(playerid,params[])
{
new pID, pay, string[128], string2[128];
if(sscanf(params,"ui",pID,pay)) return SendClientMessage(playerid,Grey,"Nutze: /pay [Spieler/ID][Betrag]");
if(pay<1||pay>50000) return SendClientMessage(playerid,Grey,"Du kannst nur bis 1 Million $ zahlen!");
{
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,Grey,"Dieser Spieler ist nicht Online.");
{
if(GetPlayerMoney(playerid)<pay) return SendClientMessage(playerid,Grey,"Du hast nicht genügend Geld vorhanden.");
{
if(pID==playerid) return SendClientMessage(playerid,Grey,"Du kannst dir nicht selber Geld zahlen.");
{
GivePlayerMoney(pID,pay);
GivePlayerMoney(playerid,-pay);
format(string,sizeof(string),"Spieler %s hat dir %i$ bezahlt.",pName(playerid),pay);
SendClientMessage(pID,LightYellow,string);
format(string2,sizeof(string2),"Du hast dem Spieler %s %i$ gezahlt.",pName(pID),pay);
SendClientMessage(playerid,LightYellow,string2);
}
}
}
}
return 1;
}Wo ist der Fehler? Ich kann trotzdem zahlen wenn ich im Minus bin und an mich selbst.
LG
-
Achja, wenn du so das Level speichern willst, würde ich dir empfehlen, es nicht direkt in deine Spielerdaten zu schieben, sondern es davor mit strval in einen Integer zu konvertieren, da dein Level keinen String aufnehmen kann.
LG
Das Level, wird in meiner Datenbank als INT abgespeichert, weshalb es doch nicht als string ausgegeben werden dürfte.
Oder meinen sie, dass ich die Variable als INT speichern soll?Gruß - Kazuto
PS: Meine Scripting Erfahrung ist noch nicht so hoch, deshalb bitte ich hier um Entschuldigung.
-
Du oben in deinem Beispielcode musst einfach nur folgendes ändern:
Dein SpielerINfo..... = setzt du einfach an das 3. Argument von cache_get_field_content, also wo jetzt dein Kommentar steht.LG
Da ich erst später den Test durchführen werde, kann ich noch nichts dazu sagen, außer dass es keine Errors gab.
Doch bedanke ich mich für Ihre Hilfe und Zeit.
Damit ist das Thema erledigt und bei Problemen würde ich mich freuen, wenn ich Sie kontaktieren dürfte.Gruß - Kazuto
-
Nein, einfach deine Variable in Pawn, was denn auch sonst.
LG
Es tut mir leid, wenn ich Ihre Zeit beraube oder Ihnen eine schlechte Laune gebe.
Doch verstehe ich nicht, worauf Sie hinaus wollen.
SpielerInfo[playerid][sLevel] = cache_get_field_content(4,"level",/*WARTE AUF ANTWORT*/"",mysqlhandle);
Ich wüsste selbst nach dieser Erklärung nicht, was ich dort eintragen müsste.
Tut mir leid für mein schlechtes Verständnis, doch manchmal brauche ich eine genauere Erklärung, über die Lösung.Gruß - Kazuto