Beiträge von [BlaZZeR]BirD

    Du verstehst nicht was ich will ...
    Spieler == 3 Wanted´s
    Cop == GIBT 6 Wanted´s
    Spieler == NUN 9 Wanted´s


    Ich will das der Spieler aber NUR Maximal 6 Wanteds haben kann.
    Nun besser ;D ?

    Nein, ich meine z.b. der Spieler hat 3 Wanteds und ein Cop gibt dem Spieler 6 dann gehen die Wanteds des Spielers auf 9 wie mache ich das anders?
    mein jetziger Code:
    ocmd:su(playerid,params[])
    {
    if(SpielerInfo[playerid][pFraktion] == 1||SpielerInfo[playerid][pFraktion] == 2||SpielerInfo[playerid][pFraktion] == 3){
    if(OnDuty[playerid] ==1){
    new pID,stk,grund[128],string[128];
    if(sscanf(params,"uis",pID,stk,grund))return SendClientMessage(playerid,WEIß,"Nutze: /su [ID] [Anzahl] [Grund]");
    if(SpielerInfo[pID][pWanted]>=6){
    SendClientMessage(playerid,WEIß,"Der Spieler kann nicht mehr als 6 Wanteds bekommen");
    }
    if(IsPlayerConnected(pID)){
    if(SpielerInfo[pID][pJail]==0){
    if(SpielerInfo[pID][pFraktion] == 1||SpielerInfo[pID][pFraktion] == 2||SpielerInfo[pID][pFraktion] == 3){
    if(stk>1&&stk<6){
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,giveplayer,sizeof(giveplayer));
    format(string,sizeof(string),"Du hast ein Verbrechen begangen: %s. Von %s",grund,sendername);
    SendClientMessage(pID,HELLROT,string);
    format(string,sizeof(string),"Vergebene Wanteds: %d. Neues Wantedlevel: %d",stk,SpielerInfo[pID][pWanted]);
    SendClientMessage(pID,GELB,string);
    SetPlayerWantedLevel(pID,GetPlayerWantedLevel(pID)+stk);SavePlayer(pID);
    for(new i=0; i <MAX_PLAYERS; i++){
    if(IsACop(i)){
    format(string,sizeof(string),"HQ: Alle Einheiten: Reporter: %s, vergebene Wanteds: %d",sendername,stk);
    SendClientMessage(i,BLAU,string);
    format(string,sizeof(string),"HQ: Grund: %s, Verbrecher: %s, Aktuelle Wanted´s: %d",grund,giveplayer,SpielerInfo[pID][pWanted]);
    SendClientMessage(i,BLAU,string);
    }
    }
    return 1;
    }else SendClientMessage(playerid,WEIß,"Nur zwischen 1 bis 6 Wanteds dürfen vergeben werden");
    }else SendClientMessage(playerid,WEIß,"Du darfst keine Polizisten anklagen");
    }else SendClientMessage(playerid,WEIß,"Der Spieler ist im Gefängnis");
    }else SendClientMessage(playerid,WEIß,"Der Spieler ist nicht Online");
    }else SendClientMessage(playerid,WEIß,"Du bist nicht im Dienst");
    }
    return 1;
    }

    Abend,


    ich hab gerade einen /su CMD gescriptet der einem Spieler erlaubt einem anderen Spieler Wanted´s zu geben.
    nur wie mache ich das der wen der Spieler z.b. 1 Wanted hat und der Cop 6 gibt das die Wanteds nicht auf 7 hochrutschen?
    Code:
    ocmd:su(playerid,params[])
    {
    if(SpielerInfo[playerid][pFraktion] == 1||SpielerInfo[playerid][pFraktion] == 2||SpielerInfo[playerid][pFraktion] == 3){
    if(OnDuty[playerid] ==1){
    new pID,stk,grund[128],string[128];
    if(sscanf(params,"uis",pID,stk,grund))return SendClientMessage(playerid,WEIß,"Nutze: /su [ID] [Anzahl] [Grund]");
    if(SpielerInfo[pID][pWanted]>=6){
    SendClientMessage(playerid,WEIß,"Der Spieler kann nicht mehr als 6 Wanteds bekommen");
    }
    if(IsPlayerConnected(pID)){
    if(SpielerInfo[pID][pJail]==0){
    if(SpielerInfo[pID][pFraktion] == 1||SpielerInfo[pID][pFraktion] == 2||SpielerInfo[pID][pFraktion] == 3){
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,giveplayer,sizeof(giveplayer));
    format(string,sizeof(string),"Du hast ein Verbrechen begangen: %s. Von %s",grund,sendername);
    SendClientMessage(pID,HELLROT,string);
    format(string,sizeof(string),"Vergebene Wanteds: %d. Neues Wantedlevel: %d",stk,SpielerInfo[pID][pWanted]);
    SendClientMessage(pID,GELB,string);
    for(new i=0; i <MAX_PLAYERS; i++){
    if(IsACop(i)){
    format(string,sizeof(string),"HQ: Alle Einheiten: Reporter: %s, vergebene Wanteds: %d",sendername,stk);
    SendClientMessage(i,BLAU,string);
    format(string,sizeof(string),"HQ: Grund: %s, Verbrecher: %s, Aktuelle Wanted´s: %d",grund,giveplayer,SpielerInfo[pID][pWanted]);
    SendClientMessage(i,BLAU,string);
    }
    }
    return 1;
    }else SendClientMessage(playerid,WEIß,"Du darfst keine Polizisten anklagen");
    }else SendClientMessage(playerid,WEIß,"Der Spieler ist im Gefängnis");
    }else SendClientMessage(playerid,WEIß,"Der Spieler ist nicht Online");
    }else SendClientMessage(playerid,WEIß,"Du bist nicht im Dienst");
    }
    return 1;
    }

    Ich habs so
    new jtext[20];
    if(SpielerInfo[playerid][pJob] == 0) { jtext = "Keinen"; }
    else if(SpielerInfo[playerid][pJob] == 1) { jtext = "Detektiv";}
    else if(SpielerInfo[playerid][pJob]==2){jtext="Anwalt";}
    else if(SpielerInfo[playerid][pJob]==3){jtext="Transporter";}
    else if(SpielerInfo[playerid][pJob]==4){jtext="Waffendealer";}

    Hier aus dem GF das ich mal verwendet hab.
    if(strcmp(cmdtext, "/startbonus", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,1129.2798,-1450.6230,15.7969))
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pStartbonus] == 0)
    {
    SendClientMessage(playerid, COLOR_GOLD, "Du hast deinen StartBonus erhalten.");
    SendClientMessage(playerid, COLOR_GOLD, "Level 3, 50.000$, Führerschein, Motorradschein und einen Personalausweis");
    SendClientMessage(playerid, COLOR_GOLD, "(Scheine kannst du dir in der Stadthalle kaufen.)");
    GivePlayerMoney(playerid, 50000);
    PlayerInfo[playerid][pLevel] = 3;
    PlayerInfo[playerid][pCarLic] = 1;
    PlayerInfo[playerid][pMotoLic] = 1;
    PlayerInfo[playerid][pOwnPerso] = 1;
    PlayerInfo[playerid][pStartbonus] = 1;
    }
    else SendClientMessage(playerid, COLOR_GRAD1, "Du hast deinen StartBonus schon erhalten");
    }
    }
    else SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht bei dem /startbonus punkt(der ist am Noobspawn");
    return 1;
    }

    Dann muss ich fast alle meine CMD´s updaten kann mir nicht jemand einfach die neue sscanf schicken?


    //edit2
    gibts eigentlich ein Deutsches gut erklärtes TuT zu sscanf?


    //edit
    Hab nun die sscanf die hatte ich vorher auch drinne
    stock sscanf(sstring[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(sstring))
    #else
    if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    sstringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
    {
    sstringPos++;
    }
    while (paramPos < paramCount && sstring[sstringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = sstring[sstringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = sstring[++sstringPos];
    }
    do
    {
    sstringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = sstring[sstringPos];
    do
    {
    sstringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, sstring[sstringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = sstringPos;
    while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
    {
    changestr[changepos++] = sstring[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    sstringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = sstringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = sstring[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    sstring[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - sstringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, sstring[sstringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    sstring[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    sstringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = sstring[sstringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = sstring[sstringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    sstringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
    {
    sstringPos++;
    }
    while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
    {
    sstringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }

    Ich hab nicht wirklich ahnung von sscanf aber habe das im script
    stock sscanf(string[],format[],{Float,_}:...){
    new formatPos=0,stringPos=0,paramPos=2,paramCount=numargs();
    while(paramPos < paramCount && string[stringPos]){
    switch (format[formatPos++]){
    case '\0':{return 0;}case 'i','d':{
    new neg=1,num=0,ch=string[stringPos];
    if(ch=='-'){neg=-1;ch=string[++stringPos];}
    do{ stringPos++;
    if(ch>='0'&&ch<='9'){num=(num*10)+(ch-'0');}else{return 1;}
    }while((ch=string[stringPos])&&ch!=' ');setarg(paramPos,0,num*neg);}
    case 'h','x':{
    new ch,num=0;while((ch=string[stringPos++])){
    switch (ch){
    case 'x','X':{num=0;continue;}case '0'..'9':{num=(num<<4)|(ch-'0');}
    case 'a'..'f':{num=(num<<4)|(ch-('a'-10));}case 'A'..'F':{num=(num<<4)|(ch-('A'-10));}
    case ' ':{break;}default:{return 1;}}
    }setarg(paramPos,0,num);}
    case 'c':{setarg(paramPos,0,string[stringPos++]);}
    case 'f':{
    new tmp[25];
    strmid(tmp,string,stringPos,stringPos+sizeof(tmp)-2);
    setarg(paramPos,0,_:floatstr(tmp));}
    case 's','z':{
    new i=0,ch;
    if(format[formatPos]){
    while ((ch=string[stringPos++])&&ch!=' '){
    setarg(paramPos,i++,ch);
    }if(!i)return 1;
    }else{while((ch=string[stringPos++])){setarg(paramPos,i++,ch);}
    }stringPos--;setarg(paramPos,i,'\0');
    }default:{continue;}}
    while(string[stringPos]&&string[stringPos]!=' '){stringPos++;}
    while(string[stringPos]==' '){stringPos++;}
    paramPos++;}
    while(format[formatPos]=='z')formatPos++;
    return format[formatPos];
    }

    Tag,


    Ich hab ein problem mit meinem Selfmade es wird bei wirklich jedem CMD (wo man eine ID angibt) immer ID 0 ausgesucht (anfangs hatte ich das Problem nicht)
    Beispiel CMD´s
    ocmd:kick(playerid,params[])
    {
    new pID,grund[128],string[128];
    if(!isPlayerAnAdmin(playerid,1))
    if(sscanf(params,"ui",pID,grund))return SendClientMessage(playerid,WEIß,"Nutze: /kick [ID] [Grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),grund);
    SendClientMessageToAll(ROT,string);
    Kick(playerid);
    return 1;
    }
    ocmd:ban(playerid,params[])
    {
    new pID,grund[128],string[128];
    if(!isPlayerAnAdmin(playerid,1))
    if(sscanf(params,"ui",pID,grund))return SendClientMessage(playerid,WEIß,"Nutze: /ban [ID] [Grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),grund);
    SendClientMessageToAll(ROT,string);
    SpielerInfo[pID][pGebannt] = 1;
    return 1;
    }


    MFG

    Zitat

    Ich bezweifel das dies der echte Grex ist ;)



    Falsch Grex heißt (laut seinem Impressum) "Julian Merker"

    ocmd:o(playerid,params[])
    {
    new string[128];
    if(sscanf(params,"s",string))return SendClientMessage(playerid,COLOR_GREY,"Nutze: /o [MESSAGE]");
    if(isPlayerAnAdmin(playerid,1)){
    format(string,sizeof(string),"{B9FF00}(( Supporter %s : %s ))",SpielerName(playerid),string);
    }
    if(isPlayerAnAdmin(playerid,500)){
    format(string,sizeof(string),"{EBFF00}(( Moderator %s : %s ))",SpielerName(playerid),string);
    }
    if(isPlayerAnAdmin(playerid,1000)){
    format(string,sizeof(string),"{FFC800}(( High-Supporter %s : %s ))",SpielerName(playerid),string);
    }
    if(isPlayerAnAdmin(playerid,1500)){
    format(string,sizeof(string),"{FFA000}(( Admin %s : %s ))",SpielerName(playerid),string);
    }
    if(isPlayerAnAdmin(playerid,2000)){
    format(string,sizeof(string),"{FF6E00}(( High-Admin %s : %s ))",SpielerName(playerid),string);
    }
    if(isPlayerAnAdmin(playerid,2011)){
    format(string,sizeof(string),"{FF0069}(( Stellv.Porjektleiter %s : %s ))",SpielerName(playerid),string);
    }
    if(isPlayerAnAdmin(playerid,2012)){
    format(string,sizeof(string),"{FF0019}(( Projektleiter %s : %s ))",SpielerName(playerid),string);
    }
    SendClientMessageToAll(COLOR_OOC,string);
    return 1;
    }

    Damit darf man nur auf Privat Gelände Fahren! Ohne Führerschein!


    Man darf mit JEDEM Fahrzeug auf Privat gelände fahren (ohne führerschein!) also kannst du z.b. wen du ne Erlaubniss hast auf einem großem privaten gelände zu fahren darfst du auch z.b nen 40Tonner fahren ;) auf Privat gelände darf man fahren was man will


    Und man darf ein Fahrzeug nur auf der Straße fahren wen es verkehrstauglich ist d.h. bremsen usw muss es haben.

    Es ist schön zu sehen das SA-MP wieder richtig ins laufen kommt in sachen Entwicklung.
    Die beiden neuen Funktionen werden hoffentlich nicht die einzigsten bleiben.
    Ich freue mich schon darauf was bis zur Final Version alles hinzu kommt.


    Zunno


    Aufjedenfall soviel wie ich durchs lesen verstanden habe neue Models / objecte ^^


    Ich find den neuen Dialog doof meinermeinung nach passt das nicht