Beiträge von Equ

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums

    Versuchs so:

    if(PlayerDaten[playerid][pGeld] < (paketmenge*paketmwst))return SendClientMessage(playerid,ROT2," Du hast nicht genügend Geld dabei!");



    ErikSon:
    Ich glaub du hast grad nen denkfehler

    Ne, diese will auch nicht funktionieren.


    Ich Poste einfach mal den Code hier rein:



    ocmd:getpakete(playerid, params[])
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    {
    //if(!IsPlayerInRangeOfPoint(playerid,4.0, 1024.2643, -983.5267, 42.6469))return SendClientMessage(playerid,ROT2," Hier kannst du dir keine Pakete besorgen!");
    {
    new string[64], string2[70], paketmenge, paketmwst = 150;
    if(sscanf(params, "d", paketmenge))return SendClientMessage(playerid, ORANGE, "Benutzung: /getpakete [Pro Paket 150$]");
    if(PlayerDaten[playerid][pGeld] >= paketmwst) return SendClientMessage(playerid, DUNKELROT, " Nicht genügend Geld dabei!");
    format(string2, sizeof(string2), " Maximal 20 Pakete, aktuell hast du bei dir %d Pakete!", PlayerDaten[playerid][pProdukte]);
    if(PlayerDaten[playerid][pProdukte] + paketmenge >= 21)return SendClientMessage(playerid,ROT2,string2);
    if(PlayerDaten[playerid][pGeld] < (paketmenge*paketmwst))return SendClientMessage(playerid,ROT2," Du hast nicht genügend Geld dabei!");
    {
    PlayerDaten[playerid][pProdukte] += paketmenge;
    PlayerDaten[playerid][pGeld] -= paketmenge*paketmwst;
    format(string, sizeof(string), "[SYSTEM]: Du hast dir %d Pakete für %d$ gekauft!", paketmenge, paketmenge*paketmwst);
    SendClientMessage(playerid, ORANGE, string);
    new geldanzeige[10];
    format(geldanzeige, sizeof(geldanzeige),"%d", PlayerDaten[playerid][pGeld]);
    TextDrawSetString(Geld[playerid], geldanzeige);
    TextDrawShowForPlayer(playerid, Geld[playerid]);
    SpielerSpeichern(playerid);
    }
    }
    }
    return 1;
    }

    Berechne doch mal den Wert in der abfrage und printe es.
    Vielleicht ist es ja bei der Multiplikation mehr, so dass es in den Minus wert kommt.

    Wenn ich die Abfrage rausnehme. Und den Befehl ausführe.
    Wird mir gesagt wie Viele Pakete und wie Teuer diese sind. Pro Paket halt 150€ bei 2Pakete 300€ also die Rechnung stimmt schonmal.
    Die Abfrage scheint irgendwie Falsch zu sein, nur sehe ich da keinen Fehler :huh:

    Hey..
    Wäre nett, wenn du mal sagen könntest, was nicht genau funktioniert..
    Außerdem brauchen wir dafür mal ein bisl mehr Code, da man damit kaum was anfangen kann..

    1.) Das habe ich, bitte Text genauer lesen.
    2.) Nein, der Code da oben reicht vollkommen aus. Ich will ja nur wissen was bei der Abfrage falsch ist, da ich genügend InGame Geld habe, er aber trotzdem diese Fehlermeldung absendet!

    Hallo,


    Und zwar habe ich einen Befehl gemacht wo man sich Pakete kaufen kann.
    Pro Paket werden 150Euro verlangt, jetzt möchte ich gerne eine Abfrage haben. Die Überprüft ob der Spieler noch genug Geld hat?
    Ich hab da schon was versucht aber die Abfrage will nicht, InGame habe ich zwar genug Geld aber er sagt mir " Du hast nicht genügend Geld dabei!"


    if((PlayerDaten[playerid][pGeld] - paketmenge*paketmwst) < 0)return SendClientMessage(playerid,ROT2," Du hast nicht genügend Geld dabei!");


    Woran liegt es?

    Abend


    Und zwar habe ich vor ein Menü das sich per Knopfdruck öffnet zu erstellen, wo angezeigt wird welcher Spieler sich in der Umgebung aus der Fraktion befindet.
    Ich habe da auch schon was gebastelt, aber ich glaub das ist so wie ich es gemacht hab falsch. Und außerdem habe ich da noch eine Frage.
    Ich möchte das man sich selber dabei nicht in der Liste sieht.


    hier mal mein Code:



    if(newkeys == KEY_CTRL_BACK) // Fraktionsmember info
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    new Float:POS[3];
    GetPlayerPos(i, POS[0], POS[1], POS[2]);
    if(IsPlayerInRangeOfPoint(i,4.0, POS[0], POS[1], POS[2]))
    {
    if(PlayerDaten[playerid][pFraktion] == PlayerDaten[i][pFraktion])
    {
    new string[64];
    format(string ,sizeof(string), "%s\n", SpielerName(i));
    ShowPlayerDialog(playerid, DIALOG_FMEMBERINFOS, DIALOG_STYLE_LIST, "Member Inforamtionen:", string, "Weiter", "Schließen");
    }
    }
    }
    }

    Wie bereits gesagt, einfach so:
    "is[12]S(default Wert)[64]"


    Da du den default Wert ja nicht nutzt ist es völlig egal was da steht.


    Beispiel:
    "is[12]S(blub)[64]"

    Also ich habe es jetzt so drin stehen, Jeffry:



    if(sscanf(params,"is[12]s(Position)[64]", BizIDWahl, cmd, angabe)) return SendClientMessage(playerid,DUNKELROT," Benutzung: /editbiz [ID] [Name/Preis/Eintritt/Position] [Angabe]");



    aber funktioniert nicht, ich soll immer noch den 3ten Parameter ausfüllen.

    "is[12]S(default Wert?)[64]"



    Wozu steht den der Wert "default Wert?" muss ich da jetzt Position rein schrieben oder wie?


    ocmd:editbiz(playerid, params[])
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    if(PlayerDaten[playerid][pAdminlevel] != 2000)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!");
    new BizIDWahl, ExistsBiz[84], cmd[12], angabe[64];
    if(sscanf(params,"is[12]s[64]", BizIDWahl, cmd, angabe)) return SendClientMessage(playerid,DUNKELROT," Benutzung: /editbiz [ID] [Name/Preis/Eintritt/Position] [Angabe]");
    format(ExistsBiz,sizeof(ExistsBiz),"/Firmen/%i.ini", BizIDWahl);
    if(dini_Exists(ExistsBiz))
    {
    if(strcmp(cmd,"Name",true) == 0)
    {



    }
    if(strcmp(cmd,"Preis",true) == 0)
    {


    }
    if(strcmp(cmd,"Eintritt",true) == 0)
    {


    }
    if(strcmp(cmd,"Position",true) == 0)
    {


    }
    }
    return 1;
    }

    Moin,


    Ich habe eine Frage, und zwar möchte ich den den dritten Parameter (Also den Parameter- "Angabe") bei strcmp ("Poisition") nicht mit angeben lassen.
    Also, wenn er /editbiz BIZID POISITION macht, soll halt die Funktion direkt angewendet werden.
    Nur wie stelle ich dies an?


    ocmd:editbiz(playerid, params[])
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    if(PlayerDaten[playerid][pAdminlevel] != 2000)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!");
    new BizIDWahl, ExistsBiz[84], cmd[12], angabe[64];
    if(sscanf(params,"is[12]s[64]", BizIDWahl, cmd, angabe)) return SendClientMessage(playerid,DUNKELROT," Benutzung: /editbiz [ID] [Name/Preis/Eintritt/Poisition] [Angabe]");
    format(ExistsBiz,sizeof(ExistsBiz),"/Firmen/%i.ini", BizIDWahl);
    if(dini_Exists(ExistsBiz))
    {
    if(strcmp(cmd,"Name",true) == 0)
    {



    }
    if(strcmp(cmd,"Preis",true) == 0)
    {


    }
    if(strcmp(cmd,"Eintritt",true) == 0)
    {



    }
    if(strcmp(cmd,"Position",true) == 0)
    {



    }
    }
    return 1;
    }

    Abend,


    Ich habe mal eine kleine Frage.
    und zwar möchte ich bei meinem Befehl 2 Parameter übergeben also, kleines beispiel:


    /editbiz [BIZID] [Name/Preis] [Angabe]



    ich weiß so gesehen sind es jetzt 3 Parameter, aber ich Rede von den 2 Parametern (Name/Preis und Angabe)
    Mit Angabe ist gemeint, den Preis oder den Name angeben.
    Also wenn man jetzt /editbiz BIZID NAME kleiner-Test // Würde das business jetzt "kleiner-Test" heißen.
    Nur wie mache ich es bei Preis? da soll ja kein Name angegeben werden, sondern eine Zahl?
    Mein sieht jetzt so aus:


    Code



    ocmd:editbiz(playerid, params[])
    {
    if(PlayerDaten[playerid][pTutorial] == 1)return SendClientMessage(playerid,ORANGE," Du bist noch im Tutorial!");
    if(PlayerDaten[playerid][pLogin] == 0)return SendClientMessage(playerid,ORANGE ," Du bist nicht Eingeloggt!");
    if(PlayerDaten[playerid][pAdminlevel] != 2000)return SendClientMessage(playerid,DUNKELROT," Du hast kein Zugriff auf diesen Befehl!");
    new BizIDWahl, ExistsBiz[84];
    if(sscanf(params,"is[12]", BizIDWahl, )) return SendClientMessage(playerid,DUNKELROT," Benutzung: /editbiz [ID] [Name/Preis] [Angabe]"); // Was müsse ich den beim 3 Parameter dann angeben? es wäre ja ein String & Zahl?
    {
    format(ExistsBiz,sizeof(ExistsBiz),"/Firmen/%i.ini", BizIDWahl);
    if(dini_Exists(ExistsBiz))
    {
    if(strcmp(cmd,"Name",true) == 0)
    {
    // Hier ist noch alles Leer.
    }
    if(strcmp(cmd,"Preis",true) == 0)
    {
    // Hier ist noch alles Leer.
    }
    }
    }
    return 1;
    }



    Hoffe ihr habt mich so verstanden ^^

    Bin derzeit wieder für Aufträge zu haben!
    Hier nochmal ein paar Informationen:


    [tabmenu]


    [tab='Bitte Lesen!!','http://www.chip.de/i/warnung.gif']


    Bitte unterlasst diese Anfragen wie "Hey, möchtest du mit mir ein Projekt auf machen?" oder "Hey, Du könntest mir mal eben was im Script fixen?".
    Ich biete "Scripting Service gegen Bezahlung an" und das heißt nicht das ich bei eurem Projekt mit machen will!


    Also ist nicht Böse gemeint aber bitte lasst es, es nervt ^^

    [tab='Kontakt Möglichkeiten','http://www.unser-kreis-pinneberg.de/wcf/icon/partnerL.png']
    Ihr könnt mich auf folgenden Instanzen erreichen:

    • Skype - Equ_Res
    • Forum Nachricht- KLICK
    • Steam - equuillibrium


    [tab='Preis/Bezahl Methoden','http://www.wanderwege-beider-basel.ch/admin/app/fowandern/theme/default/img/icon_warenkorb.png']
    Die Bezahl Methoden schauen wie folgt aus:

    Überweisung
    PayPal
    Ich nehme keine CS:GO Skins o.Ä als Gegenleistung!


    [/tabmenu]


    //PUSH
    Suche wieder kleine Aufträge.

    @Ewu:
    Bevor du hier so einen Müll absonderst solltest du dir mal den Startpost anschauen.
    Denn dort wird die Funktion isAdmin verwendet, undzwar ganz einfach fehlerhaft. :whistling:

    @N0SKILL
    Jetzt muss frage ich mal dich, was du hier für einen Müll absonderst?
    Das er isAdmin verwendet habe ich auch gesehen, was ich jetzt wissen möchte ist.
    Wie hat er diese Funktion geschrieben?


    Hat er sei so geschrieben:


    stock IsAdmin(playerid,level)
    {
    if(GetPVarInt(playerid,"Adminlevel")<level)return 1;
    return 0;
    }



    Oder vielleicht so?:



    stock IsAdmin(playerid,level)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=level)return 1;
    return 0;
    }


    .. Man weiß es nicht woher auch? er hat ja nicht seine "isAdmin" Funktion gepostet.
    aber nun gut .. wenn er nach euren er achtens die Funktion gepostet hat. Okaaay 8o


    @Direct_Player


    Ich weiß das Thema ist zwar schon von dir als erledigt Markiert worden.
    Aber ich will dir nur Sagen wenn du deine Funktion so aufgebaut hast:


    Wenn deine Funktion so aussieht, heißt es. Ist der Wert kleiner als der genannte Wert. ( Jeder unter Adminlevel 2 könnte diesen nutzen )
    Sprich: isAdmin(playerid, 2) // könnte jeder unter "Adminlevel - 2" diese Funktion nutzen.


    stock IsAdmin(playerid,level)
    {
    if(GetPVarInt(playerid,"Adminlevel")<level)return 1;
    return 0;
    }



    Wenn deine Funktion so aussieht, heißt es. Ist der Wert Größer als der genannte Wert. ( Jeder über Adminlevel 2 könnte diesen nutzen )
    Sprich: isAdmin(playerid, 2) // könnte jeder Über "Adminlevel - 2" diese Funktion nutzen.


    stock IsAdmin(playerid,level)
    {
    if(GetPVarInt(playerid,"Adminlevel")>level)return 1;
    return 0;
    }


    Ich hoffe ich hab das so richtig erklärt :wacko:
    Du kannst dir das auch alles hier Nachlesen ^^


    http://wiki.sa-mp.com/wiki/Scripting_Basics_DE
    [ SCRIPTING ] Bedeutung der Operatoren





    Grüße






    So und darf ich jetzt mal Fragen woher ihr wissen wollt wie seine stock Funktion aussieht?


    Poste mal deine stock Funktion "isAdmin'

    Mein Vorposter hat bereits schon alles geschrieben.
    Du wirst hier keinen finden der dir ein echt top gutes Script für 25€ Verkauft.
    Da musste schon um das 3-4 Fache drauf packen um was Anständiges zu erhalten, daher ist die Beste Methode immer noch es selbst zu versuchen :thumbup:.


    Fazit: Würde den Preis wirklich anheben, oder es sein lassen. Nicht Pöss gemeint, aber ist meine Meinung ^^



    Grüße


    Genau :)
    Und wie wäre sowas möglich? :D Erklärung bitte :D

    Komm ich bin wirklich mal so nett und Schreibe dir das mal eben hier.
    Gleich werden die Ersten Leute schreiben, öhh warum kaust du den, denn alles vor öhh .. Lasst mich doch?^^



    So hier mal der Code:




    enum DSInfo
    {
    DSInterior,
    Float:SpawnX,
    Float:SpawnY,
    Float:SpawnZ,
    }
    #define MAX_SPAWN 1
    new DynamicSpawnInfo[MAX_SPAWN][DSInfo];



    ocmd:setspawn(playerid, params[])
    {
    new cmd[15], ID, ExistsFrak[20], ExistsFrakCars[20];
    if(sscanf(params,"s[15]", ID))return SendClientMessage(playerid,ORANGE,"Benutzung: /setspawn [Playerspawn]");
    if(strcmp(cmd,"Playerspawn",true) == 0)
    {
    new IntID = GetPlayerInterior(playerid);
    new Float:x,Float:y,Float:z, string[120];
    GetPlayerPos(playerid,x,y,z);
    PlayerSpawn(x,y,z, IntID);
    }
    return 1;
    }


    stock SpawnsSpeichern(spawnid)
    {
    new SDatei[64];
    format(SDatei,50,"/Spawns/%d.ini",spawnid);
    dini_FloatSet(SDatei,"SpawnX",DynamicSpawnInfo[spawnid][SpawnX]);
    dini_FloatSet(SDatei,"SpawnY",DynamicSpawnInfo[spawnid][SpawnY]);
    dini_FloatSet(SDatei,"SpawnZ",DynamicSpawnInfo[spawnid][SpawnZ]);
    dini_IntSet(SDatei,"DSInterior",DynamicSpawnInfo[spawnid][DSInterior]);
    return 1;
    }


    stock PlayerSpawn(Float:x,Float:y,Float:z, IntID)
    {
    new SDatei[64];
    for(new spawnid=1;spawnid<MAX_SPAWN;spawnid++)
    {
    format(FDatei,50,"/Spawns/%d.ini",spawnid);
    if(!fexist(SDatei))
    {
    dini_Create(FDatei);
    dini_FloatSet(FDatei,"SpawnX",x);
    dini_FloatSet(FDatei,"SpawnY",y);
    dini_FloatSet(FDatei,"SpawnZ",z);
    dini_IntSet(FDatei,"DSInterior", IntID);
    return LoadSpawn(spawnid);
    }
    }
    return 1;
    }


    stock LoadSpawn(spawnid)
    {
    new SDatei[64];
    format(SDatei,50,"/Spawns/%d.ini",spawnid);
    if(!fexist(SDatei))return 0;
    {
    DynamicSpawnInfo[spawnid][SpawnX] = dini_Float(SDatei,"SpawnX");
    DynamicSpawnInfo[spawnid][SpawnY] = dini_Float(SDatei,"SpawnY");
    DynamicSpawnInfo[spawnid][SpawnZ] = dini_Float(SDatei,"SpawnZ");
    DynamicSpawnInfo[spawnid][DSInterior] = dini_Int(SDatei,"DSInterior");
    }
    return 1;
    }
    ´


    // DAS unter OnPlayerSpawn packen
    switch(PlayerDaten[playerid][pSelectSpawn]) // Diese Abfrage halt anpassen, hauptsache es gibt eine Globale Variable die Werte Speichert/Lädt. Bekommt der Spieler den Wert 0 zugewiesen Startet er an den Neulingspawn den du mit /setspawn festgelegt hast.
    {
    case 0:
    {
    for(new spawnid=1;spawnid<MAX_SPAWN;spawnid++)
    {
    SetPlayerInterior(playerid, DynamicSpawnInfo[spawnid][DSInterior]);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerPos(playerid, DynamicSpawnInfo[spawnid][SpawnX],DynamicSpawnInfo[spawnid][SpawnX],DynamicSpawnInfo[spawnid][SpawnX]=;
    SetPlayerFacingAngle(playerid, 0);
    }
    }
    case 1:
    {
    // Hier dann Rein wenn er 'pSelectSpawn' auf 1 hat. Könnte also z.B dann eine Fraktion sein.
    }
    }



    Ich hab es nicht getestet aber versuch es mal so, müsstest da nur einige Abfragen anpassen ^^



    Grüße


    Genau sprich der Serverleiter gibt /Setspawn ein und beim nächsten Login von den SPielern sollen die auch da spawnen

    Also, Serverleiter gibt /setspawn ein. Und alle Neulinge die sage ich mal noch in KEINER Fraktion sind. Sollen dann am neuen Neulingspawn Spawnen, richtig?
    Klar sowas wäre möglich ^^

    Hallo Liebe Scripting Profis,
    ich wollte nachfragen ob es möglich ist ein dynamischen /setspawn Befehl zumachen.
    Der Befehl soll für die Serverleiter nur sein,damit die die Spawns,aller Spieler,varieren können
    Ist das möglich?


    Versteh die Frage nicht so ganz?
    Willst du das man mit einem Befehl per InGame den Allgemeinen Spielerspawn ändern kann?



    Grüße