Beiträge von LeonMrBonnie

    finde es nicht schön

    Wow, gibst ihm ja echt konstruktive Kritik, und gehst auf die genauen Punkte ein was dir nicht gefällt, oder was man besser machen könnte!
    Was soll er mit "finde es nicht schön" anfangen?


    Gefällt mir aber auch nicht wirklich. Finde es einfach sehr blockig und irgendwie leer.
    Dazu sieht es auch so aus, als wäre der Eingang nicht mittig, und das triggert mich sehr.
    4/10

    Du verwendest ja den Dialog Style DIALOG_STYLE_TABLIST, also kannst du mit \t Tabs verwenden.
    Du änderst das format jetzt einfach zu;

    format(showmembs,sizeof(showmembs),"%s%s\t%s\n",showmembs,username,((IsPlayerConnectedEx(username))?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));

    Und bei OnDialogResponse, fragst du bei dem Dialog einfach den inputtext ab, welcher dann der Spielername ist.

    Pack das ShowPlayerDialog unter die Schleife.
    Das mit dem IsPlayerConnected geht immer noch nicht! Die playerid wird immer überschrieben, wenn sich der nächste einloggt, nachdem du dich eingeloggt hast, erhält er deine playerid.
    Benutz diese Funktion:

    IsPlayerConnectedEx(pname[])
    {
    new pname2[MAX_PLAYER_NAME];
    for(new i; i<MAX_PLAYERS; i++)
    {
    GetPlayerName(i, pname2);
    if(!strcmp(name,pname2, true) return true;
    }
    return false;
    }

    Und das format machst du so;
    format(showmembs,sizeof(showmembs),"%s%s %s\n",showmembs,username,((IsPlayerConnectedEx(username))?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));

    Du kannst das so nicht abfragen ob jemand online ist, da die playerid immer überschrieben wird.


    Stattdessen könntest du eine Funktion zum Beispiel nehmen um alle Spieler auf dem Server nach einem Namen durchzuloopen, und wenn ein Spieler mit dem Namen online ist return true wenn nicht halt return false.
    Und dann kannst du diese Funktion einfach verwenden. (Den Namen hast du bei username ja schon gespeichert.)


    ocmd:members(playerid, params[])
    {
    // if(!IsPlayerAdmin(playerid)) return 0;
    new str[128];
    if(PlayerInfo[playerid][FracID] == 0) return SCM(playerid,COOLRED,"You are in no Frac");
    mysql_format(handle, str, sizeof(str), "SELECT * FROM `user` WHERE FracID = '%d'",PlayerInfo[playerid][FracID]);
    mysql_tquery(handle, str, "OnFrakMembersLoad", "d", playerid);
    }


    forward OnFrakMembersLoad(playerid);
    public OnFrakMembersLoad(playerid)
    {
    new count;
    cache_num_rows(count);
    if(count > 0)
    {
    SendClientMessage(playerid, USAGE, "Members:");
    for(new i = 0; i < count; i++)
    {
    new username[25], Rank[25],showmembs[128];
    cache_get_value_name(i, "Name", username);
    format(showmembs,sizeof(showmembs),"%s%s %s",str,"Members",((PlayerInfo[i][pLoggedIn] == true)?("{6EF83C}[ONLINE]"):("{ff0000}[OFFLINE]")));
    ShowPlayerDialog(playerid, 345, DIALOG_STYLE_LIST, "Members", showmembs, "Choose", "Exit");
    }
    }
    else return SendClientMessage(playerid, RED, "There are currently no Members > Server Error!");
    return 1;
    }

    Sollte so klappen, ist aber ungetestet.
    Les dich am besten mal in die MySQL R41-4 rein:
    [wiki]MySQL/R40[/wiki]

    Was ist denn bei dem mysql_pquery die 1? Das soll der handle sein...
    Hast du irgendwo oben in deinem Script ein "new MySQL:handle;" oder ähnliches?


    Und zu MAX_PLAYER_NAME erhöht? MAX_PLAYER_NAME sind 24 Zeichen...
    Versuch es mal auf 256 zu erhöhen.


    Also so wie es aussieht, ist alles was du mit MySQL in deinem Script hast falsch.

    Erstens:
    Es sieht so aus als wäre der Query String zu klein, vergrößer ihn.


    Zweitens:
    Du benutzt MySQL nicht richtig...
    1. Benutz "mysql_query" NUR wenn du genau weißt was du machst! Sonst sorgt das nur für Lags.
    2. Welche MySQL Version verwendest du?

    Hab den Fehler nun "gefunden".


    Anscheinend wird aus irgendeinem anderen Addon auch PlayerSpawn gehookt und dort werden die Waffen auch gegeben, also hab ich nun einfach timer.Simple(1, function() end) verwendet, um das ganze zu verzögern, da es Deathrun ist, und es ja eh am Anfang Freezetime gibt, klappt alles jetzt.

    Hallo,
    ich versuche gerade mit GLUA für das Addon Blue's Unboxing 3 ein Autoequip System hinzuzufügen.
    Es funktioniert auch (fast) alles wie ich das möchte, nur werden mir irgendwie die Waffen nicht gegeben und die alten nicht entfernt...

    Code: sv_autoequip.lua
    hook.Add("PlayerSpawn", "Core_AutoEquipSpawn", function(ply)
    	PrintMessage(3,"Core_AutoEquipSpawn aufgerufen! Für: "..ply:Name())
    	local wep = ply:GetInfo("BU3_AutoEquip")
    	if(wep == "") then return end
    	PrintMessage(3,ply:Name()..": "..wep)
    	ply:StripWeapon("csgo_default_t")
    	local knife = ply:Give(wep)
    	local crowbar = ply:Give("weapon_crowbar")
    	PrintMessage(3,ply:Name().." is done")
    end)

    Es werden auch alle Prints ausgegeben, und es ist auch alles richtig, die Waffe wird richtig ausgegeben und der Name ist auch richtig.
    Auch die "is done" Nachricht kommt, aber mir wird halt das Default Knife nicht entfernt und die Crowbar und die Waffe erhalte ich nicht.


    Wo liegt das Problem?

    Wenn der Dialogtype nicht DIALOG_STYLE_MSGBOX ist, dann ist der inputtext[] der bei OnDialogResponse übergeben wird, automatisch der Text vom ersten Tab in der Zeile.
    Da ja dort der erste Tab in der Zeile die ID ist, kannst du dann einfach strval(inputtext) verwenden, und das ist dann die gewählte ID.