Beiträge von sLy

    Achsoo ;)
    Dann frag doch ab in welcher Fraktion er ist, und erstell ein enum mit den Skins die er für die jeweilige Fraktion haben darf,
    Z.b.: enum SAPD, enum Yakuza..
    So würde ich es machen


    Hmm ^^


    Er darf halt ALLE Skins benutzen , außer diese 10-20 , die den anderen Fraktionen gehören.


    Und ich will nicht 280 Zeilen für Skins opfern :)

    Wie kann ich machen , dass wenn rand=eine verbotene Skinid ist , nochmal 'gewürftelt' wird ?


    ocmd:verkleiden(playerid,params[])
    {
    new rand=random(300);
    if(rand==106 ||rand==105||rand==107||rand==271||rand==266||rand==267||rand==280||rand==266||rand==93||rand==233||rand==211||rand==294||rand==208||rand==265)
    {
    SendCommand("/verkleiden"); //Geht nicht , undefined symbol "SendCommand"
    }
    else
    {
    SetPlayerSkin(playerid,rand);
    }
    return 1;
    }

    Hallo...
    Wie stelle ich ein, wenn ein Spieler in der nähe eines Punktes ist und /roller schreibt und den Roller bekommt.


    if(IsPlayerInRangeOfPoint(playerid,Radius,RollerX,RollerY,RollerZ)
    {
    //was passieren soll wenn er Spieler in der nähe ist
    }

    Ich merke gerade , dass es daran liegt , dass mein /contract Befehl nicht geht , somit auch kein Spieler >0 Kopfgeld hat , weshalb der Dialog nicht angezeigt wird ^^



    ocmd:contract(playerid,params[])
    {
    new Spieler[64],Spieler2[64],pID,kopfgeld;
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    format(Spieler2,sizeof(Spieler2),"Spieler/%s.txt",PlayerName(pID));
    //if(dini_Int(Spieler,"Fraktion")==3)return SendClientMessage(playerid,Rot,"Du bist selber Hitman!");
    //{
    if(sscanf(params,"ui",pID,kopfgeld))return SendClientMessage(playerid,Rot,"Fehler: /contract [ID/Name] [Kopfgeld]");
    {
    if(kopfgeld<999 && kopfgeld>50001)return SendClientMessage(playerid,Rot,"Das Kopfgeld muss mindestens 1000€ und höchstens 50.000€ betragen!");
    {
    GivePlayerMoney(playerid,-kopfgeld);
    dini_IntSet(Spieler2,"Kopfgeld",dini_Int(Spieler2,"Kopfgeld")+kopfgeld);
    new string[128];
    format(string,sizeof(string),"Du hast einen Contract auf %s gesetzt. Kopfgeld: %i€",PlayerName(pID),kopfgeld);
    SendClientMessage(playerid,Hellblau,string);
    }
    }
    //}
    return 1;
    }


    Edit wieso geht der Command nicht =?

    ich weiß nicht ob ich richtig leige aber schau dir diese zeile ma an:

    format(string,sizeof(string),"%s\n%s %i€",string,PlayerName(i),dini_Int(Spieler2,"Kopfgeld"));


    du hast vorne den string format gemacht un dann verwendest du ihn aber auch drin (hinter dem euo zeichen) vllt liegt es daran setzt dort mal was anderes ein :D


    Das hatte ich schon probiert , 'string' und das vordere '%s' rauszunehmen , geht trotzdem nicht :/

    Problem 1 [Geklärt]


    Spoiler anzeigen
    Ich habe versucht , einen string (%s) in einen Dialog zu machen.

    Spoiler anzeigen
    Es klappt sonst immer , nur dieses mal nicht! Wenn ich /contractlist eingebe , passiert nichts.
    Wenn ich aber

    Spoiler anzeigen
    ShowPlayerDialog(playerid,Dialog_Contracts,DIALOG_STYLE_MSGBOX,"Contracts:","test","Okay","");

    Spoiler anzeigen
    mache , kommt der Dialog!

    Spoiler anzeigen
    ocmd:contractlist(playerid,params[])
    {
    new Spieler[64];
    new Spieler2[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    if(dini_Int(Spieler,"Fraktion")==3)
    {
    new string[600];
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    format(Spieler2,sizeof(Spieler2),"Spieler/%s.txt",PlayerName(i));
    if(IsPlayerConnected(i))
    {
    if(dini_Int(Spieler2,"Kopfgeld")>0)
    {
    format(string,sizeof(string),"%s\n%s %i€",string,PlayerName(i),dini_Int(Spieler2,"Kopfgeld"));
    }
    }
    }
    ShowPlayerDialog(playerid,Dialog_Contracts,DIALOG_STYLE_MSGBOX,"Contracts:",string,"Okay","");
    }
    return 1;
    }


    Problem 2[Geklärt]

    Spoiler anzeigen

    Wenn ich /contract [ID] [Kopfgeld] mache , kommen auch alle Nachrichten , aber in der Datei wird kein Kopfgeld gesetzt!

    Spoiler anzeigen
    ocmd:contract(playerid,params[])
    {
    new Spieler[64],Spieler2[64],pID,kopfgeld;
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    format(Spieler2,sizeof(Spieler2),"Spieler/%s.txt",PlayerName(pID));
    //if(dini_Int(Spieler,"Fraktion")==3)return SendClientMessage(playerid,Rot,"Du bist selber Hitman!");
    //{
    if(sscanf(params,"ui",pID,kopfgeld))return SendClientMessage(playerid,Rot,"Fehler: /contract [ID/Name] [Kopfgeld]");
    {
    if(kopfgeld<999 && kopfgeld>50001)return SendClientMessage(playerid,Rot,"Das Kopfgeld muss mindestens 1000€ und höchstens 50.000€ betragen!");
    {
    GivePlayerMoney(playerid,-kopfgeld);
    dini_IntSet(Spieler2,"Kopfgeld",dini_Int(Spieler2,"Kopfgeld")+kopfgeld);
    new string[128];
    format(string,sizeof(string),"Du hast einen Contract auf %s gesetzt. Kopfgeld: %i€",PlayerName(pID),kopfgeld);
    SendClientMessage(playerid,Hellblau,string);
    }
    }
    //}
    return 1;
    }


    Problem 3[Ungeklärt]

    Spoiler anzeigen

    Ich möchte machen , dass man dann per Liste einen aus der Contractist annehmen kann.
    Nur es wird es auf 0 gesetzt , wegen dem listitem.

    Spoiler anzeigen
    Wie kann ich machen , dass zB. ID10 listitem 5 ist , und man listitem5 auswählt , die Variable auf 10 gesetzt wird?

    Spoiler anzeigen

    new pContract[MAX_PLAYERS];

    Spoiler anzeigen
    if(dialogid == Dialog_Contracts)
    {
    if(response==1)
    {
    pContract[playerid]=listitem;
    new string[256];
    format(string,sizeof(string),"Du hast den Contract auf %s angenommen.",PlayerName(pContract[playerid]));
    SendClientMessage(playerid,Lila,string);
    }
    }

    Spoiler anzeigen
    ocmd:contractlist(playerid,params[])
    {
    new Spieler[64];
    new Spieler2[64];
    new string[600];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    if(dini_Int(Spieler,"Fraktion")==3)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    format(Spieler2,sizeof(Spieler2),"Spieler/%s.txt",PlayerName(i));
    if(IsPlayerConnected(i) && dini_Int(Spieler2,"Kopfgeld")>0)format(string,sizeof(string),"%s %i€\n",PlayerName(i),dini_Int(Spieler2,"Kopfgeld"));
    }
    ShowPlayerDialog(playerid,Dialog_Contracts,DIALOG_STYLE_LIST,"Contracts:",string,"Annehmen","Abbrechen");
    }
    return 1;
    }

    Hey.


    Mein Paydaysystem buggt rum!


    Also , es werden die Nachrichten 2x gesendet , und das mit den Levelpunkten buggt:


    zB steht da "Dir fehlen noch 10 Levelpunkte bis Level 2" (Was schonmal nicht sein kann, da es 8 sein müssen! Level * 2 + 6)
    Dann aufeinmal steht da dir fehlen noch 1 Levelpunkte bis Level 3!



    public paydaytimer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    //if(PayDayZeit[playerid]<2700)
    if(PayDayZeit[playerid]>0)
    {
    PayDayZeit[playerid]--;
    dini_IntSet(Spieler,"Payday",PayDayZeit[playerid]);
    }
    else
    {
    new geld;
    new gehalt;
    new hartz4;
    new levelbonus = GetPlayerScore(playerid)*300;
    switch(dini_Int(Spieler,"Fraktionsrang"))
    {
    case 0: {gehalt = 2500;}
    case 1: {gehalt = 4500;}
    case 2: {gehalt = 6000;}
    case 3: {gehalt = 7500;}
    case 4: {gehalt = 12000;}
    case 5: {gehalt = 15000;}
    }
    if(dini_Int(Spieler,"Hartz4")==1)
    {
    hartz4+=750;
    }
    else
    {
    hartz4=0;
    }
    geld=gehalt+hartz4+levelbonus;
    GivePlayerMoney(playerid,geld);
    SendClientMessage(playerid,Hellblau,"Payday");
    dini_IntSet(Spieler,"Levelpunkte",dini_Int(Spieler,"Levelpunkte")+1);
    new levelpunkteprolevel=GetPlayerScore(playerid)*2;
    levelpunkteprolevel+=6;
    new gehaltstring[128];
    new hartz4string[128];
    new levelbstring[128];
    new levelustring[128];
    new levelpstring[128];
    format(gehaltstring,sizeof(gehaltstring),"Gehalt: %i€",gehalt);
    format(hartz4string,sizeof(hartz4string),"Hartz IV: %i€",hartz4);
    format(levelbstring,sizeof(levelbstring),"Levelbonus: %i€",levelbonus);
    format(levelustring,sizeof(levelustring),"Glückwunsch! Du bist nun Level %i.",GetPlayerScore(playerid));
    format(levelpstring,sizeof(levelpstring),"Dir fehlen noch %i Levelpunkte bis Level %i.",dini_Int(Spieler,"Levelpunkte"),GetPlayerScore(playerid)+1);
    SendClientMessage(playerid,Hellblau,"|_______Payday_______|");
    SendClientMessage(playerid,Weiss,gehaltstring);
    if(hartz4>0)
    {
    SendClientMessage(playerid,Weiss,hartz4string);
    }
    SendClientMessage(playerid,Weiss,levelbstring);
    SendClientMessage(playerid,Weiss,levelpstring);
    if(dini_Int(Spieler,"Levelpunkte")>=levelpunkteprolevel)
    {
    SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
    SendClientMessage(playerid,Weiss,levelustring);
    dini_IntSet(Spieler,"Levelpunkte",0);
    }
    PayDayZeit[playerid]=10;
    }
    }
    }

    Also ich habe es jetzt so:



    for(new i=0; i<9; i++)
    {
    if(GetPlayerVehicleID(playerid)==gscar[i])
    {
    if(IsPlayerInFraktion(playerid,2))
    {
    SetVehicleParamsForPlayer(vehicleid,playerid,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF);
    }
    else
    {
    if(ispassenger)
    {
    SetVehicleParamsForPlayer(vehicleid,playerid,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF);
    }
    else
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsForPlayer(vehicleid,playerid,VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_ON);
    }
    }
    }
    }


    Trotzdem kommt jede Fraktion in das Auto!


    Und das mit dem Model abfragen geht nicht , weil ich mehrere Fraktionen mit den Autos habe :)

    Sende einfach die eingegebene Menge von playerid zu pID.


    lg :thumbup:


    ?


    Also ich bin ziemlich verwirrt bei diesem System :D


    Wäre nett , wenn du es nochmal genauer erklären würdest !