Dynamisches Fraktionssystem V1 | SQLite

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Heyho Leute,
    Vor einiger Zeit habe ich aus langerweile mit einem dynamischen Fraksystem angefangen, was ich eig sehr groß ausbauen wollte, pläne waren da..
    Nur habe ich keine große lust mehr weiterzuschreiben, es besitzt jetzt schon ein paar funktionen.


    1. Was beinhaltet es? (Grob)
    - Fraks Ingame erstellen/Löschen
    - Fraktyp zuweisen (1=cop, 2=medic, 3=gang)
    - duty erlaubniss geben (darf frak in den dienst gehen? frak art 1-2)
    - Dynamisches Pickupsystem (dutypickups für fraktionen, arrestpickups)
    - Dynamisches Frakcar system (Ingame erstellen, löschen, parken, rang zuweisen)
    - /Setleader, entleader, giverank, invite, uninvite, accept invite
    - Fraktionscars auflisten, Gehalt ändern
    - Frakpayday, ein payday der jede stunde ausgeführt wird
    - Arrestsystem (angefangen)
    - Frakkassen


    1.1 Benutzer system
    Es werden neue "accounts" für die fraktionseinstellungen erstellt, darüber läuft, in welcher frak ein spieler ist, ob er leader ist etc.


    1.2 Pickupsystem
    Es ist möglich das man ingame 2 verschiedene pickups erstellt, Einen Duty pickup, und einen Arrest Pickup.
    Duty: Für cops und medics, um befehle auszuführen müssten sie in den dienst gehen
    Arrest: Für Cops, um jemanden mit Wanteds einzusperren.


    1.3 Carsystem
    Für jede Fraktion können Fraktionsfahrzeuge erstellt werden, welche nur für Member/Leader der Fraktion sind.
    Es ist möglich den Fahrzeugen einen benötigten Fraktionsrang zu geben.
    DIe Fahrzeuge können von einem Leader Ingame geparktwerden.


    1.4 Fraktionskasse/Frakpayday
    Jede Fraktion hat eine Frakkasse und einem Frakpayday.
    Beim Frakpayday wird dem Member das Gehalt gezahlt, welches der Leader für den Rang gesetzt hat.
    Das Geld geht von der Fraktionskasse ab, diese kann aber aufgefüllt werden.


    Mehr fällt mir im moment nicht ein was ich drüber schrieben könnte..


    Wie gehe ich mit SQLite um?
    Die handhabung von SQLite ist recht verständlich, dafür hab ich hier 2 Links, eine von der Wikiseite, und eine von nem Tutorial von BlackAce hier aus dem Forum.
    http://wiki.sa-mp.com/wiki/SQLite
    [ SCRIPTING ] SQLite | Die alternative zu MySQL


    Abschluss
    Ich hoffe das das System einigen weiterhilft, und das man vllt auch nochwas drauß machen kann, fals ich mal wieder lust habe, dran weiter zu schreiben werde ich das auch tun,
    Geplant war ursprünglich ein komplettes pd system, was ich auch angefangen habe aber keine lust mehr zum weiterarbeiten^^
    Ein Gangwarsystem etc.
    Es ist aber verboten das Script als euers auszugeben, auch wenn ihr es weiter editiert, ihr dürft es nicht neu releasen und auch nicht verkaufen, egal wie weit es editiert ist.


    Download
    sscanf2: http://forum.sa-mp.com/showthread.php?t=120356
    ocmd: [ INCLUDE ] ocmd 2.1.0 [ Update 24.7.2013 ]


    Pastebin Script: http://pastebin.com/r62QZyau

  • Dann kommt mal mein Feedback dazu:


    Ich durfte das alles vorher testen, die 'Rohversion', hab also praktisch miterlebt wie das Script entstanden ist. Ich bin sehr stolz auf dich das du so lernfähig bist und vor allem kritikfähig !
    Mach weiter so :love:


    Jap du warst bei allem dabei, als es noch am anfang mit der planung bis jetzt.
    Ich danke dir :)
    Lernfähig klar iwann isses immer hilfreich was man lernt, und kritik muss man abkönnen, sonst kommt man nihc weiter :love:

  • Frak System ist ganz ok auch wenn es nicht sehr weit ist. Der sinn ist mir jedoch nicht bekannt. Man muss praktisch jedes einzelne System umständlich scripten (z.B verhaften etc.) bei Fraktionen die man nur 1x braucht (Polizei,Medic,Feuerwehr etc.) Das einzig sinnvolle wäre ein Dynamisches Gangsystem weil viele Server viele verschiedene Gangs nutzen (z.B für größere Bandenkriege).

  • Frak System ist ganz ok auch wenn es nicht sehr weit ist. Der sinn ist mir jedoch nicht bekannt. Man muss praktisch jedes einzelne System umständlich scripten (z.B verhaften etc.) bei Fraktionen die man nur 1x braucht (Polizei,Medic,Feuerwehr etc.) Das einzig sinnvolle wäre ein Dynamisches Gangsystem weil viele Server viele verschiedene Gangs nutzen (z.B für größere Bandenkriege).


    danke für deine kritik :)
    der sinn dabei war, das man zb wie ich es mir dachte, mehrere fraks für die funktionen machen kann, lspd, fbi also gf like^^
    wiegesagt ich hatte keine lust mehr weiterzuschrieben wie immer eig.., ich werde aber bald mal die sachen mit gw system umsetzen.


    vorschläge für eine V2 können auch gerne gepostet werden.

  • So ich hab mal was gefunden gehabt
    stock SaveUser(playerid)
    {
    new query[256],query1[256];
    format(query,sizeof(query),"UPDATE `user` SET `Frak`='%d',`Leader`='%d',`invite`='%d',`paytime`='%d',`Rang`='%d' WHERE `Name`='%s'",UserInfo[playerid][Frak],UserInfo[playerid][Leader],UserInfo[playerid][invite],UserInfo[playerid][paytime],UserInfo[playerid][Rang],SpielerName(playerid));
    format(query1,sizeof(query1),"UPDATE `user` SET `wanted`='%d',`jailtime`='%d',`jailed`='%d' WHERE `Name`='%s'",UserInfo[playerid][wanted],UserInfo[playerid][jailtime],UserInfo[playerid][jailed],SpielerName(playerid));
    db_query(Data,query);
    db_query(Data,query1);
    return 1;
    }
    wozu 2 querys? einer reicht auch aus
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }
    Speicher den Namen lieber zwischen denn die Funktion ist unnütz
    format(str,sizeof(str),"SELECT * FROM `user` where NAME = '%s'",SpielerName(playerid));
    Result=db_query(Data,str);
    if(db_num_rows(Result) > 0){}
    else
    {
    format(query,sizeof(query),"INSERT INTO `user` (`Name`,`Frak`,`Leader`,`invite`,`paytime`,`Rang`,`wanted`,`jailtime`,`jailed`) VALUES ('%s','0','0','0','0','0','0','0','0')",SpielerName(playerid));
    db_query(Data,query);
    }
    db_get_field_assoc(Result,"Frak",str,sizeof(str));
    UserInfo[playerid][Frak]=strval(str);
    db_get_field_assoc(Result,"Leader",str,sizeof(str));
    UserInfo[playerid][Leader]=strval(str);
    db_get_field_assoc(Result,"invite",str,sizeof(str));
    UserInfo[playerid][invite]=strval(str);
    db_get_field_assoc(Result,"paytime",str,sizeof(str));
    UserInfo[playerid][paytime]=strval(str);
    db_get_field_assoc(Result,"Rang",str,sizeof(str));
    UserInfo[playerid][Rang]=strval(str);
    db_get_field_assoc(Result,"wanted",str,sizeof(str));
    UserInfo[playerid][wanted]=strval(str);
    db_get_field_assoc(Result,"jailtime",str,sizeof(str));
    UserInfo[playerid][jailtime]=strval(str);
    db_get_field_assoc(Result,"jailed",str,sizeof(str));
    UserInfo[playerid][jailed]=strval(str);
    Das dürfte so nicht ganz Funktionieren, da du erst abfragst, wenn er nicht da ist fügst du ihn hinzu und danach willst du daten laden aber was genau lädst du da eigendlich?
    Er hat ihn doch vorher nicht gefunden gehabt
    #pragma unused rows
    Auch unnütz
    Du erstellst variablen die du nicht nutzt


    Naja mehr hab ich bisher auch nicht gefunden gehabt

    All in all it's just another brick in the wall

  • Beavis:
    Das mit den 2 querys war ein denkfehler da ich sonst etwas durcheinander gekommen wäre.
    Ich nutze lieber die funktion da ich eig keine lust hab immer wieder den code für den namen neu zu schreiben.
    Das mit dem laden funktioniert schon, ich hab nur ausgelesen ob er existiert wenn nicht eintragen und die werte auslesen, wenn er nicht existiert wären alle auf 0.


    Mit dem pragma unused hab ich verwendet weil ich die vari einmal verwendet habe aber der compiler das nicht als verwendet gesehen hat

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich habe gerade jemanden geholfen der einen Fehler hatte:
    error 025: function heading differs from prototype


    Das Problem kann man beheben in dem man in deinem Script folgendes abändert:
    public OnPlayerDisconnect(playerid)


    zu


    public OnPlayerDisconnect(playerid, reason)


    Liebe Grüße,
    m4a_X

  • wie installiert man das eigentlich in pastebin gehen den code kopieren und in ein neues blankes filterscript einfügen ? wenn ja dann kriege ich 2 errors.


    (227) : warning 202: number of arguments does not match definition
    (240) : error 025: function heading differs from prototype