[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
  • Hey ich hab seit einiger Zeit mein Selfmade angefangen und da ich mich mit ini noch nicht ALLZU sehr auskenne habe ich ein wenig aus meinem alten script rauskopiert, problem ist nur wenn ich jetzt mit registriere auf meinem Server passiert es meistens das die ini dann so aussieht:


    Code
    Level=105  //müsste auf 1
    Erf=110 //müsste auf 0
    Admin=101 //müsste auf 0
    Premium=115 //müsste auf 0
    Bonus=116 //müsste auf 0
    Tutorial=97 //müsste auf 127
    Tag=114 //müsste auf 0
    restliche Werte sind in Ordnung


    geregelt ist es durch diese Festlegungen (nach jedem Login):

    Spieler[playerid][sLevel] = 1; //startlevel 1
    Spieler[playerid][sErf] = 0; //starterf 0
    Spieler[playerid][sAdmin] = 0; //adminlevel
    Spieler[playerid][sPrem] = 0; //Premiumstatus
    Spieler[playerid][sBoni] = 0; //Bonuspunkte
    Spieler[playerid][sTut] = 127;
    Spieler[playerid][sTag] = 0;


    Ich frage mich warum das jetzt nach der Registration auf die werte oben gesetzt wird :pinch:

    mit freundlichen Grüßen,
    Rici



  • Ich hab so einen Error:
    error 008: must be a constant expression; assumed zero
    Hier die Zeile:
    public UpdateTeam(playerid)
    {
    new textstring[41];
    new Teamname[] = {
    {0,"GroveStreet"}, // <-hier ist die Zeile wo der Error ist
    {1,"Ballas"},
    {2,"Vagos"},
    {3,"Cops"},
    };
    format(textstring, sizeof(textstring), "Team: %i",Teamname[GetPlayerTeam(playerid)]);
    TextDrawSetString(textdrawTeam, textstring);
    TextDrawShowForPlayer(playerid, textdrawTeam);
    return 1;
    }

    //edit: Zeile markiert wo der Error ist

    :D Was schaut ihr mich alle an??? Ich bin auch nur eine Signatur :D

    Einmal editiert, zuletzt von Ghosty_101 ()

  • Dafür könntest du ein enum benutzten.
    Wozu ist denn die
    new Teamname[] = {
    {0,"GroveStreet"}, // <-hier ist die Zeile wo der Error ist
    {1,"Ballas"},
    {2,"Vagos"},
    {3,"Cops"},
    };

    0,1,2,3 gut bei dem Array ?
    Sonst könntest du nämlich sowas erstellen:
    new Teamname[][] = {
    {"GroveStreet"}, // <-hier ist die Zeile wo der Error ist
    {"Ballas"},
    {"Vagos"},
    {"Cops"}
    };
    Ein String ist ein Array.Wollen wir also ein Array von String bzw ein Array von Array müssten wir es auch als 2Dimensionales Array kennzeichen.


    //Edit: Fix.

    Einmal editiert, zuletzt von Goldkiller ()

  • Ich bin noch nicht deeer Checker im Scripten, also , ich will das state Team: 1 usw. halt angezeigt wird Team: Grove usw.. Soviel mal dazu was ich möchte.
    Die Idee mit dem Enum ist mir auch schon gekommen, jedoch wusste ich nicht wirklich wie ich das anstellen soll ^^ :wacko:

    :D Was schaut ihr mich alle an??? Ich bin auch nur eine Signatur :D

  • Die Zahl die du vorne hattest ist relativ unnötig,da es sowieso der Index des Eintrages war.


    Hab übersehen das bei dir die Formatierung noch etwas falsch war.
    %i ist der Platzhalter für Zahlen ( Ganze Zahlen ) , %s für Strings bzw Texte.
    format(textstring, sizeof(textstring), "Team: %s",Teamname[GetPlayerTeam(playerid)]);

  • Naja, es hat sich nicht viel verändert:
    Error 1: (83) : error 008: must be a constant expression; assumed zero
    Error 2: (83) : error 029: invalid expression, assumed zero
    Code:
    public UpdateTeam(playerid)
    {
    new textstring[41],
    Teamname[][] = {
    {"GroveStreet"},
    {"Ballas"},
    {"Vagos"},
    {"Cops"},
    }; //Errors sind hier
    format(textstring, sizeof(textstring), "Team: %s",Teamname[GetPlayerTeam(playerid)]);
    TextDrawSetString(textdrawTeam, textstring);
    TextDrawShowForPlayer(playerid, textdrawTeam);
    return 1;
    }

    :D Was schaut ihr mich alle an??? Ich bin auch nur eine Signatur :D

  • Ja Hallo ich hab vor ein kleines Biz System zu scripten
    da hab ich ma ganz oben das hier deklariert:
    enum bInfo
    {
    bBesetzt,
    bBesitzer,
    bPreis,
    bName[32],
    };
    new BizInfo[2][bInfo];


    nun möchte ich dem Biz 0 in bName Burger Shot North reinschreiben
    und für 1 Ammunation


    BizInfo[0][bName] = "Burger Shot North";
    BizInfo[1][bName] = "Ammunation";


    leider kommt immer dieser fehler:
    error 047: array sizes do not match, or destination array is too small
    also 2 ma


    was soll ich tun? ^^


    Danke im vorraus ;D

  • versuch mal:
    strins(BizInfo[0][bName], "Burger Shot North",0);




    meine frage:
    ich hab /sethp befehl und wenn man /sethp id 0 macht dann wird das leben zwar auf 0 gesetzt man stirbt aber erst wenn man iwo runterspringt, sonst kann man frei rumlaugen.
    mein code von sethp:


    ocmd:sethp(playerid,params[])
    {
    new pid,
    string[96],
    string2[96],
    Float:hp;
    if(sscanf(params,"uf",pid,hp)) return SendClientMessage(playerid,COLOR_ORANGE,"Benutze:/sethp [ID] [HP]");
    if(player[playerid][padmin] < 3) return SendClientMessage(playerid,COLOR_RED,"Du bist kein AdminLevel 3");
    SetPlayerHealth(pid,hp);
    format(string,sizeof(string),"Du hast {FF0000}%s{FF4847} auf %f Leben gesetzt",player[pid][pname],hp);
    format(string2,sizeof(string),"Du wurdest von {FF0000}%s{FF4847} auf %f Leben gesetzt",player[playerid][pname],hp);
    SendClientMessage(playerid,COLOR_HELLRED,string );
    SendClientMessage(pid ,COLOR_HELLRED,string2);
    return true;
    }



    Danke im vorraus.



    MfG Metin

    Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg
    in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige
    was wcthiig ist, ist daß der estre und der leztte Bstabchue an der
    ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien,
    tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht
    jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems.

  • Also ich weiss nicht ob du das warst, aber mit irgendwem hatte ich letztens schonmal die diskussion. SetPlayerHealth und SetPlayerArmor funktionieren auch mit Integern. Ich verwende in meinem sethp befehl auch sscanf mit integer und es funktioniert einwandfrei. Also bitte sag nichts anderes bevor du es nicht selbst ausprobiert hast.
    Nimms mir nicht übel ich will hier keinen streit anfangen oder so, aber es ist wirklich so.
    Probiers aus:
    COMMAND:sethp(playerid,params[])
    {
    new pID,health;
    if(SpielerInfo[playerid][pAdminLevel]<2) return SendClientMessage(playerid,FARBE_ROT,"Du bist kein Moderator!");
    if(sscanf(params, "ud",pID,health)) return SendClientMessage(playerid, FARBE_ROT, "Funktion: /sethp [Playerid/Name] [Wert]");
    if(health > 100) return SendClientMessage(playerid, FARBE_ROT, "Du darfst nicht mehr als 100 HP geben!");
    SetPlayerHealth(pID, health);
    return 1;
    }
    Und dann reden wir weiter ;)

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Ich schon wieder, naja, das Gangwar Script ist nicht soo einfach -.- Ok kommen wir zu meinem nächsten Problem:
    Ich habe einen befehl erstellt: (das ist das wichtigste des Befehls)
    if (strcmp("/startwar", cmdtext, true) == 0)
    {
    //Zone GROVE=========================================================================
    if(IsPlayerInArea(playerid,2414.165527, -1729.739624, 2542.165527, -1633.739624))
    {
    GangZoneFlashForAll(GroveBase,GetPlayerColor(playerid));
    IsAttacking[playerid] = true;
    SetTimer("war",15000,1);
    }

    Dann ein forward namens "war" :
    public war(playerid)
    {
    GangZoneFlashForAll(GroveBase || BallasBase || VagosBase || CopBase,GetPlayerColor(playerid));
    if(war < 1) //Error 1
    {
    GangZoneStopFlashForAll(GroveBase || BallasBase || VagosBase || CopBase);
    KillTimer(war); //Error 2
    }
    return 1;
    }

    aber diese Errors kommen:

    Code
    error 076: syntax error in the expression, or invalid function call

    (2x)

    :D Was schaut ihr mich alle an??? Ich bin auch nur eine Signatur :D



  • ich wars also net^^


    hab ich au schon probiert daran liegt es nicht. hat jmd. ne andere idee?

    Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät, ist es nchit witihcg
    in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige
    was wcthiig ist, ist daß der estre und der leztte Bstabchue an der
    ritihcegn Pstoiion snid. Der Rset knan ein ttoaelr Bsinöldn sien,
    tedztorm knan man ihn onhe Pemoblre lseen. Das ist so, wiel wir nciht
    jeedn Bstachuebn enzelin leesn, snderon das Wrot als gseatems.

  • Hab hier ma ein Beispiel für dich :D


    if(PlayerInfo[playerid][pTorKey] == 243)
    {
    MoveObject(MyTor, 3432.342,32432.12342,4325.32129);
    }


    // oder so für admins


    if(IsPlayerAdmin(playerid) || PlayerInfo[playerid][pAdmin] >= 1)
    {
    MoveObject(MyTor, 3432.342,32432.12342,4325.32129);
    }


    Hoffe du verstehst das so ^^


    Ach und ich hätt ma ne Frage: Wozu sind den ObjectStreamer?