• AMX Führer Home
  • Schritt 1: AMX installieren
  • Schritt 2: AMX aktivieren
  • Schritt 3: AMX konfig.
  • Misc. Ressourcen
  • Entwicklung:
    • VexdUM
  • Gutschrift
AMX Mod 2006 Setup Führer
Half-Life Server Administration

Was ist Vexd's Utility Module? (VexdUM)

VexdUM ist ein AMX Mod Modul welches Script Autoren erlaubt mehr Kontrolle und Flexibilität über die meisten Half-Life verbundenen Entities zu haben, einschliesslich MOD's.

Was ist ein Entity?

In der Half-Life Welt giebt es viele Dinge die mit Entities erstellt werden:

        Spieler
        Waffen
        Lichter
        Schalter
        Kameras
        Spawn Punkte
        Bombseiten/Buyzonen (Counter-Strike)
        etc, etc

Finden eines Entitites:

Beispiel genommen von SoccerMod Plugin, etwas modifiziert:
new tName[32]
new iEntity = find_entity(-1, "trigger_teleport") // sucht nur Classname
while(iEntity > 0)
{
     entity_get_string(iEntity, EV_SZ_targetname, tName, 31) // finde Name
     if(equal(tName, "ballstart"))
     {
          // MACHE ETWAS HIER
     }
}

Erstellen eines Entites:

Beispiel genommen von SoccerMod Plugin, Ball erstellen:
new Ball

public create_ball()
{
     if(!Ball)
     {
          // erstelle das Entity
          Ball = create_entity("info_target")
          // benenne den Classname um
          entity_set_string(Ball, EV_SZ_classname, "ball")
          // setze das Model
          entity_set_model(Ball, "models/w_fb.mdl")
          // setze den Body (normalerweise nicht benötigt)
          entity_set_int(Ball, EV_INT_body, random_num(1, 3))
          // setze den Denk Flag
          entity_set_int(Ball, EV_INT_flags, FL_ALWAYSTHINK)
          // setze die Haupt Bewegungsmethode
          entity_set_int(Ball, EV_INT_movetype, MOVETYPE_BOUNCE)
          // setze die Animationssequenz
          entity_set_int(Ball, EV_INT_sequence, 1)
          // setze den festen Zustand
          entity_set_int(Ball, EV_INT_solid, SOLID_TRIGGER)
          // setze Reibung
          entity_set_float(Ball, EV_FL_friction, 0.33)
          // setze Gravität
          entity_set_float(Ball, EV_FL_gravity, 1.0)
          // setze die Grösse
          entity_set_size(Ball,Float:{-6.0,-6.0,-6.0},Float:{6.0,6.0,6.0})
          // setze den Origin
          entity_set_origin(Ball, Position[0])
     }
}

Informationen über ID: 0 (Welt):

Du kannst nicht unter jeglichen Umständen bekommen oder setzen von jeglichen Parametern zu ID: 0 es sei denn du möchtest fehlschlagen. entity_touch(entity1, entity2) Forward wird überschreiten ID: 0 also musst du vorsichtig sein mit dieser Forward Funktion sonst könnte es passieren dass dein Script fehlschlägt. Jedoch wenn ID: 0 überschritten wird ist es dir immer noch erlaubt eine Überprüfung von den Entities die aufeinander einwirken, für den Fall dass der Ball auf den Grund aufprallt.

Übersetzen von XtraFun Plugins zu VexdUM:

Gel = XtraFun Native, Rot = VexdUM übersetzung
native get_entity_velocity(id, velocity[3]);
new Float:vel[3]
entity_get_vector(id, EV_VEC_velocity, vel)

native set_entity_velocity(id, velocity[3]);
entity_set_vector(id, EV_VEC_velocity, Float:{0.0, 0.0, 0.0})

native get_entity_origin(id, origin[3]);
new Float:orig[3]
entity_get_vector(id, EV_VEC_origin, orig)

native set_entity_origin(id, origin[3]);
entity_set_origin(id, EV_VEC_origin, Float:{0.0, 0.0, 0.0})

native get_user_velocity(id, velocity[3]);
new Float:vel[3]
entity_get_vector(id, EV_VEC_velocity, vel)

native set_user_velocity(id, velocity[3]);
entity_set_vector(id, EV_VEC_velocity, Float:{0.0, 0.0, 0.0})

native get_user_button(id);
get_user_button(id) // VexdUM_stock.inc

native get_grenade_id(id, model[], len, grenadeid = 0);
get_grenade(id) // VexdUM_stock.inc

native find_entity(start_from_ent, category, value[]);
find_entity(iIndex, szValue[])

native current_num_ents();
get_num_ents()

native set_user_footsteps(id, set=1);
muss gescriptet werden

Ein wenig mehr Erklärung:

