[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
  • :D


    Jetzt steht da Du bist bei keinem Gang Waffen Info Punkt. aber ich krige ich waffen.


    wenn ich da nicht stehe steht da nur Du bist bei keinem Gang Waffen Info Punkt.

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • Ist es möglich, von einer Gang Zone die exakte Mitte ausgeben zu lassen, bzw zu berechnen?

  • Hi,
    habe meinen Ban Befehl jetzt so gemacht:

    ocmd:ban(playerid, params[])
    {
    new pID, string[128], reason[64];
    if(sscanf(params, "us", pID, reason)) return SendClientMessage(playerid, COLOR_GREY, "Befehl: /ban [Name/Spieler-ID] [Grund]");
    if(PlayerInfo[pID][pLoggedIn] == 0) return NOT_CON
    if(!isAdmin(playerid, 2)) return ADM_ERROR
    format(string, sizeof(string), "AdmCMD: Admin %s hat %s vom Server gebannt. Grund: %s", SpielerName(playerid), SpielerName(pID), reason);
    SendClientMessageToAll(COLOR_DARKRED, string);
    SetTimerEx("KickTimer", 250, false, "i", pID);
    PlayerInfo[pID][pBanned] = 1;
    PlayerInfo[pID][pReason] = reason;
    // PlayerInfo[pID][pBannedBy] = SpielerName(playerid);
    return 1;
    }


    Wenn ich dann In-Game jemanden banne, bspw. mit dem Grund test wird in der Datebank 116 abgespeichert... Wieso? :D

  • Zeig mal deine Speicher-/Ladefunktion dazu.

    stock SaveUserStats(playerid){if(!PlayerInfo[playerid][pLoggedIn]) return 1;new query[256];mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d', skinid = '%d', banned = '%d', reason = '%d', adminlevel = '%d' WHERE id = '%d'",PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pSkinid], PlayerInfo[playerid][pBanned], PlayerInfo[playerid][pReason], PlayerInfo[playerid][adminlevel], PlayerInfo[playerid][p_id]);mysql_pquery(handle, query);return 1;}


    //Edit: Hab es gefixxt, hab anstatt %s %d geschrieben ^^

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


    Wie kann man es Scripten, dass wenn ich einen runden Tacho habe sich die Tachonadel zu der Zahl bewegt so schnell wie das Fahrzeug fährt? Wie bekomme ich auf das Textdraw diese Striche bei den Zahlen, damit die so schräg sind?


    MfG

  • Wie kann man es Scripten, dass wenn ich einen runden Tacho habe sich die Tachonadel zu der Zahl bewegt so schnell wie das Fahrzeug fährt?

    Du musst die Geschwindigkeit in einen Winkel ausgehend vom Startwinkel berechnen. Stelle dir dabei einen Kreis vor.
    Dann ist 0 km/h z.B. bei 40 Grad, wenn man davon ausgeht, dass 0 Grad unten ist. 100 km/h ist dann bei 180 Grad und 200 km/h bei 320 Grad.
    Entsprechend hast du 1,4 Grad pro 1 km/h. Je nach Maximalgeschwindigkeit können das natürlich andere Werte sein.
    Dann rechnest du die Punkte auf deiner Kreisbahn aus, mittels Winkel und Radius des Tachos.
    Siehe dazu hier: https://www-user.tu-chemnitz.d…phics/theorie/dg_ber.html


    In der Regel ist 0 Grad ganz oben, daher müsste bei der Rechnung +/- 180 Grad Modulo 360 gemacht werden, dass das stimmt. Sprich 0 km/h wäre bei 220 Grad und 100 km/h bei 0 Grad, etc.


    Natürlich müsste man mehrere Kreisbahnen mit unterschiedlichen Radien haben, um eine Nadel darzustellen.
    Die Textdraws der Nadel müssen immer wieder gelöscht und an die neue Position auf dem Kreis gesetzt werden.


    Wie bekomme ich auf das Textdraw diese Striche bei den Zahlen, damit die so schräg sind?

    Mit den Zeichen, die dir zur Verfügung stehen in Textdraws.
    Einfallen würden mir da spontan: / \ - | _
    Mit etwas Verzerren über die Schriftgröße kann man das sicher recht gut hinbekommen.

  • Hey,


    ich hätte eine Frage, vlt könnt ihr mir das ja erklären.
    ocmd:getstats(playerid, params[]){
    new nachricht[128], pPlayer, name_pID[128];
    GetPlayerName(pPlayer, name_pID, MAX_PLAYER_NAME);
    if (sscanf(params, "ui",pPlayer))return SendClientMessage(playerid,COLOR_WHITE, "[hilfe] /getstats [ID]");
    floatdiv(sInfo[pPlayer][Kills], sInfo[pPlayer][Tode]);
    format(nachricht,sizeof(nachricht),"Name: %s\nLevel: %d\nGeld: %d$\nAdminrang: %s\nKills: %i\nTode: %i\nK/D: %.2f",name_pID,GetPlayerScore(pPlayer),GetPlayerMoney(pPlayer),GetAdminRangName(pPlayer),sInfo[pPlayer][Kills],sInfo[pPlayer][Tode],floatdiv(sInfo[pPlayer][Kills], sInfo[pPlayer][Tode]));
    ShowPlayerDialog(playerid, DIALOG_GETSTATS, DIALOG_STYLE_MSGBOX, "Stats",nachricht, "Schließen", "");


    return 1;
    }



    Hier funktioniert alles, außer der Name, ich weiß nicht wieso, aber der Name der angezeigt wird ist immer der von ID 0.
    Kann mir jemand erklären weshalb, wieso oder warum :D ?
    Wahrscheinlich irgendein kleiner Fehler, aber ich finde ihn irgendwie nicht..


    Danke für die Hilfe im Voraus :thumbup:

  • Wie setzte ich einen string auf ein Enum?


    So bspw:


    PlayerInfo[playerid][pFunktionName] = "fname";

    Das kannst du genau so machen...
    Falls es nicht geht...zeige uns Code und erkläre was du vor hast ^^



    Kann mir jemand erklären weshalb, wieso oder warum ?

    Das liegt daran, dass pPlayer immer 0 ist, sobald GetPlayerName aufgerufen wird, da du das vor dem sscanf aufrufst und erst ab dem sscanf aber pPlayer einen Wert zugewiesen bekommt ;)


    Die Lösung, einfach GetPlayerName unter das sscanf packen :)

    ast2ufdyxkb1.png


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

  • Das kannst du genau so machen...Falls es nicht geht...zeige uns Code und erkläre was du vor hast ^^



    Das liegt daran, dass pPlayer immer 0 ist, sobald GetPlayerName aufgerufen wird, da du das vor dem sscanf aufrufst und erst ab dem sscanf aber pPlayer einen Wert zugewiesen bekommt ;)
    Die Lösung, einfach GetPlayerName unter das sscanf packen :)

    (16929) : error 047: array sizes do not match, or destination array is too smal
    enum pInfo
    { // so sieht der anfang vom enum aus
    pFunktionName[MAX_PLAYER_NAME] ( IM ENUM)


    Habs schon mit n paar größen probiert (512 z.B)

  • (16929) : error 047: array sizes do not match, or destination array is too smal
    enum pInfo
    { // so sieht der anfang vom enum aus
    pFunktionName[MAX_PLAYER_NAME] ( IM ENUM)


    Habs schon mit n paar größen probiert (512 z.B)

    Bitte unterlasse Vollzitate, das ist unnötig.


    Desweiteren, zeig doch mal ganz genau wie du die Variable von dem enum deklariert hast und dann wie du den string deklariert hast, den du zuweisen willst und dann wie du es zuweist ^^


    Gib doch einfach ein wenig von deinem Code preis...oder sollen wir das alles erraten?! :D

    ast2ufdyxkb1.png


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


  • Desweiteren, zeig doch mal ganz genau wie du die Variable von dem enum deklariert hast und dann wie du den string deklariert hast, den du zuweisen willst und dann wie du es zuweist ^^


    Gib doch einfach ein wenig von deinem Code preis...oder sollen wir das alles erraten?! :D


    Also eigentlich möchte ich nur einen Namen auf pFunktionName[MAX_PLAYER_NAME] setzen


    enum pInfo
    {
    pFunktionName[MAX_PLAYER_NAME]
    };



    und dieser soll dann gespeichert werden per mysql (das hab ich schon gemacht, da gibts auch kein problem)



    PlayerInfo[playerid][pFunktionName] = "namebeispiel";



    Wenn nicht ohne einen string geht, dann halt den wert von


    PlayerInfo[playerid][pFunktionName]


    auf einen bestimmten string setzen (den ich noch nicht habe)