send_skill( var* skill, var mode)
send_skill_to(ENTITY*, var* skill, var mode)
send_skill_id(var client_id, var* skill, var mode)
Sendet den angegebenen Entity-Parameter, z. B. einen Skill oder Vektor an den Server oder von einem Server zum Ersteller der Entity (send_skill), zu einem Klienten, der eine andere Entity erstellt hat (send_skill_to) oder zu einem Klienten mit einer bestimmten id-Nummer (send_skill_id). Der Skill oder Skillvektor wird für die gleiche Entity-Instanz auf den anderen PCs upgedatet.
Parameter:
skill |
zu sendender Entity-Parameter |
ENTITY* |
Empfänger des Parameters oder NULL zum Senden an alle Klienten. LC A7.62 |
client_id |
Empfänger des Parameters LC A7.62 |
mode |
entweder 0 oder eine Kombination aus den folgenden Flags:
SEND_ALL |
sende3t den Skill an alle Klienten (nur der Server) |
SEND_VEC |
sendet den angegeben Skill und die beiden darauffolgenden Skills |
SEND_STRING |
sende einen String wenn der Skill auf einen STRING*-Pointer gesetzt ist.. LC A7.81 |
SEND_UNRELIABLE |
sende im Unreliable-Modus, Andernfalls wird im Reliable-Modus
gesendet. |
SEND_RATE |
Sende nur jeden n-ten Frame, wobei n = dplay_entrate/time_step. |
|
Rückgabewerte:
0 |
Parameter wurde aufgrund von SEND_RATE oder aus anderen Gründen nicht gesendet. |
!= 0 |
Parameter wurde gesendet. |
Bemerkungen:
- Löst bei der Zielentity EVENT_RECEIVE aus.
- Senden Sie die meisten Entity-Parameter wie Anwendereingaben im nicht gesichterten (unreliable) Modus.
Nur wichtige Statusänderungen der Entity wie Schiessen oder das Öffnen einer Tür, sollten im betriebssicheren (reliable) Modus gesendet
werden. Sichere Botschaften verfallen nicht und dies kann bei langsamen Verbindungen und wenn viele gesicherte Botschaften gesendet werden, zu einem Buffer-Überlauf und Ausfall von Sync führen.
Beispiele (siehe auch das Multiplayer-Tutorial):
// send a skill when it was changed
var skill1_old = -1; // local variable to backup skill1
if (my.skill1 != skill1_old) { // send only if changed
skill1_old = my.skill1; // store change
if (my.skill1 == 0) { // send important values in reliable mode
send_skill(my.skill1,SEND_ALL);
} else {
send_skill(my.skill1,SEND_ALL|SEND_UNRELIABLE);
}
}
...
// send a string from the server to the clients
my.skill80 = str_create("Avatar"); // create a string on clients and server. Make sure to remove it when removing the entity.
if (connection & CONNECT_SERVER) { // running on the server?
str_for_id((STRING*)my.skill80,my.client_id); // set the string to the client name
send_skill(my.skill80,SEND_ALL|SEND_STRING); // send the name to all clients
}
Siehe auch:
EVENT_RECEIVE, send_var, skill1..skill100
► Aktuelle Version Online