>> Mein ganzes Notrufsystem geht nicht <<

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
  • Hallo Leute,
    Ich brauche mal hilfe bei meinen Notrufsystem,
    was ich nun endlich mal gescriptet habe, da mein Server schon auf ist.
    Deswegen ist es wichtig, das zu haben, da ich jedoch noch Anfänger in Scripten für mich bin, brauch ich da mal akribische hilfe.
    Ich willd abei nicht hören Haha abkopier oder so, wenn doch sowas kommt, dann bitte per Pn, denn das ist Spam,
    ich brauch hier meine Hilfe, ihr msst das immer so angehen, viele User die das selber Problem haben wie ich, gucken vllt, auch in diesen
    Thread und suchen hilfe, und wenn da dann so was sinnloses steht, dann würde ich es nicht gut finden, da das Theme hilfreich sein soll,
    also bitte unterlasst es. Das war das Wort zum Samstag ^^.


    Zum Problem
    Mein Befehl /serice geht nicht.
    Wenn ich zb. /service Medic eingebe zeigt er mir diesen Text an.
    INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]
    Ich gebe alle Parameter richtig ein, doch er zeigt nur die Info ein.
    Wisst ihr woran das liegt ? Denn beim /accept befehl ist es nicht anders.
    Deswegen würde ich gerne eure hilfe annehmen, deswegen wende ich mich mal an euch.


    Code Service
    ocmd:service(playerid,params[])
    {
    new tmp[64];
    if(sscanf(params,"s[128]",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");
    if(tod[playerid] == 1)return SendClientMessage(playerid,weiss,"Du bist verwundet");
    if(!strcmp(tmp,"SAPD",true))
    {
    new pstring[128];
    format(pstring,sizeof(pstring),"%s hat einen Streifenwagen angefordert. Gib /accept SAPD ein um anzunehmen.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInFrak(i,1))
    {
    SendClientMessage(i,0x33CCFFAA,pstring);
    }
    }
    SendClientMessage(playerid,0x33CCFFAA,"Du hast einen Streifenwagen angefordert, warte auf Antwort");
    willlspd[playerid]=1;
    return 1;
    }
    if(!strcmp(tmp,"Medic",true))
    {
    new mstring[128];
    format(mstring,sizeof(mstring),"%s hat einen Medic angefordert. Gib /accept Medic ein um anzunehmen.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInFrak(i,2))
    {
    SendClientMessage(i,0x33CCFFAA,mstring);
    }
    }
    SendClientMessage(playerid,0x33CCFFAA,"Du hast einen Medic angefordert, warte auf Antwort");
    willmedic[playerid]=1;
    return 1;
    }
    if(!strcmp(tmp,"Taxi",true))
    {
    return SendClientMessage(playerid,grau,"Noch nicht möglich");
    }
    if(!strcmp(tmp,"Oamt",true))
    {
    new ostring[128];
    format(ostring,sizeof(ostring),"%s hat das Oamt angefordert. Gib /accept Oamt ein um anzunehmen.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInFrak(i,3))
    {
    SendClientMessage(i,0x33CCFFAA,ostring);
    }
    }
    SendClientMessage(playerid,0x33CCFFAA,"Du hast das Oamt angefordert, warte auf Antwort");
    willoamt[playerid]=1;
    return 1;
    }
    if(!strcmp(tmp,"ADAC",true))
    {
    new astring[128];
    format(astring,sizeof(astring),"%s hat einen Notruf abgesetzt. Gib /accept Adac ein um anzunehmen.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInFrak(i,4))
    {
    SendClientMessage(i,0x33CCFFAA,astring);
    }
    }
    SendClientMessage(playerid,0x33CCFFAA,"Du hast einen Mechaniker angefordert, warte auf Antwort");
    willadac[playerid]=1;
    }
    return 1;
    }


    Der Code accept
    ocmd:accept(playerid,params[])
    {
    new string[128];
    if(sscanf(params,"s[128]",string))return SendClientMessage(playerid,weiss,"INFO: /accept [SAPD,Medic,Oamt,Adac]");
    accept(playerid,string);
    return 1;
    }

    Der Stock Code accept

    stock accept(playerid,tmp[])
    {
    new acceptstr[128];
    if(!strcmp(tmp,"Medic",true))
    {
    if(IsPlayerInFrak(playerid,2))
    {
    if(Dienst[playerid]==0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    format(acceptstr,sizeof(acceptstr),"Notarzt %s hat deinen Notruf angenommen und ist unterwegs zu dir.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    new string[128];
    if(willmedic[i]==0)continue;
    SendClientMessage(i,0x33CCFFAA,acceptstr);
    willmedic[i]=0;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du hast den Auftrag von %s angenommen. Fahre zum Checkpoint.",SpielerName(i));
    SendClientMessage(playerid,0x33CCFFAA,nachricht);
    format(string,sizeof(string),"%s hat den Auftrag von %s angenommen.",SpielerName(playerid),SpielerName(i));
    new Float:xc,Float:yc,Float:zc;
    GetPlayerPos(i,xc,yc,zc);
    SetPlayerCheckpoint(playerid,xc,yc,zc,2);
    return 1;
    }
    SendClientMessage(playerid,weiss,"Keiner hat ein Medic angefordert");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,weiss,"Du bist kein Medic.");
    return 1;
    }
    }
    if(!strcmp(tmp,"Sapd",true))
    {
    if(IsPlayerInFrak(playerid,1))
    {
    if(Dienst[playerid]==0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    format(acceptstr,sizeof(acceptstr),"Officer %s hat deinen Notruf angenommen und ist unterwegs zu dir.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    new string[128];
    if(willmedic[i]==0)continue;
    SendClientMessage(i,0x33CCFFAA,acceptstr);
    willmedic[i]=0;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du hast den Auftrag von %s angenommen. Fahre zum Checkpoint.",SpielerName(i));
    SendClientMessage(playerid,0x33CCFFAA,nachricht);
    format(string,sizeof(string),"%s hat den Auftrag von %s angenommen.",SpielerName(playerid),SpielerName(i));
    new Float:xc,Float:yc,Float:zc;
    GetPlayerPos(i,xc,yc,zc);
    SetPlayerCheckpoint(playerid,xc,yc,zc,2);
    return 1;
    }
    SendClientMessage(playerid,weiss,"Keiner hat ein Officer angefordert");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,weiss,"Du bist kein Officer.");
    return 1;
    }
    }
    if(!strcmp(tmp,"Adac",true))
    {
    if(IsPlayerInFrak(playerid,4))
    {
    if(Dienst[playerid]==0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    format(acceptstr,sizeof(acceptstr),"Mechaniker %s hat deinen Notruf angenommen und ist unterwegs zu dir.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    new string[128];
    if(willmedic[i]==0)continue;
    SendClientMessage(i,0x33CCFFAA,acceptstr);
    willmedic[i]=0;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du hast den Auftrag von %s angenommen. Fahre zum Checkpoint.",SpielerName(i));
    SendClientMessage(playerid,0x33CCFFAA,nachricht);
    format(string,sizeof(string),"%s hat den Auftrag von %s angenommen.",SpielerName(playerid),SpielerName(i));
    new Float:xc,Float:yc,Float:zc;
    GetPlayerPos(i,xc,yc,zc);
    SetPlayerCheckpoint(playerid,xc,yc,zc,2);
    return 1;
    }
    SendClientMessage(playerid,weiss,"Keiner hat ein Adac angefordert");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,weiss,"Du bist kein Mechaniker.");
    return 1;
    }
    }
    if(!strcmp(tmp,"Oamt",true))
    {
    if(IsPlayerInFrak(playerid,3))
    {
    if(Dienst[playerid]==0)return SendClientMessage(playerid,weiss,"Nicht im Dienst.");
    format(acceptstr,sizeof(acceptstr),"Oamtler %s hat deinen Notruf angenommen und ist unterwegs zu dir.",SpielerName(playerid));
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    new string[128];
    if(willmedic[i]==0)continue;
    SendClientMessage(i,0x33CCFFAA,acceptstr);
    willmedic[i]=0;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du hast den Auftrag von %s angenommen. Fahre zum Checkpoint.",SpielerName(i));
    SendClientMessage(playerid,0x33CCFFAA,nachricht);
    format(string,sizeof(string),"%s hat den Auftrag von %s angenommen.",SpielerName(playerid),SpielerName(i));
    new Float:xc,Float:yc,Float:zc;
    GetPlayerPos(i,xc,yc,zc);
    SetPlayerCheckpoint(playerid,xc,yc,zc,2);
    return 1;
    }
    SendClientMessage(playerid,weiss,"Keiner hat ein Oamt angefordert");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,weiss,"Du bist kein Oamtler.");
    return 1;
    }
    }
    return 1;
    }


    Wenn ich anehmen will passiert das selbe, es wird nur die Info angezeigt.

    • Offizieller Beitrag

    Schau dir diese Zeile an
    if(sscanf(params,"s[128]",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");


    Bei deine, Params brauchst du die String Länge nicht anzugeben.. Sprich


    if(sscanf(params,"s",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");

    • Offizieller Beitrag

    Hey,


    mach mal bei allen "if(!strcmp(tmp,"***",true))" das Ausrufezeichen weg. Dann sollte es gehen :)


    MfG StreetFX

    Bitte schau dir doch mal die Grundfunktion von strcmp im SA-MP Wiki an.



    Sein Problem ist:
    Wenn ich zb. /service Medic eingebe zeigt er mir diesen Text an.
    INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]



    Sprich, es wird hier return:
    if(sscanf(params,"s[128]",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");
    Somit kommen wir wieder zu meinem Post zurück:
    Schau dir diese Zeile an
    if(sscanf(params,"s[128]",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");


    Bei deine, Params brauchst du die String Länge nicht anzugeben.. Sprich


    if(sscanf(params,"s",tmp))return SendClientMessage(playerid,grau,"INFO: /service [Taxi/Oamt/ADAC/Medic/SAPD]");