Beiträge von Kaliber
-
-
er muss man dass spezifisch für den Spieler machen? Weil so kann man ja nur 1 Fahrzeug darin speichern oder ?
Ja, wenn du es für Spieler machen willst, musst du dies in einem Array speichern:new p_veh[MAX_PLAYERS]; //oben ins Skript
//Im erstell command
if(p_veh[playerid]) return SendClientMessage(playerid,-1,"Du besitzt schon ein Fahrzeug!");
p_veh[playerid] = CreateVehicle(...);//Beim zerstören:
DestroyVehicle(p_veh[playerid]);
p_veh[playerid] = 0;mfg.

-
da müsste eig.. dein Problem gelöst sein

...was sollte damit gelöst sein, außer dass der Code langsamer ist als zuvor?!
Der Fehler den Pickachu macht ist, dass er eine playerid übergibt und dann eine Schleife durch alle Spieler macht...Sinn?

Schreib das mal so:
forward CheckTacho();
public CheckTacho()
{
new string[512],Float:vHealth;
for(new i;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i) || !IsPlayerInAnyVehicle(i))continue;
new vehicleid = GetPlayerVehicleID(i), modelid = GetVehicleModel(vehicleid);
GetVehicleHealth(vehicleid,vHealth);
format(string,sizeof string,"%d",GetPlayerSpeed(i));
PlayerTextDrawSetString(i,CarSpeed[i],string);
format(string,sizeof string,"Zustand: ~g~%i",floatround(vHealth, floatround_round)/10);
PlayerTextDrawSetString(i,Textzustand[i],string);
if(tuer[vehicleid] == false)
{
if(floatround(vHealth, floatround_round)/10 < 30) format(string,sizeof string,"Fahrzeug: ~g~%s~n~~w~Tueren: ~g~Offen~w~~n~Zustand: ~r~%d ~w~Prozent",PlayerVehicle[modelid - 400], floatround(vHealth, floatround_round)/10);
else if(floatround(vHealth, floatround_round)/10 < 50) format(string,sizeof string,"Fahrzeug: ~g~%s~n~~w~Tueren: ~g~Offen~w~~n~Zustand: ~y~%d ~w~Prozent",PlayerVehicle[modelid - 400],floatround(vHealth, floatround_round)/10);
else if(floatround(vHealth, floatround_round)/10 <= 100) format(string,sizeof string,"Fahrzeug: ~g~%s~n~~w~Tueren: ~g~Offen~w~~n~Zustand: ~g~%d ~w~Prozent",PlayerVehicle[modelid - 400],floatround(vHealth, floatround_round)/10);
PlayerTextDrawSetString(i,CarFahrzeug[i],string);
}
else if(tuer[vehicleid] == true)
{
if(floatround(vHealth, floatround_round)/10 < 30) format(string,sizeof string,"Fahrzeug: ~g~%s~n~~w~Tueren: ~r~Geschlossen~w~~n~Zustand: ~r~%d ~w~Prozent",PlayerVehicle[modelid - 400], floatround(vHealth, floatround_round)/10);
else if(floatround(vHealth, floatround_round)/10 < 50) format(string,sizeof string,"Fahrzeug: ~g~%s~n~~w~Tueren: ~r~Geschlossen~w~~n~Zustand: ~y~%d ~w~Prozent",PlayerVehicle[modelid - 400],floatround(vHealth, floatround_round)/10);
else if(floatround(vHealth, floatround_round)/10 <= 100) format(string,sizeof string,"Fahrzeug: ~g~%s~n~~w~Tueren: ~r~Geschlossen~w~~n~Zustand: ~g~%d ~w~Prozent",PlayerVehicle[modelid - 400],floatround(vHealth, floatround_round)/10);
PlayerTextDrawSetString(i,CarFahrzeug[i],string);
}
}
return 1;
}mfg.

-
Versuch es mal so:
int[] VAR_XY = new int[Player.get()];
-
Wirklich viel einfacher ... so einfach,dass es sogar 1 Fehler enthält
Joa..so:
int[] VAR_XY = new int[online.length];Mit dem einfacher meinte ich nicht direkt die Syntax, sondern die variablen cells...

