abschuss sytem ändern?¿

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo ich möchte in diesem Fs machen das ich schon Abschuss anlagen erstellen kann und funktioniren(mappen) und dann auf server ziehen und das sie dann gehen
    #include <a_samp>
    #define COLOR 0x00FF00FF
    #define RED 0xFF0000FF
    #define DISTANCESHOT 100
    #define EXPORADIUS 7
    #define MOVESPEED 50
    #define TIMERTIME 300
    stock SetObjectFaceToPlayer(objectid,playerid)
    {
    new Float:X[2], Float:Y[2], Float:Z;
    new Float:Angle;


    GetObjectPos(objectid, X[0], Y[0], Z);
    GetPlayerPos(playerid, X[1], Y[1], Z);


    if(X[0] > X[1] && Y[0] > Y[1]) Angle = floatabs(atan2(floatsub(X[1], X[0]), floatsub(Y[1], Y[0])));
    if(X[0] > X[1] && Y[0] <= Y[1]) Angle = floatabs(atan2(floatsub(Y[0], Y[1]), floatsub(X[1], X[0]))) + 270.0;
    if(X[0] <= X[1] && Y[0] > Y[1]) Angle = floatabs(atan2(floatsub(Y[1], Y[0]), floatsub(X[0], X[1]))) + 90.0;
    if(X[0] <= X[1] && Y[0] <= Y[1]) Angle = floatabs(atan2(floatsub(X[0], X[1]), floatsub(Y[0], Y[1]))) + 180.0;
    SetObjectRot(objectid,0,0,Angle);
    return 1;
    }
    stock Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
    {
    new Float:a;
    GetPlayerPos(playerid, x, y, a);
    if (IsPlayerInAnyVehicle(playerid))
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    else
    GetPlayerFacingAngle(playerid, a);
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    return a;
    }
    new flare[MAX_PLAYERS];
    new launcher[MAX_OBJECTS];
    new placed[MAX_OBJECTS];
    new placinglnchr[MAX_PLAYERS];
    new timer[MAX_PLAYERS];
    forward launch(playerid);
    forward flarekill(flare2,playerid);
    public OnPlayerConnect(playerid){
    placinglnchr[playerid] = -1;
    timer[playerid] = SetTimerEx("launch",TIMERTIME,1,"i",playerid);
    return 1;
    }
    public OnPlayerDisconnect(playerid){
    KillTimer(timer[playerid]);
    return 1;
    }
    public OnPlayerDeath(playerid){
    DestroyObject(flare[playerid]);
    return 1;
    }
    public OnFilterScriptInit(){
    print("In-game launcher creator by Kurence loaded");
    for(new i;i<MAX_OBJECTS;i++) launcher[i] = -1;
    }
    public OnPlayerCommandText(playerid,cmdtext[]){
    if(strcmp("/addlauncher",cmdtext,true) == 0){
    if(placinglnchr[playerid] != -1){
    new string[100];
    format(string,sizeof(string),"Launcher created, his ID: %d",placinglnchr[playerid]);
    SendClientMessage(playerid,COLOR,string);
    DestroyObject(launcher[placinglnchr[playerid]]);
    new Float:X,Float:Y,Float:Z,Float:angle;
    GetPlayerPos(playerid,X,Y,Z);
    GetXYInFrontOfPlayer(playerid,X,Y,10);
    GetPlayerFacingAngle(playerid,angle);
    launcher[placinglnchr[playerid]] = CreateObject(3267,X,Y,Z,0,0,angle);
    placed[placinglnchr[playerid]] = 1;
    placinglnchr[playerid] = -1;
    return 1;
    }
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    GetXYInFrontOfPlayer(playerid,X,Y,10);
    for(new i;i<MAX_OBJECTS;i++){
    if(launcher[i] == -1){
    launcher[i] = CreateObject(3267,X,Y,Z,0,0,0);
    AttachObjectToPlayer(launcher[i],playerid,0,10,0,0,0,0);
    SendClientMessage(playerid,COLOR,"Place the launcher where you want it and use ''/addlauncher'' again");
    placinglnchr[playerid] = i;
    break;
    }
    }
    return 1;
    }
    if(strcmp("/dellauncher",cmdtext,true) == 0){
    if(placinglnchr[playerid] != -1) return SendClientMessage(playerid,RED,"Place that launcher first");
    for(new i;i<MAX_OBJECTS;i++){
    if(launcher[i] != -1){
    new Float:X,Float:Y,Float:Z;
    GetObjectPos(launcher[i],X,Y,Z);
    if(IsPlayerInRangeOfPoint(playerid,10,X,Y,Z)){
    DestroyObject(launcher[i]);
    launcher[i] = -1;
    }
    }
    }
    return 1;
    }
    return 0;
    }
    public launch(playerid){
    new Float:X,Float:Y,Float:Z;
    new Model = GetVehicleModel(GetPlayerVehicleID(playerid));
    if (Model == 417 || Model == 563 || Model == 553 || Model == 519 || Model == 592 || Model == 577 || Model == 464 || Model == 465 || Model == 511 || Model == 512 || Model == 593 || Model == 460 || Model == 513 || Model == 487 || Model == 488 || Model == 447 || Model == 469 || Model == 501){
    if(IsValidObject(flare[playerid])){
    GetObjectPos(flare[playerid],X,Y,Z);
    if(IsPlayerInRangeOfPoint(playerid,EXPORADIUS,X,Y,Z)){
    CreateExplosion(X,Y,Z,7,25);
    DestroyObject(flare[playerid]);
    }
    else{
    GetPlayerPos(playerid,X,Y,Z);
    MoveObject(flare[playerid],X,Y,Z,MOVESPEED);
    }
    return 1;
    }
    for(new i;i<MAX_OBJECTS;i++){
    if(placed[i] != 1) return 0;
    new Float:pX,Float:pY,Float:pZ;
    if(launcher[i] != -1){
    SetObjectFaceToPlayer(launcher[i],playerid);
    GetObjectPos(launcher[i],X,Y,Z);
    GetPlayerPos(playerid,pX,pY,pZ);
    if(IsPlayerInRangeOfPoint(playerid,DISTANCESHOT,X,Y,Z)){
    flare[playerid] = CreateObject(354,X,Y,Z,0,0,0);
    MoveObject(flare[playerid],pX,pY,pZ,MOVESPEED);
    SetTimerEx("flarekill",30000,0,"ii",flare[playerid],playerid);
    return 1;
    }
    }
    }
    }
    else{
    CreateExplosion(X,Y,Z,7,25);
    DestroyObject(flare[playerid]);
    }
    return 1;
    }
    public flarekill(flare2,playerid){
    new Float:X,Float:Y,Float:Z;
    GetObjectPos(flare2,X,Y,Z);
    CreateExplosion(X,Y,Z,7,25);
    DestroyObject(flare2);
    }
    public OnPlayerKeyStateChange(playerid) launch(playerid);
    danke im vorraus
    Komet



    //edit
    Man kann es doch machen das er die Object id abfragt aus dem ganzen spiel also 3267 und das sich es immer bei dem auslöst

    2 Mal editiert, zuletzt von Komet ()

  • jo das prob hab ich auch
    aber ich hab ne idee
    wenn man vor dem createn objecten zb rakette[0],[1] usw macht und dann irgend wo ka bei welcher funk eine if abfrage macht und hallt so
    if rakette[i]