Statt eine Variable für alle Spieler zu erstellen brauchst du 500 Variablen für alle Spieler.
Um dann nicht 500 Variablen definieren zu müssen bietet sich ein Array an.
new Array[MAX_PLAYERS];
Lies dir dazu einfach folgendes durch: http://wiki.sa-mp.com/wiki/Scripting_Basics_DE
Beiträge von |-|auke
-
-
So wie es aussieht, hast du die Koordinaten gespeichert. - in gRandomPlayerCP
Somit musst du die Erste Dimension, des 2 dimensionalen Arrays speichern. In diesem Fall die Variable rand.
Dann kannst du gRandomPlayerCP[rand][...] überall in IsPlayerInRangeOfPoint verwenden. Das ist eigentlich keine große Sache... -
Lade den Code einmal bitte bei Pastebin hoch, oder stelle ihn hier hinein.
-
Ich vertraue dieser Quelle mehr, da diese Fakten und Belege bringt.
http://www.pcgameshardware.de/…ik-neue-Infos/Handy/News/ -
Darf ich einmal bitte erfahren woher du das Script hast?
Das ist anscheinend mein Script, welches unter meinem Copyright steht und bisher nicht released wurde. -
So sollte es klappen.
if (strcmp(cmd, "/buylevel", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if (gPlayerLogged[playerid] != 0)
{
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
if(PlayerInfo[playerid][pLevel] >= 0)
{
new nxtlevel = PlayerInfo[playerid][pLevel]+1;
new costlevel = nxtlevel*levelcost;//10k for testing purposes
new expamount = nxtlevel*levelexp;
new infostring[256];
if(GetPlayerMoney(playerid) < costlevel)
{
format(infostring, 256, " Du hast nicht genug Geld ($%d) !",costlevel);
SendClientMessage(playerid, COLOR_GRAD1, infostring);
return 1;
}
else if (PlayerInfo[playerid][pExp] < expamount)
{
format(infostring, 256, " Du brauchst mindestens %d Respekt Punkte, du hast [%d] !",expamount,PlayerInfo[playerid][pExp]);
SendClientMessage(playerid, COLOR_GRAD1, infostring);
return 1;
}
else
{
format(string, sizeof(string), "~g~LEVEL UP~n~~w~Du bist jetzt Level %d", nxtlevel);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
PlayerPlayMusic(playerid);
GivePlayerMoney(playerid, (-costlevel));
PlayerInfo[playerid][pLevel]++;
PlayerInfo[playerid][pExp] -= expamount;
if(PlayerInfo[playerid][pLevel] == 3)
{
Delete3DTextLabel(Noob[playerid]);
Noobi[playerid] = 0;
}
PlayerInfo[playerid][gPupgrade] = PlayerInfo[playerid][gPupgrade]+2;
GameTextForPlayer(playerid, string, 5000, 1);
format(infostring, 256, " Du hast dir Level %d für ($%d) gekauft. Tipp /upgrade ein.", nxtlevel, costlevel);
SendClientMessage(playerid, COLOR_GRAD1, infostring);
format(infostring, 256, " Du hast %d unspent Upgrade Punkte",PlayerInfo[playerid][gPupgrade]);
SendClientMessage(playerid, COLOR_GRAD2, infostring);
}
}
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht eingeloggt !");
}
}
return 1;
} -
Leider ist das Tabellen-plugin wohl nicht mehr installiert. Ich werde das, bis das Plugin wieder installiert ist, ersteinmal so stehen lassen.
-
Hast du noch andere MySQL Plugins in Benutzung?
Und wird das Filterscript korrekt geladen? -
Du kannst dir entweder diesen Code einmal ansehen, oder einfach das Filterscript benutzen
[ FILTERSCRIPT ] H_Interiors 1.1 - Interiorengine -
-
Was mit brennend interessiert ist, wie Ihr eine nicht fertige Version bewerten könnt?
Was würdet Ihr denn denken, wenn ich jetzt eure nicht fertigen Scripts als scheiße bewerte? -
Eine Playerid wird logischerweise nur einmal vergeben!
Setze sie beim Connecten des Spielers einfach auf 0, und fertig. -
Mehr Zeichen passen dann wohl nicht in dein 22 + MAX_PLAYER_NAME langes Array hinein.
-
OK, ich guck mir das nochmal an. Danke für die Meldung.
-
-
stock UpdateSupportDraws()
{
new sups,
str2[128],
str[1024];
for(new playerid; playerid < GetMaxPlayers(); playerid++)
{
if(GetPVarInt(playerid, "sup"))
{
new pName[MAX_PLAYER_NAME],spName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
GetPlayerName(GetPVarInt(playerid, "sup_player"),spName,MAX_PLAYER_NAME);
if(!sups)
{
format(str, sizeof str, "~w~%i - ~y~%s ~w~- ~g~%s", playerid, pName, GetPVarInt(playerid, "sup_player") != -1 ? spName : "Frei" );
TextDrawSetString(SupportDraws[1], str);
}
else
{
format(str2, sizeof str2, "~w~%i - ~y~%s ~w~- ~g~%s", playerid, pName, GetPVarInt(playerid, "sup_player") != -1 ? spName : "Frei" );
TextDrawSetString(SupportDraws[1], str);
}
sups++;
}
}
if(sups > 0 && sups < 3)
{
format(str2,sizeof str2,"~y~%i ~w~Tickets",sups,str2);
TextDrawSetString(SupportDraws[0],str2);
}
else if(sups < 1)
{
format(str2,sizeof str2,"~g~%i ~w~Tickets",sups,str2);
TextDrawSetString(SupportDraws[0],str2);
}
else if(sups > 3)
{
format(str2,sizeof str2,"~r~%i ~w~Tickets",sups,str2);
TextDrawSetString(SupportDraws[0],str2);
Dein Code macht nicht viel Sinn. Warum änderst du in else str2 mit der Größe von str, und zeigst dann str an? -
Du hast sehr viel sinnlosen Code in deiner Funktion. Du hättest es einfach so kurz machen können:
forward time(playerid);
public time(playerid)
{
new hour , minute , second , string[ 8 ];
get time ( hour , minute , second );
format ( string , 8 , "%01d:%01d" , hour , minute );
SetWorldTime ( hour );
for ( new i; i < MAX_PLAYERS; i ++ )
TextDrawSetString ( Clock , string );
return 1;
} -
Dann musst du den Takt des Timers für jede Aktualisierung auf kosten des Servers und der Spieler erhöhen.
-
Bei dir hat GetPlayerName nur einen Parameter, und du hoffst auf eine Rückgabe von GetPlayerName, die es nicht gibt.
Edit: Versuch´s so:
new pName[MAX_PLAYER_NAME],spName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
GetPlayerName(GetPVarInt(playerid, "sup_player"),spName,MAX_PLAYER_NAME);
format(str, sizeof str, "~w~%i - ~y~%s ~w~- ~g~%s", playerid, pName, GetPVarInt(playerid, "sup_player") != -1 ? spName : "Frei" ); -
Ich habe keinen richtigen Plan was du vor hast, aber ich verstehe es bisher so:
new Test[2];
Dann kannst du das z.B. so machen:
Text[0] = AddStaticVehicle(520, 2109.1763, 1503.0453, 32.2887, 82.2873, 0, 1);
Dann kannst du Text[1] als "fahrzeugbezogene" Variable nehmen.