[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich meinte pRegData = %s und den inhalt welchen du an diesen platzhalter übergibst entfernen.


    Ja, das ist es ja das klappt nicht. Es wird nix in die Datenbank geschrieben wenn ich das entferne :wacko: :pinch:

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Warum geht das nicht?


    public OnPlayerText(playerid, text[])
    {
    if(realchat)
    {
    new str[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new pos = strfind(name, "."), pos1 = strfind(name, "_");
    if(pos != -1) name[pos] = ' ';
    else if(pos1 != -1) name[pos1] = ' ';
    format(str, sizeof(str),"%s sagt: %s",name,text);
    ProxDetector(20.0, playerid, str,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    return 0;
    }
    return 1;
    }


    Du hast strfind vor GetPlayerName benutzt.

  • Das heiß nicht stock sondern Funktion.

    stock ReplaceName(playerid)
    {
    new str[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new pos = strfind(name, "."), pos1 = strfind(name, "_");
    if(pos != -1) name[pos] = ' ';
    else if(pos1 != -1) name[pos1] = ' ';
    return name;
    }

    nicht getestet sollte aber funktionieren.

  • Fabi.StaR:


    Hier eine etwas kompaktere Funktion, die mehr deinen Wünschen entspricht:


    stock EditName(name[]) {
    static delimiter[][] = {"_",".",","},i,pos; //Du kannst das Array beliebig fortführen
    for(; i<sizeof delimiter; ++i) {
    pos = strfind(name,delimiter[i]);
    if(pos == -1) continue;
    name[pos] = ' ';
    }
    return name;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das passiert normal nciht zeig mal dazu einen logauschnitt ich denke du entfernst etwas falsch dadurch hast du einen Fehler in deinem MySQL Syntax, auch den code von oben verwendet ?


    In der Log wird nichts angezeigt, wie wäre es, wenn du versuchst das Script mal bei dir zu starten? :S

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Gibt es eine FERTIGE Funktion, mit der man die Geschwindigkeit des Spielers erhöhen kann?
    Das heißt, ich kann sie per ( z.B. ) "SetPlayerSpeed(playerid,50)" erhöhen / sinken.
    Wäre nett, wenn mir jemand eine Funktion schicken / machen könnte, da ich mit dem Kram nicht klar komme, da
    man ja auch die "Facing-Angle" abfragen muss und das Ganze umrechnen ...

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Gibt es eine FERTIGE Funktion, mit der man die Geschwindigkeit des Spielers erhöhen kann?


    Ich denke nicht.
    Ich hab aber vor geraumer Zeit mal was gemacht, das ist zwar nicht perfekt, da ich nur probieren wollte ob es überhaupt machbar ist, aber es funktioniert: http://forum.sa-mp.de/gta-mult…hnelligkeit-2#post1694731 Eigentlich wollte ich daran weiterarbeiten, aber ich habe nie wirklich die Zeit dazu gefunden, aber so weit funktioniert es. Du musst es vielleicht in Teilen abändern, aber das dürfte nicht all zu schwer werden.

  • Danke dir, probiere es morgen mal aus ;)


    Solch eine Funktion, welche du suchst gibt es schon



    stock SetVehicleSpeed(vehicleid, Float:speed)
    {
    new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
    GetVehicleVelocity(vehicleid, x1, y1, z1);
    GetVehiclePos(vehicleid, x2, y2, z2);
    GetVehicleZAngle(vehicleid, a); a = 360 - a;
    x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
    y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
    SetVehicleVelocity(vehicleid, x1, y1, z1);
    }

  • Sorry, habe vergessen zu erwähnen, bzw deutlichzuschreiben (wie auch immer das geschrieben wird), dass ich die Geschwindigkeit eines Spielers erhöhen will.. Deswegen auch "SetPLAYERSpeed", aber anscheinend sollte ich mich besser ausdrücken..


    Also dann nochmal von neu, ist das auch möglich?


    Ich würde eig nochmal versuchen, z.B. den Code von Jeffry umzuändern und es dann zu testen. Habe es schonmal mit einem anderen Code versucht, das klappte aber leider nicht. Koennte auch sein, dass ich etwas falsch gescriptet habe.


    Ich versuche es morgen einfach nochmal, falls es ueberhaupt moeglich ist.


    #Handy

  • Sorry, habe vergessen zu erwähnen, bzw deutlichzuschreiben (wie auch immer das geschrieben wird), dass ich die Geschwindigkeit eines Spielers erhöhen will.. Deswegen auch "SetPLAYERSpeed", aber anscheinend sollte ich mich besser ausdrücken..


    Also dann nochmal von neu, ist das auch möglich?


    Willst du ihn schneller laufen lassen, oder soll es im Auto funktionieren?
    Den Code, so wie ich ihn dir gegeben habe, erhöht die Geschwindigkeit des Spielers im Auto, wenn eine bestimmte Geschwindigkeit erreicht wurde, und hält sie, solange du das Gas drückst.
    Die Funktion von Prototypel wird dir nur einen kurzen boost geben.

  • Ich wollte eigentlich die Geschwindigkeit des Spielers erhöhen (wenn er läuft)..
    Ich würde davor einfach deinen Code bearbeiten und es testen..
    Aber ist es denn moeglich, sie zu erhöhen?


    #Handy

    Mit freundlichen Grüßen
    ErikSon



    Scripte kleine Systeme auf Anfrage umsonst!
    Per PN könnt ihr mir gerne Scriptingfragen stellen.

    Einmal editiert, zuletzt von ErikSon ()

  • Ich wollte eigentlich die Geschwindigkeit des Spielers erhöhen (wenn er läuft)..
    Ich würde davor einfach deinen Code bearbeiten und es testen..
    Aber ist es denn moeglich, sie zu erhöhen?


    Ja, erhöhen kannst du die Geschwindigkeit. Wie das dann aussieht ist die andere Frage.
    http://wiki.sa-mp.com/wiki/SetPlayerVelocity


    Dürfte aber machbar sein, wenn du den Code von mir abänderst. Wenn du Fehler bekommst, poste einfach nochmal.

  • Hey,
    habe den Code angepasst und getestet..
    Jedoch sterbe ich jedes mal, wenn ich laufe.
    Habe den Code auch schon oft bearbeitet und es versucht, jedoch klappts nicht wirklich.


    Hier mal so, wie ich es geändert habe ( nur deinen Code bearbeitet :(
    stock SetPlayerSpeed(playerid, Float:_speed){
    if(playerid == INVALID_PLAYER_ID)return INVALID_PLAYER_ID;
    else if(IsPlayerNPC(playerid))return 1;
    else if(IsPlayerInAnyVehicle(playerid))return 1;
    else if(!Sprinted[playerid])return 1;
    new Float:x1, Float:y1, Float:z1, Float:a;
    GetPlayerVelocity(playerid, x1, y1, z1);
    GetPlayerZAngle(playerid, a);
    return SetPlayerVelocity(playerid, x1*202.0/_speed.0, y1*202.0/_speed.0, z1);
    }
    //OnPlayerKey
    if(newkeys & KEY_SPRINT)Sprinted[playerid] = true;
    else Sprinted[playerid] = false;
    //OnPlayerUpdate
    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new speed = GetPlayerSpeed(playerid);
    if(speed > 40)SetPlayerSpeed(playerid,60.0);
    }
    Wie gesagt, habe es schon oft verändert..
    Wenn ich mir die km/h ausprinten lasse, kommt irgendwas mit 1 Mio+ raus..

  • Der Code ist ja auch nicht richtig.


    stock SetPlayerSpeed(playerid, Float:_speed, Float:_isspeed){
    if(playerid == INVALID_PLAYER_ID)return INVALID_PLAYER_ID;
    else if(IsPlayerNPC(playerid))return 1;
    else if(IsPlayerInAnyVehicle(playerid))return 1;
    else if(!Sprinted[playerid])return 1;
    new Float:x1, Float:y1, Float:z1, Float:a;
    GetPlayerVelocity(playerid, x1, y1, z1);
    GetPlayerFacingAngle(playerid, a);
    return SetPlayerVelocity(playerid, x1*(1+(1/(1+(_speed/_isspeed)))), y1*(1+(1/(1+(_speed/_isspeed)))), z1);
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_SPRINT)Sprinted[playerid] = true;
    else Sprinted[playerid] = false;
    return 1;
    }


    public OnPlayerUpdate(playerid)
    {
    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed;
    GetPlayerSpeed(playerid, speed);
    if(speed > 20 && speed < 40)SetPlayerSpeed(playerid, 40.0, speed);
    }
    return 1;
    }


    Ich hab's jetzt mal so gemacht. Besser hab ich es auf die Schnelle nicht hinbekommen, kannst ja noch dran rumspielen.

  • Hmm..
    Jetzt gibt er zwar an, dass die Geschwindigkeit erhöht wurde, jedoch merkt man nichts von..
    Und wenn ich die noch höher setzte genau so ;)
    Code ist so, wie du es gemacht hast, außer das:

    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed;
    GetPlayerSpeed(playerid, speed);
    if(speed > 20 && speed < 40)SetPlayerSpeed(playerid, 40.0, speed);
    }


    Das hab ich so:
    if(!IsPlayerInAnyVehicle(playerid) && Sprinted[playerid])
    {
    new Float:speed = GetPlayerSpeed(playerid);
    if(speed >= 38.0 && speed <= 40.0){
    SetPlayerSpeed(playerid, 70.0, speed); // Hier habe ich vieles versucht ( 50, 60, 70, .. )
    }
    }
    Die Funktion "GetPlayerSpeed" hat ja nur einen Parametet, der ist für die Player-ID.
    So sollte das mit der Speed-Festlegung doch auch gehen, oder?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen