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


    if(oldstate == PLAYER_STATE_ONFOOT && newstate == KEY_SECONDARY_ATTACK)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 230.8787,184.3384,1003.0313))
    {
    SendClientMessage(playerid,-1,"hi");
    }
    }


    und



    if(newstate & KEY_SECONDARY_ATTACK)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 230.8787,184.3384,1003.0313))
    {
    SendClientMessage(playerid,-1,"hi");
    }
    }




    Bekomme aber keine nachricht ?



    Bin direkt neben dem Punkt

  • Die Include sagt folgendes:

    Code
    SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0)


    Das deutet also darauf hin, dass du die falsche Include hast. Setze doch mal in die streamer Include:


    Code
    #error "test"

    sofern der Compiler nicht direkt beendet, musst du mal schauen ob du die oben genannte Zeile hast. Sofern ja, muss die Ursache eine andere sein.

  • Die Include sagt folgendes:

    Code
    SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0)

    Das deutet also darauf hin, dass du die falsche Include hast. Setze doch mal in die streamer Include:


    Code
    #error "test"

    sofern der Compiler nicht direkt beendet, musst du mal schauen ob du die oben genannte Zeile hast. Sofern ja, muss die Ursache eine andere sein.

    Compiler gibt den Error einfach aus und beendet sich nicht.


    Das einzige was ich gefunden habe ist:


    native SetDynamicObjectMaterial(STREAMER_TAG_OBJECT objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0);


    native SetDynamicObjectMaterialText(STREAMER_TAG_OBJECT objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);





    // EDIT:


    Bekomme auch die fehlermeldung das "SetDynamicObjectMaterialText" nicht definiert ist (aber beides vorhanden wie man oben sieht)

  • Hi,
    komme gerade komplett nicht weiter.
    Bin gerade bei einem Kick-Befehl, der auch soweit funktioniert, allerdings bekommt der gekickte User die Kick Nachricht nicht.. Wieso?



    forward KickTimer(playerid);
    ocmd:kick(playerid,params[])
    {
    if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
    if(isPlayerAnAdmin(playerid,2))
    {
    new pID, string[128], reason;
    if(sscanf(params,"us",pID, reason))return SendClientMessage(playerid,GRAU, "Befehl: [Name/Spieler-ID] [Grund]");
    {
    format(string, sizeof(string),"AdmCMD: %s hat %s gekickt. Grund: %s", SpielerDaten[playerid][pName], SpielerDaten[pID][pName], reason);
    SetTimerEx("KickTimer", 250, false, "i", pID);
    {
    SendClientMessage(pID, ADMCMD, string);
    SendClientMessageToAll(ADMCMD, string);
    Kick(pID);
    }
    }
    }
    return 1;
    }


  • Hi,
    komme gerade komplett nicht weiter.
    Bin gerade bei einem Kick-Befehl, der auch soweit funktioniert, allerdings bekommt der gekickte User die Kick Nachricht nicht.. Wieso?


    forward KickTimer(playerid);ocmd:kick(playerid,params[]){if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");if(isPlayerAnAdmin(playerid,2)){new pID, string[128], reason;if(sscanf(params,"us",pID, reason))return SendClientMessage(playerid,GRAU, "Befehl: [Name/Spieler-ID] [Grund]");{format(string, sizeof(string),"AdmCMD: %s hat %s gekickt. Grund: %s", SpielerDaten[playerid][pName], SpielerDaten[pID][pName], reason);SetTimerEx("KickTimer", 250, false, "i", pID);{SendClientMessage(pID, ADMCMD, string);SendClientMessageToAll(ADMCMD, string);Kick(pID);}}}return 1;}

    Liegt an die Priorisierung der Pakete. Kick() wird zuerst umgesetzt als SendClientMessage(). Deswegen musst du per Timer Kick zeitversetzt ausführen lassen.

  • Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Erledigt ().
  • Folgendes Problem: Bei untem genanntem Script treten folgende Bugs auf, mit denen wir schon mehrere Stunden am verweifeln sind...
    1. Medic kann /d chat nicht lesen
    2. Jede Fraktion kann /f Chat von jeder anderen lesen
    3. /f für Medic funktioniert nicht
    4. /f bei Hitman (Fraktion 3) braucht man ein manchmal ein Funkgerät


    Fraktionen: 1 - Polizei
    2- Medic
    3- Hitmen


    ocmd@2:f,funk(playerid,params[])
    {
    #pragma unused params
    if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
    if(SpielerDaten[playerid][pTot] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(SpielerDaten[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    new text[96], string[128], string2[128], fv = IsAFraktionsVeh(playerid);
    if(sscanf(params, "s[96]", text))return SendClientMessage(playerid, GRAU, "Benutze: /funk [Nachricht]");
    // if(SpielerDaten[playerid][pFunkgeraet] == 0 || fv != -1 && fVehicle[fv][vehFraktion] == SpielerDaten[playerid][pFraktion])return SendClientMessage(playerid, GRAU, "Du hast kein Funkgerät mit oder sitzt in keinem Fraktionsfahrzeug!");
    if(!(SpielerDaten[playerid][pFraktion] == 1 || SpielerDaten[playerid][pFraktion] == 2 || SpielerDaten[playerid][pFraktion] == 3))return SendClientMessage(playerid, GRAU, "Diesen Befehl kannst du nicht nutzen!");
    format(string, sizeof(string), "[Staatsfunk] %s [%s]: %s", GetRoleplayName(playerid), GetFrakAbkuerzung(playerid), text);
    format(string2, sizeof(string2), "(( %s %s: %s ))", GetRankName(SpielerDaten[playerid][pFraktion], SpielerDaten[playerid][pRank]), GetRoleplayName(playerid) , text);
    for(new i=0;i<GetMaxPlayers();i++)
    {
    if(Eingeloggt[i] == 1)
    {
    if(SpielerDaten[i][pFraktion] == 1 || SpielerDaten[i][pFraktion] == 2)
    {
    if(SpielerDaten[playerid][pFunkgeraet] == 0 || fv != -1 && fVehicle[fv][vehFraktion] == SpielerDaten[playerid][pFraktion])return SendClientMessage(playerid, GRAU, "Du hast kein Funkgerät mit oder sitzt in keinem Fraktionsfahrzeug!");
    {
    SendClientMessage(i, HELLBLAU, string);
    }
    }
    else if(SpielerDaten[i][pFraktion] == 3)
    {
    SendClientMessage(i, HELLBLAU, string2);
    }
    }
    }
    return 1;
    }
    ocmd@2:d,department(playerid,params[])
    {
    #pragma unused params
    if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
    if(SpielerDaten[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    if(SpielerDaten[playerid][pTot] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    new text[96], string[128], fv = IsAFraktionsVeh(playerid);
    if(sscanf(params, "s[96]", text))return SendClientMessage(playerid, GRAU, "Benutze: (/d)department [Nachricht]");
    if(SpielerDaten[playerid][pFunkgeraet] == 0 || fv != -1 && fVehicle[fv][vehFraktion] == SpielerDaten[playerid][pFraktion])return SendClientMessage(playerid, GRAU, "Du hast kein Funkgerät mit oder sitzt in keinem Fraktionsfahrzeug!");
    if(!(SpielerDaten[playerid][pFraktion] == 1 || SpielerDaten[playerid][pFraktion] == 2))return SendClientMessage(playerid, GRAU, "Diesen Befehl kannst du nicht nutzen!");
    format(string ,sizeof(string), "[Funk] %s [%s]: %s", GetRoleplayName(playerid), GetRankName(SpielerDaten[playerid][pFraktion], SpielerDaten[playerid][pRank]), text);
    for(new i=0;i<GetMaxPlayers();i++)
    {
    if(Eingeloggt[i] == 1)
    {
    if(SpielerDaten[i][pFraktion] == SpielerDaten[playerid][pFraktion])
    {
    SendClientMessage(i, COLOR_FRAKTIONSCHAT, string);
    }
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von Norgamn ()

  • 1. Medic kann /d chat nicht lesen

    Ein Medic kann den /d Chat nur lesen, wenn die Nachricht von einem Medic kommt, nicht von einem Polizist.



    2. Jede Fraktion kann /f Chat von jeder anderen lesen

    Nur Medic und Polizei können den Chat gemeinsam lesen.



    3. /f für Medic funktioniert nicht

    Was heißt es funktioniert nicht? Was passiert bzw. passiert nicht?



    4. /f bei Hitman (Fraktion 3) braucht man ein manchmal ein Funkgerät

    if(SpielerDaten[playerid][pFunkgeraet] == 0 || fv != -1 && fVehicle[fv][vehFraktion] == SpielerDaten[playerid][pFraktion])return SendClientMessage(playerid, GRAU, "Du hast kein Funkgerät mit oder sitzt in keinem Fraktionsfahrzeug!");
    Diese Zeile muss aus der Schleife raus und unter Zeile 10 im Befehl eingefügt werden.



    PS:
    Dieser Thread ist eigentlich für kleine Scripting Fragen gedacht.
    Bitte öffne für Fragen deiner Art nächstes mal einen separaten Thread.

  • Hey,
    wo definierst du KTime? und Wie


    [b]SetTimerEx("UnPrison",KTime[playerid],0,"i",playerid);[/b]


    Ich glaube bei dir Fehlt bei KTime das playerid

    new pid;
    new KTime[128];



    Am anfang des Befehls (arrest)


    Hierist der ganze Code


    ocmd:arrestpl(playerid,params[])
    {
    new pid;
    new KTime[128];
    if(gTeam[playerid] == 2 || IsACop(playerid) || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)
    {
    if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist nicht im Dienst!");
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,3.0, 198.0591,159.2369,1003.0234))
    {
    if(IsACop(pid))
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Du kannst keinen Beamten einsperren!");
    return 1;
    }
    }
    if(GetDistanceBetweenPlayers(playerid,pid) < 5)
    {
    if(WantedLevel[pid] < 1)
    {
    SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist nicht gesucht!");
    return 1;
    }
    new string[128];
    format(string, sizeof(string), "* Du hast %s eingesperrt für $%d Sekunden.!", GetName(pid),PlayerInfo[pid][pJailTime]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    //GivePlayerMoney(pid, -moneys);
    format(string, sizeof(string), "Eingesperrt von %s ~n~ fuer $%d Sekunden", GetName(pid), PlayerInfo[pid][pJailTime]);
    GameTextForPlayer(pid, string, 5000, 5);
    ResetPlayerWeapons(pid);
    //PlayerInfo[pid][WantedLevel] = KTime
    WantedLevel[pid] = KTime[playerid];
    PlayerInfo[pid][pJailTime] = KTime[playerid] * 60;
    SetTimerEx("UnPrison",KTime,0,"i",playerid);
    //PlayerInfo[pid][pJailTime] = KTime * 60
    //WantedPoints[killerid] += 2
    if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
    {
    format(string, sizeof(string), "<< LS Officer %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pid));
    OOCNews(COLOR_LIGHTRED, string);
    }
    else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2)
    {
    format(string, sizeof(string), "<< SF Officer %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pid));
    OOCNews(COLOR_LIGHTRED, string);
    }
    else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3)
    {
    format(string, sizeof(string), "<< Soldat %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pid));
    OOCNews(COLOR_LIGHTRED, string);
    }
    else if(PlayerInfo[playerid][pMember]==21||PlayerInfo[playerid][pLeader]==21)
    {
    format(string, sizeof(string), "<< FBI-Agent %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pid));
    OOCNews(COLOR_LIGHTRED, string);
    }
    PlayerInfo[pid][pJailed] = 1;
    PlayerInfo[pid][pArrested] += 1;
    SetPlayerInterior(pid, 3);
    SetPlayerFree(pid,playerid, "Verhaftet");
    WantedPoints[pid] = 0;
    WantedLevel[pid] = 0;
    SetPlayerWantedLevel(pid,0);
    WantLawyer[pid] = 1;
    }
    else
    {
    SendClientMessage(playerid,-1,"Du bist kein Beamter.");
    }
    }
    return 1;
    }

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