Beiträge von Simon2202

    Hallo, Community!


    Ich schreibe derzeit ein Filterscript, mehr aus Spaß und möchte, soweit es funktioniert, es trotzdem veröffentlichen!


    Jetzt wollte ich fragen ob ich in der include die ich dazu beifügen werde auch Befehle eintragen kann..


    Heist, wenn jemand nicht mit meinem Befehl, bsp: /help zufrieden ist und stattdessen gerne /hilfe hätte.


    Ob ich das in der include lösen könnte?
    Ich habe mir gedacht, vielleicht könnt ich das so lösen:


    in der include:
    #define helpcommand "hilfe"


    Im FS:
    ocmd:helpcommand(playerid,params[])
    Und eigentlich, dann statt helpcommand dort hilfe als Befehl steht.


    Ich hoffe ihr könnt mir helfen! MFG

    Naja aber heist es ansich nicht Abfrage ? if-else-Verzweigung kann schon sein, aber ist
    if(test[playerid] == 0) nicht ansich eine Abfrage?


    Ja, aber Informationen habe ich gerne mit Begründungen bevor ich es verwende ^^

    if (strcmp(cmd, "/stats", true) == 0 || strcmp(cmd, "/perso", true) == 0 || strcmp(cmd, "/personalausweis ", true) == 0)
    {
    if(IsPlayerConnected(playerid) && gPlayerLogged[playerid] == 1)
    {
    if(PlayerInfo[playerid][pOwnPerso] == 1)
    {
    ShowStats(playerid,playerid);
    return 1;
    }
    SendClientMessage(playerid,-1,"[FEHLER]: Du besitzt keinen Personalausweis");
    return 1;
    }
    SendClientMessage(playerid,-1,"[FEHLER]: Du bist nicht eingeloggt!");
    return 1;
    }


    Bei Fragen, frag ruhig! Sollte klappen
    @heyhoo Warum nicht Abfrage? Das musst du mir erklären... Es ist eine If Abfrage, das heist auch so..

    Bitte erst ein,al den gesamten Code unter schreiben... Und die Zeilen markieren in denen die Fehler auftreten..


    Hast du das selbst geschrieben ?

    Danke! Jeffry



    Andere Frage, kann das so funktionieren? :


    Oben im Script:
    #define FILTERSCRIPT
    #define IsInFrak(%0) CallRemoteFunction("GetFrak","i",%0)


    //__________ VARIABLEN __________
    new livestat[MAX_PLAYERS];
    new liveangebot[MAX_PLAYERS];
    new liveangebotID;
    new breaklive;


    In OnPlayerText:
    if(livestat[playerid] == 1)
    {
    new name[128];
    GetPlayerName(playerid,name,sizeof(name));
    if(breaklive == 0)
    {
    new str[128];
    if(IsInFrak(playerid) == 19)
    {
    format(str,sizeof(str),"[NR] Live Reporter %s: %s",name,text);
    SendClientMessageToAll(-1,str);
    return 1;
    }
    format(str,sizeof(str),"[NR] Live Spieler %s: %s",name,text);
    SendClientMessageToAll(-1,str);
    return 1;
    }
    else
    {
    new str[128];
    format(str,sizeof(str),"%s sagt: %s",name,text);
    SMessage(playerid,-1,str,20);
    return 1;
    }
    }


    Ganz unten im Script:
    stock SMessage(playerid,farbe,text[],Float:umkreis)
    {
    new Float:xm, Float:ym, Float:zm;
    if(GetPlayerPos(playerid,xm,ym,zm))
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    if(IsPlayerConnected(i) && (i==playerid || IsPlayerInRangeOfPoint(i,umkreis,xm,ym,zm)))
    SendClientMessage(i,farbe,text);
    return 1;
    }
    return 0;
    }


    //__________ BEFEHLE __________


    ocmd:live(playerid,params[])
    {
    if(IsInFrak(playerid) == 19)
    {
    new pID;
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,-1,"[BENUTZUNG]: /live [PlayerID/PlayerName]");
    SendClientMessage(pID,-1,"Dir wurde ein Live Gespräch angeboten! Verwende /annehmen!");
    liveangebot[pID] = 1;
    liveangebotID = playerid;
    return 1;
    }
    return 1;
    }


    ocmd:annehmen(playerid,params[])
    {
    if(liveangebot[playerid] == 1)
    {
    new pID = liveangebotID;
    livestat[playerid] = 1;
    livestat[pID] = 1;
    SendClientMessage(playerid,-1,"Live Chat wurde gestartet!");
    SendClientMessage(pID,-1,"Live Chat wurde gesttartet!");
    return 1;
    }
    SendClientMessage(playerid,-1,"Du hast kein Angebot für einen Live Chat bekommen!");
    return 1;
    }



    ocmd:breaklive(playerid,params[])
    {
    if(IsInFrak(playerid) == 19)
    {
    breaklive = 1;
    for(new i; i < MAX_PLAYERS; i++)
    if(livestat[i] == 1)return SendClientMessage(playerid,-1,"Das Live Gespräch wurde unterbrochen!");
    }
    return 1;
    }



    Bin mir nicht sicher ob es funktionieren kann, kann es leider nicht testen da ich alleine bin !

    Vor Monaten einmal diesen stock: Kaliber


    stock SCM(playerid, color, fstring[], {Float, _}:...) {
    new n = numargs() * 4;
    if (n == 3 * 4) return SendClientMessage(playerid, color, fstring);
    new message[128],arg_start,arg_end,i = 0;

    #emit CONST.pri fstring
    #emit ADD.C 0x4
    #emit STOR.S.pri arg_start

    #emit LOAD.S.pri n
    #emit ADD.C 0x8
    #emit STOR.S.pri arg_end

    for (i = arg_end; i >= arg_start; i -= 4) {
    #emit LCTRL 5
    #emit LOAD.S.alt i
    #emit ADD
    #emit LOAD.I
    #emit PUSH.pri
    }

    #emit PUSH.S fstring
    #emit PUSH.C 128
    #emit PUSH.ADR message
    #emit PUSH.S n
    #emit SYSREQ.C format
    i = n / 4 + 1;
    while (--i >= 0) {
    #emit STACK 0x4
    }
    return SendClientMessage(playerid, color, message);
    }


    Link zum Thread: Stock Frage/Problem Hilfesuchen bei Umsetzung

    ocmd:createfirma(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new fname[30],fwert,faktien,xyfaktwertxy,query[200];
    if(sscanf(params,"sdd",fname,fwert,faktien))return SCM(playerid,frot,"[VERWENDUNG]: /createfirma [FirmenName][FirmenWert][Anzahl-Aktien]");
    if(strlen(fname) > 30)return SCM(playerid,frot,"[FEHLER]:Der Firmen Name darf maximal 30 Zeichen betragen!");
    if(fwert > 1000000)return SCM(playerid,frot,"[FEHLER]: Der Wert der Firma darf nicht über 10.000.000€ betragen!");
    if(faktien > fwert)return SCM(playerid,frot,"[FEHLER]: Der Wert der Aktien muss mindestens 1€ betragen! Firmen Wert = Aktien Anzahl");
    xyfaktwertxy = fwert / faktien;
    mysql_format(db_handle,query,sizeof(query),"INSERT INTO aktien (FirmenName,FirmenWert,AktienAnzahl,AktienWert) VALUES ('%e','%d','%d','%d')",fname,fwert,faktien,xyfaktwertxy);
    mysql_tquery(db_handle,query);
    return 1;
    }
    return 1;
    }


    Gleiches Ergebnis, Compiler schmiert ab.....


    faktwert wird nur in diesem Befehl verwendet...





    Ich glaube es liegt irgendwo anders.... Wenn ich den Befehl GANZ ausklammere schmiert der compiler trotzdem ab.. (Wenn nur faktwert fehlt geht er auch.. naja)


    Vielleicht is jemand so lieb das ganze FS mal durch zu sehen.. Ist nicht allzu viel.. Ich hab wohl irgendwo einen Fehler..


    http://pastebin.com/CcdhQCJ3

    Ich kabiers einfach nicht...


    Ich habe jetzt den Befehl, habe das System etwas verändert:


    ocmd:createfirma(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new fname[30],fwert,faktien,faktwert,query[200];
    if(sscanf(params,"sdd",fname,fwert,faktien))return SCM(playerid,frot,"[VERWENDUNG]: /createfirma [FirmenName][FirmenWert][Anzahl-Aktien]");
    if(strlen(fname) > 30)return SCM(playerid,frot,"[FEHLER]:Der Firmen Name darf maximal 30 Zeichen betragen!");
    if(fwert > 1000000)return SCM(playerid,frot,"[FEHLER]: Der Wert der Firma darf nicht über 10.000.000€ betragen!");
    if(faktien > fwert)return SCM(playerid,frot,"[FEHLER]: Der Wert der Aktien muss mindestens 1€ betragen! Firmen Wert = Aktien Anzahl");
    faktwert = fwert / faktien;
    mysql_format(db_handle,query,sizeof(query),"INSERT INTO aktien (FirmenName,FirmenWert,AktienAnzahl,AktienWert) VALUES ('%e','%d','%d','%d')",fname,fwert,faktien,faktwert);
    mysql_tquery(db_handle,query);
    return 1;
    }
    return 1;
    }


    Wenn ich das kompiliere stürzt mir mein Compiler ab...
    Compile ich es ohne dem faktwert im new stürzt er nichtmehr ab aber es kommen die Fehlermeldungen:
    C:\Users\Simon_2\Desktop\Aktien System.pwn(300) : error 017: undefined symbol "faktwert"
    C:\Users\Simon_2\Desktop\Aktien System.pwn(300) : warning 215: expression has no effect
    C:\Users\Simon_2\Desktop\Aktien System.pwn(301) : error 017: undefined symbol "faktwert"
    C:\Users\Simon_2\Desktop\Aktien System.pwn(331) : warning 203: symbol is never used: "AktienInfo"


    Und ich weiß nicht warum... Ich kann mir nicht erklären warum es an dem liegen soll :/


    MFG

    ocmd:createbiz(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new bizname[30],bizwert,query[200];
    new Float:posx,Float:posy,Float:posz;
    if(sscanf(params,"sd",bizname,bizwert))return SCM(playerid,frot,"[BENUTZUNG]: /createbiz [Bizname][Bizwert]");
    GetPlayerPos(playerid,posx,posy,posz);
    mysql_format(as_db_handle,query,sizeof(query),"INSERT INTO aktien (bizname,bizwert,bizposx,bizposy,bizposz) VALUES ('%e','%d','%f','%f','%f')",bizname,bizwert,posx,posy,posz);
    mysql_tquery(as_db_handle,query);
    SCM(playerid,iblau,"[INFO]: Du hast ein Business mit dem Namen %s und dem Wert %d erstellt!",bizname,bizwert);
    return 1;
    }
    return 1;
    }


    Dabei stürzt mir der Compiler immer ab... Wenn ich das raus nehme gehts ... Ich weiß aber nicht warum..

    Ich hab vor, wenn das FS läuft es im Showroom her zu zeigen, und wers will kann es sich runter laden ^^... Das ist ja mein Problem.. Für meinen eigenen GM brauch ich ja auch kein FS... Und ich weiß ja nicht wie die es haben ^^ meine Frage war ob es eine General Lösung gibt...


    Dann wohl nur mit IsPlayerRconAdmin ....

    Welchen Rang er hat....


    Kann ja auch sein, dass ich 4,5 Befehle für den Obersten Admin scripten will, ein paar andere für andere admin stufen und drüber halt :/ Wie ich sowas lösen kann..


    Beispiel ich hab 5 Befehle:
    /help
    /create
    /delete
    /info
    /test
    (Sind natürlich nur Beispiele...
    Und die Rechte sollen wie folgt verteilt sein:
    /help für alle Admins
    /create für alle Admins außer die untersten
    ..... And so on :/ oder geht das garnicht ?

    Eine Frage habe ich tatsächlich noch Jeffry


    Kann ich in meinem Filterscript normal includes wie ocmd, mysql etc. verwenden? Ohne, dass andere dann diese includes in ihrem Gamemode brauchen?


    Ich schätze mal ja, dass es geht, aber ich frage lieber nach bevor ich es dann gescriptet habe und das geht dann so nicht.

    Hallo, Community!


    Ich habe mir überlegt ein Aktien, Business Filterscript zu schreiben!
    Jedoch wollte ich fragen wie das hierbei mit der Mysql Verbindung aussieht, da ich das ganze darin speichern lassen möchte, wenn ich es jemals veröffentliche.


    1. DIe Mysql Daten würde ich in einer Include Datei angeben lassen, sollte doch insoweit funktionieren oder habe ich da einen Denkfehler ?


    2. Muss ich in dem Filterscript mit der Datenbank connecten mit mysql_connect ? Oder reicht es wenn es im Gamemode connectet ist ?


    3. Muss ich sonst etwas beachten ? Wenn ihr Tipps habt was ich beachten solltet, bitte schreiben!


    Danke!

    Die Probleme wollen einfach nicht aufhören!


    Mir ist aufgefallen, dass ich bei der Passwort Eingabe einfach mal vergessen habe abzufragen ob das Passwort richtig ist...


    Nur weiß ich nicht wie ich das am besten mache :/ Hoffe ihr könnt mir helfen..


    Hier ist der Login Dialog in dem das Passwort eingegeben wird:


    if(dialogid == D_LOGIN1)
    {
    if(response)
    {
    new query[128],key[50];
    format(key,sizeof(key),"%s",inputtext);
    format(query, sizeof(query), "SELECT * FROM user WHERE name='%e' AND password='%e'", GPlayerName(playerid), key);
    mysql_tquery(db_handle, query, "OnPasswordResponse", "i", playerid);
    pRegV[playerid] = 0;
    return 1;
    }
    if(pRegV[playerid] == 0)return ShowPlayerDialog(playerid,D_LOGIN1,DIALOG_STYLE_PASSWORD,"LOGIN","Du hast auf Abbrechen geklickt und kannst es erneut versuchen:","Login","Abbrechen"); pRegV[playerid] = 1;
    if(pRegV[playerid] == 1)return SCM(playerid,frot,"[FEHLER]: Du hast den Login abgebrochen! Auf Wiedersehen!"); KickPlayer(playerid);
    return 1;
    }


    Hier ist OnPasswordResponse:
    forward OnPasswordResponse(playerid);
    public OnPasswordResponse(playerid)
    {
    new num_fields, num_rows;
    cache_get_data(num_rows, num_fields);
    if(num_rows == 0)
    {
    if(pRegV[playerid] == 0)
    {
    new str[128];
    format(str,sizeof(str),"Dein Passwort war falsch! Du kannst es jetzt erneut versuchen!",GPlayerName(playerid));
    ShowPlayerDialog(playerid,D_LOGIN1,DIALOG_STYLE_PASSWORD,"Login",str,"Login","Abbrechen");
    return 1;
    }
    else if(pRegV[playerid] == 1)
    {
    SCM(playerid,frot,"[FEHLER]: Dein Passwort war falsch! Auf Wiedersehen!");
    Kick(playerid);
    return 1;
    }
    return 1;
    }
    else
    {
    LoadPlayer(playerid);
    return 1;
    }
    }

    public OnPlayerConnect(playerid)
    {
    new query[50];
    print("D1");
    format(query,sizeof(query),"SELECT * FROM user WHERE name='%e'",GPlayerName(playerid));
    mysql_tquery(db_handle,query,"UserCheck","i",playerid);
    print("D2");
    return 1;
    }