[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
  • public CheckWeapon()
    {
    new i = 0,Weaps[13][2],_w = 0;
    for(; i<MAX_PLAYERS; i++)
    {
    for (; _w < 13; _w++)
    {
    GetPlayerWeaponData(i, _w, Weaps[_w][0], Weaps[_w][1]);
    printf("Weapon: %d / Ammo: %d",Weaps[_w][0],Weaps[_w][1]);
    }
    }
    return 1;
    }
    Leider wird bei "Weapon" und "Ammo" immer 0 ausgegeben, obwohl ich Waffen besitze..
    Hab ich was falsch gemacht? ;)

  • Hatte mir gerade einen kleinen Befehl gebastelt.
    ocmd:checkwp(playerid,params[]){
    new i=0,_w=0,Weapon[13][2];
    for(;i<GetMaxPlayers();i++)for(;_w<13;_w++)GetPlayerWeaponData(i,_w,Weapon[_w][0],Weapon[_w][1]),printf("Weapon: %d | Ammo: %d",Weapon[_w][0],Weapon[_w][1]);
    }
    Ausgabe:

    Code
    [16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 24 | Ammo: 500[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0[16:55:00] Weapon: 0 | Ammo: 0


  • Hilft leider nicht..


    Brauche es in nem Timer..

  • public CheckWeapon()
    {
    new Weaps[13][2];
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    for (new _w; _w < 13; _w++)
    {
    GetPlayerWeaponData(i, _w, Weaps[_w][0], Weaps[_w][1]);
    printf("Weapon: %d / Ammo: %d",Weaps[_w][0],Weaps[_w][1]);
    }
    }
    return 1;
    }


    So ist es richtig.


    Enum: Dein Code tut nicht wenn du mehr als einen Spieler im Server hast, da sich "_w" nicht zu 0 zurücksetzt, daher funktioniert es immer nur für ID 0, sonst für keinen.
    Und es ist entgegen allen Programmier-Regeln, seinen gesamten Code in eine Zeile zu schreiben, das macht kein Mensch, weil es absoluter Käse ist und außer dass es keiner lesen kann es nichts bringt. :pinch:

  • Und es ist entgegen allen Programmier-Regeln, seinen gesamten Code in eine Zeile zu schreiben, das macht kein Mensch, weil es absoluter Käse ist und außer dass es keiner lesen kann es nichts bringt. :pinch:


    Vergiss nicht zu erwähnen, dass man es tunlichst unterlassen sollte Funktionen als Schleifenbedingungen zu nutzen, sieht man leider viel zu oft :(


    ErikSon: Nicht immer.
    Hier sollte anzumerken sein, dass man die Variable _w auch wieder auf 0 setzen muss.


    Wenn man globale Variablen nutzt, hat man evtl irgendwann das Problem mit Überschneidungen, deswegen gibt es ja auch sowas wie "Ebenen"/Gültigkeitsbereiche in Programmier/Scriptsprachen

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Habs mir jetzt genau angeschaut..
    Angeblich habe ich 2x eine Deagle, obwohl man die ja nur 1x haben kann ;P
    Habe es ausgeben lassen, da stand dann:


    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 24
    [18:02:20] Waffe 0
    [18:02:20] Waffe 29
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 0
    [18:02:20] Waffe 24
    Der fragt irgendwie auch viel zu viel ab..
    Normalerweise solln es ja nur 13 sein, aber irgendwie sinds 27 ;)


    //E
    Habe vergessen zu machen, dass es bei Bots nicht abgefragt wird, deswegen waren es mehr als 13 ;)
    Also, jetzt nur noch das Problem, warum ich 2x Deagle habe

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

  • public CheckWeapon()
    {
    new Weaps[13][2];
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    for (new _w; _w < 13; _w++)
    {
    GetPlayerWeaponData(i, _w, Weaps[_w][0], Weaps[_w][1]);
    printf("playerid: %d slot: %d Weapon: %d / Ammo: %d",i, _w, Weaps[_w][0],Weaps[_w][1]);
    }
    }
    return 1;
    }


    Lass es mal so laufen, und poste dann was im Log steht.

  • Gelber Kegel:
    DisableInteriorEnterExits(); //OnGameModeInit


    Stunt-Bonus:
    EnableStuntBonusForAll(false); //OnGameModeInit


    Spieler-Farbe:
    SetPlayerColor(playerid,-1); //OnGameModeInit

    Danke aber, bekomme einen ERROR.


    C:\Users\****\Desktop\GTA Server\gamemodes\SM.pwn(48) : error 017: undefined symbol "playerid"



    Zeile:
    SetPlayerColor(playerid,-1); //Spieler TAB Farbe entfernen




    MFG

  • Wenn es dort kein R gibt dann gibt es wohl doch auch keine Möglichkeit oder?


    Könnte ja sein..
    Aber ist egal, ich habe es mit meiner eigenen Lösung gemacht..
    Es war für "Anti-AFK-Ghost" gedacht, jedoch hab ichs schon ;)
    Danke trotzdem!