Kannst du erläutern,wie du das genau meinst?
Wie man .ini Dateien erstellt? Wenn ja dann mit FF oder besser dini
Beiträge von Kayer
-
-
stock fcreate(filename[])
{
if (fexist(filename)){return false;}
new File:fhandle = fopen(filename,io_write);
fclose(fhandle);
return true;
}
Bei mir geht es.. wahrscheinlich brauchst noch eine include. -
// Ganz Unten
stock fdeleteline(filename[], line[]){
if(fexist(filename)){
new temp[256];
new File:fhandle = fopen(filename,io_read);
fread(fhandle,temp,sizeof(temp),false);
if(strfind(temp,line,true)==-1){return 0;}
else{
fclose(fhandle);
fremove(filename);
for(new i=0;i<strlen(temp);i++){
new templine[256];
strmid(templine,temp,i,i+strlen(line));
if(equal(templine,line,true)){
strdel(temp,i,i+strlen(line));
fcreate(filename);
fhandle = fopen(filename,io_write);
fwrite(fhandle,temp);
fclose(fhandle);
return 1;
}
}
}
}
return 0;
} -
Danke.Hat mir viel geholfen.
Tolle Arbeit -
Hin und Her ... verwirrend
.
Also: SetTimerEx bei allen Paramtener, auch "playerid",
SetTimer für alle.
Danke an alle -
Hallo.
Ich versteh das mit den Timern nicht ganz.
Wenn beispielsweise bei einem Befehl, wie "/starttimer" , ein Timer ausgelöst werden soll, der NUR für die ausführende playerid gilt.Wie ginge das?
forward lol(playerid);forward lol(playerid);
SetTimer("lol",10000,1);
SetTimerEx("lol,"10000,1,"i",playerid);
Erbitte euch kleine Erklärung wie genau nun ! -
Ob das mit dini geht,weiß ich nicht.Dini ist vorallem geeignet für Account System,die spezial für einen User sind.
Ich würde es jedoch mit FF machen.Damit kann man meiner Meinung nach soetwas machen.
// Unter OnPlayerDis
new File: lol = fopen("Geld.txt",io_readwrite);
if(lol)
{
new name[MAX_PLAYER_NAME];
new form[100];
GetPlayerName(playerid,name, sizeof name);
format(form,sizeof form,"%s : %d\n\r",name,GetPlayerMoney(playerid));
new string[200];
while(fread(lol, string))
{
if(strcmp(string,name,true,strlen(name))==0)
{
fdeleteline("Geld.txt",string);
fclose(lol);
new File:lol2 = fopen("Geld.txt",io_append);
fwrite(lol2,form);
}
else
{
new File:lol2 = fopen("Geld.txt",io_append);
fwrite(lol2,form);
fclose(lol2);
}
}
}
UNGETESTET; AUS DEM KOPF GESCHRIEBEN -
-
Ist es egal,ob der User in der Zwischenzeit off geht?
-
if (InDerby[playerid] == true ) -
if(strcmp(cmdtext, "/back", true) == 0)
{
if (InDerby[playerid]=true )
{
SendClientMessage(playerid,0x00FF00AA, "You exited the Derby Arena");
SetPlayerPos(playerid,-1394.20, 987.62, 1023.96);
SetPlayerInterior(playerid,0);
InDerby[playerid]=false;
}else if (InDerby[playerid]==false)
{SendClientMessage(playerid, COLOR_RED, "You´re not in the Derby Arena!!");
}
return 1;
}
Teste es mal so -
Nun weiß ich, wie ihr eure 320 oder 118 Beiträge bekommen habt
.
5/10 Punkte, wenn ich es bewerten müsste.
Und anstatt hier nur große Töne zu spucken, könntet ihr ihm Tipp´s geben,wie er sich verbessern kann und nicht nur alles kritisieren ... eure Werke sind auch nicht "fabelhaft"
.Ich kenn eure Scripts ( Server ), und hätte da auch einiges zu bemängeln....
Aber das ist hier nicht das Thema dafür.Vielleicht etwas mehr und ausgefalleneres.Du bist auf dem richtigen Weg
-
Ich bin zwar kein Moderator, habe daher auch nichts zu sagen - doch ist das der richtige Thread , um so etwas auszudiskutieren?
( Möchte damit KEINEN verärgern !)
Finde natürlich auch nicht schön,dass er einen Server nachahmen will...----------------------------------------------------------------------------------------------------------
Benutzt du das GF oder ein vollkommen neues ( selbsterstelltes ) ? Hatte soetwas mal der in der Art gemacht...vllt. find ich´s und gebe es dir
( Editiere dies,sobald ich es gefunden habe ) -
Ich kann dir ein Register&Login System mit dini anfertigen und soetwas einfügen.
Schick mir eine PM bei Intresse. -
//Unter new grovestreet;
grovestreet = GangZoneCreate(2421.56, -1737.13, 2516.631, -1630.541); -
Nabend.
Da mein Freund mich überredet hat doch wieder ein Reallife Script zu machen(-.-), habe ich nun neue Fragen. Ich werde immer neue editieren.1. Woher bekomme ich eine Uhr die richtig läuft?
2. Welchen Code brauche ich, damit einer ohne Führerschein kein Auto(etc.) fahren kann?
3. Welchen Code brauche ich, um ein Accountsystem zu erstellen?
4. Wie mache ich, das man beim Tutorial stehen bleiben muss?
5. Wie mache ich, dass wenn man in irgendeinen Ammuladen reingeht, man stirbt?Bitte nur sinnvolle Antworten und kein Spam!
mfg
1. Suchfunktion benutzen.Hab letzens erst 2 Threads mit der selben Frage gesehen (Notfalls im http://www.sa-mp.com Forum gucken )
2. Kommt darauf an,welches Script du verwendest bzw. wie dein Führerschein definiert ist.
3. Dafür kannst du F(ile)F(unctions) , Dini oder mysql verwenden.
4. TogglePlayerControllable(playerid,false);
5. Eine Möglichkeit wäre,per Timer sekündlich abzufragen,ob sich der Spieler an einem Punkt (PlayerToPoint) befindet. -
Du brauchst den dcmd und den sscanf Code und du musst die Farbe Gelb definieren.
Aufgrund deiner knapp 250 Posts ging ich davon aus,dass du soetwas wüsstest.
-
Ok.Hier ein kleines Beispiel.
// Ganz Oben
new Jobs[MAX_PLAYERS];
new Taxi[MAX_PLAYERS];
new Dealer[MAX_PLAYERS];
new Arzt[MAX_PLAYERS];
new mats[MAX_PLAYERS];// Unter OnPlayerCommandText
dcmd(job,3,cmdtext);
dcmd(deal,4,cmdtext);
dcmd(get,3,cmdtext);
//Außerhalb eines CallBacks
dcmd_deal(playerid,params[])
{new form[100];
new playa;
new mat;
if(sscanf(params,"dd",playa,mat))
{
SendClientMessage(playerid,COLOR_YELLOW,"Verwende: /deal [ID] [DROGENANZAHL]");
return 1;
}
if(mat > mats[playerid])
{
SendClientMessage(playerid,COLOR_BLUE,"So viele drogen hast du nicht !");
return 1;
}
if(!IsPlayerConnected(playa))
{
SendClientMessage(playerid,COLOR_BLUE,"Angegebener User nicht online!");
return 1;
}
if(Dealer[playerid] == 1)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playa,name,sizeof name);
new name2[MAX_PLAYER_NAME];
GetPlayerName(playerid,name2,sizeof name2);
format(form,sizeof form,"Du hast %s %d Drogen gegeben",name,mat);
SendClientMessage(playerid,COLOR_YELLOW,form);
new Float:h;
GetPlayerHealth(playa,h);
SetPlayerHealth(playerid,h+mat);
new form2[100];
format(form2,sizeof form2,"Du hast von %s %d Drogen erhalten",name2,mat);
SendClientMessage(playa,COLOR_YELLOW,form2);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_BLUE,"Du bist kein Dealer");
return 1;
}
}
dcmd_get(playerid, params[])
{
new form[100];
new mat = strval(params);
if(!strlen(params))
{
SendClientMessage(playerid,COLOR_YELLOW,"Verwende: /get [AMMOUNT]");
return 1;
}
if(!PlayerToPoint(5.0,playerid,1958.33, 1343.12, 15.36))//Deine Koords
{
SendClientMessage(playerid,COLOR_RED,"Du bist nicht am Drogen Ort");
return 1;
}
if(Dealer[playerid] == 1)
{
ApplyAnimation(playerid,"DEALER","DEALER_DEAL",4.1,1,1,1,1,1);
mats[playerid] += mat;
//GivePlayerMoney(playerid,-500);
format(form,sizeof form,"Du hast %d Drogen erworben",mat);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Dealer");
return 1;
}}dcmd_job(playerid,params[])
{
new form[100];
new name[MAX_PLAYER_NAME];
new job[100];
if(sscanf(params,"s",job))
{
SendClientMessage(playerid,COLOR_RED,"Verwende: /job [NAME]");
SendClientMessage(playerid,COLOR_YELLOW,"===== JOBS =====");
SendClientMessage(playerid,COLOR_BLUE," Taxifahrer , Arzt , Dealer ");
SendClientMessage(playerid,COLOR_YELLOW,"===== JOBS =====");
return 1;
}
if(strcmp(job,"Taxifahrer",true,strlen(job))==0)
{
Jobs[playerid] = 1;
Taxi[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"***INFO: Du bist nun Taxifahrer");
GetPlayerName(playerid, name, sizeof name);
format(form,sizeof form,"***INFO:%s ist nun Taxifahrer",name);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else if(strcmp(job,"Arzt",true,strlen(job)) ==0)
{
Jobs[playerid] = 1;
Arzt[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"***INFO: Du bist nun Arzt");
GetPlayerName(playerid, name, sizeof name);
format(form,sizeof form,"***INFO:%s ist nun Arzt (Medic)",name);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else if(strcmp(job,"Dealer",true,strlen(job)) ==0)
{
Jobs[playerid] = 1;
Dealer[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"***INFO: Du bist nun Dealer");
GetPlayerName(playerid, name, sizeof name);
format(form,sizeof form,"***INFO:%s ist nun Dealer",name);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Diesen Job gibt es nicht!");
SendClientMessage(playerid,COLOR_BLUE,"Jobs: Taxifahrer , Dealer , Arzt ");
return 1;
}}//Unter OnPlayerSpawn
Dealer[playerid] = 0;
Jobs[playerid] = 0;
Taxi[playerid] = 0;
Arzt[playerid] = 0;
Hoffe,dass alles stimmt,da ich es aus dem Kopf geschrieben habe.
Befehle:
/job - Man kann Taxifahrer,Arzt oder Dealer werden,wird nach dem Tod wieder zurückgestellt
/get - Man kann Drogen erhalten
/deal - Man kann jemanden Drogen geben,um dessen Health zu erhöhen -
Ok.Hier ein kleines Beispiel.
// Ganz Oben
new Jobs[MAX_PLAYERS];
new Taxi[MAX_PLAYERS];
new Dealer[MAX_PLAYERS];
new Arzt[MAX_PLAYERS];
new mats[MAX_PLAYERS];// Unter OnPlayerCommandText
dcmd(job,3,cmdtext);
dcmd(deal,4,cmdtext);
dcmd(get,3,cmdtext);
//Außerhalb eines CallBacks
dcmd_deal(playerid,params[])
{new form[100];
new playa;
new mat;
if(sscanf(params,"dd",playa,mat))
{
SendClientMessage(playerid,COLOR_YELLOW,"Verwende: /deal [ID] [DROGENANZAHL]");
return 1;
}
if(mat > mats[playerid])
{
SendClientMessage(playerid,COLOR_BLUE,"So viele drogen hast du nicht !");
return 1;
}
if(!IsPlayerConnected(playa))
{
SendClientMessage(playerid,COLOR_BLUE,"Angegebener User nicht online!");
return 1;
}
if(Dealer[playerid] == 1)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playa,name,sizeof name);
new name2[MAX_PLAYER_NAME];
GetPlayerName(playerid,name2,sizeof name2);
format(form,sizeof form,"Du hast %s %d Drogen gegeben",name,mat);
SendClientMessage(playerid,COLOR_YELLOW,form);
new Float:h;
GetPlayerHealth(playa,h);
SetPlayerHealth(playerid,h+mat);
new form2[100];
format(form2,sizeof form2,"Du hast von %s %d Drogen erhalten",name2,mat);
SendClientMessage(playa,COLOR_YELLOW,form2);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_BLUE,"Du bist kein Dealer");
return 1;
}
}
dcmd_get(playerid, params[])
{
new form[100];
new mat = strval(params);
if(!strlen(params))
{
SendClientMessage(playerid,COLOR_YELLOW,"Verwende: /get [AMMOUNT]");
return 1;
}
if(!PlayerToPoint(5.0,playerid,1958.33, 1343.12, 15.36))//Deine Koords
{
SendClientMessage(playerid,COLOR_RED,"Du bist nicht am Drogen Ort");
return 1;
}
if(Dealer[playerid] == 1)
{
ApplyAnimation(playerid,"DEALER","DEALER_DEAL",4.1,1,1,1,1,1);
mats[playerid] += mat;
//GivePlayerMoney(playerid,-500);
format(form,sizeof form,"Du hast %d Drogen erworben",mat);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Dealer");
return 1;
}}dcmd_job(playerid,params[])
{
new form[100];
new name[MAX_PLAYER_NAME];
new job[100];
if(sscanf(params,"s",job))
{
SendClientMessage(playerid,COLOR_RED,"Verwende: /job [NAME]");
SendClientMessage(playerid,COLOR_YELLOW,"===== JOBS =====");
SendClientMessage(playerid,COLOR_BLUE," Taxifahrer , Arzt , Dealer ");
SendClientMessage(playerid,COLOR_YELLOW,"===== JOBS =====");
return 1;
}
if(strcmp(job,"Taxifahrer",true,strlen(job))==0)
{
Jobs[playerid] = 1;
Taxi[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"***INFO: Du bist nun Taxifahrer");
GetPlayerName(playerid, name, sizeof name);
format(form,sizeof form,"***INFO:%s ist nun Taxifahrer",name);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else if(strcmp(job,"Arzt",true,strlen(job)) ==0)
{
Jobs[playerid] = 1;
Arzt[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"***INFO: Du bist nun Arzt");
GetPlayerName(playerid, name, sizeof name);
format(form,sizeof form,"***INFO:%s ist nun Arzt (Medic)",name);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else if(strcmp(job,"Dealer",true,strlen(job)) ==0)
{
Jobs[playerid] = 1;
Dealer[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"***INFO: Du bist nun Dealer");
GetPlayerName(playerid, name, sizeof name);
format(form,sizeof form,"***INFO:%s ist nun Dealer",name);
SendClientMessage(playerid,COLOR_BLUE,form);
return 1;
}
else
{
SendClientMessage(playerid,COLOR_RED,"Diesen Job gibt es nicht!");
SendClientMessage(playerid,COLOR_BLUE,"Jobs: Taxifahrer , Dealer , Arzt ");
return 1;
}}//Unter OnPlayerSpawn
Dealer[playerid] = 0;
Jobs[playerid] = 0;
Taxi[playerid] = 0;
Arzt[playerid] = 0;
Hoffe,dass alles stimmt,da ich es aus dem Kopf geschrieben habe.
Befehle:
/job - Man kann Taxifahrer,Arzt oder Dealer werden,wird nach dem Tod wieder zurückgestellt
/get - Man kann Drogen erhalten
/deal - Man kann jemanden Drogen geben,um dessen Health zu erhöhen -
Sollen die Jobs gespeichert werden ( zB mit dini etc. ) oder beim Connecten auf den Server bzw. nach jedem Tod neu ausgesucht werden können?