-
oder winkt er durchgehend?
Wenn du es richtig machst, winkt er durchgehend...
-
Wenn man alle irrelevante Sachen streicht, schreibst du:
"Ich suche ein System, was könnt ihr mir empfehlen?"
...kommen dir da nicht selbst ein paar Fragen auf?

Wie z.B. für was ist dieses System gedacht...was sollte dieses System beinhalten..worum geht es eigentlich?!

-
ist es bei Java genauso einfach wie bei SA:MP Variablen "zeitweise" für jeden Nutzer zu speichern?
Es ist sogar noch viel einfacher
Player[] online = Bukkit.getServer().getOnlinePlayers();
String[] VAR_XY = new String[online.length];VAR_XY[playerid] = 1;
mfg.

-
Wird mir es so angezeigt
Poste mal deinen SetTimer?!
-
if(!IsPlayerConnected(i)
!isEingeloggt(i)) continue;
Da ich im anderen Thread gesehen habe, wie du es machst, muss es bei dir so heißen:if(!IsPlayerConnected(i) || !SpielerInfo[i][pEingeloggt]) continue;
mfg.

-
Was sagt n der MySQL-Log?

-
Ist das der richtige den du haben willst
Nein...suche mal nach INSERT INTO
-
Dann zeig uns evtl mal deinen Code...oder sollen wir jetzt raten?

-
Kaliber:
Wird die Zeit auch mitgezählt wenn man im Login bereich ist
Momentan ja...aber du hast bestimmt eine Variable die prüft ob man eingeloggt ist oder nicht...und beim Timer schreibst du dann hin:
if(!IsPlayerConnected(i) || !IsLoggedIn[i]) continue;
mfg.

-
Entschuldigung das ich so blöd frage. Aber wie muss ich das machen
Die solltest dich echt erstmal mit den Basics einer Programmier-Sprache auseinander setzen
stock PayDay(playerid)
{
SpielerInfo[playerid][pRespekt]++; //Hier bekommt er 1nen Respekt Punkt
if(IsVIP(playerid)) SpielerInfo[playerid][pRespekt]++; //Wenn er VIP ist bekommt er noch einen Respekt Punkt
//Hier dein Zins-System:
new Float:zinsen;
if(kein Haus && kein VIP) zinsen = 0.05;
else if(Haus && kein VIP) zinsen = 0.08;
else if(Haus && VIP) zinsen = 0.1;
Bankkonto += Bankkonto * zinsen;
//Die Nachrichten für den PayDay sollteng genau hier hin..(damit man unten doch mit return arbeiten kann)//Einfach unten dran das Level System:
new level = GetPlayerScore(playerid);
if(SpielerInfo[playerid][pRespekt] < level*4) return 1;
if(GetPlayerMoney(playerid) < level*5000) return SCM(playerid,-1,"Sie brauchen mehr Geld für das LevelUp"); //Hier hat er zu wenig Geld (pro Level 5000..sprich level 1 = 5.000$...level 2 = 10.000$...level 3 = 15.000$)
//Dann hier paar Messages
GivePlayerMoney(playerid,-(level*5000)); //Hier auch das Geld für das Level abziehen..
GivePlayerMoeny(playerid,500); //Hier z.B. 500$ für LevelUp
SetPlayerScore(playerid, level+1); //Hier level up
SpielerInfo[playerid][pRespekt] = 0; //Hier wieder Resetten
return 1;
}mfg.

-
Sondern wenn man 4/4 Respektpunkten hat. Etwas Geld bekommt und Level 1 hoch
Natürlich, dann füge die if-Abfragen unter der PayDay Funktion ein... (aber da kein return verwenden)
-
Das tuhe ich bereits mit PayDayZeit
Dann ersetze in meinem System pPunkte durch PayDayTimer...Wenn du richtig liest, sind das eh alles nur fiktive Namen um dir das zu verdeutlichen

