AdminMod.de
https://www.adminmod.de/

Plugin_Dustwarp
https://www.adminmod.de/viewtopic.php?t=4733
Seite 1 von 1

Autor:  Sir Drink a lot [ 10.02.2003, 20:12 ]
Betreff des Beitrags:  Plugin_Dustwarp

Jetzt wundern sich einige, warum denn Offtopic :-)

Weil es zu sehr das Spiel Counterstrike verändert.

Mit dem Plugin kann man Teleporter - Felder öffnen.

Damit man die Teleporter auch sieht, habe ich mal eine neue de_dust.bsp mit einem sprite erstellt, was ein Teleporter, Wurmloch etc. darstellen soll...(Lasst eure Phantasie spielen)

Leider ist der sprite nicht transparent....hatte aber keine Lust mehr, mit dem Programm rumzuprobieren.

Die Teleporter sind dann über die Map de_dust verteilt.

Ist jetzt der Warp-Modus aktiv, wird man zufällig zu einem anderen Teleporter gebeamt.

Die Befehle des plugins sind:
admin_warp_on und admin_warp_off.

Hier gehts zum Download:

Dust_Warp

So. Habe alle benutzen Tools dem DL beigefügt. Wie immer übernehme ich keine Garantie für Schäden. Leßt am Besten alle Readme Dateien, die ihr finden könnt. So könnt ihr die Idee ja auch weiterentwickeln.

Das ganze ist hauptsächlich für LAN gemacht. Keine Ahnung, ob es auch auf Inet Servern läuft. Sollte schon, aber keine Ahnung, wie die Performance dann fällt.

Nun denn. Sagt Bescheid, wenn Euch was gefällt/ nicht gefällt. Ich weiß aber nicht, ob ich noch was daran korrigiere. Das Ganze dient nur zum Austesten bestimmter Adminmod-Funktion.

Gruß,
Sir Drink a lot

Autor:  Rinde [ 10.02.2003, 20:55 ]
Betreff des Beitrags: 

da ist aber viel raum für optimierungen :)
*bastel*
da könnte ich endlich mal meine ganzen vektorfunktionen nutzen

Autor:  Sir Drink a lot [ 10.02.2003, 21:09 ]
Betreff des Beitrags: 

nur zu :-)

Ist ja als Anregung gedacht.

Aber gleich eine Vektor-Berechnung?
Nunja..

Gib alles :lol:

Autor:  Rinde [ 10.02.2003, 21:45 ]
Betreff des Beitrags: 

was haltet ihr?

/edith: merke, erst testcompilen
Code:
/* Includes */
#include <adminlib>

/* Constants */
#define MAX_KOORDS  6
#define COOLDOWN 10
#define RANGE 50

/* Global Variables */
new g_Teleporters[MAX_KOORDS][3] = {
                    {19,3089,36},
                    {-1582,2505,68},
                    {2320,668,36},
                    {533,-445,57},
                    {498,-1218,100},
                    {-1211,1459,-156}
};
new g_Version[20] = "10.2.03 21:42";

new g_LastWarp[MAX_PLAYERS];
new g_Enabled;

/* Event Handler */
public plugin_init() {
    plugin_registerinfo("DUSTWARP","WARP-Plugin for de_dust",g_Version);
    plugin_registercmd("admin_warp", "admin_warp", ACCESS_MAP,"admin_warp <0|1>: Teleporter aktivieren/deaktivieren");
    return PLUGIN_CONTINUE;
}

public warp(Timer,Repeat,HLUser,HLParam) {
    new i,j,k;
    new Origin[3];
    new Vec[3];
    new maxplayers=maxplayercount();
    new Dead;
    new Text[MAX_TEXT_LENGTH];
    new Name[MAX_NAME_LENGTH];
    new time = systemtime();
    if(g_Enabled) {
        typesay("WARP-MODUS!^n Die Teleporter sind eingeschaltet!",12,random(5) ? 250 : 10,random(5) ? 250 : 10,random(5) ? 250 : 10);
        for(i=1;i<=maxplayers;i++) {
            if(g_LastWarp[i] + COOLDOWN <= time) {
                if(playerinfo(i,Name,MAX_NAME_LENGTH,_,_,_,Dead) && Dead == 0){
                    if(get_userorigin(Name,Origin[0],Origin[1],Origin[2]) == 1) {
                        for(j=0;j<MAX_KOORDS;j++){
                            diffvec(Origin,g_Teleporters[j],Vec);
                            if(veclen(Vec) <= RANGE) {
                                while((k = random(MAX_KOORDS)) != j) {}
                                teleport(Name,g_Teleporters[k][0],g_Teleporters[k][1]+30,g_Teleporters[k][2]);
                                g_LastWarp[i] = time;
                                snprintf(Text,MAX_TEXT_LENGTH,"%s hat sich von Teleporter %i zu Teleporter %i gewarpt",Name,j,k);
                                say(Text);
                                break;
                            }
                        }
                    }
                }
            }
        }
        set_timer("warp",1,0);
    } else {
        typesay("WARP-MODUS!^n Die Teleporter sind ausgeschaltet!",12,250,10,10);
    }
    return PLUGIN_CONTINUE;
}

/* Command Handler */
public admin_warp(HLCommand,HLData,HLUserName,UserIndex) {
    new Data[MAX_DATA_LENGTH];
    convert_string(HLData,Data,MAX_DATA_LENGTH);
    if(!Data[0]) selfmessage("admin_warp <0|1>: Teleporter aktivieren/deaktivieren");
    else if(Data[0] - 48 != g_Enabled) {
        g_Enabled = Data[0] - 48;
        snprintf(Data,MAX_DATA_LENGTH,"WARP-MODUS ist %s",g_Enabled ? "aktiviert" : "deaktiviert");
        selfmessage(Data);
        if(g_Enabled) set_timer("warp",1,0);
    }
    return PLUGIN_HANDLED;
}

