enum sektor_daten {
sCID,
sName[16],
Float:sX1,
Float:sY1,
Float:sX2,
Float:sY2,
sArt
};
new SektorInfo[10][sektor_daten];
new Sektor[10];
enum s_system {
PlayerOnServer,
SektorOnline, // Das hier
OldHour,
Text:MoneyBack, Text:BoxBack,
Text:Uhrzeit,
Text:Handel,
HandelMin,
HandelSec
};
new System[s_system];
enum p_spielerdaten {
pName[MAX_PLAYER_NAME],
pPass[16],
pAdmin,
pGeld,
pSAD,
pEXP,
pEhre,
pLevel,
pClan,
pMission,
pTrank,
pUID,
pEtape,
pFindPflanze,
pHandel,
pIsSektor, // das hier
pShowSektor, // das hier
bool:pUseTrank,
Text:MoneyPlayer,
Text:Needs,
Text:Speedo,
Text:SpeedoBack,
Text3D:pText,
Text:Erfolg
};
new SpielerInfo[MAX_PLAYERS][p_spielerdaten];
OnGameModeInit()
CreateSektor();
OnPlayerConnect(playerid)
switch(SpielerInfo[playerid][pShowSektor]) {
case 0: {
for(new i = 0; i <System[SektorOnline]; i++) {
GangZoneShowForPlayer(playerid,Sektor[i], 0xFFFF0096); SpielerInfo[playerid][pShowSektor] = 1;
}
}
}
Ein Timer bei mir alle Sekunde
for(new playerid = 0; playerid <System[PlayerOnServer]; playerid++)
{
if(!GetPVarInt(playerid,"Eingeloggt")) continue;
if(!IsPlayerInArea(playerid, SektorInfo[SpielerInfo[playerid][pIsSektor]][sX1],SektorInfo[SpielerInfo[playerid][pIsSektor]][sY1],SektorInfo[SpielerInfo[playerid][pIsSektor]][sX2],SektorInfo[SpielerInfo[playerid][pIsSektor]][sY2]))
{
GenerateNeeds(playerid);
}
if(SektorInfo[SpielerInfo[playerid][pIsSektor]][sArt] == 1)
{
if(SpielerInfo[playerid][pIsSektor] == -1) continue;
if(GetPlayerWeapon(playerid) >= 1)
{
ResetPlayerWeapons(playerid);
SendClientMessage(playerid, COLOR_WHITE, "Das ist eine Waffenfreie Zone.");
}
}
}
CreateSektor() und CheckSektorName(playerid)
stock CreateSektor()
{
new str[128], Query[128], i = 0;
format(Query, sizeof(Query), "SELECT * FROM `sektor`");
mysql_query(Query);
mysql_store_result();
printf("%d Sektoren gelesen.", mysql_num_rows());
while(mysql_fetch_row(str))
{
new oldx=0;
new count=0;
for(new x=0; x<strlen(str); x++)
{
if(str[x]=='|')
{
count++;
new tmpstring[sizeof(str)]; tmpstring=str;
strdel(tmpstring, x, strlen(tmpstring));
strdel(tmpstring, 0, oldx+1);
switch(count)
{
case 2: SektorInfo[i][sCID] = strval(tmpstring);
case 3: format(SektorInfo[i][sName], 16, "%s", strlen(tmpstring));
case 4: SektorInfo[i][sX1] = floatstr(tmpstring); //f
case 5: SektorInfo[i][sY1] = floatstr(tmpstring); //f
case 6: SektorInfo[i][sX2] = floatstr(tmpstring); //f
case 7: SektorInfo[i][sY2] = floatstr(tmpstring); //f
case 8: SektorInfo[i][sArt] = strval(tmpstring);
}
oldx=x;
}
}
Sektor[i] = GangZoneCreate(SektorInfo[i][sX1],SektorInfo[i][sY1],SektorInfo[i][sX2],SektorInfo[i][sY2]);
printf("Sektor %s[%d] geladen.", SektorInfo[i][sName],System[SektorOnline]);
printf("%s", str);
i++;
System[SektorOnline] = i;
}
mysql_free_result();
}
stock CheckSektorName(playerid)
{
new str[16];
SpielerInfo[playerid][pIsSektor] = -1;
for(new i = 0; i <System[SektorOnline]; i++)
{
if(IsPlayerInArea(playerid, SektorInfo[i][sX1],SektorInfo[i][sY1],SektorInfo[i][sX2],SektorInfo[i][sY2]))
{
SpielerInfo[playerid][pIsSektor] = i;
break;
}
}
switch(SpielerInfo[playerid][pIsSektor])
{
case -1: { format(str, sizeof(str), "..."); }
default: { format(str, sizeof(str), "%s", SektorInfo[SpielerInfo[playerid][pIsSektor]][sName]); }
}
return str;
}
Der auf dem Bild Rechte Textdraw
stock GenerateNeeds(playerid)
{
new string[256];
format(string, 256, "~r~%s [UID: %d]~n~~n~~r~SAD: ~y~%d~n~~r~Erfahrung: ~w~%d~n~~r~Ehre: ~w~%d~n~~r~Level: ~w~%d~n~~r~Clan: ~w~%s~n~~r~Sektor: ~w~%s",
SpielerInfo[playerid][pName], SpielerInfo[playerid][pUID], SpielerInfo[playerid][pSAD], SpielerInfo[playerid][pEXP],
SpielerInfo[playerid][pEhre], SpielerInfo[playerid][pLevel],PlayerClan(SpielerInfo[playerid][pClan]), CheckSektorName(playerid));
TextDrawSetString(SpielerInfo[playerid][Needs], string);
return 1;
}
So das ist mein ganzes System was ich zu dem Thema habe