Ich weiß aber nicht wie ich den Wert vom Befehl abrufe um ihn dann unten bei OnPlayerKeyStateChange wieder einfüge.
Speichere die Werte bei dem Befehl in "float"-Variablen ab und lasse sie dann abrufen..
Ich weiß aber nicht wie ich den Wert vom Befehl abrufe um ihn dann unten bei OnPlayerKeyStateChange wieder einfüge.
Speichere die Werte bei dem Befehl in "float"-Variablen ab und lasse sie dann abrufen..
Und was geht davon nicht?
Poste auch mal bitte den Code, wo du die Funktion verwendest!
@FerienFreak: Was kommt denn dort genau?
PS: Verwendest du in deinem Script die Include "water"? -> Wenn nicht, entferne sie aus dem Script und teste es dann!
//Edit: Die Waterinclude wird in der neueren Version nicht mehr benötigt..
@|Prototype|: Habe es jetzt mit MapAndreas versucht..
Habe es jetzt so:
new keys, ud, lr;
GetPlayerKeys(playerid, keys, ud, lr);
if(IsPlayerInAnyVehicle(playerid))
{
new vehicle = GetPlayerVehicleID(playerid);
new Float:x,Float:y,Float:z; GetVehiclePos(vehicle,x,y,z);
new Float:_z = GetPointZPos(x,y), Float:difference = _z - z,Float:half_speed = (VehSpeed[GetVehicleModel(vehicle)] / 2);
if(keys & KEY_UP){
if(GetVehicleSpeed(vehicle) > float(VehSpeed[GetVehicleModel(vehicle)]))return SetVehicleSpeed(vehicle,float(VehSpeed[GetVehicleModel(vehicle)]));
printf("difference: %f",difference); // durchgehen bei -0.7xxxxxx
if(difference <= -0.8){
printf("aufgerufen!");
if(GetVehicleSpeed(vehicle) >= half_speed && GetVehicleSpeed(vehicle) < VehSpeed[GetVehicleModel(vehicle)])SetVehicleSpeed(vehicle,float(GetVehicleSpeed(vehicle) +10));
}
}
}
Jedoch wird der Text "difference: xxxxxx" nur ziemlich selten aufgerufen, obwohl ich durchgehen fahre, und auch durchgehend die Beschleunigungstaste für paar Sekunden drücke, um es zu testen..
Und wenn es aufgerufen wird mit dem Text "diferrence", dann stoppt es bei der Abfrage "difference <= -0.8", obwohl die z-Koord durchgehend bei -0.7xxxx liegt..
Die Funktion Vehspeed ist eine Funktion, bei der die maximalen Fahrzeuggeschwindigkeiten sind, und das klappt auch wunderbar, "half_speed" liegt bei 130, und das ist auch richtig.. Der Infernus fährt trotzdem nur 209, anstatt 260..
Woran kann das liegen?
2.
Wie kann ich eine "Where"-Funktion machen, ohne MySQL?
Habe schonmal bisl was versucht, jedoch ist nur Müll rausgekommen
Habs gerade so..
stock Where(func[]){
new dir:dHandle = dir_open("./scriptfiles/Accounts/");
new item[40], type,datei[20];
while(dir_list(dHandle, item, type))
{
if(type == FM_FILE)
{
format(datei,20,"/Accounts/%s",item);
}
}
return dir_close(dHandle);
}
Kann mir da jemand weiterhelfen?
Die Funktion ist dafür da, bei allen Spielern eine bestimmte Information aus deren Spielerdatei herauszufinden, ohne MySQL..
Danke im Voraus!
//Edit: Und wo soll ich die Objekte ertfernen lassen? ( damit das Game nicht crasht oder aufhängt )
Hey,
versuche es mal so:
dcmd_benutzerdurchsuchen(playerid,params[])
{
new Suchbegriff[32], dir:ordner= dir_open(".scriptfiles/Accounts/"), type, item[40], string[256];
if(sscanf(params,"s", Suchbegriff))return SendClientMessage(playerid,COLOR_RED,"Benutze: /benutzerdurchsuchen[Suchbegriff (bitte nur ein Wort!)]");
while(dir_list(ordner, item, type))
{
if(type == FM_FILE)
{
if(strfind(item,Suchbegriff, true))
{
SendClientMessage(playerid,-1,"Okay!"); // Um zu testen, ob es klappt!
//Hier musst du je nach Speichermethode vorgehen!
}
}
}
return dir_close(ordner);
}
Und noch eine Frage, welche Speichermethode benutzt du?
So, habe nun die Bugs gefixxt ( sollte! )..
Falls(!) noch Bugs gefunden werden, bitte darunterschreiben!
Ich wollte eig in dem Update noch alles dynamisch ( inGame einstellbar ) machen, jedoch habe ich gerade keine Zeit, wollte aber auf jedenfall die Bugs fixxen!
Das Update wird aber im Laufe der Woche folgen ( falls ich Zeit habe )!
//Edit: Vergessen, den Anti-Flyhack zu fixxen .. Tue das eben noch
Davon hast du mir nichts erzählt..
Aber bevor ich das AntiCheat released habe, habe ich es getestet, alles hat geklappt, jedoch sind anscheinend doch einige Bugs noch da..
Du hast das AntiCheat jedoch auch editiert, wodurch du auch einige unnoetige Variablen setzt.. Werde mich demnächst auf jedenfall wenigstens an die Buggs setzen!
Bitte schreibt mir alle Buggs per PN, oder in den Thread, damit ich sie fixxen kann..
//Ich habe dir schon vor paar Tagen per PN geschrieben, erhoehe die "MAX_PLAYERSPEED" um ca 20.. (werde ich auch editieren)
Das AntiCheat nimmt nur Waffen an, die mit "GivePlayerMoneyEx" gegeben werden.. ( werde eine Ausnahme bei Fallschirmen machen )
Zu dem Health-/Armourhack: Werde es earbeiten, weiß glaube, worans liegt!
Teleporthack: Wirst du dort weit teleportiert?
IPrototypeI: Danke dir!
Jedoch habe ich mit MapAndreas noch nie gearbeitet.. Könntest du mir vlt erklären, wie ich das mit MapAndreas mache?
Wäre sehr nett.. Danke im Voraus!
Push!
Moeglich?
Hey,
kann man die Objekt-ID + die ID des standard Objektes ( wie bei "GetVehicleID" oder so ) herausfinden?
Beispiel:
411 - Infernus
241 - Vehicle-Id
Nur so bei den standard Objekten
Und kann man machen, dass wenn ein Fahrzeug einen Berg runterfährt, dass der dann keinen Speedboost benutzen kann?
Hey,
kann man die Objekt-ID + die ID des standard Objektes ( wie bei "GetVehicleID" oder so ) herausfinden?
Beispiel:
411 - Infernus
241 - Vehicle-Id
Nur so bei den standard Objekten
1. Das hier ist nicht LoG!
2. Selber mal googlen, da findeste tausende
http://www.gtavision.com/?section=downloads&site=cat&id=7
http://www.gtainside.com/en/download.php?do=cat&id=138
Ja das ist mir klar, aber wie kann ich die Zeit denn auf 0 setzten oder sowas damit der Text verschwindet ?
Setz seine "ChatBubble" einfach auf einen leeren String, sprich einfach nur zweimal " anstatt "Spawnschutz"
So hier:
SetPlayerChatBubble(playerid,"", 0xc1c1c1FF, 10.0, 1000);
//Handy
Hey,
versuchs mal so:
SetPlayerChatBubble(playerid," Spawnschutz", 0xc1c1c1FF, 10.0, 1000*30);
Du musst ja einen String ( Text ) angeben
Um in SAMP ein "%" auszugeben, musst du im Script "%%" anstatt "%" verwenden.
Siehe hier!
//Edit: Hier das Beispiel:
new string[35];
format(string,sizeof(string),"43%s of my shirts are black.","%%");
SendClientMessage(playerid,0xFFFFFAA,string);
Lass mich Raten, du benutzt bei OnPlayerConnect -> RemovePlayerBuildings richtig?
Wenn ja ist das dein Fehler, denn der SAMP-Client versucht die Objekte zu Entfernen die garnicht mehr Vorhanden sind, und somit Crasht/Hängt sich dein Spiel auf.
Ohh
Danke dir!
//Edit: Wo könnte ich es sonst hinmachen?
Hatte eben mehrere Ideen, jedoch wird es so nicht funktionieren..
Erhälst du auch davor Error Codes ?
Nein..
Wenn ich den Server restarte, und der Server dann geladen hat ( also bevor die Login/Register Textdraws kommen ), hängt es sich auf oder crasht.
Hey,
habe ein Problem mit meinem SAMP.
Jedes mal, wenn ich das 3. mal meinen Server restarte, und jedes mal mein GTA nicht ausgemacht habe, crasht es, oder es hängt sich auf.
Sprich:
Zum Server connected -> Serverrestart -> auf dem Server iwas machen -> Serverrestart -> auf dem Server iwas machen -> Serverrestart -> GTA crasht/hängt sich auf
Das ist auch bei anderen Servern so, die Textdraws beim Login / Register haben.
Liegt also an den Textdraws, nur wieso?
Danke im Voraus!
Ich hoffe, es ist wenigstens verständlich erklärt..
new s_waffe[MAX_PLAYERS][46][2];
public GivePlayerWeaponEx(playerid,Gun,Muni){
s_waffe[playerid][Gun][0] = Muni - GunAmmo(Gun), // Hier wird dem Spieler die Munition und die Waffe zugewiesen, dabei wird von der Munition die "Munition im Magazin" abgezogen.
s_waffe[playerid][Gun][1] = GunAmmo(Gun); // Hier wird das Magazin der Waffe vollgesetzt
return GivePlayerWeapon(playerid,Gun,5000); // Hier wird dem Spieler die Waffe mit 5000 Schuss gegeben. Die 5000 Schuss sind egal, da die Munition ja Serverside gespeichert wurde
}
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
s_waffe[playerid][weaponid][1] --; // Hier wird der Waffe ein Schuss abgezogen
if(s_waffe[playerid][weaponid][0] <= 0 && s_waffe[playerid][weaponid][1] <= 0)RemovePlayerWeapon(playerid,weaponid); // Hier wird nachgefragt, ob die Waffe noch Munition (im Magazin) hat, wenn nicht, wird die Waffe entzogen.
else if(s_waffe[playerid][weaponid][1] <= 0)Nachladen(playerid,weaponid); // Hier wird abgefragt, ob die Waffe noch Munition im Magazin hat, wenn nicht, dann wird nachgeladen.
}
stock Nachladen(playerid,weaponid){
new time;
switch(weaponid){
case 22..24,26..32,37,38,41,42:time = 3;// Hier wird die Nachladezeit in die Variable gesetzt
default:time = 1; // Hier wird die Nachladezeit in die Variable gesetzt
}
SetPlayerAmmo(playerid,weaponid,5000); //Hier wird die Munition wieder auf 5000 gesetzt, da es ja eig egal ist, da die Muni Serverside gespeichert wird
SetPlayerArmedWeapon(playerid,0),SetPlayerArmedWeapon(playerid,weaponid); // Hier wird seine ausgerüstete Waffe zur Faust, und dann wieder zu der richtigen Waffe gesetzt ( das klappt leider nicht )
return SetTimerEx("_nl",200,false,"iii",playerid,time,weaponid);
}
pub _nl(playerid,time,weaponid){
s_waffe[playerid][GetPlayerWeapon(playerid)][1] = GunAmmo(GetPlayerWeapon(playerid)), // Hier wird das Magazin wieder vollgesetzt
s_waffe[playerid][GetPlayerWeapon(playerid)][0] -= GunAmmo(GetPlayerWeapon(playerid)); // Hier werden die Schüsse der Waffe um die Anzahl der Magazin-Schüsse "verkleinert"
return ApplyAnimation(playerid,"BUDDY","buddy_reload",1.0,0,1,1,0,888*time,1); // Hier wird die Animation "nachladen" für die bestimmte Nachlade-Zeit abgespielt.
}
stock GunAmmo(weaponid){ // Hier werden die Anzahl der Schüsse im Magazin festgelegt
new muni;
switch(weaponid){
case 22:muni = 34;
case 23:muni = 17;
case 24:muni = 7;
case 26:muni = 2;
case 27:muni = 7;
case 28:muni = 100;
case 29:muni = 30;
case 30:muni = 30;
case 31:muni = 50;
case 32:muni = 100;
case 37:muni = 100;
case 38:muni = 500;
case 41:muni = 200;
case 42:muni = 100;
default:muni = 1;
}
return muni;
}
stock FireWeapon(weaponid){ // Schusswaffen
switch(weaponid){
case 16..18:return 1;
case 22..39:return 1;
default:return 0;
}
return 1;
}
Probleme sind:
1. Bei der Animation geht der Spieler gerade aus und ladet nach ( siehe Video )
2. Wenn ich jetzt nachladen muss ( mit den Servervariablen ), dann wird die ausgerüstete Waffe nicht zur Faust gesetzt.. ( Das ist dafür da, damit der Spieler nicht "Standard" nachlädt. )
Jeffry: Ohh, okay | Naja, wie die Probleme schon sagen, ich will, dass der Spieler nicht Standard nachlädt, also, dass er sozusagen "unlimited Ammo" hat, aber durch meine Variablen wird er die Animation für das nachladen ausführen. ( Dafür brauche ich ja das "SetPlayerArmedWeapon", jedoch wird die "ausgerüstete" Waffe nicht zur Faust und dann wieder zu der richtigen Waffe gesetzt
Außerdem ist es so, dass wenn der Spieler geht, schießt und dann nachladen muss, dann wird die Animation ausgeführt, aber der Spieler geht weiter.. Ich habe das schon mit freezen usw versucht, jedoch vergeblich ..
-> Falls ich dir jetzt wieder falsche Informationen gegeben habe, tut es mir leid, wusste jetzt nicht genau, was du mit "aussehen" meintest, hoffe aber, es war das richtige