[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
  • 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.

  • Hätte ich mal richtig gelesen. :pinch:


    Gut, aber da kann ich keinen Fehler sehen, abgesehen davon, dass die Funktion GetPlayerWeaponData an sich zig Bugs hat, die bewiesen und gemeldet worden sind, jedoch hat sich Kye/Kalcor nie darum gekümmert.
    Setz einfach mal einen debug unter die Funktion:


    printf("[Weapon] User: %s | PWaffe: %d | GWaffe: %d | Slot: %d",PlayerInfo[playerid][name],PlayerInfo[playerid][Weapon][i],Weap,i);


    Ich könnte mir vorstellen, dass der Grund für den ban der ist, dass du einen waffe leergeschossen hast. Dann würde ja Weap = 0 (?) sein, in deiner Variable steht aber noch die Waffen ID. Das könntest, und solltest du auch wenn es nicht der Fehler ist, berücksichtigen:
    GetPlayerWeaponData(playerid, i, Weap, Amm);
    if(Amm == 0) continue;
    Sprich er geht einen Slot weiter, wenn keine Ammo im Slot ist, entsprechend keiner Waffe.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Schreib es mal so:


    Wenn er das jetzt macht und dann AUTOHAUSER in einer schleife nutzt, schmiert ihm der Code weg :thumbup:


    Array out of Bounds.
    Eher müsste er AUTOHAUSER auf die Anzahl anpassen

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

    Margarete Stokowski

  • Ich erklär dir das mal kurz, warum das so ist, sonst weißt du es beim nächsten Mal wieder nicht.^^


    new Float:DtcParkPlatz[7][4][4] = {
    new Float:DtcSonstiges[7][5][4] = {
    Dies wären die richtigen Angaben (bzw. so wie Kaliber es gemacht hat, wobei ich das da besser finde, es ist übersichtlicher und verhindert Fehler in großen Arrays, meine Meinung).


    Nun, warum?


    DtcSonstiges:
    [7] bedeutet, dass wir 7 Abteile haben
    [5] gibt nun an, dass jeder Abteil 5 Zeilen hat
    [4] sagt schließlich, dass jede Zeile 4 Parameter hat.


    Diese Zahlen müssen immer so stimmen, sonst bekommst du den Error 052.

    Zitat

    error 052: multi-dimensional arrays must be fully initialized


    Das heißt übersetzt: Multidimensionale Arrays (in deinem Fall: 3 Dimensionen) müssen vollständig eingeleitet werden. => Es darf keine "Lücke" vorhanden sein, es muss alles gefüllt sein. Es müssen 7 Abteile vorhanden sein, jedes diese Abteile muss genau 5 Zeilen haben, wovon jede wiederum genau 4 Parameter hat.

  • error 053: exceeding maximum number of dimensions

  • Warum funktioniert der folgende Code nicht?
    new zeichen[26][] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    new i;
    stock randomword(len)
    {
    new rand[len];//FEHLERZEILE 44
    for(i=0;i<len;i++)
    {
    //strcat(rand,zeichen[random(25)],len);
    strins(rand,zeichen[random(26)],i,len);
    }
    return rand;
    }
    Ich bekomme 4 Errors
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 008: must be a constant expression; assumed zero
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 009: invalid array size (negative, zero or out of bounds)
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 036: empty statement
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : fatal error 107: too many error messages on one line


    Kann ich in Pawn einem String entwa keine "dynamische Länge" zuweisen?
    /edit: Hab ne Lösung gefunden....ich weis dem String eine Länge von 20 zu und nutze eben nur soviel wie groß eben "len" istAber ich hätte trotzdem gerne eine Antwort^^

    2 Mal editiert, zuletzt von [COE]CodeX ()

  • ich suche ein Editor,womit man zb eine kleine Sirene also Undercover Sirene ans auto machen kann.
    Ich würde die SuFu gerne nutzen...aber kp nach was ich suchen soll ^^


    Kennt jmd nen Guten Editor?


    lg

    New Nexo Reallife.


    <3

  • Warum funktioniert der folgende Code nicht?
    Aber ich hätte trotzdem gerne eine Antwort^^


    Ganz einfach. Wie dir die Error-Ausgabe schon sagt, ein Array muss mit einer konstanten Größe deklariert werden. Du weist dem Array eine variable Größe zu (len), daher weiß der Kompiler nicht, wie viel Platz er reservieren muss. Arrays müssen immer konstant deklariert werden, das heißt mit "#define" oder einer Zahl, wobei du bei define eben ein Wort diese Zahl ist und darstellt.


    ich suche ein Editor,womit man zb eine kleine Sirene also Undercover Sirene ans auto machen kann.


    http://forum.sa-mp.com/showthread.php?t=282883

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