[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 komme nicht weiter Hilfe bitte ich hab alles Probiert, ich weiss nicht mehr weiter

    securicar = CreateVehicle(560,999.6277,1158.0414,10.8456,179.6781,0,0,-1);
    theobject = CreateObject(19477,0.0,0.0,0.0,0.0,0.0,0.0);
    SetObjectMaterialText(theobject,"F-B-I",0,OBJECT_MATERIAL_SIZE_256x128,"BankGothic Md Bt",60,1,0xFFF0F0F0,0,1);
    AttachObjectToVehicle(theobject, securicar,1.153,-1.2,0.46,0.0,0.0,0.0);

    Verbessertt mich wieso wird das hintem am kofferraum angezeigt?

  • Einfach mal frei Hand mit Handy geschrieben, ich gehe mal davon aus, dass es tut. Ich kanns morgen Mittag testen. Oder du probierst es kurz.
    stock str_replace(string[256], rep[256], with[256])
    {
    new i = strfind(string, rep);
    if(i != -1)
    {
    strdel(string, i, i+strlen(rep));
    strins(string, with, i);
    }
    return string;
    }
    string=ganzer Text
    rep=Teil der ersetzt wird
    with=eingefügter teil
    return = neuer string


    EDIT: Ersetzt halt nur den ersten Fund. Ich kanns dir auch für beliebig viele machen, wenn du das brauchst.

    Oder:
    http://wiki.sa-mp.com/wiki/Strlib/str_replace

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • Hay eine frage, ich habe einen enum und möchte die Anzahl herausbekommen..
    also:

    enum
    {
    item_drogen,
    item_mats,
    item_handy,
    item_radio
    }
    Ich möchte die Anzahl in einer Schleife benutzen.. in diesem fall wäre es 4, kann mir jemand helfen?

  • Ich möchte die Anzahl in einer Schleife benutzen.. in diesem fall wäre es 4, kann mir jemand helfen?


    Dazu gebe dem ENUM einen Namen, sprich so:


    enum TestEnum {
    item_drogen,
    item_mats,
    item_handy,
    item_radio
    };


    Dann kannst du das so in einer Schleife verwenden:


    for(new i; i<_:TestEnum; i++) {
    //Hier dann der Code
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Wieso kann Pawn (die Rechnungsfunktionen) nicht 50/100 rechnen.
    Ich lasse eine Variable (in dem Fall 50) durch 100 teilen.
    Wenn ich die Variable in der Konsole ausgebe kommt 50 raus.
    Sollte ich die nun durch 100 teilen (was normalerweise 0.5 ergibt...) rechnet er 0.000 bzw. 0 aus.
    Kann man das irgendwie machen das er auch 50 geteilt durch 100 rechnen kann?
    Erst ab 100+ rechnet er wieder richtige Ergebnise und das ist.....



    Mfg pierre65

  • Also sollte ich die erste Variable in eine Float umwandeln (float(variablenname)) durch float(100) teilen und dann den float runden? :S


    Kommt darauf an, was du machen willst. Mein code gibt dir auf jeden Fall den genauen Wert aus, als Float. das sieht dann so aus:

    Zitat

    [07/08/2013 14:53:28] 0.500000


    Da gibt es eigentlich nichts mehr zu runden.
    Wenn du die Nachkommastellen abschneiden willst:


    printf("%0.2f", float(50) / float(100));

    Zitat

    [07/08/2013 14:53:28] 0.50


    Bzw.
    printf("%0.1f", float(50) / float(100));

    Zitat

    [07/08/2013 14:53:28] 0.5

  • Es ging um mein Payday System, das ging nicht weil man weniger als 100$ Lohn gekriegt hat, aber er rechnet jetzt die % Zahl richtig aus danke für die Hilfe...
    Hätte noch eine Frage, weißt du vielleicht woran es liegt das man erst nach einer bestimmten Zeit oder so respawnt wenn man stirbt?
    Die HP Leiste blinkt und das dauert bis man ebend respawnt.... Woran könnt das liegen?

  • Hätte noch eine Frage, weißt du vielleicht woran es liegt das man erst nach einer bestimmten Zeit oder so respawnt wenn man stirbt?
    Die HP Leiste blinkt und das dauert bis man ebend respawnt.... Woran könnt das liegen?


    Das ist doch normal, dass es 3-4 Sekunden dauert, bis man wieder spawnt, nachdem man gestorben ist. Wenn du das umgehen willst, also sofort spawnen, möglicherweise geht das mit SpawnPlayer bei OnPlayerDeath, müsstest ausprobieren.
    Oder meinst du den SA-MP Fehler, dass man manchmal nach dem Tod noch rumlaufen kann?

  • Nene ich hab das Problem, zum Beispiel jemand erschießt mich.....
    Nun (hab ja ein Krankenhaussystem) sterbe ich garnicht richtig, Position (die erst bei OnPlayerSpawn gesetzt wird?!) ist schon gesetzt...
    Die Energieleiste oben rechts blinkt ohne Unterbrechung und erst wenn meine Zeit im Krankenhaus abgelaufen ist sterbe ich und respawne dort wo zuletzt meine SetSpawnInfos gesetzt waren!?
    Ab und zu geht das ab und zu nicht...
    // Edit: Kann auch paar Bilder zeigen, falls notwendig

  • Da wäre es vielleicht ganz sinnvoll einen neuen Thread aufzumachen, am besten mit dem dazugehörigen Code und ein paar Bildern, oder noch besser, einem Video. Ich denke nicht, dass es in diesem Topic angebracht ist, das würde dem "Kleine Scripting Fragen" nicht mehr entsprechen.

  • Habe hier ein kleines Problemchen
    Bei den Code:
    stock BR_GivePlayerWeapon(playerid, Weaponid, Munni)
    {
    new Slot = GetSlotForWeapon(Weaponid);
    PlayerInfo[playerid][Weapon][Slot] = Weaponid;
    PlayerInfo[playerid][Ammo][Slot] += Munni;
    if(debuggen){printf("[Weapon] User: %s | Waffe: %d | Ammo: %d | Slot: %d",PlayerInfo[playerid][name],PlayerInfo[playerid][Weapon][Slot],PlayerInfo[playerid][Ammo][Slot],Slot);}
    return _GivePlayerWeapon(playerid, Weaponid, Munni);
    }
    Bekomme ich die Waffe auch der debug stimmt
    Aber komischerweise werde ich gebannt wegen "Waffenhack"
    Der Code dazu ist der:
    for (new i = 0; i < 13; i++)
    {
    new Weap, Amm;
    GetPlayerWeaponData(playerid, i, Weap, Amm);
    if(PlayerInfo[playerid][Weapon][i] == Weap){
    if(PlayerInfo[playerid][Ammo][i] > Amm){
    format(str,128,"Munition´s Cheat %d Schuss",PlayerInfo[playerid][Ammo][i]-Amm);
    BanUser(playerid, str);
    }else{
    PlayerInfo[playerid][Ammo][i] = Amm;
    }
    }else{
    format(str,128,"Waffenhack %s",getGunName(Weap));
    BanUser(playerid, str);
    PlayerInfo[playerid][Weapon][i] = 0;
    PlayerInfo[playerid][Ammo][i] = 0;
    }
    }
    Hat da wer ne idee wiso das so ist?

    All in all it's just another brick in the wall

  • if(PlayerInfo[playerid][Ammo][i] > Amm){
    Das muss andersrum sein. Wenn die derzeitige Ammo die der Spieler hat größer ist, als die, die ihm gegeben wurde, dann wird er gebannt.


    if(PlayerInfo[playerid][Ammo][i] < Amm){
    Und somit auch:
    format(str,128,"Munition´s Cheat %d Schuss",Amm-PlayerInfo[playerid][Ammo][i]);



    Du bannst ihn, wenn er weniger ammo hat, als ihm gegeben wurde.

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