Du musst
TogglePlayerSpectating(playerid, 0);
machen, wenn du dich eingeloggt hast.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Und die nächste Frage... : ich habe bei meinen Login /Register Vorgang halt Textdraws.. Ist ja schön und gut, aber etwas weiter unten habe ich noch eine " Kiste " erstellt extra für Skins, die er beim ablesen reinmachen soll. Also z.b.: Spieler A hat Skin ID 0 , So wird es in der Kiste angezeigt. Wie macht man das ? Oder geht sowas überhaupt?
-
format(string, sizeof(string), "%s hat Skin %d", SpielerName(playerid), GetPlayerSkin(playerid));
TextDrawSetString(...);Wenn du es für alle haben willst, eben einen Loop durch alle Spieler, und jeweils "string" mitgeben.
-
Nein ich meine halt in als Model ID Hier ist noch ein Screen: http://www.fotos-hochladen.net/uploads/samp005bpewu2z7jr.png
-
http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel
Dort dann die SkinID
zb. GetPlayerSkin oder aus einer Variable -
Wie frage ich nochmal etwas aus der Datenbank ? Um dann hinterher dann den Skin , aus der Datenbank(mysql) , auch spawnen zu lassen ?
-
http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel
Dort dann die SkinID
zb. GetPlayerSkin oder aus einer VariableIch versteh es einfach irgendwie nicht... Es wird zwar ein Skin angezeigt , aber nur immer den CJ Skin also ID 0
new skinID;
GetPVarInt(playerid, SpielerInfo[playerid][pSkin]);
skinID = GetPlayerSkin(playerid);
TextDrawSetPreviewModel(Textdraw7, skinID); -
Ich vermute mal, du musst den Textdraw danach noch einmal verstecken und wieder anzeigen.
-
Ich versteh es einfach irgendwie nicht...
Ich vermute mal, du musst den Textdraw danach noch einmal verstecken und wieder anzeigen.
Zitat//You still have to use TextDrawShowForAll/TextDrawShowForPlayer to make the textdraw visible.
Steht da alles^^
-
http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel
Dort dann die SkinID
zb. GetPlayerSkin oder aus einer VariableIch vermute mal, du musst den Textdraw danach noch einmal verstecken und wieder anzeigen.
Steht da alles^^
Aber der Code ist richtig?
-
Irgendwie nicht
Einfach so:
TextDrawSetPreviewModel(Textdraw7, GetPlayerSkin(playerid)); -
Irgendwie nicht
Einfach so:
TextDrawSetPreviewModel(Textdraw7, GetPlayerSkin(playerid));Habe ich gemacht, aber jetzt kommt garnichts mehr außer ein Weiser Kasten..
-
Zeig uns mal bitte deinen bisherigen Code.
-
Zeig uns mal bitte deinen bisherigen Code.
//SkinboxTextdraw
Textdraw7[playerid] = CreatePlayerTextDraw(playerid, 526.000000, 292.444458, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, Textdraw7[playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, Textdraw7[playerid], 104.500000, 131.911102);
PlayerTextDrawAlignment(playerid, Textdraw7[playerid], 1);
PlayerTextDrawColor(playerid, Textdraw7[playerid], -1);
PlayerTextDrawSetShadow(playerid, Textdraw7[playerid], 0);
PlayerTextDrawSetOutline(playerid, Textdraw7[playerid], 0);
PlayerTextDrawBackgroundColor(playerid, Textdraw7[playerid], 255);
PlayerTextDrawFont(playerid, Textdraw7[playerid], 4);//und das halt unter einen Timer, weil ich dass nach einer Bestimmten Zeit haben möchte:
//Skinanzeige
PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], GetPlayerSkin(playerid));
PlayerTextDrawShow(playerid, Textdraw7[playerid]); -
PlayerTextDrawFont(playerid, Textdraw7[playerid], 4);
zu:
PlayerTextDrawFont(playerid, Textdraw7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW); // TEXT_DRAW_FONT_MODEL_PREVIEW = 5 -
PlayerTextDrawFont(playerid, Textdraw7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);
Alles klar ich probier es gleich.. aber ich komm einfach nicht an diese Errors weiter:
ocmd:makeadmin(playerid,params[])
{
new pID,string[256],adminname[MAX_PLAYERS],spielername[MAX_PLAYERS],arank;
GetPlayerName(playerid, adminname, sizeof(adminname));
GetPlayerName(playerid, spielername, sizeof(spielername));
if(!IsPlayerConnected(playerid))return SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Die angegebende SpielerID ist nicht online!");
SpielerInfo[playerid][pAlevel] = arank;
if(arank < 0 || arank > 7) return SendClientMessage(playerid,Rot, "[FEHLER] {FFFFFF}Du kannst nur das Adminlevel von 0 - 7 vergeben!");
if(SpielerInfo[playerid][pAlevel] == 8)
{
if(SpielerInfo[playerid][pAlevel] == 0)
{
format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich aus dem Team entfernt!",adminname);
format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s aus dem Team entfernt!",adminname,spielername);
SendClientMessage(playerid,Rot,string);
SendAdminMessage(Rot,string);
SpielerInfo[pID][pAlevel] = 0;
SavePlayer(playerid);
}
else if(SpielerInfo[playerid][pAlevel] >= 1)
{
if(SpielerInfo[playerid][pAlevel] == 1) { arank = "Supporter"; }
else if(SpielerInfo[playerid][pAlevel] == 2) { arank = "Administrator Level 1"; }//ab hier sind die errors: " error 006: must be assigned to an array "
else if(SpielerInfo[playerid][pAlevel] == 3) { arank = "Administrator Level 2"; }
else if(SpielerInfo[playerid][pAlevel] == 4) { arank = "Administrator Level 3"; }
else if(SpielerInfo[playerid][pAlevel] == 5) { arank = "High Administrator"; }
else if(SpielerInfo[playerid][pAlevel] == 6) { arank = "Entwickler"; }
else if(SpielerInfo[playerid][pAlevel] == 7) { arank = "Stelv. Serverleiter"; }
format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich zum %s befördert!",adminname,arank);
format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s zum %s befördert!",adminname,spielername,arank);
SendClientMessage(playerid,Rot,string);
SendAdminMessage(Rot,string);
SpielerInfo[pID][pAlevel] = arank;
SavePlayer(playerid);
}
return 1;
}
return 1;
} -
arank ist ein Integer, es muss aber ein String (=Array) sein. Da nehmen wir eine neue Variable hinzu (rankstr).
ocmd:makeadmin(playerid,params[])
{
new pID,string[256],adminname[MAX_PLAYERS],spielername[MAX_PLAYERS],arank;
GetPlayerName(playerid, adminname, sizeof(adminname));
GetPlayerName(playerid, spielername, sizeof(spielername));
if(!IsPlayerConnected(playerid))return SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Die angegebende SpielerID ist nicht online!");
SpielerInfo[playerid][pAlevel] = arank;
if(arank < 0 || arank > 7) return SendClientMessage(playerid,Rot, "[FEHLER] {FFFFFF}Du kannst nur das Adminlevel von 0 - 7 vergeben!");
if(SpielerInfo[playerid][pAlevel] == 8)
{
if(SpielerInfo[playerid][pAlevel] == 0)
{
format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich aus dem Team entfernt!",adminname);
format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s aus dem Team entfernt!",adminname,spielername);
SendClientMessage(playerid,Rot,string);
SendAdminMessage(Rot,string);
SpielerInfo[pID][pAlevel] = 0;
SavePlayer(playerid);
}
else if(SpielerInfo[playerid][pAlevel] >= 1)
{
new rankstr[64];
if(SpielerInfo[playerid][pAlevel] == 1)
{
rankstr = "Supporter";
}
else if(SpielerInfo[playerid][pAlevel] == 2)
{
rankstr = "Administrator Level 1";
}
else if(SpielerInfo[playerid][pAlevel] == 3)
{
rankstr = "Administrator Level 2";
}
else if(SpielerInfo[playerid][pAlevel] == 4)
{
rankstr = "Administrator Level 3";
}
else if(SpielerInfo[playerid][pAlevel] == 5)
{
rankstr = "High Administrator";
}
else if(SpielerInfo[playerid][pAlevel] == 6)
{
rankstr = "Entwickler";
}
else if(SpielerInfo[playerid][pAlevel] == 7)
{
rankstr = "Stelv. Serverleiter";
}
format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich zum %s befördert!",adminname,rankstr);
format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s zum %s befördert!",adminname,spielername,rankstr);
SendClientMessage(playerid,Rot,string);
SendAdminMessage(Rot,string);
SpielerInfo[pID][pAlevel] = arank;
SavePlayer(playerid);
}
return 1;
}
return 1;
} -
arank ist ein Integer, es muss aber ein String (=Array) sein. Da nehmen wir eine neue Variable hinzu (rankstr).
ocmd:makeadmin(playerid,params[])
{
new pID,string[256],adminname[MAX_PLAYERS],spielername[MAX_PLAYERS],arank;
GetPlayerName(playerid, adminname, sizeof(adminname));
GetPlayerName(playerid, spielername, sizeof(spielername));
if(!IsPlayerConnected(playerid))return SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Die angegebende SpielerID ist nicht online!");
SpielerInfo[playerid][pAlevel] = arank;
if(arank < 0 || arank > 7) return SendClientMessage(playerid,Rot, "[FEHLER] {FFFFFF}Du kannst nur das Adminlevel von 0 - 7 vergeben!");
if(SpielerInfo[playerid][pAlevel] == 8)
{
if(SpielerInfo[playerid][pAlevel] == 0)
{
format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich aus dem Team entfernt!",adminname);
format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s aus dem Team entfernt!",adminname,spielername);
SendClientMessage(playerid,Rot,string);
SendAdminMessage(Rot,string);
SpielerInfo[pID][pAlevel] = 0;
SavePlayer(playerid);
}
else if(SpielerInfo[playerid][pAlevel] >= 1)
{
new rankstr[64];
if(SpielerInfo[playerid][pAlevel] == 1)
{
rankstr = "Supporter";
}
else if(SpielerInfo[playerid][pAlevel] == 2)
{
rankstr = "Administrator Level 1";
}
else if(SpielerInfo[playerid][pAlevel] == 3)
{
rankstr = "Administrator Level 2";
}
else if(SpielerInfo[playerid][pAlevel] == 4)
{
rankstr = "Administrator Level 3";
}
else if(SpielerInfo[playerid][pAlevel] == 5)
{
rankstr = "High Administrator";
}
else if(SpielerInfo[playerid][pAlevel] == 6)
{
rankstr = "Entwickler";
}
else if(SpielerInfo[playerid][pAlevel] == 7)
{
rankstr = "Stelv. Serverleiter";
}
format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich zum %s befördert!",adminname,rankstr);
format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s zum %s befördert!",adminname,spielername,rankstr);
SendClientMessage(playerid,Rot,string);
SendAdminMessage(Rot,string);
SpielerInfo[pID][pAlevel] = arank;
SavePlayer(playerid);
}
return 1;
}
return 1;
}alles klar danke es geht nun, aber jetzt zur Box: Es wird zwar wieder ein Skin angezeigt , aber nicht der den ich will... nur wieder CJ
-
nur wieder CJ
Wird der Timer denn überhaupt ausgeführt? -
Wird der Timer denn überhaupt ausgeführt?Jap. als erstes kommt bei mir ein "ladebildschirm" dann kommen die textdraws mit login/register + die Skinanzeige...
Hier nochmal alle Codes:
//der timer + wo der skin normalerweise ausgewählt werden soll
public loginregistertextdraws(playerid)
{
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
TextDrawShowForPlayer(playerid, Textdraw3);
TextDrawShowForPlayer(playerid, Textdraw4);
TextDrawShowForPlayer(playerid, Textdraw5);
TextDrawShowForPlayer(playerid, Textdraw6);
PlayerTextDrawShow(playerid, Textdraw7[playerid]);
//Skinanzeige
PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], GetPlayerSkin(playerid)); //hier ist das was ich eingefügt habe!
return 1;
}//Hier derTextdraws:
Textdraw7[playerid] = CreatePlayerTextDraw(playerid, 526.000000, 292.444458, "LD_SPAC:white");
PlayerTextDrawLetterSize(playerid, Textdraw7[playerid], 0.000000, 0.000000);
PlayerTextDrawTextSize(playerid, Textdraw7[playerid], 104.500000, 131.911102);
PlayerTextDrawAlignment(playerid, Textdraw7[playerid], 1);
PlayerTextDrawColor(playerid, Textdraw7[playerid], -1);
PlayerTextDrawSetShadow(playerid, Textdraw7[playerid], 0);
PlayerTextDrawSetOutline(playerid, Textdraw7[playerid], 0);
PlayerTextDrawBackgroundColor(playerid, Textdraw7[playerid], 255);
PlayerTextDrawFont(playerid, Textdraw7[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW); -