Beiträge von Firerfan

    Wollte mal fragen ob ein Wow Server auf einen vServer passt.
    Daten:

    • NEU: 4.000 MHz Prozessor-Power
    • NEU: 50.000 MB Webspace (SCSI)
    • NEU: 3.072 MB RAM / 6.144 MB FlexRAM*
    • NEU: 6.000 GB Datentransfer/Monat

    MFG
    @rin

    Kommt auf die Version an. Ab 3.0.3 würde ich die Finger von Privat-Servern lassen.
    Ab dort hat Blizzard in den Nutzungsbedingungen von WoW Festgelegt das dass betreiben eines Privaten World of Warcraft Servers illegal ist.
    Solltest du einen Itemshop betreiben wollen oder spenden annehmen: LASS ES!
    Letztens wurde einer auf 88 Mio. Dollar verklagt.


    B2T:
    Sollte eigentlich reichen

    Öhm... Jay, woher kenn ich dich??^^
    Meine GTA:WC?


    Naja, BackToTopic:
    In deinem Enum steht "pRank", und du willst "rank" setzen.
    Solange due "rank" nicht in einer Variable Definiert hast, kann das garnicht klappen.




    MfG Firer



    //EDIT:
    Ausserdem arbeitest du oben mit einer "pInfo", also setzt du auch "pInfo".
    Sprich: "pInfo[playerid][enumvarablenname]=Wert"

    Es kann auch sein, dass die Parameter minX, minY, maxX und maxY bei PlayerInZone anders sind, als beim GangZoneCreate ^^ Schonmal daran gedacht? Ansonsten poste uns die Funktion PlayerInZone

    Genau dieser Fall trifft zu, wie ich gerade merken musste ;/
    Na großartig, meine ganzen Publics nochmal umschreiben^^
    Hoffentlich funktioniert es dann endlich.



    MfG Firer

    Hallo liebe Leser,
    In diesem Tutorial möchte ich euch kurz und übersichtlich die funktionen von DINI erklären will.



    Vorwort
    Was ist DINI eigentlich?
    DINI ist ein Include-System, das es ermöglicht Daten in Dateien zu speichern.
    Das kann zum Beispiel für ein Login & Register System, oder eine Fraktionskasse genutzt werden.
    Entwickelt wurde es von DracoBlue (http://www.dracoblue.net )
    Hinweis: Solltet ihr keine Ahnung von PAWN haben lasst besser erstmal die Finger von diesem Tutorial!



    Installation
    Die Installation folgt ganz einfach via Include.
    Sprich: Ihr benötigt die Include und verknüpft diese dann mit eurem GameMode.
    Dafür muss die Include in eurem PAWNO unterordner "Includes" liegen.
    Anschließend müsst ihr in den Head-Berreich eures Scriptes bzw. irgendwo ausserhalb eines Callbacks oder eines Publics bzw. stocks die Include via #include verknüpfen.
    Downloaden könnt ihr die Include Hier



    Anwendung
    Nach dem installieren haben wir nun erstmal einige funktionen zur Verfügung, die wir nutzen können um Inhalt zu Updaten, Dateien zu erstellen oder sonstiges. Folgende Funktionen stehen zur Verfügung:
    dini_Exists(filename[])
    dini_Remove(filename[])
    dini_Create(filename[])
    dini_Set(filename[],key[],value[])
    dini_IntSet(filename[],key[],value)
    dini_Int(filename[],key[])
    dini_FloatSet(filename[],key[],Float:value)
    dini_Float(filename[],key[])
    dini_Bool(filename[],key[])
    dini_BoolSet(filename[],key[],value)
    dini_Unset(filename[],key[])
    dini_Get(filename[],key[])
    dini_Isset(filename[],key[])
    Davon werden allerdings nur wenige verwendet.
    Auch wenn man sich davon nun erstmal erschlagen fühlt, mit der Zeit gewinnt man an übersicht.


    So, nun können wir eigentlich schon loslegen.
    Fangen wir ambesten einfach mal mit einem Script an, das beim Disconnect den Standort des Spielers speichert.
    new name[MAX_PLAYER_NAME],Float:pos_x,Float:pos_y,Float:pos_z,string[25];
    GetPlayerName(playerid,name,sizeof(name));//---------[Wir finden den Namen des Spielers herraus]
    GetPlayerPos(playerid,pos_x,pos_y,pos_z);//---------[Wir finden die Position des Spielers herraus]
    format(string,sizeof(string),"%s.ini",name);//---------[Wir erstellen einen String mit dem Namen des Spielers]
    dini_Create(string);//---------[Wir erstellen die Datei, falls diese nicht existiert]
    dini_FloatSet(string,"Alt-X",pos_x);//---------[Wir speichern die X-Koordinate]
    dini_FloatSet(string,"Alt-Y",pos_y);//---------[Wir speichern die Y-Koordinate]
    dini_FloatSet(string,"Alt-Z",pos_z);//---------[Wir speichern die Z-Koordinate]

    Natürlich müssen diese Daten nun auch noch bei "OnPlayerConnect" geladen werden.
    Dazu hier ein kleines Beispielscript:
    new name[MAX_PLAYER_NAME],Float:pos_x,Float:pos_y,Float:pos_z,string[25];
    GetPlayerName(playerid,name,sizeof(name));//---------[Wir finden den Namen des Spielers herraus]
    GetPlayerPos(playerid,pos_x,pos_y,pos_z);//---------[Wir finden die Position des Spielers herraus]
    format(string,sizeof(string),"%s.ini",name);//---------[Wir erstellen einen String mit dem Namen des Spielers]
    if(dini_Exists(string))
    {
    pos_x = dini_Float(string,"Alt-X");//---------[Wir übertragen die gespeicherte Koordinate in eine Variable]
    pos_y = dini_Float(string,"Alt-Y");//---------[Wir übertragen die gespeicherte Koordinate in eine Variable]
    pos_z = dini_Float(string,"Alt-Z");//---------[Wir übertragen die gespeicherte Koordinate in eine Variable]
    SetPlayerPos(playerid,pos_x,pos_y,pos_z);//---------[Wir setzen die Position des Spielers]
    }
    Und Fertig. Schon haben wir ein Script, welches es uns ermöglicht die letzte Position des Spielers zu speichern und anschließend wieder zu laden.
    Ich werde das Tutorial bei Nachfrage ggf. erweitern und noch einige Funktionen mehr erklären.



    MfG Firer
    //EDIT: Rechtschreibfehler verbessert
    //EDIT: Linkfehler bei DracoBlue behoben

    Moinsen, ich hab folgendes Problem:
    Bei mir kommt immer die Meldung "Du bist in keiner Gangzone".


    Code:


    public AtackZone(playerid)
    {
    new atackzone;
    if(PlayerInZone(playerid, -2521.439208, 707.875305, -2393.439208, 803.875305)){atackzone = 1; SendClientMessageToAll(COLOR_ORANGE,"[NEWS]: Es findet ein GangFight statt!");}
    else if(PlayerInZone(playerid, -2801.144042, -70.835403, -2705.144042, 33.164600)){atackzone = 2; SendClientMessageToAll(COLOR_ORANGE,"[NEWS]: Es findet ein GangFight statt!");}
    else if(PlayerInZone(playerid, -2410.999755, 59.794006, -2258.999755, 243.794006)){atackzone = 3; SendClientMessageToAll(COLOR_ORANGE,"[NEWS]: Es findet ein GangFight statt!");}
    else if(PlayerInZone(playerid, -2595.363281, 1174.781250, -2443.363281, 1262.781250)){atackzone = 4; SendClientMessageToAll(COLOR_ORANGE,"[NEWS]: Es findet ein GangFight statt!");}
    else if(PlayerInZone(playerid, -2201.540283, -295.914581, -2097.540283, -71.914581)){atackzone = 5; SendClientMessageToAll(COLOR_ORANGE,"[NEWS]: Es findet ein GangFight statt!");}
    else if(PlayerInZone(playerid, -1737.269042, -49.213462, -1625.269042, 126.786537)){atackzone = 6; SendClientMessageToAll(COLOR_ORANGE,"[NEWS]: Es findet ein GangFight statt!");}
    else{return SendClientMessage(playerid,COLOR_RED,"Du bist in keiner Gang-Zone!");}
    gangwar = atackzone;
    kills[0]=0;
    kills[1]=0;
    if(SpielerInfo[playerid][team]==4){GangZoneFlashForAll(zone[atackzone],COLOR_FAMILY);}
    if(SpielerInfo[playerid][team]==5){GangZoneFlashForAll(zone[atackzone],COLOR_ATZEN);}
    return 1;
    }


    MfG Firer

    Das ganze Scripttechnisch umzusetzen ist wirklich nicht sehr schwer.
    Allerdings ist die Idee an sich ganz gut - auch das mit der Musik ;)


    Deine Includes sind bis jetzt ganz okay.
    Von mir gibts 8/10




    MfG Firer

    Ungetestet:
    new kennzeichen[MAX_VEHICLES];//-----[Ganz oben ins Script]
    public OnVehicleSpawn(vehicleid)
    {
    new Text3D:vehicle3d[MAX_VEHICLES],string[20];
    kennzeichen[vehicleid] = vehicleid*10;
    format(string, sizeof(string), "SA-%s",kennzeichen[vehicleid]);
    vehicle3d[vehicleid] = Create3DTextLabel(string,COLOR_RED,30.0,30.0,5.0,30.0,0);
    Attach3DTextLabelToVehicle(vehicle3d[vehicleid],vehicleid, 0.0, 0.0, 0.0);
    }

    String und ne Random-Zahl zwischen 100 und 999
    Oder die VehicleID mal 10 ;)


    Könnte dann so aussehen:
    new kennzeichen[MAX_VEHICLES];
    kennzeichen[vehicleid] = vehicleid*10;


    Dann halt nen String und den 3D Text Attachen.
    wichtig: Musst irgendwie die Vehicle-ID rausfinden.
    Ambesten nit ner for-schleife bei OnGameModeInit




    Fertig.

    Wie währe es wenn du einfach nen stock nimmst und den mit "GivePlayerMoney" ersetzt.
    Dann dabei einfach ne Variable Updaten/Erweitern und Abfragen, ob die Variable NICHT mit "GetPlayerMoney" übereinstimmt.
    Würde dein System schon mal Resourcenschonender machen.


    Was das andere angeht:
    public OnVehicleRespray(playerid,vehicleid)


    Sollte funktionieren, bin mir aber nicht sicher.





    MfG Firer