Versuche es doch erst mal selbst und poste dann den Code, wenn Probleme auftreten.
Wenn ich es dir nur schreibe, dann lernst du nichts dabei, denn das sind Basics.
Beiträge von Jeffry
-
-
"Spawn" Button weg ist
Entweder so: http://forum.sa-mp.com/showpost.php?p=530037&postcount=16
oder so: http://forum.sa-mp.com/showpost.php?p=1654745&postcount=6 -
Das sieht erneut nach einem Klammerfehler aus, zumindest geht eine Klammer mehr zu. Ist dieser Teil in dem ganzen Gamemode den du mir geschickt hast auch drin und auch ausgeklammert?
Wenn nicht, schicke mir bitte nochmal den Code, und klammere es nicht aus. -
stock GetJobName(id)
{
new jName[32];
switch(id)
{
case 1: jName = "Busfahrer";
case 2: jName = "Taxifahrer";
//...
default: jName = "Unbekannt";
}
return jName;
}Und dann eben:
GetJobName(sInfo[playerid][job])
Und im format mit %s anstatt %d. -
Siehe Post 11, die ersten beiden Links.
-
Hast du die MSVC's installiert? Soweit ich weiß braucht der Streamer (=das was Nativechecker dir ausgibt) die.
-
Er rechnet jetzt mit der Variable sInfo[i][level] anstatt mit GetPlayerLevel, das gleiche im Befehl.
Schau mal ob er es dann annimmt. -
ocmd:stats(playerid)
{
if(sInfo[playerid][eingeloggt] == 0)return SendClientMessage(playerid,COLOR_RED,"Du bist nicht Eingeloggt");
new string[500] ="{00FFD2} [Allgemeines] \n\n";
format(string,sizeof string,"%sName: {FFC800}%s\n {00FFD2}Level: {FFC800}%i\n {00FFD2}Geld: {FFC800}%i\n{00FFD2}Respektpunkte: {FFC800}%d/%d\nPayDay: %i\nSpielstunden: %i\nKills: %i\nTode: %i",string,
SpielerName(playerid),sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][respektpunkte],sInfo[playerid][level]*6,sInfo[playerid][paydaytime],sInfo[playerid][spielstunden],sInfo[playerid][kills],sInfo[playerid][deaths]);
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Statistik",string,"Okay","");
return 1;
}public PayDayTimer()
{
new rpunkte;//Hier wird eine Variable erstellt, um die Respektpunkte mit dem Level zu berechnen
new string[145]; //Für die Nachricht des Paydays
//Wir gehen eine Schleife durch alle Spieler durch
for(new i;i<MAX_PLAYERS;i++)
{
//Hier werden die Spieler "aussortiert" bzw. übersprungen, die entweder nicht mit dem Server verbunden, ein NPC oder nicht eingeloggt sind
if(!IsPlayerConnected(i) || IsPlayerNPC(i) || sInfo[i][eingeloggt] == 0)continue;
sInfo[i][paydaytime] ++;//Hier wird die Variable paydaytime immer um eins addiert
if(sInfo[i][paydaytime] >= 60)//Ist die Variable == 60 (60 Minuten), dann ist PayDay
{
format(string,sizeof string,"{FFFFFF}=========*{F5FF00}Gehaltscheck{FFFFFF}*==========");
SendClientMessage(i,COLOR_WHITE,string);
format(string,sizeof string,"Du hast einen Gehaltscheck von deinem Chef bekommen.");
SendClientMessage(i,COLOR_WHITE,string);
format(string,sizeof string,"Respektpunkte:{05D900} +1 || Spielstunden:{05D900} +1 || Aktuelles Level:{05D900} %i",sInfo[i][level]);
SendClientMessage(i,COLOR_WHITE,string);
sInfo[i][respektpunkte] ++;//Respektpunkte wird um eins addiert
sInfo[i][paydaytime] = 0;//paydaytime wird wieder auf 0 gesetzt, damit das ganze von vorne anfangen kann
rpunkte = sInfo[i][level] * 6;
sInfo[i][spielstunden] ++;
sInfo[i][gehaltschecknummer] ++;
if(sInfo[i][jobgeld] > 0)
{
format(string,sizeof string,"Verdientes Geld:{05D900} %i$ || Gehaltschecknummer:{05D900} %i",sInfo[i][jobgeld],sInfo[i][gehaltschecknummer]);
SendClientMessage(i, COLOR_WHITE,string);
GivePlayerMoney(i,sInfo[i][jobgeld]);
sInfo[i][jobgeld] = 0;
}
if(sInfo[i][jobgeld] < 1 || sInfo[i][jobgeld] == 0)
{
format(string,sizeof string,"Arbeitslosengeld:{05D900} 400$ || Gehaltschecknummer:{05D900} %i",sInfo[i][gehaltschecknummer]);
SendClientMessage(i, COLOR_WHITE,string);
GivePlayerMoney(i,400);
}
if(sInfo[i][respektpunkte] == rpunkte)
{
//Das Level kann um eins erhöht werden => Level Up
sInfo[i][level] ++;//Das Level wird hier um eins addiert
SetPlayerScore(i,sInfo[i][level]);//Das Level wird neu gesetzt
sInfo[i][respektpunkte] = 0;
}
}
}
return 1;
}Versuche es so.
Beachte aber, dass du 60 Minuten warten musst, bis du einen PayDay bekommst, eben bis paydaytime auf 60 ist. -
if(dialogid==DIALOG_EDIT_CAR_COLOR_2)
{
if(response==1)
{
new vID = GetPlayerVehicleID(playerid);
new Color2 = strval(inputtext);
for(new i=0; i<sizeof vInfo; i++)
{
if(vInfo[i][v_id_x]!=vID)continue;
vInfo[i][v_color_2]=Color2;
ChangeVehicleColor(vID, vInfo[i][v_color_1], vInfo[i][v_color_2]);
break;
}
SendClientMessage(playerid,grün,"Du hast die Lackierung des Wagens Geändert!");
PlayerTextDrawShow(playerid,carlabel_background[playerid]);
PlayerTextDrawShow(playerid,carlabel_heading[playerid]);
PlayerTextDrawShow(playerid,carlabel_owner[playerid]);
PlayerTextDrawShow(playerid,carlabel_color[playerid]);
PlayerTextDrawShow(playerid,carlabel_delete[playerid]);
}
else
{
SendClientMessage(playerid,rot,"Du hast den Vorgang Abgebrochen!");
}
}
if(dialogid==DIALOG_EDIT_CAR_COLOR)
{
if(response==1)
{
new vID = GetPlayerVehicleID(playerid);
new Color1 = strval(inputtext);
for(new i=0; i<sizeof vInfo; i++)
{
if(vInfo[i][v_id_x]!=vID)continue;
vInfo[i][v_color_1]=Color1;
break;
}
ShowPlayerDialog(playerid,DIALOG_EDIT_CAR_COLOR_2,DIALOG_STYLE_INPUT,"Farbe aendern","Bitte gib Farbe 2 an\nVon 0-255","Abbrechen","Weiter");
}
else
{
SendClientMessage(playerid,rot,"Du hast den Vorgang Abgebrochen!");
}
}Ändere die beiden Dialoge dazu ab.
-
Entweder du hast noch keinen bekommen, oder du hast es fehlerhaft formatiert (mit format).
-
Dein GetVehicleColor gibt 0 aus.
GetVehicleColor gibt es nicht als Funktion. Was nutzt du, um die Farbe auszulesen, welche Include (etc...)? -
Versuche es so:
dcmd_efa(playerid,params[])
{
if(GetPlayerAdmin(playerid) >= NEEDED_ADMINLEVEL)
{
new vehid,col1,col2,faction[5];
if(!sscanf(params,"ddddD(0)D(0)D(0)D(0)",vehid,col1,col2,faction[0],faction[1],faction[2],faction[3],faction[4]))
{
if(vehid < 400 || vehid > 611) return SendClientMessage(playerid,WEIS,"Vehicle-ID nur von 400 bis 611.");
if(col1 < 0 || col1 > 255) return SendClientMessage(playerid,WEIS,"Falsche Farbe(1)!");
if(col2 < 0 || col2 > 255) return SendClientMessage(playerid,WEIS,"Falsche Farbe(2)!");
if(faction[0] && faction[0] <= MAX_FACTIONS)
{
for(new f;f<5;f++)
{
if(faction[f] <= 0 || faction[f] > MAX_FACTIONS)
{
faction[f] = -255;
}
}
for(new fc;fc<sizeof(FactionCars);fc++)
{
if(FactionCars[fc][fVehid] < 400 || FactionCars[fc][fVehid] > 611)
{
FactionCars[fc][fVehid] = vehid;
new Float:fX,Float:fY,Float:fZ,Float:fA;
GetPlayerPos(playerid,fX,fY,fZ),GetPlayerFacingAngle(playerid,fA);
FactionCars[fc][fPos][0] = fX;
FactionCars[fc][fPos][1] = fY;
FactionCars[fc][fPos][2] = fZ;
FactionCars[fc][fPos][3] = fA;
FactionCars[fc][fCol][0] = col1;
FactionCars[fc][fCol][1] = col2;
for(new f;f<5;f++)
{
FactionCars[fc][fFaction][f] = faction[f];
}
FactionCars[fc][fPrice] = 0;
for(new mod;mod<14;mod++)
FactionCars[fc][fTuning][mod] = 0;
FactionCars[fc][fCarid] = CreateVehicle(FactionCars[fc][fVehid],FactionCars[fc][fPos][0],FactionCars[fc][fPos][1],FactionCars[fc][fPos][2],FactionCars[fc][fPos][3],FactionCars[fc][fCol][0],FactionCars[fc][fCol][1],-255);
#if defined FACTION_CARS_LOCKABLE
FactionCars[fc][fLock] = true;
#endif
SendClientMessage(playerid,WEIS,"Du hast das Fraktionsfahrzeug erfolgreich erstellt.");
SendClientMessage(playerid,WEIS,"Vergesse es nicht mit '/fpark' umzuparken.");
PutPlayerInVehicle(playerid,FactionCars[fc][fCarid],0);
return true;
}
}
SendClientMessage(playerid,WEIS,"Die Maximale Anzahl von Fraktionsfahrzeugen wurde bereits erreicht.");
}
else SendClientMessage(playerid,WEIS,"Falsche Fraktion!");
}
else SendClientMessage(playerid,WEIS,"Benutze: '/efa [Model] [Farbe(1)] [Farbe(2)] [Hauptfraktion]'.");
}
else SendClientMessage(playerid,WEIS,"Du bist nicht berechtigt diesen Befehl anzuwenden.");
return true;
} -
Dann musst du den Befehl und die Speicherung mal debuggen:
Spoiler anzeigen ocmd:caredit(playerid,params[])
{
printf("Start");
if(sInfo[playerid][Adminlevel]>=ADMIN_HIGH_ADMIN)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,rot,"Du bist in keinem Fahrzeug!");
if(GetPVarInt(playerid,"CarEdit")==0)
{
SetPVarInt(playerid,"CarEdit",1);
PlayerTextDrawShow(playerid,carlabel_background[playerid]);
PlayerTextDrawShow(playerid,carlabel_heading[playerid]);
PlayerTextDrawShow(playerid,carlabel_owner[playerid]);
PlayerTextDrawShow(playerid,carlabel_color[playerid]);
PlayerTextDrawShow(playerid,carlabel_delete[playerid]);
SelectTextDraw(playerid,blau);
return 1;
}
else if(GetPVarInt(playerid,"CarEdit")==1)
{
SetPVarInt(playerid,"CarEdit",0);
new vID = GetPlayerVehicleID(playerid);
printf("ok");
for(new i=0; i<sizeof(vInfo); i++)
{
if(vInfo[i][v_id_x]!=vID)continue;
printf("cmd: vID: %d", vID);
SaveCar(vID);
DestroyVehicle(vInfo[i][v_id_x]);
vInfo[i][v_id_x]=0;
LoadCar(Info[i][v_db_id]);
printf("Geladen.");
PlayerTextDrawHide(playerid,carlabel_background[playerid]);
PlayerTextDrawHide(playerid,carlabel_heading[playerid]);
PlayerTextDrawHide(playerid,carlabel_owner[playerid]);
PlayerTextDrawHide(playerid,carlabel_color[playerid]);
PlayerTextDrawHide(playerid,carlabel_delete[playerid]);
return 1;
}
return 1;
}
}
else
{
SendClientMessage(playerid,rot,"Du darfst diesen Befhel nicht nutzen!");
}
return 1;
}Spoiler anzeigen SaveCar(vID)
{
for(new i=0; i<sizeof(vInfo); i++)
{
if(vInfo[i][v_id_x]!=vID)continue;
printf("In SaveCar: %d -> DB: %d", i, vInfo[i][v_db_id]);
new string[64];
format(string,sizeof string,"/autos/car %i.txt",vInfo[i][v_db_id]);
new color1,color2;
GetVehicleColor(vInfo[i][v_id_x], color1,color2);
printf("GetVehicleColor: %d / %d", color1, color2);
vInfo[i][v_color_1]=color1;
vInfo[i][v_color_2]=color2;
vInfo[i][v_spoiler]=GetVehicleComponentInSlot(vInfo[i][v_id_x],0);
vInfo[i][v_hood]=GetVehicleComponentInSlot(vInfo[i][v_id_x],1);
vInfo[i][v_roof]=GetVehicleComponentInSlot(vInfo[i][v_id_x],2);
vInfo[i][v_sideskirt]=GetVehicleComponentInSlot(vInfo[i][v_id_x],3);
vInfo[i][v_lamps]=GetVehicleComponentInSlot(vInfo[i][v_id_x],4);
vInfo[i][v_nitro]=GetVehicleComponentInSlot(vInfo[i][v_id_x],5);
vInfo[i][v_exhaust]=GetVehicleComponentInSlot(vInfo[i][v_id_x],6);
vInfo[i][v_wheels]=GetVehicleComponentInSlot(vInfo[i][v_id_x],7);
vInfo[i][v_stereo]=GetVehicleComponentInSlot(vInfo[i][v_id_x],8);
vInfo[i][v_hydraulics]=GetVehicleComponentInSlot(vInfo[i][v_id_x],9);
vInfo[i][v_front_bumper]=GetVehicleComponentInSlot(vInfo[i][v_id_x],10);
vInfo[i][v_rear_bumper]=GetVehicleComponentInSlot(vInfo[i][v_id_x],11);
vInfo[i][v_vent_left]=GetVehicleComponentInSlot(vInfo[i][v_id_x],12);
vInfo[i][v_vent_right]=GetVehicleComponentInSlot(vInfo[i][v_id_x],13);
ChangeVehiclePaintjob(vInfo[i][v_id_x],vInfo[i][v_paintjob]);
dini_IntSet(string,"Color_1",vInfo[i][v_color_1]);
dini_IntSet(string,"Color_2",vInfo[i][v_color_2]);
dini_IntSet(string,"v_spoiler",vInfo[i][v_spoiler]);
dini_IntSet(string,"v_hood",vInfo[i][v_hood]);
dini_IntSet(string,"v_roof",vInfo[i][v_roof]);
dini_IntSet(string,"v_sideskirt",vInfo[i][v_sideskirt]);
dini_IntSet(string,"v_lamps",vInfo[i][v_lamps]);
dini_IntSet(string,"v_nitro",vInfo[i][v_nitro]);
dini_IntSet(string,"v_exhaust",vInfo[i][v_exhaust]);
dini_IntSet(string,"v_wheels",vInfo[i][v_wheels]);
dini_IntSet(string,"v_stereo",vInfo[i][v_stereo]);
dini_IntSet(string,"v_hydraulics",vInfo[i][v_hydraulics]);
dini_IntSet(string,"v_front_bumper",vInfo[i][v_front_bumper]);
dini_IntSet(string,"v_rear_bumper",vInfo[i][v_rear_bumper]);
dini_IntSet(string,"v_vent_left",vInfo[i][v_vent_left]);
dini_IntSet(string,"v_vent_right",vInfo[i][v_vent_right]);
dini_IntSet(string,"v_paintjob",vInfo[i][v_paintjob]);
dini_FloatSet(string,"Tank",vInfo[i][v_tank]);
printf("Gespeichert.");
return 1;
}
return 1;
}Was steht dann im Server Log, wenn du den Befehl eingibst?
-
Versuche es so:
ocmd:caredit(playerid,params[])
{
if(sInfo[playerid][Adminlevel]>=ADMIN_HIGH_ADMIN)
{
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,rot,"Du bist in keinem Fahrzeug!");
if(GetPVarInt(playerid,"CarEdit")==0)
{
SetPVarInt(playerid,"CarEdit",1);
PlayerTextDrawShow(playerid,carlabel_background[playerid]);
PlayerTextDrawShow(playerid,carlabel_heading[playerid]);
PlayerTextDrawShow(playerid,carlabel_owner[playerid]);
PlayerTextDrawShow(playerid,carlabel_color[playerid]);
PlayerTextDrawShow(playerid,carlabel_delete[playerid]);
SelectTextDraw(playerid,blau);
return 1;
}
else if(GetPVarInt(playerid,"CarEdit")==1)
{
SetPVarInt(playerid,"CarEdit",0);
new vID = GetPlayerVehicleID(playerid);
for(new i=0; i<sizeof(vInfo); i++)
{
if(vInfo[i][v_id_x]!=vID)continue;
SaveCar(vID);
DestroyVehicle(vInfo[i][v_id_x]);
vInfo[i][v_id_x]=0;
LoadCar(Info[i][v_db_id]);
PlayerTextDrawHide(playerid,carlabel_background[playerid]);
PlayerTextDrawHide(playerid,carlabel_heading[playerid]);
PlayerTextDrawHide(playerid,carlabel_owner[playerid]);
PlayerTextDrawHide(playerid,carlabel_color[playerid]);
PlayerTextDrawHide(playerid,carlabel_delete[playerid]);
return 1;
}
return 1;
}
}
else
{
SendClientMessage(playerid,rot,"Du darfst diesen Befhel nicht nutzen!");
}
return 1;
} -
Dir fehlen dann wahrscheinlich die MSVC's und .NET. Oder eines davon.
http://www.microsoft.com/en-us…confirmation.aspx?id=5555
https://www.microsoft.com/de-d…oad/details.aspx?id=30679 (x86 Version)
(Können auch noch andere sein die fehlen, das ist nicht immer genau zu sagen).NET:
https://www.microsoft.com/de-d…oad/details.aspx?id=30653 -
Ändere in dem Befehl mal:
vInfo[i][v_id_x]=0;
SaveCar(vID);
zu:
SaveCar(vID);
vInfo[i][v_id_x]=0;Möglicherweise war es das schon.
-
Die Plugins audio, streamer und sscanf werden nicht geladen.
Hast du diese im /plugins/ Ordner deines Server drin?xlTreasurelx: Die Plugins raus zu nehmen bringt nichts.
-
Erst wenn du bei paydaytime auf 60 kommst bekommst du einen PayDay, und damit einen Respektpunkt. Das heißt nach 60 Minuten.
-
Während ich die Debug Meldungen eingebaut habe und den Timer etwas aufgeräumt habe ist mir der Fehler aufgefallen.
Du hast die Textdraws immer gehidet, wenn man nicht nahe einem Haus war das existiert, sprich wenn man nicht am letzten Haus war, hat man kein Textdraw gezeigt bekommen.So sollte es passen:
//Eine Sekunden Timer
forward GrandTimer();
public GrandTimer()
{
printf("Starte GrandTimer.");
new string[300], query[128];
for(new i;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i))continue;
if(IsPlayerNPC(i))continue;
printf("i: %d", i);
//Haussystem Textdraw
new bool:shown;
for(new haus=1;haus<MAX_HAUS;haus++)
{
printf("haus: %d", haus);
if(HausInfo[haus][hauscreatet] != 0)
{
printf("Haus existiert. Range: %d", IsPlayerInRangeOfPoint(i,2,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]));
if(IsPlayerInRangeOfPoint(i,2,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
{
printf("Zeige Haus %d an.", haus);
if(GetString(HausInfo[haus][haus_besitzer],"Niemand"))
{
format(string,sizeof(string),"Besitzer: ~w~Haus zum Verkauf");
}
else
{
format(string,sizeof(string),"Besitzer: ~w~%s",HausInfo[haus][haus_besitzer]);
}
PlayerTextDrawSetString(i,HausLabelTD[i][1],string);
format(string,sizeof(string),"Hausnummer: %i",haus);
PlayerTextDrawSetString(i,HausLabelTD[i][9],string);
format(string,sizeof(string),"Kosten: ~w~%i$",HausInfo[haus][haus_preis]);
PlayerTextDrawSetString(i,HausLabelTD[i][2],string);
format(string,sizeof(string),"Miete: ~w~%i$",HausInfo[haus][haus_miete]);
PlayerTextDrawSetString(i,HausLabelTD[i][3],string);
format(string,sizeof(string),"Level: ~w~%i",HausInfo[haus][haus_level]);
PlayerTextDrawSetString(i,HausLabelTD[i][4],string);
format(string,sizeof(string),"Mieter Slots: ~w~%i/%i",HausInfo[haus][haus_eingemitetenzaehler],HausInfo[haus][haus_slots]);
PlayerTextDrawSetString(i,HausLabelTD[i][5],string);
mysql_format(MySqlConnection,query,sizeof(query),"SELECT * FROM "#SQLTAG"_account_main WHERE `HausMieter` = '%d'", haus);
mysql_function_query(MySqlConnection,query,true,"LoadHouseRentFinish","siii",query,_SQL_HOUSEMIETER_LOAD,0,MySqlConnection);
for(new x = 0; x < 10; x++) PlayerTextDrawShow(i,HausLabelTD[i][x]);
shown = true;
break;
}
}
}
if(!shown)
{
printf("Verstecke Textdraws.");
for(new x = 0; x < 10; x++) PlayerTextDrawHide(i,HausLabelTD[i][x]);
}
}
for(new i = 0;i < MAX_BOMBS; i ++)
{
if(i < MAX_BOMBS)
{
BombTimerTL(i);
}
}
return 1;
}Wenn nicht, poste bitte was im Server Log steht.
Wenn es klappt, dann kannst du die printf's wieder entfernen. -