Guten tag.
Ich wollte fragen was sscanf ausgibt? also welchen Wert?
Guten tag.
Ich wollte fragen was sscanf ausgibt? also welchen Wert?
Ich finde der Script ist einfach nichts besonderes...
Einfach paar Fahrzeuge und Befehle und das wars.
Guten Tag.
Wiedermal will ein Befehl nicht obwohl ich nichts falsches sehe.
also mal der Code:
COMMAND:setskin(playerid,params[])
{
new pID,newSkin,string[124],string2[124],name[20],playername[20],string3[50];
if(SpielerInfo[playerid][Adminlevel]>=2)
if(aLogin[playerid]==1)
if(sscanf(params,"ui",pID,newSkin))
if(IsPlayerConnected(pID))
{
SetPlayerSkin(pID,newSkin);
GetPlayerName(pID,name,sizeof(name));
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"Admin %s hat dir einen neuen Skin gegeben (skinid: %i)",playername,newSkin);
format(string2,sizeof(string2),"Admin %s hat %s die Skinid %i gegeben",playername,name,newSkin);
format(string3,sizeof(string3),"Eingabe: %i", newSkin);
SendClientMessage(pID,GRAU,string);
SendClientMessage(pID,GRAU,string3);
for(new i;i<MAX_PLAYERS;i++)
{
if(SpielerInfo[i][Adminlevel]>=1)
{
SendClientMessage(i,GRAU,string2);
}
}
}
else return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
else return SendClientMessage(playerid,ROT,"Verwendung: /setskin [playerid] [skinid]");
else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
else return SendClientMessage(playerid,ROT,"Sie haben nicht das benötigte Adminlevel.");
return 1;
}
So.
Das Problem.
Wenn ich Ingame gehe und nur /setskin mache gebe ich mir (ID 0) die Skinid 0.
Wenn ich nun /setskin 0 eingebe kommt wieder das selbe.
Aber wenn ich eine Zahl dran mache kommt: "Verwende.......".
Danke für eure Hilfe.
EDIT// Überschrift editiert
er hat seinen Smiley verlinkt.
Also wer es braucht auf den Smiley!
Danke
mfg.
Opa
so gehts
Dankesehr
//edit
sry aber ich möchte noch was wissen und deswegen keinen neuen thread aufmachen....
also:
ist es möglich eine Eingabe zu beschränken?
also einmal dieser befehl:
COMMAND:makeadmin(playerid,params[])
{
new pID,newAdmin;
if(SpielerInfo[playerid][Adminlevel] == 3)
{
if(aLogin[playerid]==1)
{
if(sscanf(params, "ui",pID,newAdmin))return SendClientMessage(playerid,GRAU,"Verwendung: /makeadmin [playerid] [Adminlevel]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
else
{
new string[128],name[20];
new string2[128],playername[20];
new string3[128];
GetPlayerName(pID,name,sizeof(name));
GetPlayerName(playerid,playername,sizeof(playername));
format(string2,sizeof(string2),"%s hat das Adminlevel von %s (ID %i) auf %i geändert.",playername,name,pID,newAdmin);
format(string3,sizeof(string3),"Admin %s hat dein Adminlevel auf %i gesetzt.",playername,newAdmin);
format(string,sizeof(string),"Sie haben das Adminlevel von %s (ID %i) auf %i geändert.",name,pID,newAdmin);
//__________Nachricht___________
for(new i; i<MAX_PLAYERS;i++)
{
if(SpielerInfo[i][Adminlevel])
{
SendClientMessage(i,GRAU,string2);
}
}
//__________Ende___________
SendClientMessage(playerid,GRAU,string);
SpielerInfo[pID][Adminlevel] = newAdmin;
SendClientMessage(pID,GRAU,string3);
}
}
else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
}
else return SendClientMessage(playerid, GRAU, "Du hast nicht das benötigte Adminlevel.");
return 1;
}
ist es möglich, das man nur adminlevel 3 und nicht höher vergeben kann?
Wenn ja wie?
Dankesehr
danke garned beachtet das es ja else if.... gibt
das funkt so.
aber diesen Befehl kann jeder machen...
Wie kann ich es machen das nur Adminlevel 1 bis 3 diesen befehl machen können?
EDIT//(Text und Überschrift)
Bitte letzte Antwort nachsehen.
Danke
mfg.
Opa
funkt auch nicht....
Ich habe nun einen Befehl der funktioniert und nochmal den kick Command der wieder nicht funktioniert.
Hier mal mein neuer Code:
COMMAND:kick(playerid,params[])
{
new pID,kGrund;
if(SpielerInfo[playerid][Adminlevel]!=3)return SendClientMessage(playerid,GRAU,"Du hast nicht das benötigte Adminlevel.");
if(aLogin[playerid]==0) return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
if(sscanf(params,"us",pID,kGrund)) return SendClientMessage(playerid,GRAU,"Verwendung: /kick [playerid] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Kein Spieler mit angegebener ID Online");
{
SendClientMessage(playerid,GRAU,"Hier kommt noch was!");
}
return 1;
}
hier der Code, der funktioniert.
COMMAND:setlevel(playerid,params[])
{
new pID,newLevel;
if(SpielerInfo[playerid][Adminlevel] == 3)
{
if(aLogin[playerid]==1)
{
if(sscanf(params, "ui",pID,newLevel))return SendClientMessage(playerid,GRAU,"Verwendung: /makeadmin [playerid] [Adminlevel]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
else
{
new name[20],string[100],playername[20];
GetPlayerName(pID,name,sizeof(name));
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"%s hat das Level von %s (ID: %i) auf %i geändert",playername,name,pID,newLevel);
for(new i;i<MAX_PLAYERS;i++)
{
if(SpielerInfo[i][Adminlevel]>1)
{
SendClientMessage(i,GRAU,string);
}
}
SpielerInfo[pID][Level]=newLevel;
}
}
else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
}
else return SendClientMessage(playerid, GRAU, "Du hast nicht das benötigte Adminlevel.");
return 1;
}
ich versuche es jetzt noch einmal mit solcher Reihenfolge.. Wäre aber trotzdem Dankbar über meine Fehler
mfg.
Opa
EDIT// so habe nun einiges getestet und ich kam darauf, das der "Grund" falsch war.
naja mal schnell nachgelesen und gefunden.
Einen String in sscanf muss man eine Größe geben.
Nun klappt alles super.
ihr wart mir zwar icht die beste Hilfe aber vill. das nächste mal
//Closed
Ok ich lese grad das erste mal davon.
Naja bin kein Nachrichten Fan.
Nur hoffe ich das nicht Österreich getroffen wird^^
Naja die Briefbomben waren auch schon nicht so ohne...
mal abwarten
das hilft mir nichts, da dies um einiges komplizierter und nichts mit zcmd zu tun hat.
Und mir ist zcmd einfach sympatischer und viel besser.
Aber trotzdem danke für deine Hilfe.
PS: Dieser Thread ist auch an die anderen User gerichtet
mfg.
Opa
@deine Frage: ja
pls B2T.
Ich sehe zurzeit keinen Unterschied zu den anderen Befehl...
alles fast gleich.
aber schonmal Danke
mfg.
Opa
Wenn ich es richtig verstanden habe meint er wenn er einen anderen Spieler killt das sein Score +1 bekommt.
also was ich weis:
if(!IsPlayerConnected(pID)) soviel wie if(IsPlayerConnected(pID)==0) ist.
eine 0 wird von IsPlayerConnect ausgeben, wenn spieler nicht on ist...
daher stimmt es so.
ich habe einen anderen befehl wo dies so geht.
auch korrigieren wenn ich falsch liege xD
mfg.
Opa
Guten Tag.
wiedermal will ein CMD nicht.
Hier der Befehl:
COMMAND:kick(playerid,params[])
{
new pID,kGrund;
if(sscanf(params,"us",pID,kGrund)) return SendClientMessage(playerid,GRAU,"Verwendung: /kick [playerid] [Grund]");
if(SpielerInfo[playerid][Adminlevel]>=1)
if(aLogin[playerid]==1)
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Kein Spieler mit angegebener ID Online");
else
{
new name[20],playername[20],string[1024];
GetPlayerName(pID,name,sizeof(name));
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"%s (ID: %i) wurde von %s gekickt. (Grund:%s)",name,pID,playername,kGrund);
SendClientMessageToAll(GRAU,string);
Kick(pID);
}
else return SendClientMessage(playerid,GRAU,"Sie sind nicht als Admin eingeloggt");
else return SendClientMessage(playerid,GRAU,"Du hast nicht das benötigte Adminlevel.");
return 1;
}
Das Problem:
Wenn ich ingame nun /kick mache kommt "Kein Spieler mit angegebener ID Online".
Die id ist richtig eingeben usw.
Bitte um Hilfe.
mfg.
Opa
hast den gamemode eh in der server.cfg eingetragen?
Also ich war auch noch vor kurtzen nicht wirklich gut in pwn und konnte nichts.
Ich kann die nur eins raten:
schau dir diese Video Tutorials an:
http://www.youtube.com/user/Mr…orials#p/u/17/VIPvd6Y4d84
http://pawn.pastebin.com/6eK18t7c
jetzt ohne errors etc.
Ich versteht den Sinn des Scriptes nicht aber naja...
mfg.
Opa
{
new Spielerdatei (64);
new name(MAX_PLAYER_NAME);
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),*/Accounts/ts.txt*,name);
if(dini_Exists(Spielerdatei));
return 1;
}
so mach das mal so rein und sende die erneuten errors.. danke
Jo ohne Code geht nicht viel.
Bitte mal posten..
Danke
mfg.
Opa
Danke aber wegen meinen Edit das habe ich ned ganz verstanden.
Oder kann man das "public........" hinten nur machen wenn was "==0" ist?
Danke aber schonmal.
Ich möchte jetzt nichts falsches sagen aber ich glaube das das nicht von SA:MP abhängt sondern von San Andreas selber.
Ich war gestern erst auf einen Server da hatte man manchmal sehr lange mit NoS fahren können aber das können auch Laggs sein da der Server weit weg stand