Habe ein Ähnliches Problem... Bei meinen Haussystem werden alle Pickups angezeigt und 3d Texte aber bei Bizzen net...
Obwohl du es im prinzip genauso erstellt hast? Komisch^^
Kann mir den keiner helfen?
Habe ein Ähnliches Problem... Bei meinen Haussystem werden alle Pickups angezeigt und 3d Texte aber bei Bizzen net...
Obwohl du es im prinzip genauso erstellt hast? Komisch^^
Kann mir den keiner helfen?
War keine Installations CD dabei oder so?
Ansonsten einfach mal anstecken viele installieren sich heutzutage von selbst
Hallo
Ich habe das problem, dass mein Dynamisches Hausystem nicht funktioniert.
Ich habe es nach diesem Tutorial gescripted: Klick Mich
Ich habe im Script keine Errors aber man kann kein haus an einen anderen Spieler verkaufen man bekommt zwar Geld und dem anderen wird es abgezogen aber das Haus bleibt beim eigentlich Besitzer. Noch dazu bekommst man nicht soviel wie man angegeben hat sondern zum Teil unterschiedliche Summen
und als letztes Problem dazu wenn sich ein haus "updated" z.B durch Hauskaufen wird ab und zu kein textlabel oder Pickup geladen(Immer beim Befehl /haussell?!?)
enum Hausinfo
{
Besitzer[128],
HausNR,
Kaufpreis,
Float:hx,
Float:hy,
Float:hz,
Eisenlager,
Holzlager,
Schwarzpulver,
Drogenlager,
haus_innenraum,
Abgeschlossen,
hpickup,
Text3D:hlabel
};
new hInfo[MAX_Haus][Hausinfo];
OnGameModeInit()
CreatePickup(1273,23,0,0,1000,99); // damit es keine ID verschiebung gibt
for(new haus=1;haus<MAX_Haus;haus++)
{
LoadHaus(haus);
}
ocmd:hauskaufen(playerid,params[])
{
for(new haus=1;haus<MAX_Haus;haus++)
{
if(IsPlayerInRangeOfPoint(playerid,10,hInfo[haus][hx],hInfo[haus][hy],hInfo[haus][hz]))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(hInfo[haus][Besitzer],name,false) == 0)return SendClientMessage(playerid,hellrot,"Dieses Haus gehört dir bereits!");
if(strcmp(hInfo[haus][Besitzer],"Staat",false))return SendClientMessage(playerid,hellrot,"Dieses Haus steht nicht zum Verkauf!");
if(GetPlayerMoney(playerid) < hInfo[haus][Kaufpreis])return SendClientMessage(playerid,hellrot,"Du hast nicht genug Geld!");
GivePlayerMoney(playerid,-hInfo[haus][Kaufpreis]);
new pfad[100];
format(pfad,100,"/Häuser/%d.txt",haus);
dini_Set(pfad,"Besitzer",name);
KillHaus(haus);
LoadHaus(haus);
}
}
return 1;
}
ocmd:haussell(playerid,params[])
{
for(new haus=1;haus<MAX_Haus;haus++)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(hInfo[haus][Besitzer],name,false) == 0)
{
GivePlayerMoney(playerid,hInfo[haus][Kaufpreis]/2);
new pfad[100];
format(pfad,100,"/Häuser/%d.txt",haus);
dini_Set(pfad,"Besitzer","Staat");
KillHaus(haus);
LoadHaus(haus);
}
}
return 1;
}
ocmd:sellhaus(playerid,params[])
{
new pID,preis,string1[128],string2[128],string3[128],Float:x,Float:y,Float:z;
for(new haus=1;haus<MAX_Haus;haus++)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(hInfo[haus][Besitzer],name,false) == 0)
{
if(sscanf(params,"ui",pID,preis))return SendClientMessage(playerid,rot,"Benutze /sellhaus [ID] [Preis]");
if(pID == playerid)return SCM(playerid,rot,"Du kannst dir selbst kein Haus verkaufen");
GetPlayerPos(playerid,x,y,z);
if(!IsPlayerInRangeOfPoint(pID,20,x,y,z))return SCM(playerid,hellrot,"Der Spieler ist nicht in deiner Nähe");
format(string1,sizeof(string1),"%s bietet dir sein Haus %i für %i€ an.",Spielername(playerid),hInfo[haus][HausNR],preis);
format(string2,sizeof(string2),"Benutze /accepthaus um das Angebot anzunehmen oder /cancel um es abzulehnen");
format(string3,sizeof(string3),"Du hast %s dein Haus für %i€ angeboten",Spielername(pID),preis);
Anfrage[pID] = 3;
AnfrageID[pID] = playerid;
Ueberweiser[pID] = preis;
}
}
SCM(pID,orange2,string1);
SCM(pID,orange2,string2);
SCM(playerid,orange2,string3);
return 1;
}
ocmd:accepthaus(playerid,params[])
{
if(Anfrage[playerid] == 3)
{
new string1[128],string2[128];
for(new haus=1;haus<MAX_Haus;haus++)
{
if(strcmp(hInfo[haus][Besitzer],Spielername(AnfrageID[playerid]),false) == 0)
{
if(GetPlayerMoney(playerid) >= Ueberweiser[playerid])
{
Anfrage[playerid] = 0;
format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und sein Haus für %i€ gekauft",Spielername(AnfrageID[playerid]),Ueberweiser[playerid]);
format(string2,sizeof(string2),"%s hat dein Angebot angenommen und dein Haus für %i€ gekauft",Spielername(playerid),Ueberweiser[playerid]);
GivePlayerMoney(AnfrageID[playerid],Ueberweiser[playerid]);
GivePlayerMoney(playerid,-Ueberweiser[playerid]);
new pfad[100];
format(pfad,100,"/Häuser/%d.txt",haus);
dini_Set(pfad,"Besitzer",Spielername(AnfrageID[playerid]));
KillHaus(haus);
LoadHaus(haus);
}
}
}
SCM(playerid,orange2,string1);
SCM(AnfrageID[playerid],orange2,string2);
Ueberweiser[playerid] = 0;
AnfrageID[playerid] = 0;
Anfrage[playerid] = 0;
}
else
{
SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
}
return 1;
}
ocmd:enter(playerid,params[])
{
for(new haus=1;haus<MAX_Haus;haus++)
{
if(IsPlayerInRangeOfPoint(playerid,15,hInfo[haus][hx],hInfo[haus][hy],hInfo[haus][hz]))
{
if(hInfo[haus][Abgeschlossen] == 0)
{
GetPlayerPos(playerid,xx,yy,zz);
switch(hInfo[haus][haus_innenraum])
{
case 1:{SetPlayerInterior(playerid,1);SetPlayerPos(playerid,223.043991, 1289.259888, 1082.199951);SetPlayerVirtualWorld(playerid,1+playerid);}
case 3:{SetPlayerInterior(playerid,3);SetPlayerPos(playerid,235.508994, 1189.169897, 1080.339966);SetPlayerVirtualWorld(playerid,1+playerid);}
case 7:{SetPlayerInterior(playerid,7);SetPlayerPos(playerid,225.630997, 1022.479980, 1084.069946);SetPlayerVirtualWorld(playerid,1+playerid);}
case 12:{SetPlayerInterior(playerid,12);SetPlayerPos(playerid,2324.33, -1144.79, 1050.71);SetPlayerVirtualWorld(playerid,1+playerid);}
case 15:{SetPlayerInterior(playerid,15);SetPlayerPos(playerid,295.138977, 1474.469971, 1080.519897 );SetPlayerVirtualWorld(playerid,1+playerid);}
}
}
else
{
SCM(playerid,rot,"Das Haus ist abgeschlossen");
}
}
}
return 1;
}
ocmd:exit(playerid,params[])
{
if(GetPlayerInterior(playerid) == 3 || 1 || 7
|| 15 || 12)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,xx,yy,zz);
SetPlayerVirtualWorld(playerid,0);
}
return 1;
}
ocmd:hlock(playerid,params[])
{
for(new haus=1;haus<MAX_Haus;haus++)
{
if(IsPlayerInRangeOfPoint(playerid,35,hInfo[haus][hx],hInfo[haus][hy],hInfo[haus][hz]))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(hInfo[haus][Besitzer],name,false) == 0)
{
if(hInfo[haus][Abgeschlossen] == 0)
{
hInfo[haus][Abgeschlossen] = 1;
SCM(playerid,gelb,"Du hast dein Haus abgeschlossen");
}
else if(hInfo[haus][Abgeschlossen] == 1)
{
hInfo[haus][Abgeschlossen] = 0;
SCM(playerid,gelb,"Du hast dein Haus aufgeschlossen");
}
}
}
}
return 1;
}
stock CreateHaus(Float:x,Float:y,Float:z,besitzer[64],nummer,preis)
{
new pfad[100];
for(new haus=1;haus<MAX_Haus;haus++)
{
format(pfad,100,"/Häuser/%d.txt",haus);
if(!fexist(pfad))
{
dini_Create(pfad);
dini_FloatSet(pfad,"Pos X",x);
dini_FloatSet(pfad,"Pos Y",y);
dini_FloatSet(pfad,"Pos Z",z);
dini_IntSet(pfad,"Kaufpreis",preis);
dini_Set(pfad,"Besitzer",besitzer);
dini_IntSet(pfad,"Innenraum",1);
dini_IntSet(pfad,"Hausnummer",nummer);
dini_IntSet(pfad,"Eisenlager",0);
dini_IntSet(pfad,"Holzlager",0);
dini_IntSet(pfad,"Schwarzpulver",0);
dini_IntSet(pfad,"Drogenlager",0);
dini_IntSet(pfad,"Abgeschlossen",0);
return LoadHaus(haus);
}
}
return 0;
}
stock LoadHaus(hausid)
{
new pfad[100],string1[128];
format(pfad,100,"/Häuser/%d.txt",hausid);
if(!fexist(pfad))return 0; //überprüft ob die Datei existiert, wenn nicht wird 0 zurückgegeben
hInfo[hausid][hx] = dini_Float(pfad,"Pos X"); // hier laden wir die Werte
hInfo[hausid][hy] = dini_Float(pfad,"Pos Y");
hInfo[hausid][hz] = dini_Float(pfad,"Pos Z");
hInfo[hausid][Kaufpreis] = dini_Int(pfad,"Kaufpreis");
format(hInfo[hausid][Besitzer],64,"%s",dini_Get(pfad,"Besitzer"));
hInfo[hausid][HausNR] = dini_Int(pfad,"Hausnummer");
hInfo[hausid][Eisenlager] = dini_Int(pfad,"Eisenlager");
hInfo[hausid][Holzlager] = dini_Int(pfad,"Holzlager");
hInfo[hausid][Schwarzpulver] = dini_Int(pfad,"Schwarzpulver");
hInfo[hausid][Drogenlager] = dini_Int(pfad,"Drogenlager");
hInfo[hausid][haus_innenraum] = dini_Int(pfad,"Innenraum");
hInfo[hausid][Abgeschlossen] = dini_Int(pfad,"Abgeschlossen");
hInfo[hausid][hpickup] = CreatePickup(1273 ,1,hInfo[hausid][hx],hInfo[hausid][hy],hInfo[hausid][hz],0);
format(string1,sizeof(string1),"Hausnummer: %i\nBesitzer: %s\nKaufpreis: %i€",hInfo[hausid][HausNR],hInfo[hausid][Besitzer],hInfo[hausid][Kaufpreis]);
hInfo[hausid][hlabel] = Create3DTextLabel(string1,weiß,hInfo[hausid][hx],hInfo[hausid][hy],hInfo[hausid][hz],15,0,0);
return print("Das Haus wurde erfolgreich geladen");
}
stock KillHaus(hausid)
{
DestroyPickup(hInfo[hausid][hpickup]);
Delete3DTextLabel(hInfo[hausid][hlabel]);
}
So das war eigentlich der ganze Code
nochmal die probleme^^
-->Beim verkaufen des hauses an andere Spieler behält man das Haus
-->Man bekommt unterschiedliche Geldsummen
-->TextLabels und Pickups updaten sich nicht immer /edit: Also es ändert sich nur beim Befehl haussell nicht bzw es wird nicht mehr geladen
-->und beim Haus verkaufen an andere Spieler wird immer angezeigt "Spieler xyz" möchte dir sein haus 999 verkaufen
Ich weiß das ist wegen Max_haus aber wie kann ich das umgehen?
Ich hoffe ihr könnt mir helfen
ist
pInfo[Bankguthaben]
ein float oder integer?
Naja ich hatte es erst al Integer aber da habe ich immer error bekommen, dass die Variable falsch definiert ist also habe ich es zu einem Float gemacht
Also ich habe für meinen Payday Zinsen hinzugefügt aber ich bekomme immer rießige Werte(1110306576€ und so^^) an Zinsen obwohl der string in welchem die Zinsen ausgegeben werden richtig angezeigt wird
Also der Anfang meines Paydays sieht so aus
public Minute()
{
new Hour2;
gettime(Hour2);
SetWorldTime(Hour2);
for(new i=0; i<GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i))continue;
if(pInfo[i][Eingeloggt]==0)continue;
pInfo[i][ZsL] ++;
pInfo[i][ZbP] --;
pInfo[i][SzI] ++;
pInfo[i][Hunger] += 1;
pInfo[i][Durst] += 2;
pInfo[i][Viren] += 5;
if(pInfo[i][ZbP] == 0)
{
new string1[128], string2[128],string3[128],string4[128];
format(string1,sizeof(string1),"Durch deinen Nebenjob verdienst du zusätzlich %i€",pInfo[i][FarmerCP]*30);
format(string2,sizeof(string2),"Durch deinen Nebenjob verdienst du zusätzlich %i€",pInfo[i][TruckerCP]*400);
format(string3,sizeof(string3),"Durch deinen Nebenjob bekommst du außerdem weitere Erfahrung",pInfo[i][PlusErfahrung]);
format(string4,sizeof(string4),"Durch Verzinsung deines Bankguthabens erhälst du %i€",floatround(pInfo[i][Bankguthaben]*0.01));
switch(pInfo[i][Nebenjob])
{
case 0:
{
SCM(i,weiß,"===============Payday===============");
SCM(i,weiß,"Du bekommst 500€ Arbeitslosengeld");
SCM(i,weiß,string4);
SCM(i,weiß,"Du bekommst 100 Erfahrungspunkte");
SCM(i,weiß,"Du bekommst 1 Coin");
SCM(i,weiß,string3);
SCM(i,weiß,"====================================");
pInfo[i] [Erfahrung] = pInfo[i][PlusErfahrung];
GivePlayerMoney(i,500);
new zinsen = floatround(pInfo[i][Bankguthaben] * 0.01);
pInfo[i][Bankguthaben] += zinsen;
pInfo[i][FarmerCP]= 0;
pInfo[i][TruckerCP]= 0;
pInfo[i][PlusErfahrung] = 0;
}
case 1:
{
SCM(i,weiß,"===============Payday=======================");
SCM(i,weiß,"Du bekommst 500€ Arbeitslosengeld");
SCM(i,weiß,string1);
SCM(i,weiß,string4);
SCM(i,weiß,"Du bekommst 100 Erfahrungspunkte");
SCM(i,weiß,string3);
SCM(i,weiß,"Du bekommst 1 Coin");
SCM(i,weiß,"============================================");
pInfo[i][Erfahrung] = pInfo[i][PlusErfahrung];
GivePlayerMoney(i,500);
GivePlayerMoney(i,pInfo[i][FarmerCP]*30);
new zinsen = floatround(pInfo[i][Bankguthaben] * 0.01);
pInfo[i][Bankguthaben] += zinsen;
pInfo[i][FarmerCP]= 0;
pInfo[i][TruckerCP]= 0;
pInfo[i][PlusErfahrung] = 0;
}
Der Rest ist für euch uninteressent weil es im Prinzip genauso weitergeht nur mit anderen Nebenjobs
Ich hoffe ihr könnt mir sagen was ich falsch mache
Ja stimmt das hab ich bevor ich meine Lösung hatte auch probiert aber ich dachte mir das muss mit strfind auch gehen^^ außerdem ist es doch gut wenn man selbst Lösungen findet auch wenn es etwas dauert
Sorry ich hab mich dem SAMP Wiki da etwas falsch bedient
Ich dachte ich müsste strfind benutzen
Ich habs nicht so mit den verschiedenen str... Sachen weil ich fürh mit OCMD angefangen habe und daher kaum strcmp... brauchte
/edit:
Was du dort gemacht hast MrMoney funktioniert nicht:
if(strfind("/accept repair","repair",true) != -1)
Das ist totaler Quatsch.
Ist doch klar,dass er das Wort "repair" immer in "/accept repair" finden wird. Genau genommen findet er es an Position 8.
Aber wenn ich es folgendermaßen mache geht es
ocmd:accept(playerid,params[])
{
new text[8];
if(sscanf(params,"s",text))return SendClientMessage(playerid,rot,"Benutze /accept repair");
if(strfind(text,"repair",true) != -1)
//if(strcmp(text,"repair",true)==0)
{
if(Anfrage[playerid] == 2)
{
new string1[128],string2[128];
Anfrage[playerid] = 0;
format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
SCM(playerid,orange2,string1);
SCM(AnfrageID[playerid],orange2,string2);
RepairVehicle(GetPlayerVehicleID(playerid));
GivePlayerMoney(AnfrageID[playerid],Ueberweiser[playerid]);
GivePlayerMoney(playerid,-Ueberweiser[playerid]);
Ueberweiser[playerid] = 0;
AnfrageID[playerid] = 0;
}
else
{
SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
}
}
return 1;
}
Oh sry ich hab das mit dem strcmp... übersehen und nur auf die sscanf abfrage geschaut
Alles anzeigenDas geht nicht. Wieso es nicht geht liegt schon an der Methode wie bei ocmd,zcmd und arbeiten. Es werden public Funktionen angelegt für die Befehle.
Das eine Funktion wie diese nicht funktioniert,könnt ihr gerne selber nachprüfen:
public mit leerzeichen() {
return 1;
}
/accept wäre der Befehl, repair der weitere Parameter.
[TUT] dcmd + sscanf + ZCMD - Einfache Befehl-Verarbeitung
Mit SSCANF könntest du den Parameter auslesen.
Habs geschafft
Ich habs jetzt so gemacht
ocmd:accept(playerid,params[])
{
new text[8];
if(sscanf(params,"s",text))return SendClientMessage(playerid,rot,"Benutze /accept repair");
if(strfind("/accept repair","repair",true) != -1)
{
if(Anfrage[playerid] == 2)
{
new string1[128],string2[128];
Anfrage[playerid] = 0;
format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
SCM(playerid,orange2,string1);
SCM(AnfrageID[playerid],orange2,string2);
RepairVehicle(GetPlayerVehicleID(playerid));
GivePlayerMoney(AnfrageID[playerid],Ueberweiser[playerid]);
GivePlayerMoney(playerid,-Ueberweiser[playerid]);
Ueberweiser[playerid] = 0;
AnfrageID[playerid] = 0;
}
else
{
SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
}
}
return 1;
}
Alles anzeigen
ocmd:accept(playerid,params[])
{
new lolololo[20];
if(sscanf(params,"s",lolololo))return SendClientMessage(playerid,BLAU,"Info: /accept [repair]");
if(strcmp(lolololo,"repair",true)==0)
{
if(Anfrage[playerid] == 2)
{
new string1[128],string2[128];
Anfrage[playerid] = 0;
format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
SCM(playerid,orange2,string1);
SCM(AnfrageID[playerid],orange2,string2);
AnfrageID[playerid] = 0;
RepairVehicle(GetPlayerVehicleID(playerid));
}
else
{
SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
}
}
return 1;
}
relativ einfach mit sscanf
Aber wäre es bei deinem nicht egal was man für einen string eingibt? also z.B /accept hure oder so
Wenn nicht erkläre es mir^^
nein leider nicht
dann muss ich Ingame /accept_repair eingeben
Hey
Kann man mit OCMD einen Befehl bestehend aus 2 Wörtern scripten?
Ich habe einen /accept repair befehl gescripted aber wenn ich zwischen accept und repair ein Leerzeichen mache bekomm ich haufen Errors sonst nicht
ocmd:accept repair(playerid,params[])
{
if(Anfrage[playerid] == 2)
{
new string1[128],string2[128];
Anfrage[playerid] = 0;
format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
SCM(playerid,orange2,string1);
SCM(AnfrageID[playerid],orange2,string2);
AnfrageID[playerid] = 0;
RepairVehicle(GetPlayerVehicleID(playerid));
}
else
{
SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
}
return 1;
}
Ich denke mal, dass Car_A für die car Angle steht aber diese ist ein Flot und kein Intwert also
dini_IntSet(speichern,"Car_A",pInfo[i][Park_a]);//Hier ist ein Waning
zu
dini_FloatSet(speichern,"Car_A",pInfo[i][Park_a]);
demnach müsste auch
pInfo[i][Park_a] = dini_Int(speichern,"Car_A");
zu
pInfo[i][Park_a] = dini_Float(speichern,"Car_A");
oder irre ich mich?
Ich finde das sieht HAMMER aus
Aber ich finde den Ort etwas komisch ich mein ne schmierige Tanke und ne art Trucker Base und dahinter so ne Villa
Ich würde mal unter Autospeichern:
Ge3tVihiclePos dazuschreiben
Ich weiß was du meinst aber ich hab das so "gescripted", dass beim Speichern die Werte der Variablen aInfo[playerid][Xa]... in die Datei gespeichert werden udn wie man an meinem /park Befehl sehen kann nehmen die Variablen einen Wert an und dannach sollte dieser gespeichert werden also sollte das laut meinem Verständnis auch funktionieren
Aber ich probiers trotzdem mal
/edit:So habs probiert hab mal alles von dem CMD in den stock gepackt aber es funktioniert trotzdem nicht
Also ich habe erst in mein Script eingebaut, dass man ein Auto in einer Datei gespeichert wird und wenn man connected geladen bzw wenn man disconnected "gelöscht" wird. Wenn man die Koordinaten in die Datei eingibt klappt das auch (Hab noch kein Autohaus oder dergleichen^^)
Aber der /park Befehl dazu funktioniert die die Koordinaten bis auf die ModelID werden immer auf 0 gesetzt
Hier mal meine Codeschnippsel
enum Spielerauto
{
Modelid,
Float:Xa,
Float:Ya,
Float:Za,
Float:Angle,
Farbe1,
Farbe2
};
new aInfo[MAX_PLAYERS][Spielerauto];
new privatcar[200];
public OnPlayerDisconnect(playerid, reason)
{
//Speichern
SpielerSpeichern(playerid);
InventarSpeichern(playerid);
ResetVehicle(playerid);
pInfo[playerid][Eingeloggt]=0;
Anfrage[playerid] = 0;
Zielfrak[playerid] = 0;
return 1;
}
/*ocmd:park(playerid,params[])
{
new vehicleid2,model2,Float:x2,Float:y2,Float:z2,Float:angle2,color1,color2;
vehicleid2 = GetPlayerVehicleID(playerid),
model2 = GetVehicleModel(vehicleid2);
GetVehiclePos(model2,x2,y2,z2);
GetVehicleZAngle(model2,angle2);
GetVehicleColor(model2,color1,color2);
aInfo[playerid][Modelid] = model2;
aInfo[playerid][Xa] = x2;
aInfo[playerid][Ya] = y2;
aInfo[playerid][Za] = z2;
aInfo[playerid][Angle] = angle2;
aInfo[playerid][Farbe1] = color1;
aInfo[playerid][Farbe2] = color2;
AutoSpeichern(playerid);
SCM(playerid,gelb,"Du hast dein Fahrzeug umgeparkt");
return 1;
}*/
ocmd:park(playerid,params[])
{
new vehicleid2,model2,Float:x2,Float:y2,Float:z2,Float:angle2,color1,color2;
vehicleid2 = GetPlayerVehicleID(playerid),
model2 = GetVehicleModel(vehicleid2);
GetVehiclePos(model2,x2,y2,z2);
GetVehicleZAngle(model2,angle2);
GetVehicleColor(model2,color1,color2);
SCM(playerid,gelb,"Du hast dein Auto umgeparkt");
new Autos[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Autos,sizeof(Autos),"/Autos/%s.txt",name);
if(dini_Exists(Autos))
{
dini_IntSet(Autos,"FahrzeugID",model2);
dini_FloatSet(Autos,"Pos X",x2);
dini_FloatSet(Autos,"Pos Y",y2);
dini_FloatSet(Autos,"Pos Z",z2);
dini_FloatSet(Autos,"Angle",angle2);
dini_IntSet(Autos,"Farbe 1",color1);
dini_IntSet(Autos,"Farbe 2",color2);
}
return 1;
}
//Beider Befehle funktionieren nicht
stock Register(playerid,key[])
{
new Spielerdatei[64];
new Inventar[64];
new Autos[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
format(Inventar,sizeof(Inventar),"/Inventar/%s.txt",name);
format(Autos,sizeof(Autos),"/Autos/%s.txt",name);
dini_Create(Spielerdatei);
dini_Create(Inventar);
dini_Create(Autos);
...
stock Login(playerid,key[])
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),true))
{
AccountLaden(playerid);
InventarLaden(playerid);
AutoLaden(playerid);
pInfo[playerid][Eingeloggt]=1;
pInfo[playerid][ZsL]=0;
SendClientMessage(playerid,grün,"Du hast dich erfolgreich eingeloggt");
return 1;
}
else
{
SendClientMessage(playerid,rot,"Falsches Passwort");
ShowPlayerDialog(playerid,DIALOG_Login,DIALOG_STYLE_PASSWORD,"Login"," Dein Account wurde gefunden, bitte gib dein Passwort ein.","Login","Abbrechen");
return 1;
}
}
stock AutoSpeichern(playerid)
{
new Autos[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Autos,sizeof(Autos),"/Autos/%s.txt",name);
if(dini_Exists(Autos))
{
dini_IntSet(Autos,"FahrzeugID",aInfo[playerid][Modelid]);
dini_FloatSet(Autos,"Pos X",aInfo[playerid][Xa]);
dini_FloatSet(Autos,"Pos Y",aInfo[playerid][Ya]);
dini_FloatSet(Autos,"Pos Z",aInfo[playerid][Za]);
dini_FloatSet(Autos,"Angle",aInfo[playerid][Angle]);
dini_IntSet(Autos,"Farbe 1",aInfo[playerid][Farbe1]);
dini_IntSet(Autos,"Farbe 2",aInfo[playerid][Farbe2]);
}
return 1;
}
stock AutoLaden(playerid)
{
new Autos[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Autos,sizeof(Autos),"/Autos/%s.txt",name);
if(dini_Exists(Autos))
{
aInfo[playerid][Modelid] = dini_Int(Autos,"FahrzeugID");
aInfo[playerid][Xa] = dini_Float(Autos,"Pos X");
aInfo[playerid][Ya] = dini_Float(Autos,"Pos Y");
aInfo[playerid][Za] = dini_Float(Autos,"Pos Z");
aInfo[playerid][Angle] = dini_Float(Autos,"Angle");
aInfo[playerid][Farbe1] = dini_Int(Autos,"Farbe 1");
aInfo[playerid][Farbe2] = dini_Int(Autos,"Farbe 2");
privatcar[0+playerid] = CreateVehicle(aInfo[playerid][Modelid],aInfo[playerid][Xa],aInfo[playerid][Ya],aInfo[playerid][Za],aInfo[playerid][Angle],aInfo[playerid][Farbe1],aInfo[playerid][Farbe2],-1);
}
return 1;
}
stock ResetVehicle(playerid)
{
DestroyVehicle(privatcar[0+playerid]);
return 1;
}
Ich hoffe ihr könnt mir helfen
Danke hat so ziemlich geklappt
Naja schon aber wenn jmd sein Fahrzeug nie umsprayed wird doch auch keine Variable gespeichert oder?
Aber ist auch egal der obige Beitrag mit dem Include hat geklappt =)
MfG
MrMonkey
Hey
Ich scripte gerade dass ein Spieler ein Auto besitzen kann(Ich wills nicht System nennen :D)
und dazu natürlich ein Park Befehl mit dessen man die Position und so herausbekommen usw.
Aber ich hab keine Ahnung wie ich die Farbe eines Autos herausbekommen kann
Gibt es dafür Funktionen oder wie?
MfG
MrMonkey
Also ich habe mein Fraktionssystem gerade mal ein wenig ausgebaut und sitze jetzt an einem Invitebefehl
Es gibt scho /giverank /setleader /uninvite und wer sich jetzt denkt naja /invite ist doch das umgekehrte von /uninvite der liegt zumindest was mein Problem angeht falsch
Ich hab mir das so gedacht, dass man jmd per /invite eine Anfrage schickt, welcher der andere mit annehmen oder ablehnen kann aber ich hab ka wie ich diese CMs
verbinde Wer den Code ließt wird sich denken können wie ich das machen wollte aber das Problem ist, dass in dem annehmen Befehl ja nicht mer die playerid des invitenden und der Frakid von ihm ist
ocmd:invite(playerid,params[])
{
if(pInfo[playerid][Fraktion] == 1)return 1;
if(!IstPlayerLeader(playerid,2))return SCM(playerid,rot,"Du besitzt nicht die nötigen Leaderrechte");
new pID,string1[128],string2[128],string3[128],Fraktioni[50];
if(sscanf(params,"u",pID))return SendClientMessage(playerid,rot,"Benutze /invite [ID]");
if(pInfo[pID][Fraktion] != 1)return SCM(playerid,hellrot,"Dieser Spieler ist bereits in einer anderen Fraktion");
switch(pInfo[playerid][Fraktion])
{
case 1:{Fraktioni="Zivilist";}
case 2:{Fraktioni="SAPD";}
case 3:{Fraktioni="FBI";}
case 4:{Fraktioni="US Army";}
case 5:{Fraktioni="Fahrschule";}
case 6:{Fraktioni="BBC";}
case 7:{Fraktioni="US Government";}
case 8:{Fraktioni="Medics";}
case 9:{Fraktioni="Ordnungsamt";}
case 10:{Fraktioni="Yakuza";}
case 11:{Fraktioni="Ndrangheta";}
case 12:{Fraktioni="Brigada";}
case 13:{Fraktioni="Sacra Corona Unita ";}
case 14:{Fraktioni="Triaden";}
}
format(string1,sizeof(string1),"%s möchte dich in die Fraktion %s inviten.",Spielername(playerid),pInfo[playerid][Fraktion]);
format(string2,sizeof(string2),"Benutze /annehmen um den Invite zu akzeptieren oder /cancel um ihn abzulehnen");
format(string3,sizeof(string3),"Du hast %s angeboten in deine Fraktion invited zu werden",Spielername(pID));
SCM(pID,orange,string1);
SCM(pID,orange,string2);
SCM(playerid,orange,string3);
Anfrage(pID)=1;
return 1;
}
ocmd:annehmen(playerid,params[])
{
if(Anfrage[playerid]==1)
{
Anfrage[playerid]=0;
}
if(Anfrage[playerid]==0)
{
SCM(playerid,hellrot,"Du hast keine Anfrage erhalten");
}
return 1;
}
Ich hoffe ihr könnt mir helfen
Ich habe auch noch von Y_INI oder so gehört das soll doch auch gut sein oder???
Also könnte Ich ruhigen Gewissens SII benutzen weil es immernoch sehr gut ist
Ja Leute ich wollte mal wissen, was so die bestem Filesysteme sind?
Ich habe bisher dini genutzt und wollte nun umsteigen erst wollte ich mit Mysql oder SQLite anfangen hab aber bemerkt, dass das etwas schwer ist weil ich wirklich NOCH NIE mit Mysql und dergleichen gearbeitet hab. Also wollte ich erstmal ein besseres/schnelleres Filesystem als Dini
Ich hatte vor auf SII uumzusteigen, weil das auch sehr gut sein soll hab aber auf verschiedenen Seiten im Internet gefunden, dass auch das schon wieder etwas "veraltet" sein soll.
Also was ist das beste/schnellste Filesystem?
Falls das eher in Smalltalk gehört bitte verschieben^^
MfG
MrMonkey