native get_grenade_id(id, model[], len, grenadeid = 0);
     Mit get_grenade(id) musst du den Model Namen herausfinden, wenn Sie etwas zur spezifischen      Granate eines Spielers spezifisch tun möchten. Jedoch ist dort ein neues Forward mit dem du      spielen kannst welche set_model(entity, const model[]) ist. Diese Forward sagt dir die id von dem      Model welches gespawnt wurde mit den dazugehörigen Modelnamen, also alles was du mit diesem      machen musst ist den Besitzer des Entities zu finden mit entity_get_edict(edict, EV_ENT_owner).

native find_entity(start_from_ent, category, value[]);
     Wie du sagen kannst dieses eine ist unterschiedlich wie VexdUM es behandelt. Um es besser zu      verstehen siehe Finden eines Entitites:.

native set_user_footsteps(id, set=1);
     Hier ist wie man es macht, innen von client_prethink musst du
     entity_set_int(id, EV_INT_flTimeStepSound, 999) hinzufügen, offensichtlich musst du eine Art von      System erstellen dass nicht jeder Lautlose Fusstritte hat.

Versionsgeschichte: 0.2.0.7 - 0.9.9

Entfernt set_view native - verursachte zu viel Server lag
Entfernt von Native entity_set_origin(iIndex, Float:fNewOrigin[3]); Core SET_SIZE - verursachte Probleme
Aktualisiert zu der neuen AMX Funktionalität
Fixte alle native Funktionalitäten Umschaltet zu check_entity oder check_player Internen Funktionen
Fixte möglicher Servercrash Fehler mit remove_entity - fehlerhaft oder versuch das Löschen von einem Spieler
Fixte controller0 nicht angesprochen
Fixte blending0 nicht angesprochen
Umbenennte die meisten von den Native Namen für Bequemlichkeit
Hinzufügte Experementieller controller4, hoffe dieser wird Kontrollieren öffentliche Animation
Hinzufügte native entity_set_size(iIndex, Float:vecMin[3], Float:vecMax[3]);
Hinzufügte native angle_to_vector(Float:fAngle[3], Float:vReturn[3]);
Hinzufügte native precache_generic(szFile[]);
Hinzufügte native precache_event(type, szEvent[]);
Hinzufügte native playback_event(flags, invoker, eventindex, Float:delay, Float:origin[3],
Float:angles[3], Float:fparam1, Float:fparam2, iparam1,iparam2,bparam1,bparam2);
Hinzufügte native get_offset_int(iTarget, iOffset);
Hinzufügte native set_offset_int(iTarget, iOffset, iValue);
Hinzufügte native get_num_ents();
Hinzufügte native get_maxentities();
Hinzufügte native is_entity(index);
Hinzufügte forward entity_think(entity);
Hinzufügte forward client_prethink(id);
Hinzufügte forward client_postthink(id);
Hinzufügte forward client_kill(id);
Hinzufügte forward emitsound(entity, const sample[]);
Hinzufügted forward set_model(edict, const model[]);
Hinzufügte native abs(iInput);
Hinzufügte native fabs(Float:flInput);
Hinzufügte native asin(Float:flInput);
Hinzufügte native sin(Float:flInput);
Hinzufügte native sinh(Float:flInput);
Hinzufügte native acos(Float:flInput);
Hinzufügte native cos(Float:flInput);
Hinzufügte native cosh(Float:flInput);
Hinzufügte native atan(Float:flInput);
Hinzufügte native atan2(Float:flInput1, Float:flInput2);
Hinzufügte native tan(Float:flInput);
Hinzufügte native tanh(Float:flInput);
Hinzufügte stock DotProduct(Float:vec1[3], Float:vec2[3])
Hinzufügte stock fake_kill(killer, victim, headshot, weapon[], log)
Hinzufügte stock fake_damage(victim, szClassname[], Float:damage, damagetype)
Hinzufügte stock get_user_button(id)
Hinzufügte stock get_user_oldbutton(id)
Hinzufügte stock get_entity_flags(ent)
Hinzufügte stock get_entity_distance(ent1, ent2)
Hinzufügte stock get_grenade(id)
Hinzufügte stock get_brush_entity_origin(ent, Float:orig[3])
Hinzufügte stock remove_entities(eName[])
Hinzufügte stock ViewContents(id)
Hinzufügte stock bool:CheckFlag(ent, flag)
Hinzufügte stock get_speed(ent)
Hinzufügte stock IVecFVec(iVec[3], Float:fVec[3])
Hinzufügte stock FVecIVec(Float:fVec[3], iVec[3])
Hinzufügte stock set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
Hinzufügte stock set_entity_flags(ent, flag, onoff)

Half-Life ist ein eingetragenes Warenzeichen Half-Life von VALVe Software und Sierra
AMX Mod wurde erstellt von OLO und ist nicht verbunden zu VALVe.