Army Rope
#1

Hi Ho,
es gibt ja den Filterscript S.W.A.T. Rope um sich mit dem S.W.A.T. Skin(id 285) aus dem Police Mavrick(id 497) abzuseilen.
Jetzt meine Frage:
Kann man den Filterscript so дndern das sie die Army(id 287) aus dem Cargobob(id 54 abseilen kann?
Ich habe schon ein wenig ausprobiert nur dann kann der Filterscript nicht auf die Objectdatei zugreifen.
es kann aber ьberhaupt nicht zugegriffen werden selbst wenn ich nichts an dem Script дnder.
Hier der Filterscript:
Quote:

#include <a_samp>
#include <bfx_objects>

/*
Scriptname : S.W.A.T Rope
Version : 1.0
Copyright : Trooper © 2009
Release : German & English
Credits : Blackfox_UD -> Streamer
*/

//Easy Edit Section
#define howmanyropes 20 //how many ropes server should contain (increasing number,decreases server power)
#define zcatchtimer 1200 //in ms, time to calculate height
#define r_maxping 275 //highest ping of sliding units, dont set too high, or death-bugs will increase
#define falltime 25 //low = the best, but beware of server weakness (25 isnt incredible high, think, that you slide around 2-5 secs)
#define ropelength 100 //in meter, after what amount of meters you start falling (and rope ends)... Increasing will take server power and realism
#define abfangen 6 //at what height above ground should player get stopped ?

// DO NOT EDIT BELOW, IF YOU DO NOT KNOW, WHATS IT !

new Float:tempx[MAX_PLAYERS],Float:tempy[MAX_PLAYERS],Float:tempz[MAX_PLAYERS],Float:tempa[MAX_PLAYERS];
new Float:lowz[MAX_PLAYERS],vworld[MAX_PLAYERS],chopper[MAX_PLAYERS];
new Float:tx[MAX_PLAYERS],Float:ty[MAX_PLAYERS],Float:tz[MAX_PLAYERS],Text:blind;
new Float:helix[MAX_PLAYERS],Float:heliy[MAX_PLAYERS],Float:heliz[MAX_PLAYERS];
new seile[9999][MAX_PLAYERS],issliding[MAX_PLAYERS],tempplayerid[MAX_PLAYERS],notstarted[MAX_PLAYERS];
forward lowzcatch(playerid,Float2,Float:y2,Float:z2);
forward SetPosTimer(playerid);
forward OnPlayerUpdate(playerid);
forward checkseil(heliid,Floateilx,Floateily,Floatei lz);
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_ORANGE 0xFF9900FF
#define COLOR_BLUE 0x0000FF00


public OnFilterScriptInit()
{
TextDrawUseBox(blind,1);
TextDrawBoxColor(blind,0x000000FF);
TextDrawTextSize(blind,641.000000,10.000000);
TextDrawAlignment(blind,0);
TextDrawBackgroundColor(blind,0x00000000);
TextDrawFont(blind,3);
TextDrawLetterSize(blind,1.000000,51.000000);
TextDrawColor(blind,0x000000AA);
TextDrawSetOutline(blind,1);
TextDrawSetProportional(blind,1);
TextDrawSetShadow(blind,1);
print("\n--------------------------------------");
print(" Rope RC1 v1 © Trooper 2009");
print("--------------------------------------\n");
for(new p=0; p<howmanyropes; p++)
{
for(new i=0; i<ropelength; i++)
{ //alte model id = 338
seile[i][p] = b_CreateObject(3004,0,0,-90000-i,87.640026855469,342.13500976563, 350.07507324219);
}
}
return 1;
}

public OnFilterScriptExit()
{
TextDrawDestroy(blind);
for(new p=0; p<howmanyropes; p++)
{
for(new i=0; i<ropelength; i++)
{
b_DestroyObject(seile[i][p]);
}
}
return 1;
}

public OnPlayerConnect(playerid)
{
issliding[playerid] = 0,tempplayerid[playerid] = -1,notstarted[playerid] = 0;
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
TextDrawHideForPlayer(playerid,blind);
b_PlayerDisconnect(playerid);
return 1;
}

public OnPlayerUpdate(playerid)
{
b_OnPlayerUpdate(playerid);
return 1;
}

public OnPlayerSpawn(playerid)
{
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
if(issliding[playerid] != 0)
{
//OnPlayerDeathBug

//end
SendClientMessage(playerid,COLOR_ORANGE,"Your hands got off the rope. Try again .");
for(new i=0; i<ropelength; i++)
{
b_SetObjectPos(seile[i][tempplayerid[playerid]],0,0,-90000);
notstarted[playerid] = 0;
}
issliding[playerid] = 0;
issliding[tempplayerid[playerid]] = 0;
ClearAnimations(playerid);
}
return 1;
}

public checkseil(heliid,Floateilx,Floateily,Floatei lz)
{
if(!HeliToPoint(5,heliid,seilx,seily,seilz))
{
for(new p=0; p<MAX_PLAYERS; p++) // seil reiЯen
{
if(IsPlayerConnected(p) && issliding[p] == heliid)
{
//OnPlayerSnatchRope

//end
issliding[p] = 0;
GameTextForPlayer(p,"Rope snatched",1000,1);
ClearAnimations(p);
notstarted[p] = 0;
issliding[tempplayerid[p]] = 0;
for(new i=0; i<ropelength; i++)
{
b_SetObjectPos(seile[i][tempplayerid[p]],0,0,-90000+i);
}
}
}
}
else
{
SetTimerEx("checkseil",500,0,"ifff",heliid,seilx,s eily,seilz);
}
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_SUBMISSION && GetPlayerState(playerid) == 3 && issliding[playerid] == 0 && notstarted[playerid] == 0)
{
if(GetPlayerPing(playerid) > r_maxping) { return GameTextForPlayer(playerid,"Zu hoher Ping !",1000,1); }
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 497 && GetPlayerSkin(playerid) == 285)
{
//OnPlayerStartSliding (use for other conditions)

//end
for(new p=0; p<howmanyropes; p++)
{
if(issliding[p] == 0) { tempplayerid[playerid] = p; }
}
if(tempplayerid[playerid] == -1) { return GameTextForPlayer(playerid,"Technical Problem",1000,1); }

GetVehiclePos(GetPlayerVehicleID(playerid),helix[playerid],heliy[playerid],heliz[playerid]);
issliding[playerid] = GetPlayerVehicleID(playerid);
issliding[tempplayerid[playerid]] = 1;
notstarted[playerid] = 2;
GetPlayerPos(playerid,tempx[playerid],tempy[playerid],tempz[playerid]); //alte position speichern
GetPlayerFacingAngle(playerid,tempa[playerid]);
SetTimerEx("checkseil",1000,0,"ifff",GetPlayerVehi cleID(playerid),helix[playerid],heliy[playerid],heliz[playerid]);
vworld[playerid] = GetPlayerVirtualWorld(playerid);
RemovePlayerFromVehicle(playerid); //spieler aus heli raus
SetPlayerVirtualWorld(playerid,10);
ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1 ,0); //animation startem
SetVehiclePos(chopper[playerid],tempx[playerid],tempy[playerid],tempz[playerid]);
SetPlayerPosFindZ(playerid,tempx[playerid],tempy[playerid],tempz[playerid]);
SetPlayerCameraPos(playerid,tempx[playerid],tempy[playerid]+10,tempz[playerid]+10);
SetPlayerCameraLookAt(playerid,helix[playerid],heliy[playerid],heliz[playerid]);
TextDrawShowForPlayer(playerid,blind);
SetTimerEx("lowzcatch",zcatchtimer,0,"ifff",player id,tempx[playerid],tempy[playerid],tempz[playerid]);

//OnCalculateZ (use for messages or optical things)

//end

for(new i=0; i<ropelength; i++)
{
b_SetObjectPos(seile[i][tempplayerid[playerid]],tempx[playerid],tempy[playerid],tempz[playerid] - i);
}
return 1;
}
return 0;
}
if(newkeys == KEY_SUBMISSION && GetPlayerState(playerid) == 3 && issliding[playerid] != 0 && notstarted[playerid] == 1)
{
//OnPlayerLetFall

//end
new Float:landex,Float:landey,Float:landez;
GetPlayerPos(playerid,landex,landey,landez);
SetPlayerPos(playerid,landex,landey,landez);
issliding[playerid] = 0;
issliding[tempplayerid[playerid]] = 0;
notstarted[playerid] = 0;
GameTextForPlayer(playerid,"You let yourself falling",1000,1);
for(new i=0; i<ropelength; i++)
{
b_SetObjectPos(seile[i][tempplayerid[playerid]],tempx[playerid],tempy[playerid],tempz[playerid] - i);
}
return 1;
}
return 1;
}

/* UNCOMMENT IF YOU WANT TO TEST IT
public OnPlayerCommandText(playerid, cmdtext&#91;])
{
if (strcmp("/heli", cmdtext, true, 5) == 0)
{
new Float1,Float:y1,Float:z1;
GetPlayerPos(playerid,x1,y1,z1);
CreateVehicle(497,x1+3,y1+3,z1,0,0,0,9999);
return 1;
}
if (strcmp("/test", cmdtext, true, 5) == 0)
{
SetPlayerPosFindZ(playerid,0,0,1000);
SetPlayerSkin(playerid,285);
return 1;
}
return 0;
}
*/


public SetPosTimer(playerid)
{
if(issliding[playerid] == 0) { return 0; }
//OnPlayerCheck

//end
GetPlayerPos(playerid,tx[playerid],ty[playerid],tz[playerid]);
if(tz[playerid]-lowz[playerid] < abfangen && tz[playerid]-lowz[playerid] > -abfangen)
{
//OnPlayerReady

//end
new Float:temphealth;
GetPlayerHealth(playerid,temphealth);
if(temphealth <= 0) { return 0; }
ClearAnimations(playerid);
SetPlayerPos(playerid,tx[playerid],ty[playerid],tz[playerid]);
issliding[playerid] = 0;
notstarted[playerid] = 0;
issliding[tempplayerid[playerid]] = 0;
for(new i=0; i<ropelength; i++)
{
b_SetObjectPos(seile[i][tempplayerid[playerid]],0,0,-90000-i);
}
return 1;
}
if(heliz[playerid]-tz[playerid] > ropelength)
{
//OnPlayerRopeEnd

//end
ClearAnimations(playerid);
issliding[playerid] = 0;
notstarted[playerid] = 0;
issliding[tempplayerid[playerid]] = 0;
GameTextForPlayer(playerid,"Ropes over",1000,1);
for(new i=0; i<ropelength; i++)
{
b_SetObjectPos(seile[i][tempplayerid[playerid]],0,0,-90000-i);
}
return 1;
}
ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1 ,0);
SetTimerEx("SetPosTimer",falltime,0,"i",playerid);
return 1;
}

