nur OR, ohne N in diesem Fall
Wenn man schon korrigiert, dann richtig. Trotzdem hast du recht. Ein NOR hat vorne an noch ein Ausrufezeichen.
nur OR, ohne N in diesem Fall
Wenn man schon korrigiert, dann richtig. Trotzdem hast du recht. Ein NOR hat vorne an noch ein Ausrufezeichen.
ocmd:test(playerid,params[])
{
new i,s[64];
if(sscanf(params,"i",i) || sscanf(params,"s",s))
{
//
}
return 1;
}
Stichwort: Vergleichsoperatoren, in diesem Fall NOR (AND OR = UND ODER).
Habe ähnliches Problem, bekomme es grad nicht gelöst. Er schreibt in den Chat "[...] wurde zum Gebannt ernannt". Warum liest er Level 0 aus?
ocmd:setlevel(playerid,params[])
{
new player,level,sname[MAX_PLAYER_NAME],s1[64+MAX_PLAYER_NAME],s2[64+MAX_PLAYER_NAME],rangname[16];
pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[playerid][pName]);
if(pInfo[playerid][pLevel] == 5)
{
if(sscanf(params,"ui",player,level)) return SendClientMessage(playerid,COLOR_RED,"[Fehler]: Benutze /setlevel [ID][Level]");
{
if(IsPlayerConnected(player))
{
GetPlayerName(player,sname,sizeof(sname));
mysql_SetInt("spieler", "Level",level, "Name", sname);
SetPlayerScore(player,level);
pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[player][pName]);
switch(pInfo[player][pLevel])
{
case 0: { rangname="Gebannt"; }
case 1: { rangname="Spieler"; }
case 2: { rangname="Supporter"; }
case 3: { rangname="Co-Admin"; }
case 4: { rangname="Admin"; }
case 5: { rangname="Headadmin"; }
}
format(s1,sizeof(s1),"[Server]: Du hast %s zum %s ernannt", sname,rangname);
format(s2,sizeof(s2),"[Server]: %s ist nun %s", sname,rangname);
SendClientMessage(playerid,COLOR_LIGHTBLUE,s1);
SendClientMessageToAll(COLOR_LIGHTBLUE,s2);
}
else
{
SendClientMessage(playerid,COLOR_RED,"[Fehler]: Dieser Spieler ist nicht Online");
}
}
}
return 1;
}
Den Switch kann man generell machen, der hat nichts mit Dini zu tun. Habe aberein ähnliches Problem momentan, hoffe hier mit auf Lösung zu finden.
Du hast recht, hab das schnell von meinem ersten Script kopiert. Ja die Version ist richtig. Danke.
enum eSpielerDaten
{
pSkin,
pGeld
}
new sInfo[MAX_PLAYERS][eSpielerDaten];
stock SpeichereSpielerDaten(playerid)
{
new pName[MAX_PLAYER_NAME], save[13 + MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(save, sizeof(save), "/Spieler/%s.ini", pName);
sInfo[playerid][pSkin] = GetPlayerSkin(playerid);
dini_IntSet(save, "pSkin", sInfo[playerid][pSkin]);
sInfo[playerid][pGeld] = GetPlayerMoney(playerid);
return 1;
}
Du brauchst einen Part wo du Werte wie Skin, Health, Wanteds abfragst und mittels Dini speicherst. Dazu kann man einen stock nehmen.
stock stockname(params[])
Diesen verweist du dann bei deinem Dialog darauf, sonst wird nichts gespeichert.
Du brauchst ein Speichersystem. Dini und mySQL bevorzugt.
Wenn du dies dann hast, fragst du im entsprechenden Part sein Geld ab und setzt diesen Wert in eine Datei (Dini) oder in eine DB (MySQL)
Du solltest etwas konkreter werden.
mit einem optionalen parameter würde das so aussehen
if(sscanf(params,"U(-1)",pID))
wird nix eingegeben wird pID den wert -1 haben den darauf hin abfragen
Das hat bei mir leider nicht geklappt, habe daraufhin mich für die andere Variante entschieden.
Neue Frage:
Hallo,
Wollte fragen ob es das Script etwas optimiert, wenn man dies so schreibt:
new string[128];format(string,sizeof(string),"blablabla %s blabla",name)
oder
new string[128];format(string,128,"blablabla",name)
Gruß
Wozu soll der dienen ? Statistiken ?
Dann hieße der eher /stats
Ganz einfach. Man kann sich der Allgemeinheit auf dem Server zeigen ODER einer einzelnen Person. Momentan geht der Befehl ohne Parameter. Ich weiss grad nur nicht, wie man dies gleichzeitig mit UND ohne schreiben soll.
Moin moin,
ich wollte einen /show Befehl erstellen, gleichzeitig nutzbar mit oder ohne Parameter [ID]. Wie kann ich das realisieren?
if (PlayerInfo[playerid][pAdmin] >= 4)
Habe danach aufgehört zu lesen. Ist dein Spielerlevel gleich oder über 4? Ansonsten empfehle ich dir noch das Tutorial von Goldkiller bzgl. Debugnachrichten. Die haben mir anfänglich oft geholfen den Weg im Script zu verstehen, wenn es mal nicht so ging, wie ich wollte.
[url]http://forum.sa-mp.de/san-andr…s/66875-debugnachrichten/
http://forum.sa-mp.com/showthread.php?t=274503
habs zwar nicht getestet aber kannst ja mal ausprobieren, dir das script mal ansehen und ewas von lernen.
MfG
Meine alte Whitelist bestand aus der Abfrage von der Datei Existenz (nach name.ini Modell) und der Abfrage von vorhanden Keys in der Datei, welche dann eingetragen werden. Die Whitelist sollte mySQL basiert sein und Ingame als Befehl funktionieren, da ich kein ACP oder dergleichen besitze.
Ich habe meine DB erstellt und die Stocks eingefügt. Nun möchte ich aber jemanden erst auf den Server lassen, wenn er auf der Whitelist steht. Steht er drauf, darf er connecten und sein Passwort in der DB hinterlegen.
Wie könnte ich das denn nun schreiben? Ich bin mit MySQL noch nicht so vertraut, fuchse mich da grad rein.
Denk bitte dran. Das Samp Wiki sagt, dass seit 0.3x SendClientMessage's VOR einem Kick nicht mehr ausgegeben werden. Man muss hier also mit einem Delay arbeiten mittels Timer.
Hallo,
ich hatte bisher ein Script auf dini basierend gebastelt und sammel nun meine ersten Erfahrungen mit MySQL. Wie muss ich die Syntax umgestalten um einen Eintrag in der Datenbank zu ändern, wie z.B. den Userlevel? Ich habe bisher das:
ocmd:setlevel(playerid,params[]){ new pid,level,sname[MAX_PLAYER_NAME]; pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[playerid][pName]); if(pInfo[playerid][pLevel] > 2) { if(sscanf(params,"ii",pid,level)) return SendClientMessage(playerid,COLOR_RED,"[Fehler]: Benutze /setlevel [ID][Level]"); { GetPlayerName(pid,sname,sizeof(sname)); mysql_SetInt("spieler", "Level", pInfo[playerid][pLevel], "Name", pInfo[playerid][pName]); } } return 1;}
das anfängerauto nr.1 VW Golf!
Ist auch in der Versicherung sehr hoch und daher abzuraten. Ich plane auch gerade meinen Führerschein bis 2014 nachzuholen. Arbeite in der Altenpflege und würde gerne Beruflich mir ein Wagen holen. .
Ich habe ein 500€ Samsung Laptop und der packt zwar keine aktuellen Spiele, aber etwas hochgerechnet, dürften es um die 800€ für einen guten Gamer Laptop sein.
Du könntest das auch machen per switch/case
new rangname[16];switch(dini_Int(save,"pFraktion")) // Beispielsweise wenn du in einem Enum das hinterlegt hast{ case 0: {rangname="Polizei"; } case 1: { rangname="Feuerwehr"; } case 2: { rangname="Taxi"; }}
Du fragst mittels Funktion ab, wieviel Health er hat (GetPlayerHealth) speicherst dieses in einer Variable und addierst deine 5 dazu.