if(fID == 1)
{
SetPlayerSkin(playerid,23);
.....
}
if(fID== 2)
{
.....
}
Beiträge von alva
-
-
Ich kann keine Fehler sehen, das sollte funktionieren.
-
Gibt es einen Weg auch mit Linux dieses Tutorial zu befolgen?
-
Ganz oben im Script:
#pragma tabsize 0
-
Sehr Unnötige Idee, die Benutzer vom SA-MP.de können höchstwarscheinlich selber auf die Sterne ganz unten drücken.
Gruß,
-
Sollte in etwa bei dem sein:
enum sInfo
{
pAdmin,
pLevel
//usw.
}
// hier etwas darunter dann:
new PlayerInfo[MAX_PLAYERS][sInfo];
//Bei dir kann es evtl. SpielerInfo heißen, je nach dem, ich hoffe du weisst was ich meine. -
if(sscanf(params,"us",pID,iLevel))
U = eine Spielerid
S = ein String
und da du einen Integer, also eine Zahl als Wert eingibst, müsste es i/d sein.Das mit dem iLevel < XYZ ist soweit Richtig.
if(sscanf(params,"ud",pID,iLevel))
-
new pChoosedSkin[MAX_PLAYERS];
switch(GetPlayerSkin(playerid))
{
case 105:
{
SetPlayerSkin(playerid,106);
pChoosedSkin[playerid] = 106;
}
case 106:
{
SetPlayerSkin(playerid,107);
pChoosedSkin[playerid] = 107;
}
case 107:
{
SetPlayerSkin(playerid,269);
pChoosedSkin[playerid] = 269;
}
case 269:
{
SetPlayerSkin(playerid,270);
pChoosedSkin[playerid] = 270;
}
case 270:
{
SetPlayerSkin(playerid,105);
pChoosedSkin[playerid] = 105;
}
}Hier mal ein Beispiel, du musst dir eine neue Variable erstellen mit dem Skin den der Spieler gerade benutzt und dann einfach Abfragen, dass wenn er den einen Skin hat, die Taste drückt, dass der andere kommt.
-
Nur mal so am Rande, ich weiß nicht ob es richtig ist, jedenfalls ist es bei mir so:
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Grau,"Der angegebene Spieler ist nicht online.");
if(sscanf(params,"uds",pID,Checkpoints,Grund))return SendClientMessage(playerid,Grau,"Benutze: /prison [ID/Teilname] [Checkpoints] [Grund]");Würde ich tauschen, da sonst, wenn keine ID 0 auf dem Server ist, dort die ganze Zeit stehen würde: "Der angegebene Spieler ist nicht online."
Also am besten andersrum:if(sscanf(params,"uds",pID,Checkpoints,Grund))return SendClientMessage(playerid,Grau,"Benutze: /prison [ID/Teilname] [Checkpoints] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Grau,"Der angegebene Spieler ist nicht online."); -
Und was genau soll nun der Fehler sein?
-
Es gibt nun "Anwählbare" Textdraws.
http://forum.sa-mp.com/showthread.php?t=328267
[video]
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt. -
stock GetPlayersInTeamFromMaxPlayers(team)
{
new playercount = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPVarInt(i,"loggedin")== 0) continue;
if(GetPVarInt(i,"member") != team)continue;
playercount++;
}
return playercount;
}So in der Art köntest du es einfacher schreiben.
Den Stock ein wenig umschreiben und dann ist alles fertig. -
Arbeitest du mit Array oder PVar?
Hier mal mein Command, falls du mit PVar arbeitest.ocmd:admins(playerid,params[])
{
#pragma unused params
SendClientMessage(playerid,COLOR_GREY,"Admin Online:");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(GetPVarInt(i,"Admin")) // undzwar, wird hier abgefragt ob der spieler ein admin ist
{
new string[128],adminlevel[64]; // neuer string, für später und ein neuer Adminname
switch(GetPVarInt(i,"admin")) // hier switchen wir nun die Variable Admin
{
case 1:{adminlevel="Supporter";} // wenn 1 adminlevel = Supporter usw.
case 2:{adminlevel="Moderator";}
case 3:{adminlevel="Admin";}
case 4:{adminlevel="Head-Admin";}
case 5:{adminlevel="Head-Admin";}
}
format(string, 256, "%s: %s",adminlevel,PlayerName(i));
SendClientMessage(playerid,COLOR_GREY,string);
}
}
}
return 1;
} -
Das Problem wurde erfolgreich gelöst.
Hier erkläre ich mal wie:bspw. für den Adminrang.
mysql_SetInt("accounts", "admin", GetPVarInt(playerid,"admin"), "Name", SpielerInfo[playerid][sName]);Anstatt dem:
SpielerInfo[playerid][sName]Benutze ich nun:
PlayerName(playerid)Dazu folgenden Stock:
stock PlayerName(playerid)
{
new GetName[MAX_PLAYER_NAME];
GetPlayerName(playerid,GetName,sizeof(GetName)); //Wir getten den Spielernamen
return GetName; //Und returnen ihn hier...
}Gruß,
/erledigt -
Heyho, ich habe mal versucht , wie bei Maddin's Tutorial mit MySQL zu arbeiten, das Script hat keine Errors oder Warnings, jedenfalls wenn ich den Server verlasse, speichert nichts und wenn ich Relogge, muss ich mich auch neu Registrieren, obwohl bei Navicat ein Account existiert.
Unter Disconnect usw. steht natürlich alles.Hier mal mein Speichern stock:
stock SpielerSpeichern(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"loggedin") == 1)
{
mysql_SetInt("accounts", "admin", GetPVarInt(playerid,"admin"), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "Kills", GetPlayerScore(playerid), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "prison", GetPVarInt(playerid,"prison"), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "zeit", GetPVarInt(playerid,"zeit"), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "Tode", GetPVarInt(playerid,"Tode"), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "warns", GetPVarInt(playerid,"warns"), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "skin", GetPVarInt(playerid,"skin"), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "member", GetPVarInt(playerid,"member"), "Name", SpielerInfo[playerid][sName]);
mysql_SetInt("accounts", "Baned", GetPVarInt(playerid,"Baned"), "Name", SpielerInfo[playerid][sName]);
printf("%s wurde gespeichert.",PlayerName(playerid));
}
}
return 1;
}Hier mein Laden Stock:
stock LoadAccount(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)
{
GetPlayerName(playerid, SpielerInfo[playerid][sName], MAX_PLAYER_NAME);
SetPVarInt(playerid,"admin",mysql_GetInt("accounts", "admin", "Name", SpielerInfo[playerid][sName]));
SetPVarInt(playerid,"prison",mysql_GetInt("accounts", "prison", "Name", SpielerInfo[playerid][sName]));
SetPVarInt(playerid,"zeit", mysql_GetInt("accounts", "zeit", "Name", SpielerInfo[playerid][sName]));
new score = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][sName]);
SetPlayerScore(playerid,score);
SetPVarInt(playerid,"Baned",mysql_GetInt("accounts", "Baned", "Name", SpielerInfo[playerid][sName]));
SetPVarInt(playerid,"Tode", mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][sName]));
SetPVarInt(playerid,"member", mysql_GetInt("accounts", "member", "Name", SpielerInfo[playerid][sName]));
SetPVarInt(playerid,"skin", mysql_GetInt("accounts", "skin", "Name", SpielerInfo[playerid][sName]));
SetPVarInt(playerid,"warns", mysql_GetInt("accounts", "warns", "Name", SpielerInfo[playerid][sName]));
SetPVarInt(playerid,"loggedin",1);
new frak;
frak = GetPVarInt(playerid,"member");
SetSpawnInfo(playerid,bugfix[frak][0],GetPVarInt(playerid,"skin"),Fraktionsspawns[frak][0],Fraktionsspawns[frak][1],Fraktionsspawns[frak][2],Fraktionsspawns[frak][3],1,1,0,0,0,0);
SpawnPlayer(playerid);
if(GetPVarInt(playerid,"Baned") == 1)
{
SendClientMessage(playerid,0x828282FF,"Du bist gebannt.");
Kick(playerid);
}
return 1;
}Wisst ihr vielleicht was falsch ist?
-
for(new fraks=1;fraks<MAX_FRAKS;fraks++) // new fraks = 1; evtl. das was Kaliber meint?
-
Stimmt, vielen Dank.
-
Heyho.
Bei fogenden Code:ocmd:setstat(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,COLOR_GREY,"Du bist kein Admin");
new pid;
new nummer;
new wert;
new string[128];
new string2[128];
if(sscanf(params,"udd",pid,nummer,wert)){SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /setstat [Spieler] [Stat] [Wert]"); SendClientMessage(playerid,COLOR_WHITE,"(1 = Kills) (2 = Tode) (3 = Verwarnungen)");}
if(nummer < 1 || nummer > 3)return SendClientMessage(playerid,COLOR_GREY,"Ungültige Parameter.");
if(nummer == 1)
{
format(string,sizeof(string),"%s hat die Kills von %s auf %d gesetzt.",PlayerName(playerid),PlayerName(pid),wert);
SendAdminMessage(string);
SetPlayerScore(pid,wert);
format(string2,sizeof(string2),"* Deine Kills wurden vom System auf %i gesetetzt.",PlayerName(playerid),wert);
SendClientMessage(pid,BLAU,string2);
}
if(nummer == 2)
{
format(string,sizeof(string),"%s hat die Tode von %s auf %d gesetzt.",PlayerName(playerid),PlayerName(pid),wert);
SendAdminMessage(string);
SetPVarInt(pid,"Tode",wert);
format(string2,sizeof(string2),"* Deine Tode wurden vom System auf %i gesetetzt.",PlayerName(playerid),wert);
SendClientMessage(pid,BLAU,string2);
}
if(nummer == 3)
{
SetPVarInt(pid,"warns",wert);
format(string,sizeof(string),"%s hat die Verwarnungen von %s auf %d gesetzt.",PlayerName(playerid),PlayerName(pid),wert);
SendAdminMessage(string);
format(string2,sizeof(string2),"* Deine Verwarnungen wurden vom System auf %i gesetetzt.",PlayerName(playerid),wert);
SendClientMessage(pid,BLAU,string2);
}
return 1;
}Kommt folgendes im Chat:
Also eigentlich sollte unten auch 1 stehen, passiert aber nicht, wisst ihr vielleicht wies? -
http://forum.mta-sa.org/index.…ad&postID=73195#post73195
Ich hoffe das dies deine Fragen beantworten wird.
-
stock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
{
return 1;
}
return 0;
}Dann einfach bei dem Befehl eine if Abfrage hinein.