Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Buddy-System: Convars unpraktisch? (Client - Server Kommunikation)



Baktus
31.03.2009, 18:24
Hallo!

Ich möchte gerne ein simples Buddy-System scripten.
Eine Liste an Checkboxen, die dynamisch erzeugt wird habe ich schon (Auf der Seite des Clients natürlich).

Wie bekomme ich die Informationen nun zum Server um die Rechte entsprechend verwalten zu können?

Weil die Spielerliste (Checkboxen) nicht statisch ist, kommt mir eine Lösung über Convars sehr umständlich vor... viel Ahnung habe ich da aber auch nicht.

Kennt da jemand einen Weg? :)

Wie schon gesagt, ich brauche die Informationen zur Buddy-Liste (Welche Spieler sind Buddys) von jedem Spieler in dem Server Script.

Danke im Voraus!

>> EDIT
Eine weitere Möglichkeit wäre ja die Daten über einen Datenstrom zum Server zu senden, der diese dann über get_datastream (hook) empfängt. Besonders praktisch kommt mir das aber auch nicht vor.

Könnte mir jemand eine gute Lösung konkret beschreiben (Theorie)?

Ich habe auch versucht durch andere Scipts schlau zu werden, genau diesen Fall habe ich aber nicht gefunden.

Stoned
01.04.2009, 14:24
Datastream ist nicht wirklich angebracht da du ja nicht alle 5 Sekunden die Infos sendest.

Wenn du einen 'Update' Button machst kannste ja sowas in der Art machen:


Button.DoClick = function()
local buddy
for i=1,#bb,do --bb ist die anzahl der buttons, vlt alle in ner table speichern
local check = bb[i]:GetChecked()
local name = bb[i]
buddy = buddy..name.."-"..checked.."|"
end
LocalPlayer():ConCommand("updatebuddy"..buddy)
end


Gibt vlt bessere loesungen aber das war einfach mal so hingeschrieben, am Server brauchst du dann eben noch nen Splitter code.

Baktus
01.04.2009, 15:25
Danke für die Antwort

bb[i]:GetChecked()
Wenn ich sowas machen könnte wär ich glücklich :)
Einfach die client.lua includen und die States aus einem table holen.


Ich hab nur keine Ahnung wie das gehen soll bei meinem Panel. "GetChecked()" ist Derma, richtig?
Ich meine ein Panel im Q-Menü. Sorry, das hab ich vergessen zu sagen.

Bei mir schaut es im Moment ungefähr so aus:


function OnPopulateToolPanel(panel)
panel:ClearControls()
panel:AddHeader()

for k, v in pairs(player.GetAll()) do
panel:AddControl("CheckBox", {Label = v:Nick()})
end
end


Verkettung wäre eine Möglichkeit, halte ich aber nicht für eine saubere Lösung in diesem Fall.

Kann ich überhaupt ohne Convars an die States kommen?