Das heißt, dass alle Indizes von 0 bis MAX_PLAYERS-1 auf -1 gesetzt werden, wenn der Code geladen wird.
Das ist wie:
new var = -1;
nur eben für ein Array.
Beiträge von Jeffry
-
-
Schalte mal den MySQL Debug Modus an und poste dann was im MySQL Log steht, wenn du diesen Code ausführen lässt.
Wie du das machst steht hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4) -
public OnPlayerRequestClass(playerid,classid)
{
switch(classid)
{
case 0: GameTextForPlayer(...);
case 1: GameTextForPlayer(...);
case 2: GameTextForPlayer(...);
case 3: GameTextForPlayer(...);
}
return 1;
} -
new query[128];
format(query, sizeof(query), "SELECT pName FROM users WHERE id = '%d'", id);
mysql_tquery(handle, query, "OnUserNameFetched", "ii", playerid, id);forward OnUserNameFetched(playerid, id);
public OnUserNameFetched(playerid, id)
{
new string[128];
if(cache_get_row_count() > 0)
{
cache_get_row(0,0,string);
format(string, sizeof(string), "Nutzername von Datenbank-ID %i: %s", id, string);
}
else format(string, sizeof(string), "Nutzername von Datenbank-ID %i: ***Unbekannt***", id);
return SendClientMessage(playerid, 0xFF0000FF, string);
}Beispielsweise so.
-
Welches MySQL Plugin (& Version) nutzt du?
-
Möglicherweise reicht es schon, wenn du
new playercp = Bergarbeiter[playerid][berg_Checkpoint];
zu:
new playercp = Bergarbeiter[playerid][berg_Checkpoint]+1;
änderst.Falls nicht, poste nochmal den Debug Log.
-
Diese drei Abfragen müssen nach der IsPlayerInRangeOfPoint Abfrage kommen.
if(hInfo[i][Gekauft] != 0) return SendClientMessage(playerid, error, "Dieses Haus steht nicht zum verkauf!");//hier
if(hInfo[i][Level] > SpielerInfo[playerid][pLevel]) return SendClientMessage(playerid, error, "Dein Level ist zu gering!");
if(hInfo[i][Kaufpreis] > SpielerInfo[playerid][pGeld]) return SendClientMessage(playerid, error, "Dein Geld ist zu gering!");
Also in der Ebene die IsPlayerInRangeOfPoint öffnet. -
Was meinst du? Ich verstehe deine Frage nicht so ganz, sorry.