stock PlayerToPoint(Float:radi, playerid, Float, Float:y, Float:z)
{
new Floatldposx, Floatldposy, Floatldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}

stock ObjectToPoint(Float:radi, objectid, Float, Float:y, Float:z)
{
new Floatldposx, Floatldposy, Floatldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetObjectPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}

stock HeliToPoint(Float:radi, heliid, Float, Float:y, Float:z)
{
new Floatldposx, Floatldposy, Floatldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetVehiclePos(heliid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}

public lowzcatch(playerid,Float2,Float:y2,Float:z2)
{
new Float:unsinnx[MAX_PLAYERS],Float:unsinny[MAX_PLAYERS];
GetPlayerPos(playerid,unsinnx[playerid],unsinny[playerid],lowz[playerid]);
SetPlayerPos(playerid,unsinnx[playerid],unsinny[playerid],z2-2);
SetCameraBehindPlayer(playerid);
SetPlayerVirtualWorld(playerid,vworld[playerid]);
TextDrawHideForPlayer(playerid,blind);
SetVehiclePos(chopper[playerid],unsinnx[playerid],unsinny[playerid],z2);
SetTimerEx("SetPosTimer",300,0,"i",playerid);
notstarted[playerid] = 1;
return 1;
}

Bedanke mich schonmal fьr die die mir helfen.
mfg mightyJan
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)