Beiträge von Kaliber

    Schreib den Command mal so:


    if(!strcmp("/startbonus", cmdtext, true)) {
    if (!GetPlayerScore(playerid)) return ShowPlayerDialog(playerid,DIALOG_STARTBONUS,DIALOG_STYLE_LIST,"STARTBONUS WÄHLEN","Level +2\n10.000$","Bestätigen","");
    return SendClientMessage(playerid,ROT,"Du hattest deinen Startbonus schon");
    }


    mfg. :thumbup:


    Naja, ich zeig dir mal eine Möglichkeit, die nur den Namen eines Spielers bannt mit einem schönen Dialog (das selbe wie Ban(playerid)) :)


    Also zuerst ersetze in deinem /ban Befehl das Ban(playerid); durch ein Ban_Player(playerid);


    //Die Funktionen:
    stock Ban_Player(playerid) {
    new buffer[13 + MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(buffer,sizeof buffer,"ban_%s.ini",name);
    new File:f=fopen(buffer,io_write);fwrite(f,"banned"),fclose(f);
    return Kick(playerid);
    }


    //Als letztes unter OnPlayerConnect
    new buffer[13 + MAX_PLAYER_NAME], bName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,bName,MAX_PLAYER_NAME),format(buffer,sizeof buffer,"ban_%s.ini",bName);
    if(fexist(buffer)) return ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"{FF0000}Banned","{FF0000}Sie wurden vom Server gebannt!","Bestätigen","");


    mfg. :thumbup:

    Guten Abend euch allen, mir war jetzt mal langweilig und ich habe mal ein bisschen umherprobiert und habe ein paar Funktionen entworfen.


    1. Die Funktionen

    Code
    SetObjectVirtualWorld(objectid, worldid);GetObjectVirtualWorld(objectid);SetObjectInterior(objectid, interiorid);GetObjectInterior(objectid);


    2. Wann sollte man das Include verwenden?

    • Wenn man keinen Streamer benutzen will, sprich es handelt sich um weniger als 1000 Objekte.

    • Wenn man allgemein nicht soviel mit Objekten macht (Bewegen...Materialien ändern...attachen)...andernfalls kann es zu Problemen kommen, siehe bei "Bugs".


    3. Bugs?
    Ja...es gibt ein paar Probleme:

    • Wenn man ein Objekt in einer anderen Welt mit MoveObject bewegen lässt und der Spieler dann in diese Welt wechselt, wo das Objekt bewegt wird, ist das Objekt schon an seiner Ziel Position.

    • Wenn man das Material von dem Objekt ändert oder das Objekt attached, in einer anderen Welt und man dann den Spieler in diese Welt setzt, passiert das nicht.


    -> Fazit: Man sollte diese Funktionen nur dann nutzen, wenn der Spieler in der Welt ist, wo auch das Objekt ist.


    4. Schlusswort & Zukunft:
    Also, erstmal will ich jetzt kein geflame haben, von wegen Incognito Streamer kann das schon alles...bla blub, das weiß ich selbst ^^ Aber es gibt halt Leute die keinen Streamer verwenden wollen und eine Funktion dafür haben wollen, dann kann man nämlich das per Schleifen machen die Objekte versetzten und muss nicht immer ein Attribut ändern.


    Wenn euch das bis jetzt gefällt, kann ich auch noch paar andere Features mit einbringen, z.B. das man Objekte nur sieht, wenn man in einem bestimmten Auto sitzt oder das Auto eine bestimmte modelid hat ^^ Oder ihr könnt auch noch selbst paar Vorschläge machen :)


    Würde mich über ein paar kleine Rückmeldungen freuen :)


    5. Download
    Source-Code: Pastebin
    Direkter-Download: Mediafire


    mfg. :thumbup:


    //Edit: Hatte was vergessen...
    //Edit²: Pastebin-Link
    //Edit³: Mediafire

    Der Query ist eigentlich noch nicht so lang, dass solltest du gut in eine Zeile bekommen ^^


    Mach einfach so:


    format(query,sizeof(query),"UPDATE user SET Admin='%i',Supporter='%i',Level='%i',Geld='%i',Skin='%i',Fahndungslevel='%i',Fraktion='%i',Leader='%i',Rang='%i',Job='%i',Drogen='%i',Zigaretten='%i',Materialen='%i',Autoschein='%i',Motorradschein='%i',Flugschein='%i',Bootschein='%i',Lkwschein='%i',Waffenschein='%i',Haftzeit='%i',Adminprison='%i',Timeban='%i',Gebannt='%i' WHERE dbID='%i'",//Hier ein Return hin...
    pInfo[playerid][pAdmin],pInfo[playerid][pSupporter],GetPlayerScore(playerid),GetPlayerMoney(playerid),GetPlayerSkin(playerid),GetPlayerWantedLevel(playerid),pInfo[playerid][pFraktion],pInfo[playerid][pLeader],pInfo[playerid][pRang],//Hier auch nochmal
    pInfo[playerid][pJob],pInfo[playerid][pDrogen],pInfo[playerid][pZigaretten],pInfo[playerid][pMaterialen],pInfo[playerid][pAutoschein],pInfo[playerid][pMotorradschein],pInfo[playerid][pFlugschein],pInfo[playerid][pBootschein],pInfo[playerid][pLkwschein],pInfo[playerid][pWaffenschein],pInfo[playerid][pJailTime],pInfo[playerid][pAdminPrison],pInfo[playerid][pTimeban],pInfo[playerid][pGebannt],pInfo[player
    Das return halt dahin, wo die pInfo Variablen anfangen ;)


    mfg. :thumbup:

    Wie kann ich abfragen ob ein Anhänger am LKW angekoppelt ist?


    So:


    if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)) {
    //Hier ist ein Trailer dran
    } else {
    //Hier nicht
    }


    Und wie kann abfragen ob sich jemand im Fahrzeug befindet oder ob das Fahrzeug leer ist?


    Durch eine kleine Funktion:


    if(IsAnyPlayerInVehicle(vehicleid)) {
    //Hier ist jemand in diesem Auto
    } else {
    //Hier nicht
    }


    //Hier die Funktion mal eben geschrieben:


    stock IsAnyPlayerInVehicle(vehicleid) {
    for(new i; i<MAX_PLAYERS; i++) if(IsPlayerInVehicle(i, vehicleid)) return 1;
    return 0;
    }


    mfg. :thumbup:

    _Flex_:


    Noch mehr Code für sowas, ging nicht oder? ^^


    Man kann dies auch vereinfachen und einfach so schreiben:


    //Als erstes man braucht kein enum!
    stock WaffenLaden(playerid) {
    new save[13 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME],waffe[13],ammu[13],buffer[10];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(save,sizeof(save),"/Waffen/%s.ini",name);
    for(new i; i<13; i++) format(buffer,10,"waslot%d",i),waffe[i] = dini_Int(save,buffer);
    for(new i; i<13; i++) format(buffer,10,"amslot%d",i),ammu[i] = dini_Int(save,buffer);
    for(new i; i<13; i++) GivePlayerWeapon(playerid,waffe[i],ammu[i]);
    return 1;
    }


    stock WaffenSpeichern(playerid) {
    new waffe,ammo,save[13 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME],buffer[10];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(save,sizeof(save),"/Waffen/%s.ini",name),dini_Create(save);
    for (new i; i < 13; i++) {
    GetPlayerWeaponData(playerid,i,waffe,ammo);
    format(buffer,10,"waslot%d",i),dini_IntSet(save,buffer,waffe);
    format(buffer,10,"amslot%d",i),dini_IntSet(save,buffer,ammo);
    }
    return 1;
    }


    PS: Du fragst unten nur 12 Waffenslots ab, es gibt 13 ;) nämlich 0 - 12 und nicht nur 0 - 11 ;)


    mfg. :thumbup:

    Und nur wenn auf das Objekt dann auch geschossen werden kann


    Also du fragst mich gerade, wieso ich nicht von ca. 20.000 Objekten die rausgesucht habe, die ungefähr eine viereckige Form haben, auf die man vernünftig schießen kann. :huh:


    Warum habe ich das wohl nicht gemacht...sag dus mir :rolleyes: