SetObjectMaterialText(obj,"Willkommen auf Blakhawk-Reallife",1,OBJECT_MATERIAL_SIZE_256x128,"Arial",24,1,rot,weiß,0);
Versuche es so, wenn du das nicht explizit definiert hast.
Beiträge von Jeffry
-
-
Dann musst du nach dem Erstellen noch
SaveFractionCars();
aufrufen, bzw. eine Funktion, die nur das einzelne Fahrzeug speichert. Sobald du es speicherst, sollte es auch drin stehen. -
So:
new obj = CreateObject(7914, 1485.75867, -1742.75562, 22.25340, 0.00000, 0.00000, 180.00000);
SetObjectMaterial(obj, 0, 8419, "vgsbldng1", "black32", 0xFFFFFFFF);
SetObjectMaterialText(obj,"Willkommen auf Blakhawk-Reallife",1,256x128,"Arial",24,1,rot,weiß,0);Unter der Voraussetzung, dass die angegebenen Parameter richtig sind, bzw. so sind wie du es willst. Das musst du ausprobieren.
-
Versuche es mal hiermit:
stock FreeFrakCheck()
{
for(new i;i<MAX_FRACTION_CARS;i++) if(FractionCars[i][fVehid]==0) return i;
return -1;
} -
Poste bitte die FreeFrakCheck Funktion.
-
Poste bitte den Code mit dem du das Fahrzeug erstellst.
-
Problem 1:
Spoiler anzeigen ocmd:carupgrade(playerid,params[])
{
if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
for(new i=0; i<sizeof(HouseInfo); i++)
{
if(GetPlayerVehicleID(playerid) == HouseInfo[i][hvID])
{
if(!strcmp(HouseInfo[i][hBesitzer],name,true))
{
new HouseCar = HouseInfo[i][hvID];
new upgradekosten = 150000;
if(GetPlayerVehicleID(playerid) == HouseCar)
{
if(GetPlayerMoney(playerid) < upgradekosten) return SendClientMessage(playerid,Grau,"Du hast nicht genug Geld. (150000$)");
AddVehicleComponent(HouseCar, 1010); //Nitro
AddVehicleComponent(HouseCar, 1074); //Räder
AddVehicleComponent(HouseCar, 1087); //Hydraulik
HouseInfo[i][hCarupgrade] = 1;
GivePlayerMoney(playerid,-upgradekosten);
SendClientMessage(playerid,Gruen,"Dein Housecar hat nun Nitro, neue Räder und Hydraulik.");
}
saveHouse(i);
updateHouse(i);
return 1;
}
}
}
return 1;
}Spoiler anzeigen public OnHousesLoad()
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
new id = getFreeHouseID();
if(id == -1) return 1;
HouseInfo[id][h_x] = cache_get_field_content_float(i,"h_x",dbhandle);
HouseInfo[id][h_y] = cache_get_field_content_float(i,"h_y",dbhandle);
HouseInfo[id][h_z] = cache_get_field_content_float(i,"h_z",dbhandle);
HouseInfo[id][ih_x] = cache_get_field_content_float(i,"ih_x",dbhandle);
HouseInfo[id][ih_y] = cache_get_field_content_float(i,"ih_y",dbhandle);
HouseInfo[id][ih_z] = cache_get_field_content_float(i,"ih_z",dbhandle);
HouseInfo[id][hInterior] = cache_get_field_content_int(i,"h_interior",dbhandle);
HouseInfo[id][ch_x] = cache_get_field_content_float(i,"ch_x",dbhandle);
HouseInfo[id][ch_y] = cache_get_field_content_float(i,"ch_y",dbhandle);
HouseInfo[id][ch_z] = cache_get_field_content_float(i,"ch_z",dbhandle);
HouseInfo[id][ch_r] = cache_get_field_content_float(i,"ch_r",dbhandle);
HouseInfo[id][hModel] = cache_get_field_content_int(i,"model",dbhandle);
HouseInfo[id][hFarbe1] = cache_get_field_content_int(i,"farbe1",dbhandle);
HouseInfo[id][hFarbe2] = cache_get_field_content_int(i,"farbe2",dbhandle);
HouseInfo[id][hCarupgrade] = cache_get_field_content_int(i,"carupgrade",dbhandle);
HouseInfo[id][hGeschlossen] = cache_get_field_content_int(i,"geschlossen",dbhandle);
HouseInfo[id][hKasse] = cache_get_field_content_int(i,"kasse",dbhandle);
HouseInfo[id][hMiete] = cache_get_field_content_int(i,"miete",dbhandle);
HouseInfo[id][hPreis] = cache_get_field_content_int(i,"preis",dbhandle);
HouseInfo[id][hKauflevel] = cache_get_field_content_int(i,"kauflevel",dbhandle);
new tmp_name[MAX_PLAYER_NAME];
cache_get_field_content(i,"besitzer",tmp_name,dbhandle);
strmid(HouseInfo[id][hBesitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
HouseInfo[id][hID] = cache_get_field_content_int(i,"id",dbhandle);
new HouseCar = AddStaticVehicle(HouseInfo[id][hModel],HouseInfo[id][ch_x],HouseInfo[id][ch_y],HouseInfo[id][ch_z],HouseInfo[id][ch_r],HouseInfo[id][hFarbe1],HouseInfo[id][hFarbe2]);
HouseInfo[id][hvID] = HouseCar;
if(HouseInfo[id][hCarupgrade] == 1)
{
AddVehicleComponent(HouseCar, 1010); //Nitro
AddVehicleComponent(HouseCar, 1074); //Räder
AddVehicleComponent(HouseCar, 1087); //Hydraulik
}
updateHouse(id);
}
return 1;
}
Versuche es so.
Außerdem musst du im Enum zu HouseInfo noch "hvID" einfügen.Problem 2:
DestroyVehicle(AddStaticVehicle(HouseInfo[i][hModel],HouseInfo[i][ch_x],HouseInfo[i][ch_y],HouseInfo[i][ch_z],HouseInfo[i][ch_r],HouseInfo[i][hFarbe1],HouseInfo[i][hFarbe2]));
zu:
DestroyVehicle(HouseInfo[i][hvID]);Dort musst du aber noch abfragen, an welchem Haus sich der Spieler befindet, das machst du momentan noch nicht.
-
Eigentlich ja gar nicht.
Wenn Caching verwendet wird schon. Wenn nicht, dann natürlich nicht. Die meisten die das R7 aber verwendet haben, haben es auch mit Caching aufgebaut, sonst bringt es kaum Vorteile gegenüber R5/6.@GTATyson:
Wenn dein Code tatsächlich ohne die Cache Funktionen aufgebaut ist, dann bringt das relativ wenig, da müsstest du den ganzen Code umschreiben. Falls doch, dann kannst du es entsprechend änden, ja.
Wenn nicht, dann wäre meine Empfehlung mal deinen Host zu kontaktieren, dass die sich um das Problem kümmern. -
Jo, an die Stelle die ich dir markiert habe.
Teste es aber sicherheitshalber erst mal mit einem Befehl, sicher ist sicher.
-
Ich rate dir auf die neuste Version (R39-3) umzusteigen, die ist vom Code her fast identisch.
Ansonsten, schau mal ob du im Paket eine mysql_static.so hast, dann nutze die (mysql.so raus nehmen). -
public OnPlayerCommandReceived(playerid, cmdtext[])
{
if(SpielerInfo[playerid][Jailed] == 1)
{
SendClientMessage(playerid, 0xFF0000FF, "Error: Im Knast gibt es keine Befehle.");
return 0;
}
return 1;
} -
Hier hast du was vergessen zu ändern:
for(new i = 1; i < MAX_VEHICLES; i++)
zu:
for(new i = 0; i < sizeof(FBICars); i++) -
Hast du im Compiler eine mehrzeilige Meldung mit vielen Zahlen darin?
Poste bitte deinen Befehl, wie er bei dir jetzt aussieht.
-
Siehst du diese Nachricht im Chat?
SendClientMessage(i, COLOR_GREY, "** Der Leader hat alle Frakion Autos respawnt. **"); -
Dann kannst du es einfach so machen:
ocmd:respawncars(playerid,params[])
{
if(!isPlayerInFrakt(playerid, 12))return SendClientMessage(playerid,COLOR_DRED,"Du bist in keiner Fraktion");
if(sInfo[playerid][rang] < 5)return SendClientMessage(playerid,COLOR_DRED,"Du bist nicht der Leader der Fraktion!");
{
for(new i = 0; i < sizeof(FBICars); i++)
{
SetVehicleToRespawn(FBICars[i]);
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerInFrakt(i,12))
{
SendClientMessage(i, COLOR_GREY, "** Der Leader hat alle Frakion Autos respawnt. **");
}
}
}
}
return 1;
} -
ocmd:respawncars(playerid,params[])
{
if(!isPlayerInFrakt(playerid, 12))return SendClientMessage(playerid,COLOR_DRED,"Du bist in keiner Fraktion");
if(sInfo[playerid][rang] < 5)return SendClientMessage(playerid,COLOR_DRED,"Du bist nicht der Leader der Fraktion!");
{
for(new i = 1; i < MAX_VEHICLES; i++)
{
//Hier noch abfragen, ob das Fahrzeug ein Fraktionsfahrzeug ist.
SetVehicleToRespawn(i);
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(isPlayerInFrakt(i,12))
{
SendClientMessage(i, COLOR_GREY, "** Der Leader hat alle Frakion Autos respawnt. **");
}
}
}
}
return 1;
} -
doherty oder el corona
-
OnPlayerCommandReceived ist vor der Ausführung der ZCMD Befehle und OnPlayerCommandPerformed ist danach.
Wenn du zum Beispiel einem Spieler alle Befehle verbieten willst, dann kannst du das in OnPlayerCommandReceived machen, sofern du danach return 0 machst. -
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(!success)
{
//Hier die strcmp Befehle
//...
//...
return SendClientMessage(playerid, COLOR_WHITE, "Befehl existiert nicht. Gebe {FF1E00}/help {FFFFFF} ein für weitere Befehle.");
}
else
{
printf("Spieler %s führte Befehl: %s | aus", PlayerName(playerid), cmdtext);
return 1;
}
return 1;
} -
Kannst ja versuchen, ob es in diesem Callback ohne die Nachricht klappt (Voraussetzung, dass du nicht 0 returnst.
OnPlayerCommandPerformed(playerid, cmdtext[], success)