Poste mal den Code was du bereits gemacht hast.
Beiträge von Jeffry
-
-
Das liegt dann möglicherweise daran, dass die Daten der Häuser, vor allem der Besitzer, nicht richtig geladen werden.
Poste bitte mal den Code der die Häuser lädt, und prüfe, ob in der Datei/Datenbank der Besitzer richtig eingetragen wird. -
Poste doch bitte mal den Code wie du das Objekt erstellst, dann teste ich es selbst und, sofern ich eine Lösung finde, poste ich sie hier.
-
Gut zu wissen. War mir nicht bekannt, sehr gut erklärt! Das wird sich in Zukunft als hilfreich erweisen.
-
Beschreibe dein "Problem" mal in einem ausführlichen und gescheiten Deutsch bzw. Satzbau.
Vor allem: Was passiert wenn du was machst, und was soll eigentlich passieren? -
-
-
Hat jemand ne Idee?
public loadCar(playerid)
{
new Car,rows,fields;
cache_get_data(rows,fields);
if(rows)
{
for(new i=0; i<rows; i++)
{
cInfo[i][model] = cache_get_field_content_int(i,"model",dbhandle);
//cInfo[i][besitzer] = cache_get_field_content_int(i,"besitzer",dbhandle);
//cInfo[i][firma] = cache_get_field_content_int(i,"firma",dbhandle);
cInfo[i][c_x] = cache_get_field_content_int(i,"x",dbhandle);
cInfo[i][c_y] = cache_get_field_content_int(i,"y",dbhandle);
cInfo[i][c_z] = cache_get_field_content_int(i,"z",dbhandle);
cInfo[i][c_r] = cache_get_field_content_int(i,"r",dbhandle);
cInfo[i][Color_1] = cache_get_field_content_int(i,"Color_1",dbhandle);
cInfo[i][Color_2] = cache_get_field_content_int(i,"Color_2",dbhandle);
cInfo[i][db_id] = cache_get_field_content_int(i,"db_id",dbhandle);
CreateVehicle(cInfo[i][model],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][Color_1],cInfo[i][Color_2],-1);
Car++;
}
}
return true;
} -
Seltsam ist auch, dass dort steht Fahrschul cps zu hoch obwohl es die Farmer CPs sind
Poste doch bitte mal deinen debuggten Code und was im server_log steht dazu. -
Ändere
SpielerCars[playerid][i][Nummernschild]
ZuSpielerCarNummernschild[playerid][i]
Und definiere es so:
new SpielerCarNummernschild[MAX_PLAYERS][MAX_AUTOS_PRO_SPIELER][24];Der Fehler liegt daran, dass es in SA-MP keine vierdimensionalen Arrays gibt.
-
Alle [playerid] zu [i] ändern.
-
Dann musst du deinen Code prüfen, warum es zu hoch wird. Am besten du debuggst den Code.
http://wiki.sa-mp.com/wiki/Debugging -
if(AktuellerFahrschulCP[playerid] < 22) SetPlayerCheckpoint(playerid,FahrschuleCPS[AktuellerFahrschulCP[playerid]][0],FahrschuleCPS[AktuellerFahrschulCP[playerid]][1],FahrschuleCPS[AktuellerFahrschulCP[playerid]][2], 8.0);
else print("Fahrschule-Zähler zu hoch.");if(AktuellerFarmerCP[playerid] < SO_VIELE_FARMER_CPS_WIE_DU_HAST) SetPlayerCheckpoint(playerid,FarmerCPS[AktuellerFarmerCP[playerid]][0],FarmerCPS[AktuellerFarmerCP[playerid]][1],FarmerCPS[AktuellerFarmerCP[playerid]][2], 8.0);
else print("Farmer-Zähler zu hoch.");Einfach so abfangen.
-
-
Was bedeutet das mit dem hOwned denn sonst? Jeffry:
Dass dieses Haus (i) bereits gekauft worden ist.
Er will, dass jeder Spieler nur 1 Haus kaufen kann. -
Das kann auch über eine Definition sein:
#define MAX_IRGENDWAS 21
new Array[MAX_IRGENDWAS];Vielleicht sind es auch 20, ich weiß nicht ob das AMX Backtrace den End-Char mitzählt.
Prüfe einfach dein gesamtes OnPlayerEnterCheckpoint ob da irgend ein Array möglicherweise "gesprengt" wird. Da hilft nur suchen. -
^ Post über mir: Käse.
Ich wollte das buyhouse auch noch so machen das man nur 1 Haus kaufen kann also pro person aber ich kann irgendwie 2 Häuser kaufen
ocmd:buyhouse(playerid,params[])
{
#pragma unused params
if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
new string[128];
format(string, sizeof(string), "%s", SpielerName(playerid));
for(new i = 0; i < sizeof(HausInfo); i++)
{
if(HausInfo[i][hCreated] == 1 && HausInfo[i][hOwned] == 1)
{
if(!strcmp(HausInfo[i][hBesitzer], string)) return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus.");
}
}
for(new i = 0; i < sizeof(HausInfo); i++)
{
if(HausInfo[i][hCreated] == 1)
{
if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
{
if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(SpielerName(playerid),HausInfo[SpielerInfo[playerid][pHausKey]][hBesitzer],true) == 0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
SendClientMessage(playerid,COLOR_GREEN,string);
GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
HausInfo[i][hOwned] = 1;
SpielerInfo[playerid][pHausKey] = i;
format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
SaveHaus(i);
return 1;
}
}
}
return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
} -
ocmd:buyhouse(playerid,params[])
{
#pragma unused params
if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
new string[128];
for(new i = 0; i < sizeof(HausInfo); i++)
{
if(HausInfo[i][hCreated] == 1)
{
if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
{
if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(SpielerName(playerid),HausInfo[SpielerInfo[playerid][pHausKey]][hBesitzer],true) == 0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
SendClientMessage(playerid,COLOR_GREEN,string);
GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
HausInfo[i][hOwned] = 1;
SpielerInfo[playerid][pHausKey] = i;
format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
SaveHaus(i);
return 1;
}
}
}
return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
}Die Nachricht gehört ganz unten hin, nicht in die Schleife.
-
-