[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
  • Exqoolz erstellst du die Box auch als Erstes?


    -------------------------------------------------------------------------------------------------------


    new len = strlen(inputtext), pass[16];
    PlayerInfo[playerid][dPassword] = len;


    Wenn ich dPassword ausgeben lasse, gibt er nichts aus. Hoffe das mir jemand helfen kann.


    Mit freundlichen Grüßen
    Grapefruit :)


  • Jap

    Mit freundlichen Grüßen
    Exqool

  • enum e_Gangzone
    {
    gOwner,
    Float:gMinX,
    Float:gMinY,
    Float:gMaxX,
    Float:gMaxY,
    gRunning,
    gScore1,
    gScore2,
    gAttacker
    }


    new Gangzones[MAX_GANGZONES][e_Gangzone] = {
    {0,1856.0,-1132.0,2063.0,-1257.0,0,0,0,0},
    {0,0.0,0.0,0.0,0.0,0,0,0,0}
    };


    new Gangzone[1];
    public OnPlayerSpawn(playerid)
    {
    PlayerTextDrawHide(playerid, pTextTime[playerid][0]);
    PlayerTextDrawHide(playerid, pTextTime[playerid][1]);
    PlayerTextDrawHide(playerid, pTextTime[playerid][2]);
    PlayerTextDrawHide(playerid, pTextHUD[playerid][17]);
    PlayerTextDrawShow(playerid, pTextHUD[playerid][17]);


    for(new i; i<sizeof(Gangzones); i++)
    {
    new color;
    if(Gangzones[i][gOwner] == 2){
    color = 0x57575757;
    }
    if(Gangzones[i][gOwner] == 4){
    color = 0x23C70202;
    }
    GangZoneShowForPlayer(playerid, Gangzone[i], color);
    }


    new datumstring[100], uhrstring[100], framesstring[100], bankstring[100];
    format(datumstring, sizeof(datumstring), "%02d.%02d.%04d", tag, monat, jahr);
    Seitdem ich diesen for(new-Teil eingefügt habe, geht das OnPlayerSpawn nicht mehr richtig?
    Also alles danach wird nicht ausgeführt.

    Mit freundlichen Grüßen
    Exqool

  • stock IsPlayerInGangzone(playerid)
    {
    for(new i;i<sizeof(Gangzones);i++)
    {
    new Float:GetX,Float:GetY,Float:GetZ;
    GetPlayerPos(playerid,GetX,GetY,GetZ);
    if(Gangzones[i][gMinX] < GetX && Gangzones[i][gMaxX] > GetX && Gangzones[i][gMinY] < GetY && Gangzones[i][gMaxY] > GetY)
    {
    return i;
    }
    return -1;
    }
    return -1;
    }
    CMD:invade(playerid)
    {
    if(!IsLoggedIn(playerid))return 1;
    if(Spieler[playerid][pFraktion] == 1)return SendClientMessage(playerid, COLOR_GREY, "** Du bist in keiner Gang oder Mafia!");
    if(Spieler[playerid][pFraktion] == 3)return SendClientMessage(playerid, COLOR_GREY, "** Du bist in keiner Gang oder Mafia!");
    if(Spieler[playerid][pRank] < 7)return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Co-Leader oder höher.");
    if(IsPlayerInGangzone(playerid) > -1)
    {
    new string[128];
    new zone = IsPlayerInGangzone(playerid);
    if(Gangzones[zone][gRunning] == 1)return SendClientMessage(playerid,COLOR_GREY,"** Das Gebiet wird bereits angegriffen!");
    if(Gangzones[zone][gOwner] == Spieler[playerid][pFraktion]) return SendClientMessage(playerid,COLOR_GREY,"** Ihr seid bereits im Besitz dieses Gebietes.");
    Gangzones[zone][gAttacker] = Spieler[playerid][pFraktion];
    Gangzones[zone][gRunning] = 1;
    SetTimerEx("Gangfight",1800000,0,"i",zone);
    format(string, sizeof(string), "[ GANGFIGHT ] Die Fraktion %s greift ein Gebiet der Fraktion %s an!", GetFraktionName(Gangzones[zone][gAttacker]), GetFraktionName(Gangzones[zone][gOwner]));
    SendClientMessageToAll(COLOR_ORANGE, string);
    }else{
    SendClientMessage(playerid, COLOR_GREY, "** Du bist in keinem Gebiet.");
    }
    return 1;
    }
    Sagt mir immer, dass ich in keinem Gebiet drin bin?

    Mit freundlichen Grüßen
    Exqool

  • Hallo.
    Ich habe folgendes Problem bei einem Befehl.
    Den Befehl gibt es nicht und dieser debug kommt:


    Code
    [18:40:33] [debug] Run time error 4: "Array index out of bounds"
    [18:40:33] [debug]   Accessing element at index 18 past array upper bound 17
    [18:40:33] [debug] Backtrace (most recent call first):
    [18:40:33] [debug] #0  0037c3d0 in public ocmd_bizlist (playerid=0, params[]=@0x00000000 "") at D:\pRP\gamemodes\purerpscript_pub.pwn:38307
    [18:40:33] [debug] #1  ???????? in native CallLocalFunction () from samp-server.exe
    [18:40:33] [debug] #2  00008484 in public OnPlayerCommandText (playerid=0, cmdtext[]=@0x00000000 "") at D:\pRP\pawno\include\ocmd.inc:31


    for (new i = 0; i < sizeof(BizInfo); i++)
    {
    format(string, sizeof(string), "%s\n%s [ %i/%i ]", string, BizName(i), BizInfo[i][biz_prods], bMaxProds[BizInfo[i][biz_art]-1][0]); // Zeile 38307
    }
    ShowPlayerDialog(playerid, DIALOG_TRUCKER_BIZLIST, DIALOG_STYLE_LIST, "Bizliste", string, "Checkpoint", "Abbrechen");


    ocmd:


    Habe die etwas verändert:


    #include <a_samp>
    #define ocmd:%1(%2) forward ocmd_%1(%2);\
    public ocmd_%1(%2)
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    cmdtext[0]='_';
    new ocmdStr[128],ocmdParams[128],bool:ocmdAffe,ocmdFu;
    for(new i;i<128;i++)
    {
    if(cmdtext[i]=='\0')break;
    if((cmdtext[i]==' ')&&(!ocmdAffe))
    {
    ocmdAffe=true;
    continue;
    }
    if(!ocmdAffe)ocmdStr[i]=cmdtext[i];
    else
    {
    ocmdParams[ocmdFu]=cmdtext[i];
    ocmdFu++;
    }
    }
    format(ocmdStr,128,"ocmd%s",ocmdStr);
    if(!strlen(ocmdParams))format(ocmdParams,128," ");
    if(CallLocalFunction(ocmdStr,"ds",playerid,ocmdParams))return 1; // error zeile
    cmdtext[0]='/';
    return CallLocalFunction("ocmd_OnPlayerCommandText","ds",playerid,cmdtext);
    }


    #if defined _ALS_OnPlayerCommandText
    #undef OnPlayerCommandText
    #else
    #define _ALS_OnPlayerCommandText
    #endif
    #define OnPlayerCommandText ocmd_OnPlayerCommandText
    forward ocmd_OnPlayerCommandText(playerid, cmdtext[]);


    Jeffry:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Theoretisch müssten diese Animationen zwar da sein, nur ob man darauf zugreifen kann, oder ob sie wieder entfernt wurden (einige Teile sind wirklich nur aufgenommen) kann ich nicht genau sagen.
    Das ARRESTgun kommt da vor, wo die beiden aus dem Polizeiauto aussteigen und die Waffen nach vorne halten.


    Möglicherweise kennt jemand durch Zufall die Animationen falls es sie gibt. Ich kenne die nicht alle auswendig, sorry. ;)

  • Jeffry: Brauche mal wieder deine Hilfe :D


    Ich wollte ein Textdraw austesten mit einem FilterScript. Das Problem ist, beim laden des FilterScripts erscheint das Textdraw nicht. Also habe ich testweise ein Befehl erstellt der diese Funktion ausführt, dann funktioniert es.
    Doch das ganze sollte natürlich ohne dem Befehl funktionieren, ich glaube ich habe ein Problem bei OnPlayerConnect.
    Wenn unbedingt nötig, kann ich auch ein Beispiel der Textdraws posten, in veränderter Form.


    Schaut so aus:



    #include <a_samp>
    #include <ZCMD>


    new Text:DevDisplay[5];


    public OnFilterScriptInit()
    {
    TEXTDRAWS...
    TEXTDRAWS...
    TEXTDRAWS...
    TEXTDRAWS...
    TEXTDRAWS...
    TEXTDRAWS...
    TEXTDRAWS...


    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    print("OnPlayerConnect wurde im Filterscript aufgerufen");
    for(new i = 0; i < 5; i++){TextDrawShowForPlayer(playerid, DevDisplay[i]);}
    return 1;
    }


    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    //Version:
    if(clickedid == DevDisplay[1])
    {


    }
    return 1;
    }


    //Befehle



    CMD:test(playerid,params[])
    {
    for(new i = 0; i < 5; i++){TextDrawShowForPlayer(playerid, DevDisplay[i]);}
    return 1;
    }




    Mit freundlichen Grüßen
    JustMe.77 8)

  • Matthew_Mahone: Herrausfinden ob Spieler vor einem Fahrzeug ist


    @[LnD]JustMe.77:
    Dann sollte es klappen, wenn du nach dem Erstellen der Textdraws ganz unten in OnFilterScriptInit das hier einfügst:
    for(new p=0; p<MAX_PLAYERS; p++) for(new i = 0; i < 5; i++) TextDrawShowForPlayer(p, DevDisplay[i]);


    OnPlayerConnect wird ja nur aufgerufen, wenn du den Server betrittst, nicht wenn der Filterscript geladen wird.