-
Ach, hatte vergessen, dass du es auf leer gestellt hast.
public PayDay(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new string[128],string1[128], gehalt = GiveFrakGehalt(playerid);
SendClientMessage(playerid,info,"|____________Zahltag___________|");
format(string, sizeof(string), "Gehalt: %i$",gehalt);
SendClientMessage(playerid,hinweis,string);
SpielerInfo[playerid][pPayday] = 0;
SpielerInfo[playerid][Kontostand] += gehalt;
for(new i=0; i<MAX_HOUSE; i++)
{
format(string1,sizeof(string1),"Deine Miete beträgt: %d",hInfo[i][Mietpreis]);
if((!strcmp(SpielerName(playerid), hInfo[i][Mieter1]) && strlen(hInfo[i][Mieter1])) || (!strcmp(SpielerName(playerid), hInfo[i][Mieter2]) && strlen(hInfo[i][Mieter2])) || (!strcmp(SpielerName(playerid), hInfo[i][Mieter3]) && strlen(hInfo[i][Mieter3])))
{
GivePlayerMoney(playerid, -hInfo[i][Mietpreis]), SendClientMessage(playerid, info, string1);
break;
}
}
SetPVarInt(playerid, "pLevelPunkte", GetPVarInt(playerid, "pLevelPunkte")+1);
if(GetPVarInt(playerid, "pLevelPunkte") == RequiredPoints(playerid))
{
GivePlayerScore(playerid,1);
SetPVarInt(playerid, "pLevelPunkte", 0);
SpielerInfo[playerid][pLevel] ++;
SendClientMessage(playerid,erfolg,"Herzlichen Glückwunsch, du bist ein Level gestiegen!");
}
}
return 1;
}Gleiches Prinzip beim mieten:
if((!strcmp(SpielerName(playerid), hInfo[i][Mieter1]) && strlen(hInfo[i][Mieter1])) || (!strcmp(SpielerName(playerid), hInfo[i][Mieter2]) && strlen(hInfo[i][Mieter2])) || (!strcmp(SpielerName(playerid), hInfo[i][Mieter3]) && strlen(hInfo[i][Mieter3])) || (!strcmp(SpielerName(playerid), hInfo[i][Besitzer]) && strlen(hInfo[i][Besitzer]))) -
ocmd:carpark(playerid,params[])
{
new vID,seat,Float:x,Float:y,Float:z,Float:r;
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,RED,"Du bist in keinem Fahrzeug!");
seat = GetPlayerVehicleSeat(playerid);
if(seat != 0)
{
SendClientMessage(playerid,RED,"Du musst der Fahrer deines Fahrzeugs sein, um dieses zu speichern!");
}
else
{
vID = GetPlayerVehicleID(playerid);
printf("vID = %i",vID);
GetVehiclePos(vID,x,y,z);
cInfo[vID][c_x] = x;
cInfo[vID][c_y] = y;
cInfo[vID][c_z] = z;
GetVehicleZAngle(vID,r);
cInfo[vID][c_r] = r;
printf("x = %f y=%f z=%f r=%F",x,y,z,r);
SendClientMessage(playerid,CL_ORANGE,"Dein Auto wird gespeichert. Dieser Vorgang dauert ca 10 Sekunden!");
SendClientMessage(playerid,CL_ORANGE,"[Hinweis]: Du bist solange gefreezed!");
SetTimerEx("UodateCarInDB",10000,false,"ii",vID,playerid);
//
//Sicher, dass es UodateCarInDB heißt, und nicht UpdateCarInDB ?
//
printf("playerid = %i vID = %i",playerid,vID);
}
return 1;
}Und:
new cInfo[MAX_VEHICLES][carEnum]; -
Nicht das enum, sondern das "new cInfo...".
-
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerNPC(i) || !IsPlayerConnected(i)) continue;
//Code hier.
//i = ein menschlicher Spieler
} -
Wie hast du cInfo deklariert?
-
Nach dem ändern der Farbe musst du http://wiki.sa-mp.com/wiki/PlayerTextDrawShow verwenden, sonst aktualisiert es sich nicht.
-
Um von einem Name auf eine ID schließen zu können kannst du das hier verwenden:
stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(strfind(l_name,l_PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}new id = ReturnPlayerID("NAME_DES_BOTS");
-
Erhöhe die Zahl mal auf 2000000, geht es dann?
Wenn nicht, poste mal den Befehl mit den prints. -
Das dynamic verhindert, dass die Meldung kommt, und diese Meldung kommt, weil du zu viele Variablen mit zu großer Größe verwendest, sprich du verbrauchst viel Speicher. Durch das dynamic hast du die Möglichkeit mehr Speicher zu belegen.
-
Diese Meldung, nach den 4 Warnungen, darf da nicht sein.
Füge
#pragma dynamic 1000000
unter den Includes ein, falls die Meldung nicht weg geht, erhöhe die Zahl etwas. -
Wenn du deinen Code kompilierst, was steht danach im Compiler drin? Kopiere das alles mal und poste es hier.
-
return GivePlayerMoney(playerid, -hInfo[playerid][Mietpreis]);
Zu
return GivePlayerMoney(playerid, -hInfo[i][Mietpreis]);Bzw
GivePlayerMoney(playerid, -hInfo[i][Mietpreis]);
Falls man sich in mehrere Häuser einmieten kann.