[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
  • Moinsen,


    habe eine frage wie nutze ich dieses hier?
    p<delimiter>
    Splitter
    The next character is used as a string delimiter, example:
    "p|iii"



    Will split this string into three integers:



    1|2|3



    Note that on things other than strings space is still used as well.




    Quelle: http://wiki.sa-mp.com/wiki/Fast_Commands


    Mit freundlichen Grüßen,
    Skoam

  • Also könnte ich zum beispiel so machen:
    sscanf("01.01.1970", "p<.>iii", var0, var1, var2);
    Lg,
    Skoam

  • Hallo,


    ich möchte machen das wenn man einen Account hat sich nicht noch eins erstellen kann. Aber man kann sich überhaupt keinen Account erstellen es kommt immer die Meldung "Du hast bereits einen Account".


    if(clickedid == Textdraw15) //Register
    {
    new num_rows, num_fields;
    cache_get_data(num_rows, num_fields, handle);
    if(num_rows == 1) return SendClientMessage(playerid, COLOR_WHITE, "Du hast bereits einen Account!");
    if(strlen(PlayerInfo[playerid][dPassword]) <= 6) return SendClientMessage(playerid, COLOR_WHITE, "Dein Passwort ist zu kurz mind. 6 Zeichen!");
    {
    new query[500];
    mysql_escape_string(pName(playerid), pName(playerid));
    format(query, sizeof(query), "INSERT INTO Accounts (Username, Password) VALUES ('%s', MD5('%s'))", pName(playerid), PlayerInfo[playerid][dPassword]);
    mysql_pquery(handle, query);
    SendClientMessage(playerid, COLOR_WHITE, "Du hast dir erfolgreich ein Account erstellt!");
    }
    }


    [12:40:00] [DEBUG] cache_get_data - connection: 1
    [12:40:00] [WARNING] cache_get_data - no active cache
    [12:40:01] [DEBUG] cache_get_data - connection: 1
    [12:40:01] [WARNING] cache_get_data - no active cache
    [12:40:01] [DEBUG] cache_get_data - connection: 1
    [12:40:01] [WARNING] cache_get_data - no active cache
    [12:40:01] [DEBUG] cache_get_data - connection: 1
    [12:40:01] [WARNING] cache_get_data - no active cache
    [12:40:12] [DEBUG] cache_get_data - connection: 1
    [12:40:12] [WARNING] cache_get_data - no active cache


    Mit freundlichen Grüßen
    Grapefruit

  • Die 2 Sachen werden nicht angezeigt?
    Koordinaten sind richtig.
    CreatePickup(1318, 1, 1480.9752,-1771.3914,18.7958, 0); // SH AUSSEN
    Create3DTextLabel("[ Stadthalle ]\nDrücke "COLOR_HEX_BLUE"Enter "COLOR_HEX_WHITE"zum Betreten", COLOR_WHITE, 1480.9752,-1771.3914,18.7958, 10.0, 0);
    Sind bei den anderen Pickups und Labels dabei, alle anderen werden geladen.

    Mit freundlichen Grüßen
    Exqool

  • Bin gerade irgendwie dumm unterwegs.


    Wollte meine Gangfightbox updaten und habe dafür einen Timer erstellt.


    forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new ppl = 0; ppl < MAX_PLAYERS; ppl++)
    {
    if(Spieler[playerid][Fraktion] == Gangzonen[ppl][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[ppl][GFGegnerID])
    {
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    }
    }
    }
    return 1;
    }


    Bekomme aber diese Fehlermeldung:


    [19:58:58] [debug] Run time error 4: "Array index out of bounds"
    [19:58:58] [debug] Accessing element at negative index -1
    [19:58:58] [debug] AMX backtrace:
    [19:58:58] [debug] #0 0023982c in public GangfightUpdate (0x00000001) from Server.amx


    Hab mir schon alles ausgeben lassen. Klappt eig alles.

  • format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    zu:
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");

  • format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    zu:
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");


    Wenn ich's richtig verstanden habe, dann sollte ich dies auch für den Owner Text machen.
    Hab ich jedenfalls.


    forward GangfightUpdate(playerid);
    public GangfightUpdate(playerid)
    {
    new OwnerText[128], GegnerText[128], GZName[128], GZFZeit[128], Af[128], Bf[128], Cf[128], OwnerPoints[128], GegnerPoints[128];
    for(new i = 0; i < sizeof Gangzonen; i++)
    {
    if(Spieler[playerid][Fraktion] == Gangzonen[i][GFOwnerID] || Spieler[playerid][Fraktion] == Gangzonen[i][GFGegnerID])
    {
    //format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    if(Gangzonen[i][GFOwnerID] != -1) format(OwnerText,sizeof(OwnerText),"%s",Fraktionen[Gangzonen[i][GFOwnerID]][Frakname]);
    else format(OwnerText,sizeof(OwnerText),"Niemand");
    if(Gangzonen[i][GFGegnerID] != -1) format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    else format(GegnerText,sizeof(GegnerText),"Niemand");
    //format(GegnerText,sizeof(GegnerText),"%s",Fraktionen[Gangzonen[i][GFGegnerID]][Frakname]);
    format(GZName,sizeof(GZName),"~y~%s",Gangzonen[i][GangZoneName]);
    format(GZFZeit,sizeof(GZFZeit),"~r~Verbl. Zeit %d Minuten",60-Gangzonen[i][GFRunningTime]);
    format(Af,sizeof(Af),"~b~A: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerA]][Frakname]);
    format(Bf,sizeof(Bf),"~b~B: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerB]][Frakname]);
    format(Cf,sizeof(Cf),"~b~C: ~w~%s",Fraktionen[Gangzonen[i][GFFlaggenOwnerC]][Frakname]);
    format(OwnerPoints, sizeof(OwnerPoints),"%s%d/100",(Gangzonen[i][GFOwnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFOwnerPoints]);
    format(GegnerPoints, sizeof(GegnerPoints),"%s%d/100",(Gangzonen[i][GFGegnerPoints] < 10) ? ("00") : (""), Gangzonen[i][GFGegnerPoints]);
    UpdateGangfightBox(playerid, OwnerText, GegnerText, GZName, GZFZeit, Af, Bf, Cf, OwnerPoints, GegnerPoints);
    }
    }
    return 1;
    }
    Neues Problem:


    [20:17:40] [debug] Run time error 4: "Array index out of bounds"
    [20:17:40] [debug] Accessing element at index 9 past array upper bound 8
    [20:17:40] [debug] AMX backtrace:
    [20:17:40] [debug] #0 00239654 in public GangfightUpdate (0x00000001) from Server.amx


    Außerdem, wenn ich ein anderes Gebiet angreife, dann werden falsche Daten angezeigt.

  • stock FraktionName(playerid)
    {
    new fraktionname[599];
    switch(SpielerInfo[playerid][pFraktion])
    {
    case 0:{fraktionname="Zivilist";}
    case 1:{fraktionname=FraktionsInfo[1][Frakname];}
    case 2:{fraktionname="Fort Carson Fire Department";}
    case 3:{fraktionname="Fort Carson Medical Center";}
    case 4:{fraktionname="Fort Carson Fahrschule";}
    }
    return fraktionname;
    }



    C:\Users\Timo\Desktop\server\gamemodes\SFRP.pwn(1981) : error 047: array sizes do not match, or destination array is too small
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • stock FraktionName(playerid)
    {
    new fraktionname[64];
    switch(SpielerInfo[playerid][pFraktion])
    {
    case 0:{fraktionname="Zivilist";}
    case 1:{format(fraktionname,64,FraktionsInfo[1][Frakname]);}
    case 2:{fraktionname="Fort Carson Fire Department";}
    case 3:{fraktionname="Fort Carson Medical Center";}
    case 4:{fraktionname="Fort Carson Fahrschule";}
    }
    return fraktionname;
    }


  • Wird leider trotzdem Ingame nicht angezeigt.

  • ocmd:stats(playerid,params[])
    {
    if(SpielerInfo[playerid][pLogIn] == 1)
    {
    new NameString[70],AccountString[128],AdminString[128],FraktionString[128];
    format(NameString,sizeof(NameString),"|-----[%s]-----|",SpielerName(playerid));
    format(AccountString,sizeof(AccountString),"Name:[%s] Level:[%i] Respektpunkte:[%i/%i] PayDayTime:[%i]",SpielerName(playerid),SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pPoints],SpielerInfo[playerid][pZeit]);
    format(AdminString,sizeof(AdminString),"Adminrang:[%s{FFFFFF}] Gemachte Tickets:[%i]",AdminName(playerid),SpielerInfo[playerid][pSupTicket]);
    format(FraktionString,sizeof(FraktionString),"Fraktion:[%s] Rang:[%i] Leader:[%s]",FraktionName(playerid),SpielerInfo[playerid][pRang],LeaderName(playerid));
    SendClientMessage(playerid,WEIS,NameString);
    SendClientMessage(playerid,WEIS,AccountString);
    SendClientMessage(playerid,WEIS,AdminString);
    SendClientMessage(playerid,WEIS,FraktionString);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht Eingeloggt.");
    return 1;
    }
    }

  • Wann wird der Timer immer gemacht.
    Bei OneGamemodeinit
    SetTimer("FahrzeugUpdater2",600000,true);
    public FahrzeugUpdater2()
    {
    for(new playerid=0;playerid<MAX_PLAYERS;playerid++)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid) && IsPlayerInAnyVehicle(playerid))
    {
    if(Motor[GetPlayerVehicleID(playerid)] == true)
    {
    vFahrzeug[GetPlayerVehicleID(playerid)][Tank] -= FahrzeugInfoModel[GetVehicleModel(GetPlayerVehicleID(playerid))-400][ftverbrauch];
    }
    }
    }
    return true;
    }