Habe 64 Bit OS, naja gta hängt sich auf wenn ich auf die Karte gehe, einige treiber gehen nicht mehr ich halte es nich unbedingt für sinnvoll
Beiträge von samu
-
-
PROBLEM GELÖST :):):)
-
// GELÖSCHT
So aktueller Stand:
public Tacho()
{
printf("Timer work ...");
for(new i = 0; i < MAX_PLAYERS; i++)
{
new statee = GetPlayerState(i);
if(IsPlayerInAnyVehicle(i) && statee == PLAYER_STATE_DRIVER)
{
new car = GetPlayerVehicleID(i);
new Float:CarHealth;
GetVehicleHealth(car, CarHealth);
new string[30];
if(CarHealth == 1000)
{
format(string, sizeof(string),"Zustand: ~g~unbeschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 950 )
{
format(string, sizeof(string),"Zustand: ~y~leicht beschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 700 )
{
format(string, sizeof(string),"Zustand: ~y~beschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 500 )
{
format(string, sizeof(string),"Zustand: ~r~stark beschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 300 )
{
format(string, sizeof(string),"Zustand: ~r~Motorschaden");
TextDrawSetString(canzeige, string);
}
if(JobInfo[i][Hjob] == 5 && JobInfo[i][Jobactive] == 1)
{
return 1;
}
else
{
new Float:x, Float:y, Float:z;
GetPlayerPos(i, x, y, z);
CreateExplosion(x, y, z, 12, 3.0);
TogglePlayerControllable(i, 0);
GameTextForPlayer(i,"Du bist eingeklemmt!~n~Die ~r~Feuerwehr kann dich befreien.", 4000, 5);
}
}
}
return 1;
}Ich versteh es einfach nich, hab einen simplen Timer gemacht der bei OnGameModeInit startet, am Anfang ne for schleife rein, aber nie geht das, wenn ich normal playerid verwende gehts, warum funktioniert das nicht
-
thx!
-
jo stimmt bessere idee, da muss man nich soviele textdraws erstellen, wo bekomme ich den einen guten Textdraweditor her?
-
umständlich Oo
aber danke für die Antwort ich probiers gleich mal aus
-
Oo meinste mit Streifen einfach viele "|" hintereinander?
-
Aber mit einer Box is ja nich viel getan was muss da dann noch rein?
-
Job, genau sowas, hab das bei anderen servern schon gesehen
-
Hi,
habe Wiki etc. schon durchsucht, aber ich finde nicht die Codes für diese Statusleisten, die z.B. am Anfang wenn SA-Mp läd kommt, die den Ladevorgang anzeigt. Hoffe ihr wisst was ich meine
Gruß
samu -
mit Gimp geht das, das Prog is freeware
-
aso, ok jettz versteh ich das Problem
Wie muss die for schleife dann genau aussehen?
EDIT: Habe das ganze jetzt umgeschrieben, der Timer Tacho wird bei OnGameModeinit() erstellt:
public Tacho()
{
for(new playerid = 0; playerid < MAX_PLAYERS; playerid ++)
{
if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
{
new car = GetPlayerVehicleID(playerid);
new Float:CarHealth;
GetVehicleHealth(car, CarHealth);
new string[30];
if(CarHealth == 1000)
{
format(string, sizeof(string),"Zustand: unbeschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 950 )
{
format(string, sizeof(string),"Zustand: leicht beschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 700 )
{
format(string, sizeof(string),"Zustand: beschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 500 )
{
format(string, sizeof(string),"Zustand: stark beschaedigt");
TextDrawSetString(Tachoanzeige, string);
}
if(CarHealth <= 300 )
{
format(string, sizeof(string),"Zustand: Motorschaden");
TextDrawSetString(Tachoanzeige, string);
}
if(JobInfo[playerid][Hjob] == 5 && JobInfo[playerid][Jobactive] == 1)
{
return 1;
}
else
{
TogglePlayerControllable(playerid, 0);
GameTextForPlayer(playerid,"Du bist eingeklemmt!~n~Die ~r~Feuerwehr kann dich befreien.", 4000, 5);
}
}
}
return 1;
}OnGameModeInit:
Tachotimer = SetTimer("Tacho", 1000, true);
Funktionieren tut garnichts, Ig wird kein string an das Textdraw gesendet
-
Hi,
ich habe ein Problem mit einem Timer, und zwar wenn der Spieler in den Wagen einsteigt, startet ein Timer mit Intervall 1 Sekunden der Carhealth überprüft. Wenn die dann unter 300 ist soll der Spieler eingeklemmt sein, also TogglePlayerControllable(playerid, 0). Das Funktioniert soweit auch, nur habe ich folgendes Problem:
Wenn ich in ein Fahrzeug einsteige, danach wieder raus gehe und ein anderer User steigt ein, dann kommt bei mir die Meldung das ich eingeklemmt wäre, das passiert auch umgekehrt.
Ich hab alles versucht den TImer zu löschen sobald ich aus dem Fahrzeug austeige:Bei OnPlayerStateChange(playerid):
if(newstate == 2)
{
if(CarInfo[carid][tankaktuell] == 0)
{
SendClientMessage(playerid, ORANGE, "Der Tank ist leer! Du musst den Pannendienst rufen.");
SendClientMessage(playerid, ORANGE, "Tippe /exit um wieder auszusteigen!");
TogglePlayerControllable(playerid, 0);
}
else
{
Tanktimer = SetTimer("Tankanzeigetimer", 1000, true);
TextDrawShowForPlayer(playerid, Tankanzeige);
Tankfunktionstimer = SetTimer("Tankfunktion", 100000, true);
//Geschwindigkeitstimer = SetTimer("Geschwindigkeitstimer2", 1000, true);
//TextDrawShowForPlayer(playerid, Geschwindigkeit);
}
if(CarInfo[carid][carshealth] <= 300)
{
SendClientMessage(playerid, ORANGE, "Dein Wagen hat einen Motorschaden! Du musst den Pannendienst rufen.");
SendClientMessage(playerid, ORANGE, "Tippe /exit um wieder auszusteigen!");
TogglePlayerControllable(playerid, 0);
return 1;
}
else
{
Tachotimer = SetTimer("Tacho", 1000, true);
TextDrawShowForPlayer(playerid, Tachoanzeige);
}
}Dann beim Aussteigen:
if(newstate == 1)
{
TextDrawHideForPlayer(playerid, Tachoanzeige);
TextDrawHideForPlayer(playerid, Tankanzeige);
KillTimer(Tachotimer);
KillTimer(Tanktimer);
KillTimer(Tankfunktionstimer);;
}Zur Sicherheit habe ich bei OnPlayerExitVehicle das "KillTimer(Tachotimer)" nochmal rein aber das problem tritt immer wieder auf
Hoffe mir kann jemand helfen!Gruß samu
-
wow, die idee haste echt super umgesetzt
10/10 !!
-
nee immernoch
-
habe jetzt mal zum Test das in den Cmd "/waffen" eingebaut:
if(strcmp(cmd, "/waffen", true) == 0)
{
new weapons[13][2];
new msg[256];
for (new i = 0; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
//zur Kontrolle ob es richtig ausgelesen hat
if(weapons[i][0] != 0 && weapons[i][1] != 0)
{
new waffenname[32];
GetWeaponName(weapons[i][0],waffenname,sizeof(waffenname));
format(msg,sizeof(msg),"Du hast eine %s mit %d Schuss", waffenname, weapons[i][1]);
SendClientMessage(playerid, YELLOW, msg);
JobInfo[playerid][Waffe] = weapons;
JobUpdate(playerid);
}
}
return 1;
}Nur dann kommt der Error "must be assigned to an array"
Die Zeile: JobInfo[playerid][Waffe] = weapons; -
Hi,
habe ein Problem mit meinem /login! Wenn ich /login [PW] eingebe werden aus der Userdatei die Koords. geladen und ich spawne auch perfekt da, nur wenn ich dann einmal sterbe muss ich erst SHIFT drücken (Dieser Classauswahl was weiß ich was das ist und das Samp Logo erscheint dann unten) erst danach spawne ich wie gewohnt am Krankenhaus
Das habe ich bei RequestClass drin, erst nachdem man eingeloggt ist spawnt man:
if (fexist(string) && AccountInfo[playerid][Logged] == 0)
{
return 0;
}... und das hier ist bei /login [PW]:
if (strcmp(cmd, "/login", true) == 0)
{
new tmppass[128];
if(AccountInfo[playerid][Logged] == 1) return SendClientMessage(playerid, RED, "Du bist schon eingeloggt!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "Benutze: /login [Passwort]");
new plname[MAX_PLAYER_NAME];
GetPlayerName(playerid, plname, sizeof(plname));
format(string, sizeof(string), "/sAccounts/%s.seifadmin", plname);
if(!fexist(string)) return SendClientMessage(playerid, RED, "Dieser Account ist nicht registriert! /register [Passwort]");
strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
SetSpawnInfo(playerid, 0, 0, 1685.529663, -2331.233154, 13.546875, 0.0, 0, -1, -1, -1, -1, -1);
SpawnPlayer(playerid);
//KillTimer(Loginspawn)
OnPlayerLogin(playerid, MD5_Hash(tmppass));
return 1;
}
return 0;
}// In OnPlayerLogin werden dann die Daten aus der Datei geladen und falls Koords. gespeichert sind spawnt man da, nur halt anch dem 1. Kill erscheitn die skinauswahl, danach nich mehr
Gruß samu
-
habs jetzt ma eingebaut, nur leider kommt da nich mal die Meldung die den String ausliest
-
das heißt ich müsste dann "weapons" in der Datei speichern oder?
-
Hi,
habe ein Problem mit dem speichern von Waffen. Sobald man mit /job in Dienst geht startet der Timer Weapons(playerid) und sollte die Waffen in strings speichern ...
public Weapons(playerid)
{
GetPlayerWeaponData(playerid, 0, JobInfo[playerid][Weapon1], JobInfo[playerid][Ammo1]);
GetPlayerWeaponData(playerid, 1, JobInfo[playerid][Weapon2], JobInfo[playerid][Ammo2]);
GetPlayerWeaponData(playerid, 2, JobInfo[playerid][Weapon3], JobInfo[playerid][Ammo3]);
GetPlayerWeaponData(playerid, 3, JobInfo[playerid][Weapon4], JobInfo[playerid][Ammo4]);
GetPlayerWeaponData(playerid, 4, JobInfo[playerid][Weapon5], JobInfo[playerid][Ammo5]);
GetPlayerWeaponData(playerid, 5, JobInfo[playerid][Weapon6], JobInfo[playerid][Ammo6]);
GetPlayerWeaponData(playerid, 6, JobInfo[playerid][Weapon7], JobInfo[playerid][Ammo7]);
GetPlayerWeaponData(playerid, 7, JobInfo[playerid][Weapon8], JobInfo[playerid][Ammo8]);
GetPlayerWeaponData(playerid, 8, JobInfo[playerid][Weapon9], JobInfo[playerid][Ammo9]);
GetPlayerWeaponData(playerid, 9, JobInfo[playerid][Weapon10], JobInfo[playerid][Ammo10]);
JobUpdate(playerid);
return 1;
}Ich habe mir auch mal per SendClientMessage die Strings auslesen lassen, alle zeigen 0 an obwohl ich die 9 mm Pistole hatte ..
hat jmd ne Idee?Gruß samu