-
Okay. Mein kleines Problem ist. Wie mache ich das mit den Levelpunkten(Respektpunkten) und pro Level 2 mehr?
Naja, denk einfach mal nach auf welche Werte sich diese Respektpunkte beziehen, nämlich auf Geld und Level.enum spieler //Hier dein Spieler-Enum
{
pRespekt, //Einfach mal Hier rein
pPunkte, //Das auch einfach mal hier rein
}
new SpielerInfo[MAX_PLAYERS][spieler]; //Ich nenne deine Variable mal SpielerInfo zur Verdeutlichung//Timer
SetTimer("Server_Timer",1000*60,1);forward Server_Timer(); //Wird jede Minute aufgerufen
public Server_Timer()
{
for(new i; i<MAX_PLAYERS; i++) //Die Schleife geht alle Spieler durch
{
if(!IsPlayerConnected(i)) continue; //Wer nicht online ist, kann übersprungen werden
SpielerInfo[i][pPunkte]++;
if(SpielerInfo[i][pPunkte] != 60) continue;//Wenn noch keine Stunde online war..gehts weiter
PayDay(i); //Hier gibts dann einen PayDay
SpielerInfo[i][pPunkte] = 0; //Wieder die Zeit auf 0 setezn
}
return 1;
}stock PayDay(playerid)
{
SpielerInfo[playerid][pRespekt]++; //Hier bekommt er 1nen Respekt Punkt
if(IsVIP(playerid)) SpielerInfo[playerid][pRespekt]++; //Wenn er VIP ist bekommt er noch einen Respekt Punkt
//Hier dein Zins-System:
new Float:zinsen;
if(kein Haus && kein VIP) zinsen = 0.05;
else if(Haus && kein VIP) zinsen = 0.08;
else if(Haus && VIP) zinsen = 0.1;
Bankkonto += Bankkonto * zinsen;
return 1;
}//Und dann unter deinem BuyLevel Command:
new level = GetPlayerScore(playerid);
if(SpielerInfo[playerid][pRespekt] < level*4) return SCM(playerid,-1,"Sie haben nicht genügend Respektpunkte!"); //Hier hat er nicht genug Respektpunkte (pro Level 4..sprich level 1 = 4..level 2 = 8..level 3 = 12)
if(GetPlayerMoney(playerid) < level*5000) return SCM(playerid,-1,"Sie besitzen zu wenig Geld!"); //Hier hat er zu wenig Geld (pro Level 5000..sprich level 1 = 5.000$...level 2 = 10.000$...level 3 = 15.000$)
//Dann hier paar Messages
SetPlayerScore(playerid, level+1); //Hier level up
SpielerInfo[playerid][pRespekt] = 0; //Hier wieder ResettenHoffe das hilft dir ein wenig

-
ch möchte das ihr mir zeigt wie man sowas anfertigt. Das ich dies auch bald alleine kann.
Genau deshalb schaut man mal nach Tutorials..die einem Zeigen wie soetwas funktioniert![ SCRIPTING ] Individuellen Payday Scripten [Updated]
[ SCRIPTING ] Individuellen Payday
http://gta-sa-mp.de/forum/3-sa…257-individuellen-payday/Kaliber: Ich kapier von deinem Code garnix.
Das sollte dich beunruhigen
-
Ich finde es echt hilfsbereit wenn ihr mir helft ein individuelles PayDay System zu machen.
Was erwartest du jetzt von uns?
Wir können dir schlecht helfen, da wir überhaupt nicht wissen, wie du deine Spieler speicherst, wie weit du mit deinem System schon bist...?!

Desweiteren, google doch mal nach individuellem PayDay, dann weißt du schonmal so grob wie du das alles zu erstellen hast (Timer + Callback + Variablen)...und das mit dem Zinssystem ist doch nur eine simple if-Abfrage:
new Float:zinsen;
if(kein Haus && kein VIP) zinsen = 0.05;
else if(Haus && kein VIP) zinsen = 0.08;
else if(Haus && VIP) zinsen = 0.1;
Bankkonto += Bankkonto * zinsen;mfg.
