Beiträge von NicoAiko



    stock SendFormatText(playerid,farbe,const format[], {Float,_}:...){ new string[128]; format(string,128,format,float); SendClientMessage(playerid,farbe,string); return 1;}








    ungetestet


    /edit 1/


    das new entfernt


    /edit 2/


    das Farbe zu farbe gemacht

    So sicher fragt ihr euch jetzt was ich damit meine, ich meine damit das jeder Spieler seinen Payday bekommt wenn er 60 Minuten / oder angepasst voll hat.So was wir als erstes Brauchen ist ein enum wo die Variable rein muss es sei denn ihr benutzt PlayerVariablen (PVars) dann halt auch ohne enum^^
    Schritt 1:

    enum sinfo
    {
    NextPayday, // die variable
    P_Timer //Falls ihr MySQL benutzt, solltet ihr das am Besten ganz Unten stehen haben
    }//das kommt einfach bei euren variablen rein wo ihr PlayerInfo/Spieler o.ä. benutzt
    new Acc[MAX_PLAYERS][sinfo];


    so nun Schritt 2: die Login/Register Geschichte
    da jedes Login/Register System anders ist benutze ich einfach ein Standart von dini und mein eigenes mit PVars

    //ACHTUNG NUR FÜR ENUM BENUTZER!!!!!!
    //OnDialogResponse
    if(dialogid == Dialog_Login)//der Login Dialog!
    {
    //string definition etc.
    //alle eure Variablen
    Acc[playerid][NextPayday] = dini_Int(string,"NextPayday"); //wo ihr das gespeichert habt
    //und nun ganz wichtig!
    Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); //PaydayTimeCheck ist der Public der kommt in den nächsten Schritten, 60000 sind 1 minute d.h. er fragt jede minute ab, der Rest ist klar
    }
    if(dialogid == Dialog_Reg) // der Register Dialog!
    {
    //string etc.
    //variablen
    Acc[playerid][NextPayday] = 0;
    dini_IntSet(string,"NextPayday",0); // das der schonmal die Datei hat
    Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); // wie oben!
    }
    //PVars
    if(dialogid == Dialog_Login)//der Login Dialog!
    {
    //string definition etc.
    //alle eure Variablen
    SetPVarInt(playerid,"NextPayday",dini_Int(string,"NextPayday")); //wo ihr das gespeichert habt
    //und nun ganz wichtig!
    Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); //PaydayTimeCheck ist der Public der kommt in den nächsten Schritten, 60000 sind 1 minute d.h. er fragt jede minute ab, der Rest ist klar
    }
    if(dialogid == Dialog_Reg) // der Register Dialog!
    {
    //string etc.
    //variablenSetPVarInt(playerid,"NextPayday",0);
    dini_IntSet(string,"NextPayday",0); // das der schonmal die Datei hat
    Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); // wie oben!
    }

    Bevor wir die Funktionen schreiben, gehen wir noch zu OnPlayerDisconnect, damit es nicht zu Lags kommt

    public OnPlayerDisconnect(playerid,reason)
    {
    KillTimer(Acc[playerid][P_Timer]); // Das sorgt für weniger Lags, da der User mit dem Timer geht
    }

    nun fragen wir mal den Public ab dafür brauchen wir auch ein forward!
    forward PaydayTimeCheck(playerid);


    forward Payday(playerid);



    public PaydayTimeCheck(playerid)
    { //für enum nutzer
    if(Acc[playerid][NextPayday] < 60)
    Acc[playerid][NextPayday] += 1; // da wird die variable da die kleiner als 60 ist +1 gemacht
    if(Acc[playerid][NextPayday] == 60) {
    Payday(playerid);
    Acc[playerid][NextPayday] = 0;
    }
    //für PVar Nutzer
    if(GetPVarInt(playerid,"NextPayday") < 60)
    SetPVarInt(playerid,"NextPayday",GetPVarInt(playerid,"NextPayday")+1);
    if(GetPVarInt(playerid,"NextPayday") == 60)
    {
    Payday(playerid);
    SetPVarInt(playerid,"NextPayday",0);
    }
    return 1;
    }
    public Payday(playerid)
    {
    //Das müsst ihr anpassen!
    return 1;
    }


    Es ist nur ein Kleiner Change, aber trotzdem Danke an niklasbollmer für sein Einwand.


    MfG NicoAiko


    PS: Wie immer bei Fragen hier schreiben oder direkt an mich wenden.


    €dits:
    Zeilen besser gemacht
    Unnötige Dinge entfernt (z.B. [ u ] usw)
    Updated


    format(string,sizeof string,"{FFFFFF}Hello{00FF00}%sWelcome to {FF0000}Grand Theft Awesome{FFFFFF}!",sendername);format(string2,sizeof(string2),"{FFFFFF}Hallo {00FF00}%s{FFFFFF}, Willkommen auf {FF0000}Grand Theft Awesome{FFFFFF}!",sendername);iSendClientMessage(playerid,-1,string,string2);
    [color=#333333]


    [color=#333333]/edit/
    [color=#333333][/pwn] nachgetragen

    if(!strcmp(cmd,"/hitskin",true)){if(IstEinHitman(playerid)){new skinid;params = strtok(cmdtext,var);if(!strlen(params))return SendClientMessage(playerid,grau,"Verwende: /hitskin [SkinID]");skinid = strval(params);SetPlayerSkin(playerid,skinid);return 1;}else return SendClientMessage(playerid,rot,"Du bist kein Hitman.");}


    bitte schön

    Hallo erstmal,
    ich habe das Tutorial Tacho erstellen gemacht aber es erscheint nicht oO


    hier der Code











    public Tacho(i){ if(IsPlayerConnected(i) && !IsPlayerNPC(i) && IsPlayerInAnyVehicle(i)) { new string[4][128],Float:Entfernung,Float:Geschwindigkeit; new Float:X1[MAX_PLAYERS],Float:X2[MAX_PLAYERS],Float:Y1[MAX_PLAYERS],Float:Y2[MAX_PLAYERS],Float:Z1[MAX_PLAYERS],Float:Z2[MAX_PLAYERS];GetVehiclePos(GetPlayerVehicleID(i),X1[i],Y1[i],Z1[i]);Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i],X2[i])),2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2));Geschwindigkeit = (Entfernung/(TachoTime/1000)) * 3.6; format(string[0],128,"Km/h: %d",floatround(Geschwindigkeit)); TextDrawSetString(TachoKmh[i],string[0]); GetVehiclePos(GetPlayerVehicleID(i),X2[i],Y2[i],Z2[i]); if(IstEinAuto(GetPlayerVehicleID(i))) { format(string[1],128,"Elektro: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IstEinMotorrad(GetPlayerVehicleID(i))){ format(string[1],128,"Elektro: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IstEinBoot(GetPlayerVehicleID(i))){ format(string[1],128,"Benzin: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IstEinLKW(GetPlayerVehicleID(i))){ format(string[1],128,"Diesel: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IsAPlane(GetPlayerVehicleID(i))){ format(string[1],128,"Kerosin: %d",Treibstoff[GetPlayerVehicleID(i)]);}new Float:Vhp;GetVehicleHealth(GetPlayerVehicleID(i),Vhp);format(string[2],128,"Zustand: %d",floatround(Vhp));format(string[3],128,"Name: %s",Carname[GetPlayerVehicleID(i)-400]);TextDrawSetString(TachoBenzin[i],string[1]);TextDrawSetString(TachoZustand[i],string[2]);TextDrawSetString(TachoName[i],string[3]);TextDrawShowForPlayer(i,TachoBy[i]);TextDrawShowForPlayer(i,TachoKmh[i]);TextDrawShowForPlayer(i,TachoBenzin[i]);TextDrawShowForPlayer(i,TachoZustand[i]);TextDrawShowForPlayer(i,TachoName[i]);}else{ TextDrawHideForPlayer(i,TachoBy[i]);TextDrawHideForPlayer(i,TachoKmh[i]);TextDrawHideForPlayer(i,TachoBenzin[i]);TextDrawHideForPlayer(i,TachoZustand[i]);TextDrawHideForPlayer(i,TachoName[i]);}return 1;}














    if(strcmp(cmd,"/pay",true) == 0){new giveplayerid,amount,name[MAX_PLAYER_NAME],Float:x,Float:y,Float:z;tmp = strtok(cmdtext,var); //var mit dem teil halt ersetzen ^^if(!strlen(tmp))return SendClientMessage(playerid,grau,"Verwende: /pay [playerid] [Menge]");giveplayerid = ReturnUser(tmp);tmp = strtok(cmdtext,var); //var mit dem teil halt ersetzen ^^if(!strlen(tmp))return SendClientMessage(playerid,grau,"Verwende: /pay [playerid] [Menge]");amount = strval(tmp); // da wird halt die zahl aus dem eingegeben rausgenommenif(amount < 1 || amount > 99999) return SendClientMessage(playerid,rot,"Text..."); //Text und amount zahlen anpassenGetPlayerPos(giveplayerid,x,y,z);if(IsPlayerInRangeOfPoint(playerid,10,x,y,z) && GetPlayerMoney(playerid) >= amount) //anpassen!{ GivePlayerMoney(giveplayerid,amount); GivePlayerMoney(playerid,-amount); return 1;}return 1;}


    der sollte funktionieren ^^


    hoffe konnte helfen

    SetVehiclePos(GetPlayerVehicleID(playerid),1153.3712,-921.1945,43.1472,258.4922);
    //zuSetVehiclePos(GetPlayerVehicleID(playerid),1153.3712,-921.1945,43.1472);
    SetVehicleZAngle(GetPlayerVehicleID(playerid),258.4922);
    das gleiche bei SetPlayerPos
    das zu
    SetPlayerPos(playerid,1153.3712,-921.1945,43.1472);SetPlayerZAngle(playerid,258.4922);

    if(!strcmp(cmd,"/licht",true)){new status[4];tmp = strtok(cmdtext,var);if(!strlen(tmp))return SendClientMessage(playerid,Farbe,"Nutze: /licht [an/aus]");strmid(status,tmp,0,strlen(tmp),4);if(!strcmp(status,"an",true)){GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective); licht[vid] = true; SendClientMessage(playerid,0xFF0000,"Du hast das Licht angeschaltet!");}else if(!strcmp(status,"aus",true)){GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);licht[vid] = false;SendClientMessage(playerid,0xFF0000,"Du hast das Lich ausgeschaltet!");}}return 1;}

    so sollte es gehen

    also an alle die keinen plan haben:
    a_samp & a_npc beißen sich, d.h. du musst die includes öffnen und die npc sachen in die a_samp datei einfügen dann gehen die errors weg!
    /edit/ zu dem einen error du musst einfach nur new botname[MAX_PLAYER_NAME]; machen

    also erst musst du eine variable erstellen
    new geschlecht[10];
    dann musst du abfragen was er eingegeben hat und da inputtext ein string mit unbekannter länge ist müssen wir die neue variable nehmen
    strmid(geschlecht,inputtext,0,strlen(inputtext),sizeof geschlecht);
    strmid(dest[],const source[],start,end,maxlength = sizeof dest);
    d.h. in deiner sicht
    strmid(neue variable,der eingegebene text,start ist immer bei 0,ende ist stringlength(kurz. strlen) eingegebene text, länge von neue variable);
    das letzte kannst du auch durch 10 ersetzen da du 10 zeichen als string eingegeben hast
    dann halt noch if(!strcmp(geschlecht,"männlich",true)) usw.


    hoffe konnte helfen mfg


    /edit/
    strcmp sache eingefügt