Hallo,
ich bin noch ziiiemlich neu bei Pawn und komme bei einem Problem nicht weiter.
Ich will es hinbekommen, dass die Klassenauswahl bei keinem Connect mehr kommt, sondern nur noch wenn man Tod ist.
Hat da jemand ne Idee?
Vielen Dank schonmal
Klassenauswahl nur wenn Spieler Tod
- Crossline
- Geschlossen
- Erledigt
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
-
-
Unter OnPlayerDeath folgendes:
ForceClassSelection(playerid);
-
Ich weiß nicht ob du mein Problem richtig verstanden hast. Wenn ich Connecte komme ich immernoch in die Skinauswahl. Das soll aber NUR passieren, wenn ich Tod bin. Sonst soll automatisch der alte Skin gewählt werden.
Crossline -
OnPlayerConnect und da
SetSpawnInfo(playerid,0,15,1765.6999511719, -1921.0999755859, 13.60000038147,212.2234,0,0,0,0,0,0);
SpawnPlayer(playerid);Die einzelnen Parameter:
Zitatplayerid The PlayerID of who you want to set the spawn information.
team The Team-ID of the chosen player.
skin The skin which the player will spawn with.
Float:X The X-coordinate of the player's spawn position.
Float:Y The Y-coordinate of the player's spawn position.
Float:Z The Z-coordinate of the player's spawn position.
Float:Angle The direction in which the player needs to be facing after spawning.
weapon1 The first spawn-weapon for the player.
weapon1_ammo The amount of ammunition for the primary spawnweapon.
weapon2 The second spawn-weapon for the player.
weapon2_ammo The amount of ammunition for the second spawnweapon.
weapon3 The third spawn-weapon for the player.
weapon3_ammo The amount of ammunition for the third spawnweapon.Gruß
//EDIT parameter Liste eingefpügt
-
So weit so gut. Jetzt will ich aber nicht, dass er mit festgelegten Parametern spawnt, sondern z.B. mit dem Skin mit dem er disconnectet hat. Kann man diese Daten irgendwie auslagern?
-
Speicher unter OnPlayerDisconnect mit GetPlayerSkin die Skin ID und dann lädtst diesen Wert in SetSpawnInfo beim 3. Parameter.
-
Ich verstehe was du meinst, aber ich habe sowas noch nie gemacht.
Kannst du mir die Codeschnipsel geben?
Crossline -
Wie speicherst Du die Accountdaten? Dini? oder Mysql? oder mit was?
-
In einer lokalen .ini, frag mich nicht, was das ist (dann ja nicht Mysql :D)
Die Positionen werden dort gespeichert in einer "Name.ini". Kann man weitere Parameter da einfach hinzufügen? (wie?)
Crossline -
public OnPlayerDisconnect(playerid, reason){
dini_IntSet(pfad,"skin",GetPlayerSkin(playerid));
return 1;
}public OnPlayerConnect(playerid){
SetSpawnInfo(playerid,0,dini_Int(pfad,"skin"),x,y,z,facingangle,0,0,0,0,0,0);
SpawnPlayer(playerid);
} -
Wie genau kann ich Pfad ersetzen?
Ich kann ja nicht (z.B.) Crossline.ini angeben, da es ja für alle Nutzer funktionieren muss.
Crossline -
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"pfad/%s.ini",name);
%s ist ein Platzhalter, an dessen stelle dann der Wert von "name" eingefügt wird. Mehr findeste dazu im Wiki :> -
Okay, ich habe gerade den überblick verloren x:
Was mache ich falsch?
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,0x00A93CFF,"Herzlich Willkommen auf Crosslines GTA SA RL Server!");
SetSpawnInfo(playerid,0,dini_Int(pfad,"skin"),1765.6999511719, -1921.0999755859, 13.60000038147,212.2234,0,0,0,0,0,0);
LoadStats(playerid);
SpawnPlayer(playerid);
return 1;
}public OnPlayerDisconnect(playerid, reason)
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"/scriptfiles/%s.ini",name);
{
dini_IntSet(pfad,"skin",GetPlayerSkin(playerid));new Float:x;
new Float:y;
new Float:z;GetPlayerPos(playerid,x,y,z);
positionx = x;
positiony = y;
positionz = z;
if (!dini_Exists(FileStats(playerid)))
{
dini_Create(FileStats(playerid));
}SaveStats(playerid);
return 1;
}Code
Alles anzeigenC:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(94 - hier 4) : error 017: undefined symbol "pfad" C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(101 - hier 11) : error 003: declaration of a local variable must appear in a compound block C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(104 - hier 14) : error 021: symbol already defined: "format" C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(106 - hier 16) : error 021: symbol already defined: "dini_IntSet" C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(106 - ") : error 010: invalid function or declaration C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(106 -- 112 - hier 16 - 22) : error 021: symbol already defined: "GetPlayerPos" C:\Users\PC\Desktop\Crosslines GTASA Reallife\gamemodes\Crossline.pwn(106 -- 112 - ") : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 7 Errors.
-
public OnPlayerConnect(playerid)
{
public OnPlayerDisconnect(playerid, reason)
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"/scriptfiles/%s.ini",name);
SendClientMessage(playerid,0x00A93CFF,"Herzlich Willkommen auf Crosslines GTA SA RL Server!");
SetSpawnInfo(playerid,0,dini_Int(pfad,"skin"),1765.6999511719, -1921.0999755859, 13.60000038147,212.2234,0,0,0,0,0,0);
LoadStats(playerid);
SpawnPlayer(playerid);
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"/scriptfiles/%s.ini",name);
dini_IntSet(pfad,"skin",GetPlayerSkin(playerid));
new Float:x;
new Float:y;
new Float:z;GetPlayerPos(playerid,x,y,z);
positionx = x;
positiony = y;
positionz = z;
if (!dini_Exists(FileStats(playerid)))
{
dini_Create(FileStats(playerid));
}SaveStats(playerid);
return 1;
} -
Habs implementiert + getestet, aber es wird nichts in die .ini geschrieben.
Noch irgendwelche fehler?public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,0x00A93CFF,"Herzlich Willkommen auf Crosslines GTA SA RL Server!");
SetSpawnInfo(playerid,0,dini_Int("/scriptfiles/%s.ini","skin"),1765.6999511719, -1921.0999755859, 13.60000038147,212.2234,0,0,0,0,0,0);
LoadStats(playerid);
SpawnPlayer(playerid);
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"/scriptfiles/%s.ini",name);
dini_IntSet(pfad,"skin",GetPlayerSkin(playerid));
new Float:x;
new Float:y;
new Float:z;GetPlayerPos(playerid,x,y,z);
positionx = x;
positiony = y;
positionz = z;
if (!dini_Exists(FileStats(playerid)))
{
dini_Create(FileStats(playerid));
}SaveStats(playerid);
return 1;
}public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,positionx,positiony,positionz);
return 1;
}Ich wollte mich noch mal bei dir bedanken, dass du dir so lange Zeit nimmst! Super
-
Geschrieben sollte schon was werden, jedoch ist bei OnPlayerConnect ein Fehler.
Und zwar liest Du den Skin immer aus der "%s.ini" aus.
Du musst das in ein Format machen:
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"/scriptfiles/%s.ini",name);//hier ersetzt Du "%s" mit dem Namen
SetSpawnInfo(playerid,0,dini_Int(pfad,"skin"),1765.6999511719, -1921.0999755859, 13.60000038147,212.2234,0,0,0,0,0,0)
Dann sollte es funktionieren.
-
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,0x00A93CFF,"Herzlich Willkommen auf Crosslines GTA SA RL Server!");
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"/scriptfiles/%s.ini",name);//hier ersetzt Du "%s" mit dem Namen
SetSpawnInfo(playerid,0,dini_Int(pfad,"skin"),1765.6999511719, -1921.0999755859, 13.60000038147,212.2234,0,0,0,0,0,0);
LoadStats(playerid);
SpawnPlayer(playerid);
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
new pfad[50], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));format(pfad,sizeof(pfad),"/scriptfiles/%s.ini",name);
dini_IntSet(pfad,"skin",GetPlayerSkin(playerid));
new Float:x;
new Float:y;
new Float:z;GetPlayerPos(playerid,x,y,z);
positionx = x;
positiony = y;
positionz = z;
if (!dini_Exists(FileStats(playerid)))
{
dini_Create(FileStats(playerid));
}SaveStats(playerid);
return 1;
}public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid,positionx,positiony,positionz);
return 1;
}Bei diesem Code wird nichts in die ini geschrieben.
Wenn ich das %s in Crossline abändere kann es doch gar nicht mehr funktionieren wie ich will, oder?
Wir nehmen doch extra das %s damit es mit jedem User klappt? -
Es muss sogar so sein, denn sonst schreibt der in eine "%s.ini" und die existiert ja nicht.
Mal ne andere Frage: Existiert zu dem Zeitpunkt schon eine "Crossline.ini"?
-
Ja, sie existiert, allerdings ohne einen Punkt "skin" oder ähnliches.
Was muss ich dir schicken, dass ich dir helfen kann?
Und was ist wenn (z.B.) User1 joint, seine Daten müssen ja in User1.ini gespeichert werden, nicht Crossline.ini -
Deswegen ersetzt Du ja im Format "%s" mit dem Namen des Jenigen, der connected, bzw. disconnected.
Warum der das jetzt allerdings nicht speichert ist mir ein Rätsel.
Du benutzt doch sonst auch Dini oder?