Hallo Brotfische,
ich habe in meinem Script im Moment fünf Fraktionen und möchte noch ein Paar einbauen. Allerdings ist das bissel komisch, wie ich die spawnen lasse.
Ich habe es gerade so:
if(PlayerInfo[playerid][pEingeloggt] == 0)
{
if(PlayerInfo[playerid][pFraktion] == 0)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{FFFFFF}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
SetPlayerPos(playerid,2025.0194,1008.0113,10.8203);
SetPlayerFacingAngle(playerid,266.3221);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Zivi);
SetPlayerSkin(playerid,1);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
return 1;
}
if(PlayerInfo[playerid][pFraktion] == 1)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{0077FF}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
SetPlayerPos(playerid,1569.7238,-1694.0360,5.8906);
SetPlayerFacingAngle(playerid,178.3540);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,LSPD);
SetPlayerSkin(playerid,266);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
return 1;
}
if(PlayerInfo[playerid][pFraktion] == 2)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{0026FF}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
SetPlayerPos(playerid,1050.7272,1006.7212,11.0000);
SetPlayerFacingAngle(playerid,324.5735);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,FBI);
SetPlayerSkin(playerid,285);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
}
if(PlayerInfo[playerid][pFraktion] == 3)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{00FF15}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
SetPlayerPos(playerid,155.3963,1903.2561,18.6888);
SetPlayerFacingAngle(playerid,271.1202);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Army);
SetPlayerSkin(playerid,287);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
}
if(PlayerInfo[playerid][pFraktion] == 4)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{AA0000}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
SetPlayerPos(playerid,328.6095,-1512.7717,36.0391);
SetPlayerFacingAngle(playerid,232.0174);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Medic);
SetPlayerSkin(playerid,70);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
}
if(PlayerInfo[playerid][pFraktion] == 5)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{63CB63}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
SetPlayerPos(playerid,-2519.9355,-623.5046,132.7723);
SetPlayerFacingAngle(playerid,2.7521);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,News);
SetPlayerSkin(playerid,187);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
}
return 1;
}
else if(PlayerInfo[playerid][pEingeloggt] == 1)
{
if(PlayerInfo[playerid][pFraktion] == 0)
{
SetPlayerPos(playerid,2025.0194,1008.0113,10.8203);
SetPlayerFacingAngle(playerid,266.3221);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Zivi);
SetPlayerSkin(playerid,1);
PlayerInfo[playerid][pEingeloggt] = 1;
return 1;
}
if(PlayerInfo[playerid][pFraktion] == 1)
{
SetPlayerPos(playerid,1569.7238,-1694.0360,5.8906);
SetPlayerFacingAngle(playerid,178.3540);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,LSPD);
SetPlayerSkin(playerid,266);
PlayerInfo[playerid][pEingeloggt] = 1;
return 1;
}
if(PlayerInfo[playerid][pFraktion] == 2)
{
SetPlayerPos(playerid,1050.7272,1006.7212,11.0000);
SetPlayerFacingAngle(playerid,324.5735);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,FBI);
SetPlayerSkin(playerid,285);
PlayerInfo[playerid][pEingeloggt] = 1;
return 1;
}
if(PlayerInfo[playerid][pFraktion] == 3)
{
SetPlayerPos(playerid,155.3963,1903.2561,18.6888);
SetPlayerFacingAngle(playerid,271.1202);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Army);
SetPlayerSkin(playerid,287);
PlayerInfo[playerid][pEingeloggt] = 1;
return 1;
}
if(PlayerInfo[playerid][pFraktion] == 4)
{
SetPlayerPos(playerid,328.6095,-1512.7717,36.0391);
SetPlayerFacingAngle(playerid,232.0174);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Medic);
SetPlayerSkin(playerid,70);
PlayerInfo[playerid][pEingeloggt] = 1;
return 1;
}
if(PlayerInfo[playerid][pFraktion] == 5)
{
SetPlayerPos(playerid,-2519.9355,-623.5046,132.7723);
SetPlayerFacingAngle(playerid,2.7521);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,News);
SetPlayerSkin(playerid,187);
PlayerInfo[playerid][pEingeloggt] = 1;
return 1;
}
}
Kann ich das anders machen ? vielleicht sogar leichter ?
Spieler Spawnen lassen
- TheTutoFreak
- Geschlossen
- Erledigt
-
-
Geh mit dem Gedanken ran keine Zeilen doppelt zu schreiben.
if(PlayerInfo[playerid][pEingeloggt] == 0)
{
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{FFFFFF}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
}
switch(PlayerInfo[playerid][pFraktion])
{
case 0:
{
SetPlayerPos(playerid,2025.0194,1008.0113,10.8203);
SetPlayerFacingAngle(playerid,266.3221);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Zivi);
SetPlayerSkin(playerid,1);
break;
}
case 1:
{
SetPlayerPos(playerid,1569.7238,-1694.0360,5.8906);
SetPlayerFacingAngle(playerid,178.3540);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,LSPD);
SetPlayerSkin(playerid,266);
break;
}
case 2:
{
SetPlayerPos(playerid,1050.7272,1006.7212,11.0000);
SetPlayerFacingAngle(playerid,324.5735);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,FBI);
SetPlayerSkin(playerid,285);
break;
}
case 3:
{
SetPlayerPos(playerid,155.3963,1903.2561,18.6888);
SetPlayerFacingAngle(playerid,271.1202);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Army);
SetPlayerSkin(playerid,287);
break;
}
case 4:
{
SetPlayerPos(playerid,328.6095,-1512.7717,36.0391);
SetPlayerFacingAngle(playerid,232.0174);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,Medic);
SetPlayerSkin(playerid,70);
break;
}
case 5:
{
SetPlayerPos(playerid,-2519.9355,-623.5046,132.7723);
SetPlayerFacingAngle(playerid,2.7521);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,News);
SetPlayerSkin(playerid,187);
break;
}
}#Edit
SetCameraBehindPlayer(); sollte auch noch aus dem Switch-Case raus. -
Aber dann muss ich doch auch wenn er nicht eingeloggt ist, das selbe wieder machen...
-
Der Code von mir ist äquivalent zu deinem, nur das ich deine Redundanzen aufgelößt habe.
Was du genau machen willst und wo du den Code einsetzt, kann ich nicht wissen. -
Der soll bei OnPlayerSpawn rein.
-
Der soll bei OnPlayerSpawn rein.
Dann mach den Code da rein.
Wo ist das Problem? -
Du könntest es auch mit einem Enum regeln. Das könnte dann zB so aussehen: (Sorry, falls Fehler vorhanden sind. Bin auf Arbeit, und kann hier nichts testen).
enum enum_FactionSpawns
{
Float:PosX,
Float:PosY,
Float:PosZ,
Float:PosA,
Color,
Skin
}
new fSpawn[6][enum_FactionSpawns] = {
{2025.0194,1008.0113,10.8203,266.3221,Zivi,1},
{1569.7238,-1694.0360,5.8906,178.3540,LSPD,266},
{1050.7272,1006.7212,11.0000,324.5735,FBI,285},
{155.3963,1903.2561,18.6888,271.1202,Army,287},
{328.6095,-1512.7717,36.0391,232.0174,Medic,70},
{-2519.9355,-623.5046,132.7723,2.7521,News,187}
}//OnPlayerSpawn (oder was auch immer :P)
if(PlayerInfo[playerid][pEingeloggt] == 0)
{
new string[128],name[MAX_PLAYER_NAME],fid=PlayerInfo[playerid][pFraktion];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{FFFFFF}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
PlayerInfo[playerid][pEingeloggt] = 1;
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
}
SetPlayerPos(playerid,fSpawn[fid][PosX],fSpawn[fid][PosY],fSpawn[fid][PosZ]);
SetPlayerFacingAngle(playerid,fSpawn[fid][PosA]);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,fSpawn[fid][Color]);
SetPlayerSkin(playerid,fSpawn[fid][Skin]);
PlayerInfo[playerid][pEingeloggt] = 1; -
Du könntest es auch mit einem Enum regeln. Das könnte dann zB so aussehen: (Sorry, falls Fehler vorhanden sind. Bin auf Arbeit, und kann hier nichts testen).
Wenn es dynamisch sein sollte, würde ich das ganze mit einem SQL-Cache realisieren.
Alle Fraktionen liegen in einer Datenbank, beim starten des Servers zieht er sich alle Fraktionen in einen Enum-Array.
Nun kann er mittels Fraktions-ID direkt alle Informationen von den Fraktionen aus dem Array lesen / schreiben.
Will er dann irgendwann mal die Position/den Namen/etc. ändern, kann das ohne Probleme direkt in der Datenbank gemacht werden.Dabei ist es egal ob es eine MySQL, SQLite, etc. ist.
Aber nehm keine File basierte Speicherstruktur! -
Ich habe das bei OnPlayerSpawn so gemacht:
if(PlayerInfo[playerid][pEingeloggt] == 0)
{
new string[128],name[MAX_PLAYER_NAME],fID = PlayerInfo[playerid][pFraktion];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"{FFFFFF}%s {999999}hat den Server betreten. Herzlich Willkommen!",name);
SendClientMessageToAll(Grau,string);
SetPlayerPos(playerid,FraktSpawns[fID][PosX],FraktSpawns[fID][PosY],FraktSpawns[fID][PosZ]);
SetPlayerFacingAngle(playerid,FraktSpawns[fID][PosA]);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,FraktSpawns[fID][Color]);
SetPlayerSkin(playerid,FraktSpawns[fID][Skin]);
PlayerInfo[playerid][pEingeloggt] = 1;
if(KillList == 1)
{
SendDeathMessage(INVALID_PLAYER_ID,playerid,200);
}
}
else if(PlayerInfo[playerid][pEingeloggt] == 1)
{
new fID = PlayerInfo[playerid][pFraktion];
SetPlayerPos(playerid,FraktSpawns[fID][PosX],FraktSpawns[fID][PosY],FraktSpawns[fID][PosZ]);
SetPlayerFacingAngle(playerid,FraktSpawns[fID][PosA]);
SetCameraBehindPlayer(playerid);
SetPlayerColor(playerid,FraktSpawns[fID][Color]);
SetPlayerSkin(playerid,FraktSpawns[fID][Skin]);
PlayerInfo[playerid][pEingeloggt] = 1;
}
jetzt ist das aber so, dass wenn ich /makeleader Name 8 mache das da steht das ich Hitman Leader bin werde aber als Mülli gespawnt. Und wenn ich connecte steht doch dann immer in Weis statt in der Fraktionsfarbe: TheTutoFreak hat den Server betreten. Herzlich Willkommen!//PUSH Das Problem habe ich immer noch.
-
breadfish.de
Hat das Thema geschlossen.