Gibt es eine Funktion zum Abfragen ob der Spieler eine Taste gedrückt hat, wenn ja dann soll die Ausgespuckt werden?
Beiträge von apoolecu
-
-
Hey,
eine funktion einbauen die, die Sekunden Speichert und ob der Player im Knast ist? Wenn der Spieler auf den Server kommt einfach wieder den Timer aktivieren mit den gespeicherten Sekunden?
-
SAMP Wiki? Schon mal die Funktion SetTimerEx angesehen? True/1 steht für wiederholen setzt das mal auf false somit startest du immer mehr timer das erklärt auch die Zahlen
MfG: Apoolecu
-
destroyVehicle? damit geht es eigentlich?
-
musst nach nem PayDayTimer gucken denke mal das der mit SetTimerEx anfängt
-
So
new Variable[MAX_PLAYERS];
forward RepairVehicle(playerid);if(strcmp(cmdtext,"/repair",true)==0)
{
if(IsPlayerInAnyVehicle(playerid) && Variable[playerid] == 0)
{
SendClientMessage(playerid,Farbe,"Du bist in einem Auto, es wird nun Repariert.");
SetVehicleHealth(GetPlayerVehicleID(playerid),100.0);
RepairVehicle(GetPlayerVehicleID(playerid));
SetTimerEx("RepairVehicle", 1000*5,1, "d", playerid);
Variable[playerid] = 1;
}
else if(Variable[playerid] == 1)
{
SetTimerEx("RepairVehicle", 1000*5,0, "d", playerid);
SendClientMessage(playerid,Farbe,"dein Auto wird nicht mehr Repariert!");
}
}
return 1;
}public RepairVehicle(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
SetVehicleHealth(GetPlayerVehicleID(playerid),100.0);
RepairVehicle(GetPlayerVehicleID(playerid));
}
return 1;
}EDIT: Ausgebessert
-
mach mal mit nem String & Format und dann den String in die SendClientMessage verwenden
-
Zum Reparieren, benutzt du auch diese Funktion? http://wiki.sa-mp.com/wiki/RepairVehicle
-
Speicher es doch einfach in Buchstaben und dann einfach auch so auslesen lassen?
-
ja die For-Schleife raus! Damit gehst du jeden Spieler durch, nehme die Funktion SetTimerEx (http://wiki.sa-mp.com/wiki/SetTimerEx) die tust du dann immer wiederholen ca. alle 5 sekunden (musst in Milisekunden umrechnen) und in der Funktion gibst du vor das das Fahrzeug von dem User (man beachte SetTimerEx ist user bezogen!) reparier wird.
Wenn du willst das du mit /repair das wieder beenden tust baust du noch eine Variable ein, die bei dem ersten /repair auf 1 gesetzt wird und bei zweiten mal auf 0. Du darfst aber nicht die Abfragen vergessen ob du Variable auf 0 oder 1 ist!
-
also du willst das nur das Fahrzeug von dem CMD Nutzer repariert wird und zwar wenn /repair eingegeben wird bis dahin wo man wieder /repair eingibt und es damit aufhört?
-
poste bitte mal die Zeile wo der Skin gesaved werden soll..
-
Wie tust du sie denn wieder verschließen? via CMD? Weil ich habe jetzt das jetzt so verstanden das sie nur bei der Public verschlossen werden, und die wird nur einmal also beim Server start nach meinem Wissen abgerufen...
-
also du willst das nur die Autos von der jeweiligen Fraktion spawnen wo NICHT in nutzung sind?
Wenn ja, dann lass eine For-Schleife durch laufen und dort tust du abfragen wo die Autos in nutzung sind und zu welcher Fraktion sie gehören..MfG: Apoolecu
-
Hey habe den nächsten Fehler und zwar wird dies mal der Dialog irgendwie nicht erstellt, Definiert ist er oben im Script
if(dialogid == DIALOG_GGangC)
{
if(response == 0)
{}
if(response == 1)
{
if(listitem == 0) // Grün
{
Gang[Gangerstellt][gColor] = 0x339933FF;
ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
}
if(listitem == 1) // Rot
{
Gang[Gangerstellt][gColor] = 0xCE000000;
ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
}
if(listitem == 2) // Blau
{
Gang[Gangerstellt][gColor] = 0x0000F600;
ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
}
if(listitem == 3) // Schwarz
{
Gang[Gangerstellt][gColor] = 0x000000;
ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
}
if(listitem == 4) // Gelb
{
Gang[Gangerstellt][gColor] = 0xFFDE00FF;
ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
}
}
}maddin also die Funktion funktioniert jetzt schon
EDIT: Erledigt
-
Hey
wisst ihr wo der Fehler ist?
public IsPlayerInGangZone(playerid)
{
for(new t = 1; t < MAX_GEBIETE; t++)
{
new string[75];
format(string, sizeof(string), "SAP/GangSystem/Zonen/%d.gebiet", t);
if(fexist(string))
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if ((x > Gebiete[t][gminX] && x < Gebiete[t][gmaxX]) && (y > Gebiete[t][gminY] && y < Gebiete[t][gmaxY])){return 1;}
else{return 0;}
}
}}Zeile (4362) : warning 209: function "IsPlayerInGangZone" should return a value
ich finde den wirklich nicht :o
MFG: Apoolecu
-
Hey,
wie meinst du das mit dem Markieren im Befehl /gebietmax, wird ja die GangZone eig. erstellt und die werte aus /gebietmin wird hierbei auch verwendet...
-
EDIT: Bitte löschen
-
Hallo,
via CMD wird bei mir eine GangZone erstellt problem ist nur das die GangZone gar nicht erscheint.
Bei Printf(unten im Code) werden die Werte aber richtig herraus geben. An was kann es liegen?if(strcmp(cmd,"/gebietmin", true) == 0)
{
if(GebietZone[playerid] == 1)
{
new Float:z;
Gebieterstellt ++;
GetPlayerPos(playerid,gangminX,gangminY,z);
ShowPlayerDialog(playerid,DIALOG_GZonenEmi,DIALOG_STYLE_MSGBOX,"Gang System: Zone erstellen","Nun gehe an das untere rechte Ende der Zone.(/gebietmax)","Ok","");
return 1;
}
}
if(strcmp(cmd,"/gebietmax", true) == 0)
{
if(GebietZone[playerid] == 1)
{
new Float:z;
GetPlayerPos(playerid,gangmaxX,gangmaxY,z);
ShowPlayerDialog(playerid,DIALOG_GZonenEmi,DIALOG_STYLE_MSGBOX,"Gang System: Zone erstellen","Zone wurde erstellt","Ok","");
Gebiete[Gebieterstellt][gID] = Gebieterstellt;
GangZoneCreate(gangminX,gangminY,gangmaxX,gangmaxY);
Gebiete[Gebieterstellt][gminX] = gangminX;
Gebiete[Gebieterstellt][gminY] = gangminY;
Gebiete[Gebieterstellt][gmaxX] = gangmaxX;
Gebiete[Gebieterstellt][gmaxY] = gangmaxY;
Gebiete[Gebieterstellt][gGang] = 0;
GangZoneShowForAll(Gebiete[Gebieterstellt][gID],COLOR_WHITE);
printf("Gebieterstellt: %d ID, Float X: %.1f Float Y: %.1f Float X: %.1f Float Y: %.1f",Gebiete[Gebieterstellt][gID],Gebiete[Gebieterstellt][gminX],Gebiete[Gebieterstellt][gminY],Gebiete[Gebieterstellt][gmaxX],Gebiete[Gebieterstellt][gmaxY]);
SpeicherGebiet(Gebieterstellt);
GebietZone[playerid] = 0;
return 1;
}
}MfG: Apoolecu
-
Hallo,
in meinem tacho Script sollte normalerweise der Zustand in I I I I dargestellt werden das wird es auch aber irgendwie nur in rot sprich der niedrigste wert wird wieder gegeben :o
public TachoTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
{
new Float:Entfernung, Float:Geschwindigkeit;// Die definierten Floats die mit den Werten gefüttert werden
GetVehiclePos(GetPlayerVehicleID(i), X1[i], Y1[i], Z1[i]); //Erste Koordinate wird genommen
Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i], X2[i])), 2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2)); //Berechnung der Entfernung
CarInfo[GetPlayerVehicleID(i)][aMeter] += Entfernung;
MeterCar[i] +=Entfernung;
Geschwindigkeit = (Entfernung / (TACHOTIMER/1000)) * 3.6; //Meter/Sekunde in Kilometer/Stunde
new Tachostring[125], Float:CarHealth;
GetVehicleHealth(GetPlayerVehicleID(i), CarHealth);
CarInfo[GetPlayerVehicleID(i)][aZustand] = CarHealth;
if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) >=900.0)
{
format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~g~I I I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
TextDrawSetString(Tacho[i], Tachostring);
}
if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) >=750.0)
{
format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~r~I~g~I I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
TextDrawSetString(Tacho[i], Tachostring);
}
if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) >=500.0)
{
format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~r~I I~g~I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
TextDrawSetString(Tacho[i], Tachostring);
}
if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) <=499.0)
{
format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~r~I I I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
TextDrawSetString(Tacho[i], Tachostring);
}
GetVehiclePos(GetPlayerVehicleID(i), X2[i], Y2[i], Z2[i]); //Zweite Koordinate wird genommen
TextDrawShowForPlayer(i, Tacho[i]);
CarInfo[GetPlayerVehicleID(i)][aKM] = MeterCar[i]/500;
CheckKM(GetPlayerVehicleID(i),i);
}
else if(!IsPlayerInAnyVehicle(i))
{
TextDrawHideForPlayer(i, Tacho[i]);
}
}
return 1;
}