Beiträge von NetBurst

    Dann noch 2 zwischenfragen.
    Wie findet ihr den Namen meines Projekts: "Binary-Life"?
    Dann noch welche Server Narichten würdet ihr besser finden.
    SendClientMessage(playerid,Grau,"[Fehler] Du bist nicht in dieser Fraktion.");
    SendClientMessage(playerid,Grau,"Du bist nicht in dieser Fraktion.");


    Zu allererst sollte dem Spieler verständlich sein, was der Name bedeutet.
    Binary wie man ja weiß sind 0 und 1 die sich immer schalten und die haben definitiv nichts mit RolePlay zutun, abgesehen davon dass der eigentliche Computer zum Leben dazu gehört, aber im dem Sinne ist das quatsch.
    Und die erste Variante ist viel besser, da du den Spielern ja beibringen möchtest, dass es ein Fehler war, das zu tun oder sonstiges.

    Mit:


    Zitat


    war nur Dini da.


    Meinte ich für das Forum.
    Klar waren paar File-basierende preccorer da.
    Zum Thema File Funktion mit Tabellen, man kann aber eine File Funktion eingebunden mit sqllite erstellen.
    Und nochmal zum eigentlichen Thema des Erstellers.
    Hast du dir auch schon Gedanken gemacht, dass es Über Tabellen gehen sollte, oder über File-basis.


    //mit SQLlite kann man ebendso arbeiten wie Mysql, und es gibt auch ein Editor wie Navicat oder Phpmyadmin.
    Somit ist das Erstellen eines UCP gewährleistet

    Und:

    Zitat


    Die Intresse an Mysql wurde hier im Forum nur durch Maddin erweckt.


    Bevor das Tutorial hier nichtmal ansatzweise gab, war nur Dini da.
    Das geplappere ist auch richtig.


    //edit bei der File-variante sei dir da nicht so sicher.
    //Im allgemeinen hat man Mysql erschaffen, um Tabellen- basierend arbeiten zu können.

    Die Intresse an Mysql wurde hier im Forum nur durch Maddin erweckt.
    Klar,
    Ich kannte Mysql eingebunden in Sa-mp auch schon vorher, wollte aber immer was eigenes machen.
    Falls ihr euch nicht entscheiden könnt, nimmt das standart File-system, was es schon in der Pawn-sprache eingebunden in Sa-mp gibt.
    Mysql ist im groben und ganzen ist nur so beliebt, weil man alles seperat und ordentlich in einer oder mehreren Tabelle hat.


    //edit


    if(strcmp("/aduty",cmdtext,true)==0)
    {
    if(Spieler[playerid][[Adminlevel]) = 1)
    {
    SendClientMessage (playerid,Blau,"Du bist nun als Suporter im Dienst");
    return 1;
    }
    if(Spieler[playerid][[Adminlevel]) = 0)
    {
    SendClientMessage (playerid,Rot,"Du kein Admin.");
    return 1;
    }
    }

    Somit würdest du mitif(Spieler[playerid][[Adminlevel]) = 1) einen Spieler den Rank geben.
    Lösung

    if(Spieler[playerid][[Adminlevel]) == 1)
    {
    SendClientMessage (playerid,Blau,"Du bist nun als Suporter im Dienst");
    return 1;
    }
    if(Spieler[playerid][[Adminlevel]) == 0)
    {
    SendClientMessage (playerid,Rot,"Du kein Admin.");
    return 1;
    }
    }

    Jetzt liegt es bei dir, soll der Spieler exakt Level eins haben und dann weiter zu kommen, oder soll er es ab Wert 1 erst können.

    Es kann auch sein, dass dein GF ( wie es immer ist ) verdammt viele Timer benutzt.
    Und da der GF über OnPlayerUpdate arbeitet, ist das immer so eine Sache.
    Und die meisten Strings nehmen einfach zu viel Speicher, was will man erwarten wenn GF vor 5 Jahren erstellt wurde.


    //na gut dann hat sich das OnPlayerUpdate- Problem anscheined gelöst.

    Also es ist so:
    Includes sind NICHT wie Filterscripts.
    Includes werden verwendet um Sachen einzubinden wie du es gemacht hast.
    Doch da ist ein kleines Problem.
    Die Callbacks werden nicht "überschrieben" wie bei Filterscripts.
    Dazu gibt es aber eine Lösung.
    Das ALS Hooking.
    Doch wie ich sehe bist du noch ein Anfänger und wirst es auch nicht verstehen.
    Ich rate dir ein stock zu erstellen und die Objekte da rein zukopieren.



    stock ObjekteInit ( )
    {
    CreateObjekt ( Position )
    }

    Und dann anschließen in deinem Script unter OnGameModeInit:

    ObjekteInit ( );

    Das ist ja auch richtig.
    Nunja ich hatte dir ein Screenshot davon geschickt, mit den TD kannst du es auch ändern ....


    //edit http://pastebin.com/UNw1MXbu

    for ( new i = 0; i < MAX_PLAYERS; i++)
    {
    TextDrawShowForPlayer(i, Textdraw1);
    TextDrawShowForPlayer(i, Textdraw2);
    TextDrawShowForPlayer(i, Textdraw3);
    TextDrawShowForPlayer(i, Textdraw4);
    TextDrawShowForPlayer(i, Textdraw5);
    TextDrawShowForPlayer(i, Textdraw6);
    }



    Das hat gefehlt, wusste nicht dass es auch für andere sichtbar sein soll ...

    Nein.
    Zufälligerweise habe ich auch die ID 0 gehabt wenn du drauf hinaus wolltest.
    Falls du das so meinst, dass ich die for-schleife im OnFilerScriptInit nicht drinne habe, dann haste recht, aber:
    Die TD werden erstellt, jeder Spieler kriegt die TD wenn er in einem Auto einsteigt.

    fControl


    Tach,
    D.Fence brauchte einkleines System , was natürlich Textdraw basierend sein soll, und ich es dann auch tat.
    Es geht um darum, dass ein Spieler seine Fahrzeugnamen und deren Leben in einem seperaten Textdraw sehen kann.
    Dazu muss ich noch anhängen, sowas in der Art mache ich nicht, ich schreibe sonst komplexe Systeme, die ich auch selber auf einem Localen Server teste.
    Auf diesem Nevau scripte ich nicht, es war einfach aus langeweile und ich gerade nichts zu tun hatte.
    Nagut: hier mal die Funktionen die das kleine Script beinhaltet.


    • TextDrawShow ( playerid )
      Zeigt die existierenden Textdraws an.


    • TextDrawHide ( playerid )
      Lässt die existierenden Textdraws verschwinden


    • HandleFahrzeug ( playerid )
      Fahrzeug array wird mit dem Textdraw angebunden, Timer wäre sinnlos!


    • HandleLeben ( playerid )
      Leben wird aufgerufen, aber bedingt, wird bei dem Callback OnPlayerStateChange mit einem Timer aufgerufen


    Befehle:


    • /fcontrolaus
      Lässt die Anzeige verschwinden


    • /infernus
      War zu faul immer ein Fahrzeug zu suchen


    • /debug
      Hier werden alle bestehende Sachen angezeigt, falls mal ein Befehl nicht mehr einfach usw.


    LEBENUPDATE
    Die Definierung für LEBENUPDATE wurde darum gemacht, um die Zeit des Timers übersichtlich zu ändern oder zu verwalten.
    Der Standart Wert liegt bei 1000MS, somit kann man den Timer auffordern, erst bei 2000MS die Energyanzeige zu updaten.



    Der Schluss:
    Ich werde in den kommenden Minuten/Stunden ein Video posten, wobei es um eine Include von mir handelt, die ein Textdraw vom Punkt A zu B leitet, ohne irgendwelche Schnittstellen.


    //edit Schrift einwenig zu groß


    //edit2
    //edit3 Boaaa wie viele Rechtschreibfehler kommen ...
    //edit4 -.-* Sorry kann nur um Anfängerfehler handeln
    //edit 5 Dazu möchte ich nochmal anmerken, dass das Script 251 Zeilen hat, und das ziemlich wenig sind.
    Falls ihr Ideen habt, was ich hinzufügen kann, das schießt los.
    Es ist auch nur so knapp geworden, da wie schon gesagt, es nur für eine Hilfestellung dient.
    http://pastebin.com/CjdQdM4i

    Zitat


    1300 Fahrzeuge diese aus der datenbank zu laden 60 Millisekunden brauchen.


    Das hast du von einem der Posts über Filespeed etc.
    Mysql:
    Ja...
    Ich habe mir ein eigenes Filesystem gemacht.
    Ganz einfach.
    Weil ich zu 100% weiß, was und wie ich das Grundgerüst für alles erstellt habe,
    somit fällt mir es auch einfach, Systeme zu bauen usw.
    Und zum Thema Mysql:
    Da eine neue Funtkion gekommen ist, die sogar dafür spricht, dass Mysql deutlich schneller geworden ist, tendiere ich eher zu mysql.
    Bei der Funktion werden Caches bentzt, die verdammt schenller ist( sind) als mysql_fetch_field_row.
    //edit Falsch gesagt, sondern unteranderem mysql_fetch_field_row.

    Zitat

    hast du eine WBB 3 Lizenz?


    Warum?
    Musst doch nicht unbedingt sein, dass man ein Projekt mit einem WBB Forum öffnet.
    Und wie ich das mitverfolgt habe, bist DU in jedem dieser Theards und beschwerst/gibst Kritik.
    Und abgesehen davon, dass du sowieso nur deine Beiträge-Zahl damit pushen willst.


    //edit

    Hmmp
    erstmal eine Globale Var erstellen:



    new g_Waffenschein[MAX_PLAYERS];

    Damit wird nun gearbeitet:
    Befehl -presessor deiner Wahl:

    g_Waffenschein[playerid] = 1;

    Jetzt ist die Var für den Spieler auf 1 angepasst, somit ist er jetzt bereit eine Waffe zu kaufen:
    Um abzufragen ob er die endsprechende Variable auf 1 gesetzt bekommen hat;

    if(g_Waffenschein[playerid] == 1)
    {
    //code
    }


    Falls du mehr als einen Wert für die Variable haben möchtest, musst du auch demendsprechend andere Ops benutzen.


    public OnPlayerUpdate(playerid)
    {
    new Float:DeathHeal;
    GetPlayerHealth(playerid,DeathHeal);
    if(DeathHeal < 5.0)
    {
    ApplyAnimation(playerid, "WUZI", "CS_Dead_Guy", 1.0, 0, 0, 0, 0, 0);
    FreezePlayer(playerid);
    ShowPlayerDialog(playerid,DIALOG_DEATH,DIALOG_STYLE_MSGBOX,"Gerstorben","Sie sind gestorben!\nMöchten sie von einem Medic Wiederbelebt werden?\nWenn ja Drücken sie auf 'Medic'","Medic","death");
    }
    return 1;
    }

    = darf da nicht hin, da es als Tag was anderes bedeutet.
    < heißt jediglich das der Wert DeathHeal kleiner ist als die 5.0.


    //edit
    Ich habe es jetzt mal geprüft.
    Es funktioniert mit == doch da ist das problem wenn du durch irgendeinen Zufall unter 5.0 kommst wird das Dialog nicht erscheinen.

    Beispiel:
    SetTimer("Freilassung", 50000, false);
    So jetzt erstellen wir den Callback "Freilassung"



    forward Freilassung(playerid);
    public Freilassung(playerid)
    {
    SetPlayerPos(playerid, X, Y, Z);
    }

    Er wird nach 50 Sekunden gespawned, wenn du das so meinst.


    //edit ); vergessen

    Immer diese unqualifizierten Beiträge -.-
    SetPlayerMapIcon nutzt eine Style-param wobei es geht, dass der Icon nur in einem Radius gesehen werden soll, oder direckt, sprich auf der Karte und wenn man davor steht.
    Die Style ID´s gehen bis 0-3

    Die betonung auf war...
    Ich meine ein kleines Stück passiert das auch in der "neuen" Gesselschaft.
    Ja, ich meine "und es passiert auch mit den Juden".


    //edit : Sicher, sonst hätte ich nicht davon gesprochen.