Beiträge von RnBexclusiv

    sonic nicht so vorlaut bitte, und dein Post hat nichts mit dem Thema zu tun.


    @ Airwolf Ich würde dir raten das sscanf tutorial anzuschauen da es damit viel einfacher ist.
    P.S Ich stelle dir mein dcmd veh befehl mal zur verfügung.
    Dafür benötigst du aber auch sscanf
    dcmd_veh(playerid, params[])
    {
    new vehmodel,color1,color2;
    new Float:X,Float:Y,Float:Z,Float:A;
    if(sscanf(params,"ddd",vehmodel,color1,color2)) return SendClientMessage(playerid,COLOR_GREY,"Benutze: /veh [ModelID] [color1] [color2]");
    GetPlayerPos(playerid,X,Y,Z);
    GetPlayerFacingAngle(playerid,A);
    CreateVehicle(vehmodel,X,Y,Z,A,color1,color2,-1);
    return 1;
    }

    Wenn du sie natürlich zu klein machst, dann kann auch nicht alles angezeigt werden.
    Habe mir auch deine Variante mal angeschaut und finde sie eher zu kompliziert aufgebaut.
    mit dem "usz". Das z versteh ich zwar bis jetzt noch nicht, aber hauptsache es geht.


    mfg Kavkus

    Bittesehr:
    #include <a_samp>
    #include "../include/gl_common.inc"


    #define ADMINFS_MESSAGE_COLOR 0xFF444499
    #define PM_INCOMING_COLOR 0xFFFF22AA
    #define PM_OUTGOING_COLOR 0xFFCC2299


    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    new tmp[256];
    new Message[256];
    new gMessage[256];
    new pName[MAX_PLAYER_NAME];
    new iName[MAX_PLAYER_NAME];
    new idx;


    public OnFilterScriptInit()
    {
    print("Rcon befehle");
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])


    {
    dcmd(pm,2,cmdtext);
    dcmd(ban,3,cmdtext);
    dcmd(kick,4,cmdtext);
    return 1;
    }


    dcmd_pm(playerid,cmdtext[])
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp) || strlen(tmp) > 5)
    {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /pm (id) (message)");
    return 1;
    }
    new id = strval(tmp);
    gMessage = strrest(cmdtext,idx);
    if(!strlen(gMessage))
    {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /pm (id) (message)");
    return 1;
    }
    if(!IsPlayerConnected(id))
    {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Spieler ID");
    return 1;
    }
    if(playerid != id)
    {
    GetPlayerName(id,iName,sizeof(iName));
    GetPlayerName(playerid,pName,sizeof(pName));
    format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
    SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
    format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
    SendClientMessage(id,PM_INCOMING_COLOR,Message);
    PlayerPlaySound(id,1085,0.0,0.0,0.0);
    printf("PM: %s",Message);
    }
    else
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Du kannst dir nicht selbst eine pn schrieben.");
    return 1;
    }


    dcmd_kick(playerid,cmdtext[])
    {
    if(IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp) || strlen(tmp) > 5)
    {
    return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /kick (id) [reason]");
    }
    new id = strval(tmp);
    if(!IsPlayerConnected(id))
    {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Böse spieler ID");
    return 1;
    }
    gMessage = strrest(cmdtext,idx);
    GetPlayerName(id,iName,sizeof(iName));
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- Du hast ihn vom server gekickt.");
    if(strlen(gMessage) > 0)
    {
    format(Message,sizeof(Message),"Reason: %s",gMessage);
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
    }
    format(Message,sizeof(Message),">> %s(%d) hast ihn gekickt.",iName,id);
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
    Kick(id);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Du bist kein admin");
    return 1;
    }
    }


    dcmd_ban(playerid,cmdtext[])
    {
    if(IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp) || strlen(tmp) > 5)
    return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /ban (id) [reason]");
    new id = strval(tmp);
    if(!IsPlayerConnected(id))
    {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : Böse spieler ID");
    return 1;
    }
    gMessage = strrest(cmdtext,idx);
    GetPlayerName(id,iName,sizeof(iName));
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- Du hast ihn vom server gebannt.");
    if(strlen(gMessage) > 0)
    {
    format(Message,sizeof(Message),"Reason: %s",gMessage);
    SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
    }
    format(Message,sizeof(Message),">> %s(%d) hat ihn gebannt.",iName,id);
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
    Ban(id);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : Du bist kein admin");
    return 1;
    }
    }
    Ein Tipp von mir, lernt das einrücken das hilft euch bei den Klammern.


    Airwolf schau dir im Tutorialbereich mal das Thema "Commands mit Parametern" an.
    Ist sehr ausführlich von Goldkiller beschrieben.


    mfg Kavkus

    Dein random bewirkt inmoment das dein Aktueller Count +1 gerechnet wird und daraus eine Zahl ausgesucht werden.
    Ist das richtig?
    Weil der Count wird ja schon hochgesetzt sobald ein neuer Spieler aufm Server ist.

    Als allererstes überprüft er ob der Spieler in der Fraktion 5 ist, ist das nicht der Fall überprüft er ob der Spieler Leader der Fraktion 5 ist.
    Wenn er beides nicht ist bekommt er den Text.
    Und ich garantiere dir das meins richtig ist. Denn Falsch kann es nicht sein da ich ein paar solcher abfragen in meinem Script habe die alle Funktionieren.


    mfg Kavkus

    Hier müsste so gehen.
    dcmd_sell(playerid,params[])
    {
    new ID,auswahl;
    if(sscanf(params, "ud",ID,auswahl))return SendClientMessage(playerid,COLOR_GRAD2,"Nutze: /sell [spielerid][item]");
    if(PlayerInfo[playerid][pMember] == 5 || PlayerInfo[playerid][pLeader] == 5)
    {
    if(auswahl == 1)
    {
    new GSpieler[MAX_PLAYER_NAME],PSpieler[MAX_PLAYER_NAME],sstring[128],pstring[128];
    GetPlayerName(ID,GSpieler,sizeof(GSpieler));
    GetPlayerName(playerid,PSpieler,sizeof(PSpieler));
    format(pstring,sizeof(pstring),"Nostra Döner Mitarbeiter %s, hat dir eine Pizza überreicht.",PSpieler);
    SendClientMessage(ID,COLOR_YELLOW,pstring);
    format(sstring,sizeof(sstring),"Du hast dem Kunden %s eine Pizza überreicht.",GSpieler);
    SendClientMessage(playerid, COLOR_WHITE,sstring);
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "|__________________ Nostra Döner__________________|");
    SendClientMessage(playerid, COLOR_WHITE, "Nutze: /sell [spielerid][item]");
    SendClientMessage(playerid, COLOR_GREY, "Verfügbare Waren: Pizza");
    SendClientMessage(playerid, COLOR_WHITE, "|________________________________________________|");
    }
    }
    else
    SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Nostra Döner Mittarbeiter");
    return 1;
    }



    P.S Ich würde von dir aus mal die Strings kleiner machen :P Sonst ist dein Resourcenverbrauch zu hoch.


    mfg Kavkus

    Sry aber von meiner Ansicht finde ich meins Kongretter.
    Zumindest habe ich es besser erklärt und habe die besser Lösung gepostet.
    Klar es gehen beide Methoden. Aber für Anfänger mit GF ist meine die einfachere.

    Schau mal,
    anscheind hast du was übersehen.
    if(PlayerInfo[playerid][pMember] == 5 || PlayerInfo[playerid][pLeader] != 5)
    {
    SendClientMessage(playerid,COLOR_GREY," Du bist kein Cosa Nostra Mitglied !");
    return 1;
    }

    Was ergibt das?
    Wenn der Spieler Mitglied der Fraktion 5 ist kriegt er diese Nachricht.
    Wenn der Spieler Leader eine Fraktion außer 5 ist kriegt er diese Nachricht.
    Und wo ist nun der Unterschied?
    Du musst das erste == zu != machen.Da du ja denjenigen das schicken willst, die nicht in der Fraktion sind.


    mfg Kavkus

    Hier habe mich mal rangesetzt, wenn probleme auftreten melden.
    P.S nicht getestet.
    new Fahrzeuge;


    dcmd_veh(playerid,params[])
    {
    new mid,c1,c2;
    if(sscanf(params,"ddd",mid,c1,c2)) return SendClientMessage(playerid,COLOR_XXXX,"Benutze: /veh [ModelID] [Color1] [Color2]");
    if(Fahrzeuge<MAX_VEHICLES)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateVehicle(mid,x,y,z+10,0,c1,c2,-1);
    CarInfo[Fahrzeuge][Model]=mid;
    CarInfo[Fahrzeuge][X]=x;
    CarInfo[Fahrzeuge][Y]=y;
    CarInfo[Fahrzeuge][Z]=z;
    CarInfo[Fahrzeuge][Angle]=90.0;
    CarInfo[Fahrzeuge][Color1]=c1;
    CarInfo[Fahrzeuge][Color2]=c2;
    SetVehicleToRespawn((Fahrzeuge+1));
    new query[120];
    format(query, sizeof(query), "INSERT INTO autos (VehicleID) VALUES ('%d')",Fahrzeuge);
    mysql_query(query);
    Fahrzeuge++;
    }
    return 1;
    }


    stock SaveFahrzeuge()
    {


    if(Fahrzeuge==0)
    {
    print("Keine Daten vorhanden");
    return 1;
    }


    new idx,vid=1;
    new cmdstr[200];


    while(idx<Fahrzeuge)
    {
    format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Model=%d WHERE VID=%d",VehicleInfo[idx][Model],vid); mysql_query(cmdstr);
    format(cmdstr,sizeof(cmdstr),"UPDATE autos SET X=%f WHERE VID=%d",VehicleInfo[idx][X],vid); mysql_query(cmdstr);
    format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Y=%f WHERE VID=%d",VehicleInfo[idx][Y],vid); mysql_query(cmdstr);
    format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Z=%f WHERE VID=%d",VehicleInfo[idx][Z],vid); mysql_query(cmdstr);
    format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Angle=%f WHERE VID=%d",VehicleInfo[idx][Angle],vid); mysql_query(cmdstr);
    format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Farbe1=%d WHERE VID=%d",VehicleInfo[idx][Farbe1],vid); mysql_query(cmdstr);
    format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Farbe2=%d WHERE VID=%d",VehicleInfo[idx][Farbe2],vid); mysql_query(cmdstr);
    vid++;
    idx++;
    }
    return 1;
    }


    stock LoadFahrzeuge()
    {
    new idx;
    mysql_query("SELECT * from autos ORDER BY vid ASC");
    mysql_store_result();
    Fahrzeuge=mysql_num_rows();
    new Data[1024];
    while(idx<Fahrzeuge)
    {
    new Field[64];
    new rcnt = 0;


    mysql_fetch_row(Data);
    mysql_strtok(Field, "|", Data);


    while (mysql_strtok(Field, "|", "")==1)
    {
    if (rcnt == 0){CarInfo[idx][Model]=strval(Field);}
    if (rcnt == 1){CarInfo[idx][X]=floatstr(Field);}
    if (rcnt == 2){CarInfo[idx][Y]=floatstr(Field);}
    if (rcnt == 3){CarInfo[idx][Z]=floatstr(Field);}
    if (rcnt == 4){CarInfo[idx][Angle]=floatstr(Field);}
    if (rcnt == 5){CarInfo[idx][Farbe1]=strval(Field);}
    if (rcnt == 6)
    {
    CarInfo[idx][Farbe2]=strval(Field);
    CreateVehicle(CarInfo[idx][Model],CarInfo[idx][X],CarInfo[idx][A],CarInfo[idx][Z],CarInfo[idx][Angle],CarInfo[idx][Farbe1],CarInfo[idx][Farbe2],-1);
    SetVehicleToRespawn((idx+1));
    }
    rcnt++;
    }
    idx++;
    }
    if(Fahrzeuge==0)
    print("Tabelle ist leer");
    else
    printf("%d Autos geladen und gefunden",Fahrzeuge);


    return 1;
    }