Hallo
Templer hat so eine Gabe, zweideutig zu reden, damit man den Sinn erst versteht, wenn man etweder am Essen ist ode rim Bett liegt (Dieses Mal wares Essen). Ich habe das ganze in den GM eingebaut und nun gehts.
MfG dUDA
Hallo
Templer hat so eine Gabe, zweideutig zu reden, damit man den Sinn erst versteht, wenn man etweder am Essen ist ode rim Bett liegt (Dieses Mal wares Essen). Ich habe das ganze in den GM eingebaut und nun gehts.
MfG dUDA
Hallo
Also, das eine Problem ist gelöst, jedoch habe ich nun noch ein anderes. Ich kann mehr als 2 Cars kaufen, obwohl die Carlimite bei 2 liegt.
#define MAX_SPIELER_CAR 2 // Maximale Anzahl an Fahrzeugen pro Spieler
if(strcmp(cmd,"/carkaufen",true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
for(new i = 0;i<_cache_fahrzeug;i++)
{
if(FDaten[i][fCarID] != GetPlayerVehicleID(playerid)) continue;
if(Player[playerid][car_zahl] >= MAX_SPIELER_CAR){SendClientMessage(playerid,COLOR_GREY,"Du hast bereits die Maximale Anzahl an Fahrzeugen erreicht");break;}
if(FDaten[i][fVerkauft] == 1){SendClientMessage(playerid,COLOR_GREY,"Das Auto kann nicht gekauft werden");break;}
if(FDaten[i][fJob] != 0){SendClientMessage(playerid,COLOR_GREY,"Das Auto kann nicht gekauft werden");break;}
if(FDaten[i][fFraktion] != 0){SendClientMessage(playerid,COLOR_GREY,"Das Auto kann nicht gekauft werden");break;}
if(FS_GetPlayerMoney(playerid) < FDaten[i][fPreis]){SendClientMessage(playerid, COLOR_GREY,"Du hast nicht genügend Geld");break;}
strmid(FDaten[i][fBesitzer],spielername(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
FDaten[i][fVerkauft] = 1;
FS_GivePlayerMoney(playerid, -FDaten[i][fPreis]);
Player[playerid][car_zahl]++;
SendClientMessage(playerid,COLOR_GREEN,"Fahrzeug wurde erfolgreich gekauft");
SaveCache();
break;
}
return 1;
}
MfG dUDALUS
Hallo
Nachdem ich Mithilfe von Templer einige Grundlegende Bugs beheben konnte, ergibt sich nun ein vollkommen neues Problem. Wenn ich mir ein Auto kaufe und nachher /carlock oder /carparken eingebe, geht das alles 1a. Sobald ich jedoch in die restlichen (nicht mir gehörenden) Cars sitze und einen 2. Car kaufen möchte, steht: Du kannst dieses Fahrzeug ncht kaufen. Zudem kann ich die restlichen (nicht mir gehörenden) Fahrzeuge parken und verschliessen/aufschliessen.
Nun, die SCM: Du kannst dieses Fahrzeug nicht kaufen kommt daher, dass ein Fahrzeug nur kaufbar ist, wenn es fVerkauft == 0 ist. Beim Kaufen des 1.Cars wird das fVerkauft auf 1 gesetzt. Ich könnte nun theoretisch ein 2.Fahrzeug kaufen. Jetzt wird jedoch lustigerweise der Wert aus dem 1.Car genommen, das 2.Fahrzeug ist also "Verkauft" (Was es ja nicht ist). Zudem habe ich ein Problem, dass ich die Cars welche ich Ingame lösche, nicht wirklich gelöscht werden, sondern beim nächsten Restart wieder respawnen.
//Edit 17:35
Noch schlimmer, alle Player haben das Problem, einer kauft ein Car, die anderen 2 Spieler haben die SCM:Car kann nicht gekauft werden. Muss ich für playerid auch eine forschleife machen oder wie ?
if(strcmp(cmd,"/carkaufen",true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
for(new i = 0;i<_cache_fahrzeug;i++)
{
if(Player[playerid][car_zahl] >= MAX_SPIELER_CAR){SendClientMessage(playerid,COLOR_GREY,"Du hast bereits die Maximale Anzahl an Fahrzeugen erreicht");break;}
if(FDaten[i][fVerkauft] == 1){SendClientMessage(playerid,COLOR_GREY,"Das Auto kann nicht gekauft werden");break;}
if(FDaten[i][fJob] != 0){SendClientMessage(playerid,COLOR_GREY,"Das Auto kann nicht gekauft werden");break;}
if(FDaten[i][fFraktion] != 0){SendClientMessage(playerid,COLOR_GREY,"Das Auto kann nicht gekauft werden");break;}
if(FS_GetPlayerMoney(playerid) < FDaten[i][fPreis]){SendClientMessage(playerid, COLOR_GREY,"Du hast nicht genügend Geld");break;}
strmid(FDaten[i][fBesitzer],spielername(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
FDaten[i][fVerkauft] = 1;
FS_GivePlayerMoney(playerid, -FDaten[i][fPreis]);
Player[playerid][car_zahl]++;
SendClientMessage(playerid,COLOR_GREEN,"Fahrzeug wurde erfolgreich gekauft");
SaveCache();
break;
}
return 1;
}
if(strcmp(cmd,"/carverkaufen",true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
for(new i = 0;i<_cache_fahrzeug;i++)
{
if(strcmp(FDaten[i][fBesitzer],spielername(playerid))){SendClientMessage(playerid,COLOR_GREY,"Dieses Fahrzeug gehört nicht dir");break;}
strmid(FDaten[i][fBesitzer],"Keiner",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
FDaten[i][fLocked] = 0;
FDaten[i][fVerkauft] = 0;
FDaten[i][fVerwahrt] = 0;
Player[playerid][car_zahl]--;
FS_GivePlayerMoney(playerid, FDaten[i][fPreis]);
SendClientMessage(playerid,COLOR_GREEN,"Fahrzeug wurde erfolgreich verkauft");
SaveCache();
break;
}
return 1;
}
MfG dUDA
Huhu
Mit was für......Typen schlägst du denn dich rum ?^^ Die Idee mit dem Rückwärtslesen, episch^^
Hallo
Ich habe wiede rmal ein Problem und zwar folgendes:
Ich sitze in einem Car, welcher mir gehört und fahre etwas, dann gebe ich /carparken ein, SCM Auto geparkt erscheint. Wenn ich weiterfahre und nochmals /carparken eingebe, kommt gar keine SCM. Zudem wird bei /rcon reloadfs Name das Auto nicht am neuen Standort gespawnt. Habe ich irgendwie einen grundlegenden Fehler:
if(strcmp(cmd,"/carparken",true) == 0)
{
if(!IsPlayerInAnyVehicle(playerid))return 1;
for(new i = 0;i<_cache_fahrzeug;i++)
{
if(!IsPlayerInRangeOfPoint(playerid,1.5,FDaten[i][fX],FDaten[i][fY],FDaten[i][fZ]))continue;
if(strcmp(FDaten[i][fBesitzer],spielername(playerid))){SendClientMessage(playerid,COLOR_GREY,"Dieses Fahrzeug gehört nicht dir");break;}
new Float:JPos[4];
GetPlayerPos(playerid,JPos[0],JPos[1],JPos[2]);
GetPlayerFacingAngle(playerid,JPos[3]);
FDaten[i][fX] = JPos[0];
FDaten[i][fY] = JPos[1];
FDaten[i][fZ] = JPos[2];
FDaten[i][fA] = JPos[3];
SendClientMessage(playerid,COLOR_GREEN,"Auto geparkt");
SaveCache();
break;
}
return 1;
}
public SaveCache()
{
new fm[255],File:carx = fopen(CAR_DATEI,io_write);
for(new i = 0;i<_cache_fahrzeug;i++)
{
if(FDaten[i][fModelID] != 0)
{
format(fm,sizeof fm,"%s,%d,%d,%d,%d,%d,%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\r\n",
FDaten[i][fBesitzer],
FDaten[i][fPreis],
FDaten[i][fVerkauft],
FDaten[i][fLocked],
FDaten[i][fTunbar],
FDaten[i][fVerwahrt],
FDaten[i][fModelID],
FDaten[i][fX],
FDaten[i][fY],
FDaten[i][fZ],
FDaten[i][fA],
FDaten[i][aX],
FDaten[i][aY],
FDaten[i][aZ],
FDaten[i][aA],
FDaten[i][fFarbe1],
FDaten[i][fFarbe2],
FDaten[i][fJob],
FDaten[i][fFraktion],
FDaten[i][fPaintjob],
FDaten[i][fTuningteil1],
FDaten[i][fTuningteil2],
FDaten[i][fTuningteil3],
FDaten[i][fTuningteil4],
FDaten[i][fTuningteil5],
FDaten[i][fTuningteil6],
FDaten[i][fTuningteil7],
FDaten[i][fTuningteil8],
FDaten[i][fTuningteil9],
FDaten[i][fTuningteil10],
FDaten[i][fTuningteil11],
FDaten[i][fTuningteil12],
FDaten[i][fTuningteil13],
FDaten[i][fTuningteil14],
FDaten[i][fTuningteil15],
FDaten[i][fTuningteil16],
FDaten[i][fTuningteil17]);
fwrite(carx,fm);
}
}
fclose(carx);
return 1;
}
MfG dUDALUS
Ok, nach einem sehr informativen und physikalischen Gespräch mit Temple rkam der Aha Ja Effekt. Ich habe mit IsPlayerInRangeOfPoint die Spawn-Koordinate abgefragt, also ging es nur, wenn ich mit dem Car beim Spawnpunkt war. Ich habe also die IsPlayerInRangeOfPoint abfrage rausgenommen und frage jetzt nur noch ab, ob er der Besitzer ist oder nicht.
Erledigt
Hallo
Habe mal ne Mischung aus 2 und 5, werde es abe rmit 6 versuchen. Jetzt ist das Resultat eigentlich zufriedenstellend
CLOSED
Hallo
Ich bastel grad an nem Bombenscript herum und komme mir etwas recht dumm vor:
Gibt es eine Explode-ID, welche folgende Sachen besitzt:
-Feuer
-Schaden (+durch die Druckwelle)
-Sichtbar
-Hörbar
Ich habe ID 2 getestet, jedoch haben wir lustigerweise nicht mal Feuerschaden abbekommen.
MfG dUDA
Hallo
Danke, hat sich erledigt. Es bestätigt wieder mal, dass ich 15 Minuten nachem aufstehen noch nicht scripten sollte
dUDA
Hallo
Ich habe mal das Beispiel von [ GAMEMODE ] Bankrob v1.0 genommen, s jedoch etwas umgebaut (PlayerToPoint ersetzt, sonst noch etwas). Ich bekomme jedoch noch 2 Warnings:
C:\Users\Simon\Desktop\dudalus202.pwn(10696) : warning 235: public function lacks forward declaration (symbol "ausgeraubt")
C:\Users\Simon\Desktop\dudalus202.pwn(10735) : warning 235: public function lacks forward declaration (symbol "rauberlauben1")
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Warnings.
//bank countdown
new bankcountdown1;
new bankcountdown2;
new bankcountdown3;
new bankcountdown4;
new bankcountdown5;
new ausgeraubt1;
forward raubin4min();
forward raubin3min();
forward raubin2min();
forward raubin1min();
forward raubin30sek()
dcmd_bankausrauben(playerid,params[])
{
#pragma unused params
if (PlayerInfo[playerid][pLevel] >= 1)
{
if (IsPlayerInRangeOfPoint(playerid,20,2312.2136,-6.9591,26.7422))//mitten in der bank ls
{
if(IsPlayerConnected(playerid))
{
if(rauberlauben == 0)
{
SendClientMessage(playerid, COLOR_RED, "__________________________________________________________________________________");
SendClientMessage(playerid,COLOR_YELLOW,"Sie haben die Bank ausgeraubt.");
SendClientMessage(playerid,COLOR_YELLOW,"Wenn sie es schaffen 5 Minuten in der Bank zubleiben bekommen sie das Geld");
SendClientMessage(playerid, COLOR_RED, "__________________________________________________________________________________");
new s[100];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s hat die Bank ausgeraubt... und ist auf der Flucht<---",name);
SendClientMessageToAll(COLOR_LIGHTBLUE,s);
reauber[playerid] = 1;
rauberlauben = 1;
glav = 14400;
ausgeraubt1 = SetTimerEx("ausgeraubt", 300000,false,"d",playerid);
bankcountdown1 = SetTimer("raubin4min", 60000, 0);
PlayerInfo[playerid][pJPoints] += 3;
}
else
{
new s[100];
format(s,sizeof(s),"Die Bank kann erst wieder in %d Sekunden ausgeraubt werden.(%d Minuten)(ca:%d Stunden)",glav,glav/60,glav/3600);
SendClientMessage(playerid,COLOR_LIGHTBLUE,s);
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der LS Bank!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Du musst Level 2 sein um die Bank auszurauben");
}
}
return 1;
}
public bankcountdown()
{
glav--;
}
public ausgeraubt(playerid) //Zeile 10696
{
JB_GivePlayerMoney(playerid, 50000);
new s[100], name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s °°°°° hat die Bank erfolgreich ausgeraubt",name);
SendClientMessageToAll(COLOR_LIGHTBLUE,s);
SendClientMessage(playerid,COLOR_ORANGE,"Hertzlichen Glückwunsch. Du hast es geschaft die Bank auszurauben");
glav = 14400;
}
public raubin4min()
{
SendClientMessageToAll(COLOR_LIGHTBLUE,"Der Räuber hat in 4 Minuten die Bank ausgeraubt");
bankcountdown2 = SetTimer("raubin3min",60000, 0);
return 1;
}
public raubin3min()
{
SendClientMessageToAll(COLOR_LIGHTBLUE,"Der Räuber hat in 3 Minuten die Bank ausgeraubt");
bankcountdown3 = SetTimer("raubin2min",60000, 0);
return 1;
}
public raubin2min()
{
SendClientMessageToAll(COLOR_LIGHTBLUE,"Der Räuber hat in 2 Minuten die Bank ausgeraubt");
bankcountdown4 = SetTimer("raubin1min",60000, 0);
return 1;
}
public raubin1min()
{
SendClientMessageToAll(COLOR_LIGHTBLUE,"Der Räuber hat in 30 Sekunden die Bank ausgeraubt");
bankcountdown5 = SetTimer("raubin30sek",30000, 0);
return 1;
}
public rauberlauben1() //Zeile 10735
{
rauberlauben = 0;
return 1;
}
MfG dUDA
Hallo
Das Abspeichern habe ich geschafft, jedoch habe ich wieder ein paar neue Probleme:
1.)Man kann mehr als 2 Fahrzeuge besitzen
2.)Wie muss ich den Befehl /carweiterverkaufen ID machen (blick strcmp nicht)
3.)Das Carlock hat (Ja ich komm echt nicht weiter) eine Warning und funktioniert nicht, man kann einsteigen
4.)Gibt es Punkte, wo man die Performance verbessern könnte (zB 2 SaveChaches schreiben, eines zum erstellen, das andere für den normalen Usergebrauch)
Hier ist der Pastin-Link:
http://pastebin.com/fnbtNtC3
MfG dUDALUS
Hallo
Bitte lacht jetzt nicht, ich versuche mich möglichst nicht zu dumm anzustellen. Ich teste immer gerne etwas rum und versuche etwas, auch wenn es halt nicht (immer) geht. Aber so lerne ich am besten. Ich habe getsern mal das BFX-Dyn Haussystem studiert und versucht so etwas als Haussystem nachzubauen und dann meinen Wünschen anzupassen. Ich habe nochnie wirklich mit strcmp programmiert, sondern immer mit DCMD.
Probleme:
1.)Bei jedem Command den ich eingebe (register, /essen, /o [Text] ) kommt immer /createcar ..........
2.)Die Cars werden nach dem Createbefehl nicht erstellt
3.)Die Cars werden beim Serverstart nicht geladen
4.)Es herrscht eine Art Zahlenmix in der Fahrzeuge.cfg
Der Code:
#include <a_samp>
#include <JunkBusterFS>
#define MAX_CAR 200 // Maximale Anzahl an Fahrzeugen
#define CAR_DATEI "Vehiclesystem/Fahrzeuge.cfg" // Speicherort
#define MAX_SPIELER_CAR 2 // Maximale Anzahl an Fahrzeugen pro Spieler
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_WHITE 0xFFFFFFAA
forward SaveCache();
forward initSlot();
new _cache_fahrzeug;
enum fahrzeug
{
fBesitzer[MAX_PLAYER_NAME],
fPreis,
fModelID,
Float:fX,
Float:fY,
Float:fZ,
Float:fA,
fFarbe1,
fFarbe2,
fCarID
}
new FDaten[MAX_CAR][fahrzeug];
enum spieler_cardaten
{
car_zahl
}
new Player[MAX_PLAYERS][spieler_cardaten];
public OnFilterScriptInit()
{
new line[255],File:carx = fopen(CAR_DATEI,io_read),
car_index;
if(carx)
{
while(fread(carx,line))
{
if(line[strlen(line)-2] == '\r')line[strlen(line)-2] = '\0';
if(line[strlen(line)-1] == '\n')line[strlen(line)-1] = '\0';
strmid(FDaten[_cache_fahrzeug][fBesitzer],strtok(line,car_index,','),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
FDaten[_cache_fahrzeug][fPreis] = strval(strtok(line,car_index,','));
FDaten[_cache_fahrzeug][fModelID] = strval(strtok(line,car_index,','));
FDaten[_cache_fahrzeug][fX] = floatstr(strtok(line,car_index,','));
FDaten[_cache_fahrzeug][fY] = floatstr(strtok(line,car_index,','));
FDaten[_cache_fahrzeug][fZ] = floatstr(strtok(line,car_index,','));
FDaten[_cache_fahrzeug][fA] = floatstr(strtok(line,car_index,','));
FDaten[_cache_fahrzeug][fFarbe1] = strval(strtok(line,car_index,','));
FDaten[_cache_fahrzeug][fFarbe2] = strval(strtok(line,car_index,','));
CreateVehicle(FDaten[_cache_fahrzeug][fModelID],FDaten[_cache_fahrzeug][fX],FDaten[_cache_fahrzeug][fY],FDaten[_cache_fahrzeug][fZ],FDaten[_cache_fahrzeug][fA],FDaten[_cache_fahrzeug][fFarbe1],FDaten[_cache_fahrzeug][fFarbe2], -1);
car_index = 0;
_cache_fahrzeug++;
}
fclose(carx);
}
return 1;
}
public OnFilterScriptExit()
{
SaveCache();
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
Player[playerid][car_zahl] = 0;
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new idx,cmd[128];
if(!strcmp(cmd,"/createcar",true))
{
if(!IsPlayerAdmin(playerid))return 1;
cmd = strtok(cmdtext,idx);
if(!cmd[0])return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /createcar [ModelID] [Farbe1] [Farbe2] [Preis]");
new cmodelid = strval(cmd);
cmd = strtok(cmdtext,idx);
if(!cmd[0])return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /createcar [ModelID] [Farbe1] [Farbe2] [Preis]");
new cfarbe1 = strval(cmd);
cmd = strtok(cmdtext,idx);
if(!cmd[0])return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /createcar [ModelID] [Farbe1] [Farbe2] [Preis]");
new cfarbe2 = strval(cmd);
cmd = strtok(cmdtext,idx);
if(!cmd[0])return SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /createcar [ModelID] [Farbe1] [Farbe2] [Preis]");
new cpreis = strval(cmd);
new Float:JPos[3];
new slotid = initSlot();
new fullid = (slotid==-1) ? (_cache_fahrzeug) : (slotid);
GetPlayerPos(playerid,JPos[0],JPos[1],JPos[2]);
strmid(FDaten[fullid][fBesitzer],"Keiner",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
FDaten[fullid][fPreis] = cpreis;
FDaten[fullid][fModelID] = cmodelid;
FDaten[fullid][fX] = JPos[0];
FDaten[fullid][fY] = JPos[1];
FDaten[fullid][fZ] = JPos[2];
FDaten[fullid][fFarbe1] = cfarbe1;
FDaten[fullid][fFarbe2] = cfarbe2;
CreateVehicle(cmodelid,JPos[0],JPos[1],JPos[2],0,cfarbe1,cfarbe2, -1);
if(slotid==-1)_cache_fahrzeug++;
SaveCache();
return 1;
}
return 0;
}
strtok(const string[], &index, trenner = ' ')
{
new length = strlen(string);
while ((index < length) && (string[index] <= trenner))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > trenner) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
public SaveCache()
{
new fm[255],File:carx = fopen(CAR_DATEI,io_write);
for(new i = 0;i<_cache_fahrzeug;i++)
{
format(fm,sizeof fm,"%s,%d,%d,%f,%f,%f,%f,%d,%d\n",
FDaten[i][fBesitzer],
FDaten[i][fPreis],
FDaten[i][fModelID],
FDaten[i][fX],
FDaten[i][fY],
FDaten[i][fZ],
FDaten[i][fA],
FDaten[i][fFarbe1],
FDaten[i][fFarbe2]);
fwrite(carx,fm);
}
fclose(carx);
return 1;
}
public initSlot()
{
new foundx = -1;
for(new i = 0;i<_cache_fahrzeug;i++)
{
if(FDaten[i][fBesitzer] == '\0'){foundx = i;break;}
}
return foundx;
}
So sollte die Fahrzeug.cfg aussehen:
Besitzer,Preis,ModelID,X,Y,Z,A,Farbe1,Farbe2
So sieht sie aus:
Keiner,12,0,1136.906250,-2038.063476,69.007812,0.000000,400,11
Besitzer, Farbe2,Preis,X,Y,Z,A,ModelID,Farbe1
Ich wäre um Hilfe sehr dankbar, da ich mich auch in Zukunft an was ran wagen möchte, mit dem ich lernen kann und es auch tue.
MfG dUDALUS
Hallo miteinander
Ich habe mich mal an etwas anderes gewagt und es geht fehlerlos bis auf 1 Error (Dann könnte ich es testen )
public SaveCache() //Zeile 189
{
new fm[255],File:carx = fopen(CAR_DATEI,io_write);
for(new i = 0;i<_cache_fahrzeug;i++)
{
format(fm,sizeof fm,"%s,%d,%d,%f,%f,%f,%f,%d,%d\n", //Zeile 194
FDaten[i][fBesitzer],
FDaten[i][fPreis],
FDaten[i][fModelID],
FDaten[i][fX],
FDaten[i][fY],
FDaten[i][fZ],
FDaten[i][fA],
FDaten[i][fFarbe1],
FDaten[i][fFarbe2];
fwrite(carx,fm); //Zeile 204
}
fclose(carx);
return 1;
} //Zeile 208
Es kommt immer ein Error:
C:\Users\Simon\Desktop\Auto.pwn(194 -- 203) : error 001: expected token: ",", but found ";"
Woran liegt das ? Das letzte FDaten muss ja mit einem ; abgeschlossen werden, bevor es gespeichert wird ?
MfG dUDA
Edit: Gelöst
Klammer vergessen
Hallo
Beim kaufen wird es ja so gemacht:
FahrzeugeInfo[test][fVerkaufbar] = 0 ;
Beim Deleten so:
FahrzeugeInfo[test][fVerkaufbar] =1;
Nach beiden Sachen wird das Save aufgerufen.
dUDA
Hallo
Ich habe bereits weiter rumgetüftelt, jedoch leider erfolglos, kann mir jemand bitte helfen ? Das Problem ist immer, das (test) vom 1.Fahrzeug genommen wird und nicht immer neu aktualisiert wird. Wenn ich einen Car kaufe, geht alles, wenn ich jedoch einen 2.Car kaufen möchte, steht, der Car sei bereits verkauft, da er test noch vom 1.Car hat. Mit der Lösung von Michi geht das irgendwie auch nicht.
MfG dUDA
Schau mal die Sachen von BFX an, ewt. findeste da sicher was:
http://bfxsoftware.kilu.de/downloads/
Da findeste meistens etwas.
MfG dUDA
Deshalb postet ers ja im Off-Topic Breich
Hallo
Wenn ich es so mache und in einen nichtverkauften Car steige kommt immer Unknown Command --> Es passiert nichts (Keine Meldung)
Der Command ist aber richtig geschrieben.
dcmd_carkaufen(playerid,params[])
{
#pragma unused params
if(IsPlayerConnected(playerid))
{
new test = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY,"Du befindest dich in keinem Auto");
else if(GetPlayerMoney(playerid) < FahrzeugeInfo[test][fPreis]) return SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genügend Geld, um dieses Auto zu kaufen");
else if(FahrzeugeInfo[test][fVerkaufbar] == 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto ist nicht kaufbar oder bereits verkauft");
else if(FahrzeugeInfo[test][fFraktion] != 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto ist nicht kaufbar");
else if(FahrzeugeInfo[test][fJob] != 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto ist nicht kaufbar");
else if(strcmp(FahrzeugeInfo[test][fBesitzer],GetName(playerid), false ) != 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto gehört bereits dir");
else
{
FahrzeugeInfo[test][fVerkaufbar] = 0 ;
JB_GivePlayerMoney(playerid, -FahrzeugeInfo[test][fPreis]);
format(FahrzeugeInfo[test][fBesitzer], 24, "%s", GetName(playerid));
SavePlayerFahrzeuge(test);
return SendClientMessage(playerid, COLOR_GREEN,"Fahrzeug wurde erfolgreich gekauft");
}
}
return 1;
}
Hallo
Ich habe wieder das selbe Problem wie vor Kurzem.
Ich erstelle eine kaufbaren Car und einen zweiten hinzu. Nun steige ich in den ersten Car ein und kaufe ihn. Ich setzte mich nun in den zweiten Car und will ihn auch kaufen (Momentan kann man noch unbegrenzt Cars haben). Nun heisst es aber, der Car sei bereits verkauft, da er witzigerweise die Car-Id (also test) nicht neu einliesst sondern vom 1.Kauf noch hat und das will ich nun ja garnicht. Wie kann ich machen, dass das neu eingelesen wird ?
dcmd_carkaufen(playerid,params[])
{
#pragma unused params
if(IsPlayerConnected(playerid))
{
new test;
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY,"Du befindest dich in keinem Auto");
else if(GetPlayerMoney(playerid) < FahrzeugeInfo[test][fPreis]) return SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genügend Geld, um dieses Auto zu kaufen");
else if(FahrzeugeInfo[test][fVerkaufbar] == 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto ist nicht kaufbar oder bereits verkauft");
else if(FahrzeugeInfo[test][fFraktion] != 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto ist nicht kaufbar");
else if(FahrzeugeInfo[test][fJob] != 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto ist nicht kaufbar");
else if(strcmp(FahrzeugeInfo[test][fBesitzer],GetName(playerid), false ) != 0) return SendClientMessage(playerid, COLOR_GREY,"Dieses Auto gehört bereits dir");
else
{
FahrzeugeInfo[test][fVerkaufbar] = 0 ;
JB_GivePlayerMoney(playerid, -FahrzeugeInfo[test][fPreis]);
format(FahrzeugeInfo[test][fBesitzer], 24, "%s", GetName(playerid));
return SendClientMessage(playerid, COLOR_GREEN,"Fahrzeug wurde erfolgreich gekauft");
SavePlayerFahrzeuge(test);
}
}
return 1;
}
MfG dUDA
Hallo
Ich möchte, dass ich in ein Auto sitzen kann und es löschen kann, deshalb habe ich ein System gebaut, welches in dini abspeichert. Die Carfile ist so aufgebaut :
Car%d.ini , wobei test von 0-99 geht.
Ich sitze in einen solchen Car und gebe /deletecar ein, der Car wird gelöscht und er verschwindet, die ini wird auch resettet. Wenn ich jedoch in einen anderen Car sitze, sagen wir Car2, den gleichen Command eingebe, verschwindet zwar der Car, aber die Car2.ini wird nicht angepasst, da er test (hier die 2), nicht neu ausliesst.
Wie kann ich sowas verhindern und machen, das er bei jedem Einsteigen/Cardeleten test neu ausliest ?
dcmd_deletecar(playerid,params[])
{
#pragma unused params
if(IsPlayerConnected(playerid))
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY,"Du befindest dich in keinem Auto");
else if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Nur für RCON Admins");
else
{
DestroyPlayerFahrzeuge(playerid);
}
}
return 1;
}
stock DestroyPlayerFahrzeuge(playerid)
{
new test;
new fahrzeug[64], currentveh;
new zero = 0;
format(fahrzeug, sizeof(fahrzeug), "/Carsystem/Car%d.ini", test);
currentveh = GetPlayerVehicleID(playerid);
DestroyVehicle(currentveh);
gCache[playerid] = 0;
FahrzeugeInfo[test][fModelID] = zero;
FahrzeugeInfo[test][fFarbe1] = zero;
FahrzeugeInfo[test][fFarbe2] = zero;
FahrzeugeInfo[test][fVerkaufbar] =zero;
FahrzeugeInfo[test][fPreis] =dini_Int(fahrzeug, "Preis");
FahrzeugeInfo[test][fBesitzer]=dini_Int(fahrzeug, "Besitzer");
FahrzeugeInfo[test][fLocked] =dini_Int(fahrzeug, "Locked");
FahrzeugeInfo[test][carX] = zero;
FahrzeugeInfo[test][carY] = zero;
FahrzeugeInfo[test][carZ] = zero;
FahrzeugeInfo[test][carA] = zero;
FahrzeugeInfo[test][fVerwahrt]=dini_Int(fahrzeug, "Verwahrt");
FahrzeugeInfo[test][adacX] =dini_Float(fahrzeug, "XADAC");
FahrzeugeInfo[test][adacY] =dini_Float(fahrzeug, "YADAC");
FahrzeugeInfo[test][adacZ] =dini_Float(fahrzeug, "ZADAC");
FahrzeugeInfo[test][adacA]=dini_Float(fahrzeug, "AADAC");
FahrzeugeInfo[test][fFraktion]=dini_Int(fahrzeug, "Fraktion");
FahrzeugeInfo[test][fJob]=dini_Int(fahrzeug, "Job");
FahrzeugeInfo[test][fTunbar]=dini_Int(fahrzeug, "Tunbar");
FahrzeugeInfo[test][fPaintjob]=dini_Int(fahrzeug, "Paintjob");
FahrzeugeInfo[test][fTuningteil1]=dini_Int(fahrzeug, "Tuningteil1");
FahrzeugeInfo[test][fTuningteil2]=dini_Int(fahrzeug, "Tuningteil2");
FahrzeugeInfo[test][fTuningteil3]=dini_Int(fahrzeug, "Tuningteil3");
FahrzeugeInfo[test][fTuningteil4]=dini_Int(fahrzeug, "Tuningteil4");
FahrzeugeInfo[test][fTuningteil5]=dini_Int(fahrzeug, "Tuningteil5");
FahrzeugeInfo[test][fTuningteil6]=dini_Int(fahrzeug, "Tuningteil6");
FahrzeugeInfo[test][fTuningteil7]=dini_Int(fahrzeug, "Tuningteil7");
FahrzeugeInfo[test][fTuningteil8]=dini_Int(fahrzeug, "Tuningteil8");
FahrzeugeInfo[test][fTuningteil9]=dini_Int(fahrzeug, "Tuningteil9");
FahrzeugeInfo[test][fTuningteil10]=dini_Int(fahrzeug, "Tuningteil10");
FahrzeugeInfo[test][fTuningteil11]=dini_Int(fahrzeug, "Tuningteil11");
FahrzeugeInfo[test][fTuningteil12]=dini_Int(fahrzeug, "Tuningteil12");
FahrzeugeInfo[test][fTuningteil13]=dini_Int(fahrzeug, "Tuningteil13");
SavePlayerFahrzeuge(test);
SendClientMessage(playerid, COLOR_GREEN, "Fahrzeug wurde erfolgreich gelöscht");
return true;
}
MfG dUDALUS
Hallo
Wer sagt, das JB deine Scriptfiles kennt ???? Zudem, was sollte JB an den Scriptfiles verändern ?
JunkBuster = Im Gamemode
JunkBusterFS = In Filterscripts (kann parallel mit JunkBuster laufen, das JunkBusterFS muss/sollte jedoch keinesfalls im GM verwendet werden)
dUDA