[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
  • Vehicle[vehicleid][vehMats] = 0;
    Frak[1][frakEisen] += Vehicle[vehicleid][vehMats];


    Habe ich nun eingetragen.


    Nun habe ich beides ausgegeben einmal was ich eingegeben habe und einmal das was im Fahrzeug ist!


    Materialien geladen: 25000
    printf("Materialien geladen: %d", int);



    Materialien geladen [Fahrzeug]: 25000
    printf("Materialien geladen [Fahrzeug]: %d", Vehicle[vehicleid][vehMats]);


    Fehlermeldung habe ich so hinzugefügt:
    if(Frak[1][frakEisen] + gebraucht > Frak[1][frakMaxEisen])return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Soviele Materialien kannst du hier nicht abladen.");

  • Wieso schickst du mir das von dem load Befehl?!?!


    Wir reden hier nur über den unload Befehl.


    Und bei der Fehlermeldung schreib doch einfach:


    if(gebraucht == 0)

    ast2ufdyxkb1.png


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


  • Vehicle[vehicleid][vehMats] -= gebraucht;
    printf("Materialien [Fahrzeug]: %d", Vehicle[vehicleid][vehMats]);


    Frak[1][frakEisen] += gebraucht;
    printf("Materialien Fraktion: %d", gebraucht);


    format(string, sizeof(string), "{6E7271}Verbrecher mit /arrest einsperren\n\n{7EF201}Waffenkammer (LSPD)\n%d/%d\nMaterialien", Frak[1][frakEisen], Frak[1][frakMaxEisen]);
    Update3DTextLabelText(lspd3d, COLOR_WHITE, string);
    printf("%d/%d\nMaterialien", Frak[1][frakEisen], Frak[1][frakMaxEisen]);


    format(string, sizeof(string), "{21DD00}Gehalt: %d$", money);
    SendClientMessage(playerid, COLOR_WHITE, string);
    printf("Gehalt: %d", money);


    format(string, sizeof(string), "{21DD00}Materialien: %d/50000", Vehicle[vehicleid][vehMats]);
    SendClientMessage(playerid, COLOR_WHITE, string);
    printf("Materialien: %d", Vehicle[vehicleid][vehMats]);


    Spieler[playerid][pBank] += money;


    format(string, sizeof(string), "{33AA33}* Staatskasse hat dir %d$ überwiesen. Betreff: Materialien abgeliefert (%d)", money, gebraucht);
    SendClientMessage(playerid, COLOR_WHITE, string);
    printf("Staatskasse Überwiesen: %d, Materialien abgeladen: %d", money, gebraucht);


    Das ist vom unload befehl habe mir mal alles ausgegeben:



    Materialien [Fahrzeug]: 25000
    Materialien Fraktion: 0
    0/0
    Materialien
    Gehalt: 150000
    Materialien: 25000
    Staatskasse Überwiesen: 150000, Materialien abgeladen: 0

  • Code:



    Laut laden ja siehe:



    Fraktion ID: 2 = LSPD
    Fraktion Materialien: 245000
    Fraktion Max Materialien: 250000


  • Fraktion ID: 0
    Fraktion ID: 1
    Fraktion ID: 2
    Fraktion ID: 3
    Fraktion ID: 4
    Fraktion ID: 5
    Fraktion ID: 6
    Fraktion ID: 7
    Fraktion ID: 8
    Fraktion ID: 9
    Fraktion ID: 10
    Fraktion ID: 11
    Fraktion ID: 12
    Fraktion ID: 13
    Fraktion ID: 14
    Fraktion ID: 15
    Fraktion ID: 16
    Fraktion ID: 17

  • ............


    Manchmal hab ich echt das Gefühl, dass du mich verarschen willst :D


    Was glaubst du bringt mir das?!


    Du scriptest jetzt doch schon auch seit mindestens 3 Jahren...


    Du musst mir natürlich den GANZEN Log schicken...weil die nachfolgenden prints doch entscheidend sind X/

    ast2ufdyxkb1.png


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

  • Weiß nicht was sich das bringen soll ist das meiner meinung das selbe oder etwa nicht?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Das ist die alte, gibt aber irgendwie eine bessere von jemanden hier aus dem Forum.

    Jeffry hatte mal eine geschrieben: Nützliche Codeschnipsel


    Meine Finde ich leider nicht mehr xD Kp wo ich die mal hingepackt hatte xD


    Aber ich rate dir eh zu sscanf ganz ehrlich ^^


    Brauchst eigentlich nirgens strotk, dass kann man alles eleganter lösen :)

    ast2ufdyxkb1.png


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


  • Ich habe noch ein Problem..


    iwie funktioniert das mit den float nicht ganz...
    Es sind Millionen Zahlen...


    So ist das im Enum enthalten:


    Float:tMaxLiterBenzin

  • Schreibt du deinen Code eigentlich absichtlich so verschachtelt, ich habe dir soo oft schon gezeigt wie du das schöner machen kannst.


    Und wiiiiiieso startest du Schleifen immer ab 1???


    Ich habe dir jetzt schon 1000x erklärt, dass Arrays in Pawn/C/Java/C#/C++/Javascript und allen anderen C ähnlichen Sprachen bei 0 beginnt.


    Lässt du das ab 1 starten, überspringst du immer deinen 1. Eintrag..und eine Tankstelle wird nicht funktionieren ^^



    Es ist wichtig Redundanz zu vermeiden.


    Desweiteren hattest du da was beim else vertauscht, der Code löst schon mal ein Problem, was dir bei deinem vorherigen Code nicht aufgefallen ist.


    Du sagst zwar es werden irgendwo viele Zahlen ausgegeben...aber du das nicht wo...was soll das? :D Sollen wir jetzt raten bei welcher Ausgabe das passiert?!?!
    Gib mal präzise Infos, was genau ausgegeben wird...etc pp
    Printe dir eventuell auch mal Werte und gib einen schönen Debug der Variablen an, dann kann man dir auch sofort helfen..


    Immer diese halben Sachen und komischen Codes.


    Generell könntest du dir soviel arbeit sparen, wenn du deine Systeme mal vernünftig auslagern würdest.
    Ich wette bis zu 70% deiner Zeit verschwendest du damit redundanten Code zu schreiben.

    ast2ufdyxkb1.png


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

  • new Reward[MAX_PLAYERS];


    Reward[playerid] = SetTimerEx("PlayReward", 900000, true, "i", playerid);


    forward public PlayReward(playerid);public PlayReward(playerid){ for(new i=0; i<MAX_PLAYERS; i++) { if(PlayerInfo[i][LoggedIn] == false) continue; if(isPlayerAFK(i)) return 1; PlayerInfo[i][Tokens] += 5; SFM(playerid,COLOR_COP,"Reward: {FFFFFF}Du bekommst 5 Tokens!"); SavePlayer(i); } return 1;}


    public OnPlayerDisconnect(playerid, reason){ KillTimer(Reward[playerid]);


    Das Problem dabei ist dass das System manchmal 5x 5 Tokens gibt. (manchmal auch 2 oder 6, ist immer unterschiedlich.) Hat jemand eine Lösung dafür?

    Einmal editiert, zuletzt von Romnus ()

  • as Problem dabei ist dass das System manchmal 5x 5 Tokens gibt. Hat jemand eine Lösung dafür?

    Du erstellst einen Timer für jeden Spieler und Loopst bei jedem Spieler durch alle Spieler o:


    Daaavon ist abzuraten ^^


    //Edit:
    Ahh wait, du willst, dass für jeden Spieler der Timer individuell gestartet wird.


    Mach es so:



    Bist du sicher, dass du da den Spieler direkt speichern magst?


    Also kannst du machen, aber reicht es nicht unter OnPlayerDisconnect oder dient das der Server-Crash Vorbeugung? ^^

    ast2ufdyxkb1.png


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

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