/* Helper Functions */
stock diffvec(vec1[3],vec2[3],vec0[3]) { //Puts the diffenrece-vector of vec1 and vec2 in vec0.
    new i;
    for(i=0;i<3;i++) {
        vec0[i] = vec1[i] - vec2[i];
    }
}

stock veclen(vec[3]) { //Returns the length of a vector, multiplied with factor.
    new i,j,k,l;
    for(i=0;i<3;i++){
        l = abs(vec[i]);
        k = max(l,k);
        j += l * l;
    }
    i = j;
    while(j > k) {
        j = (j + k) / 2;
        k = i / j;
    }
    return j;
}

stock abs(num) { //Returns the positive value of num.
    if(num > 0) {
        return num;
    }
    return -num;
}

Autor:  [WING] Black Knight [ 10.02.2003, 23:18 ]
Betreff des Beitrags: 

Sicher würde das funktionieren. Ein sekündlicher Timer sollte aber nach Möglichkeit vermieden werden.
Grundsätzlich aber eine witzige Idee.

Autor:  Rinde [ 10.02.2003, 23:39 ]
Betreff des Beitrags: 

mit taste drücken, dafür ohne timer:
Code:
/* Includes */
#include <adminlib>

/* Constants */
#define MAX_KOORDS  6
#define COOLDOWN 10
#define RANGE 50

/* Global Variables */
new g_Teleporters[MAX_KOORDS][3] = {
                    {19,3089,36},
                    {-1582,2505,68},
                    {2320,668,36},
                    {533,-445,57},
                    {498,-1218,100},
                    {-1211,1459,-156}
};
new g_Version[20] = "10.2.03 21:42";

new g_LastWarp[MAX_PLAYERS];
new g_Enabled;

/* Event Handler */
public plugin_init() {
    plugin_registerinfo("DUSTWARP","WARP-Plugin for de_dust",g_Version);
    plugin_registercmd("admin_warp", "admin_warp", ACCESS_MAP,"admin_warp <0|1>: Teleporter aktivieren/deaktivieren");
    plugin_registercmd("warpme", "warpme", ACCESS_ALL);
    return PLUGIN_CONTINUE;
}

/* Command Handler */
public warpme(HLCommand,HLData,HLUserName,UserIndex) {
    new j,k;
    new Origin[3];
    new Vec[3];
    new Dead;
    new Text[MAX_TEXT_LENGTH];
    new Name[MAX_NAME_LENGTH];
    new time = systemtime();
    if(g_Enabled) {
        if(g_LastWarp[UserIndex] + COOLDOWN <= time) {
            if(playerinfo(UserIndex,Name,MAX_NAME_LENGTH,_,_,_,Dead) && Dead == 0){
                if(get_userorigin(Name,Origin[0],Origin[1],Origin[2]) == 1) {
                    for(j=0;j<MAX_KOORDS;j++){
                        diffvec(Origin,g_Teleporters[j],Vec);
                        if(veclen(Vec) <= RANGE) {
                            while((k = random(MAX_KOORDS)) != j) {}
                            teleport(Name,g_Teleporters[k][0],g_Teleporters[k][1]+30,g_Teleporters[k][2]);
                            g_LastWarp[UserIndex] = time;
                            snprintf(Text,MAX_TEXT_LENGTH,"%s hat sich von Teleporter %i zu Teleporter %i gewarpt",Name,j,k);
                            say(Text);
                            break;
                        }
                    }
                }
            }
        }
    }
    return PLUGIN_CONTINUE;
}

public admin_warp(HLCommand,HLData,HLUserName,UserIndex) {
    new Data[MAX_DATA_LENGTH];
    convert_string(HLData,Data,MAX_DATA_LENGTH);
    if(!Data[0]) selfmessage("admin_warp <0|1>: Teleporter aktivieren/deaktivieren");
    else if(Data[0] - 48 != g_Enabled) {
        g_Enabled = Data[0] - 48;
        snprintf(Data,MAX_DATA_LENGTH,"WARP-MODUS ist %s",g_Enabled ? "aktiviert" : "deaktiviert");
        selfmessage(Data);
    }
    return PLUGIN_HANDLED;
}

/* Helper Functions */
stock diffvec(vec1[3],vec2[3],vec0[3]) { //Puts the diffenrece-vector of vec1 and vec2 in vec0.
    new i;
    for(i=0;i<3;i++) {
        vec0[i] = vec1[i] - vec2[i];
    }
}

stock veclen(vec[3]) { //Returns the length of a vector, multiplied with factor.
    new i,j,k,l;
    for(i=0;i<3;i++){
        l = abs(vec[i]);
        k = max(l,k);
        j += l * l;
    }
    i = j;
    while(j > k) {
        j = (j + k) / 2;
        k = i / j;
    }
    return j;
}

stock abs(num) { //Returns the positive value of num.
    if(num > 0) {
        return num;
    }
    return -num;
}

Autor:  florian [ 01.03.2003, 15:48 ]
Betreff des Beitrags: 

jo is witzig sowas könnte man ja aber auch mappen

Autor:  Rinde [ 01.03.2003, 16:02 ]
Betreff des Beitrags: 

oder die teleporter mit stripper2 in die map einfügen, ja

Autor:  Sir Drink a lot [ 01.03.2003, 16:08 ]
Betreff des Beitrags: 

ich habe leider keine Ahnung von mapping :-(

Seite 1 von 1 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/