Beiträge von ErikSon

    @|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! )..


    Download
    Pastebin
    Direkt



    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?

    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?

    Wie du es mit den Zonen machst..


    new ZoneLabel[MAX_GANG_ZONES];


    ZoneLabel[i] = CreateDynamic3DTextLabel(string, C_WHITE, GW_CaptureCPs[i][0], GW_CaptureCPs[i][1], GW_CaptureCPs[i][2], 100.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0, -1, -1, 100.0);


    //Edit: Bearbeitet

    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..

    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 ;)